# =============================================================================
# 企微IT智能服务台 — Python 依赖声明
# =============================================================================
# 说明：列出后端所有 Python 包依赖及版本
# 用法：pip install -r requirements.txt
# =============================================================================

# --------------------------------------------------------------------------
# Web 框架
# --------------------------------------------------------------------------
# FastAPI: 高性能异步 Web 框架，自动生成 Swagger API 文档
fastapi==0.111.1
# Uvicorn: ASGI 服务器，支持热重载和 WebSocket
uvicorn[standard]==0.30.1
# python-multipart: FastAPI 文件上传支持（处理 multipart/form-data 请求）
python-multipart==0.0.12

# --------------------------------------------------------------------------
# 数据库
# --------------------------------------------------------------------------
# SQLAlchemy: Python SQL 工具包和 ORM，2.0 版本支持 async session
sqlalchemy==2.0.31
# psycopg2-binary: PostgreSQL 数据库驱动（binary 版本无需编译，用于 Alembic 同步迁移）
psycopg2-binary==2.9.9
# asyncpg: PostgreSQL 异步驱动（用于 SQLAlchemy 2.0 async engine）
asyncpg==0.29.0
# Alembic: 数据库迁移工具，与 SQLAlchemy 配合使用
alembic==1.13.1

# --------------------------------------------------------------------------
# 缓存
# --------------------------------------------------------------------------
# redis: Redis 客户端，用于 access_token 缓存和会话状态管理
redis==5.0.7

# --------------------------------------------------------------------------
# 数据验证
# --------------------------------------------------------------------------
# pydantic: 数据验证和设置管理，FastAPI 的核心依赖
# 注意:必须用 2.7.4 或 2.8.0+,2.7.5 被 PyPI yank(清华源/官方源都没有)
pydantic==2.7.4
# pydantic-settings: 从环境变量读取配置，支持 .env 文件
pydantic-settings==2.3.4

# --------------------------------------------------------------------------
# HTTP 客户端
# --------------------------------------------------------------------------
# httpx: 异步 HTTP 客户端，用于调用企微 API（替代同步的 requests）
httpx==0.27.0
# tenacity: 外部调用指数退避重试（自动化引擎 BaseClient 使用，可选降级）
tenacity>=8.2.0

# --------------------------------------------------------------------------
# 加密
# --------------------------------------------------------------------------
# cryptography: 企微消息 AES-CBC-256 加解密（官方推荐库）
cryptography==42.0.8

# --------------------------------------------------------------------------
# 速率限制
# --------------------------------------------------------------------------
# slowapi: FastAPI 速率限制中间件（基于 limits 库，支持 Redis 后端）
slowapi==0.1.9

# --------------------------------------------------------------------------
# 工具
# --------------------------------------------------------------------------
# python-dotenv: 从 .env 文件加载环境变量到 os.environ
python-dotenv==1.0.1
# wordfilter: 敏感词过滤（用于坐席消息内容审核 v0.6.0+）
wordfilter==0.2.7
# APScheduler: 定时任务调度器（用于超时提醒等后台任务）
apscheduler==3.10.4

# --------------------------------------------------------------------------
# OTP 二次验证
# --------------------------------------------------------------------------
# pyotp: TOTP/HOTP 动态码生成和验证（Google Authenticator 兼容）
pyotp==2.9.0
# bcrypt: 密码哈希库（用于本地密码认证）
bcrypt==4.1.2
# passlib: 密码哈希兼容库（bcrypt 前端封装）
passlib[bcrypt]==1.7.4
# qrcode: 二维码生成（用于 OTP 绑定）
qrcode[pil]==7.4.2
# pillow: 图片处理（qrcode[pil] 依赖）
pillow==10.4.0

# --------------------------------------------------------------------------
# 监控
# --------------------------------------------------------------------------
# psutil: 系统监控（用于 /metrics 端点）
psutil==5.9.8

# --------------------------------------------------------------------------
# 图数据库（知识图谱）
# --------------------------------------------------------------------------
# neo4j: Neo4j 官方异步驱动（bolt 协议，支持 async/await，与 FastAPI 生态匹配）
neo4j>=5.26.0

# --------------------------------------------------------------------------
# 测试（仅测试环境）
# --------------------------------------------------------------------------
# testcontainers: Neo4j 测试容器（CI 本地模拟 Neo4j 图数据库）
testcontainers[neo4j]>=4.0.0
# pytest-asyncio: 异步测试 fixture（已有，显式声明最低版本）
pytest-asyncio>=0.23.0
# tiktoken: OpenAI tokenizer for token counting (P2 context compression)
tiktoken>=0.5.0
