# Runtime dependencies (source of truth: pyproject.toml)
fastapi>=0.115,<1
uvicorn[standard]>=0.34,<1
pydantic>=2.10,<3
pydantic-settings>=2.7,<3
python-dotenv>=1.0,<2
sqlalchemy>=2.0,<3
greenlet>=3.1,<4
alembic>=1.14,<2
asyncmy>=0.2,<1
pymysql>=1.1,<2
redis>=5.2,<6
neo4j>=5.28,<6
pymilvus>=2.5,<3
# milvus-lite（本地开发专用：Docker Milvus 未运行时的本地持久化向量库，
# 配合 .env 的 MILVUS_LOCAL_URI）**刻意不在此列** —— 它是可选依赖，
# 声明在 pyproject.toml 的 `[project.optional-dependencies] dev`。
# 本机需要时：`pip install "milvus-lite>=3.2,<4"` 或 `pip install -e ".[dev]"`。
PyJWT>=2.10,<3
cryptography>=44,<51
httpx>=0.28,<1
tzdata>=2025.1,<2027
openai>=1.0,<2
alibabacloud_docmind_api20220711==1.4.14
alibabacloud_tea_openapi>=0.4.3,<1
alibabacloud_tea_util>=0.3.13,<1
alibabacloud_credentials>=1.0.2,<2

# 产品推介材料生成依赖
# - python-pptx：生成固定版式 PPTX
# - openpyxl：读取 XLSX/XLSM 业绩数据文件
# - Pillow：校验上传照片并生成宣传长图 PNG
# - matplotlib：生成业绩曲线 PNG
# - python-multipart：支持 FastAPI 文件上传
# PDF 导出还需要部署机安装 LibreOffice/soffice，并在 .env 中配置
# PROMOTION_PDF_ENABLED/PROMOTION_PDF_CONVERTER_PATH；它不是 pip 依赖。
# 中文渲染还需要部署机存在微软雅黑、黑体、Noto Sans CJK 或文泉驿等中文字体。
python-pptx>=1.0,<2
openpyxl>=3.1,<4
Pillow>=10,<12
matplotlib>=3.9,<4
python-multipart>=0.0.20,<1

# 知识库文档解析依赖
# - python-docx：解析上传的 .docx 知识文档（app/service/document_parser.py）
#   原先漏声明：别人的环境跑知识入库会直接 ModuleNotFoundError: No module named 'docx'
python-docx>=1.1,<2

# 登录（账号密码换令牌）
# - bcrypt：密码哈希。注意 `cryptography` 只用于 JWT(RS256)，它不提供密码哈希。
#   python 自带的 hashlib 也不适合存密码（无可调工作因子、无盐管理）。
bcrypt>=4.0,<5

# Development and test dependencies
pytest>=8.3,<9
pytest-asyncio>=0.25,<1
aiosqlite>=0.20,<1
ruff>=0.9,<1
mypy>=1.14,<2
