Repository navigation
Expand file tree
/
Copy pathrequirements.txt
More file actions
103 lines (97 loc) · 6.05 KB
/
Copy pathrequirements.txt
File metadata and controls
103 lines (97 loc) · 6.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# =============================================================================
# 运行时依赖清单(完整)
# -----------------------------------------------------------------------------
# 生成方式:扫描 app/ 顶层入口 / scripts / tests / migrations 的真实 import,
# 通过 .venv 的 importlib.metadata.packages_distributions() 反查 PyPI 包名,
# 并钉定为当前 .venv 中实际安装、且测试通过的版本(可复现)。
#
# 说明:
# - PyMySQL 是 SQLAlchemy 按 mysql+pymysql:// URL 动态加载的驱动,不出现在
# app 代码的 import 中,但为必装运行时依赖(migrations/ 也直接 import)。
# - pandas / openpyxl 为导入导出(Excel)功能依赖,openpyxl 作为 pandas 的
# Excel 引擎被显式使用。
# - 版本采用 == 精确钉版,确保与已验证环境一致;升级需同步验证测试。
# =============================================================================
Flask==3.1.3
Flask-SQLAlchemy==3.1.1
PyJWT==2.10.1
SQLAlchemy==2.0.50
Werkzeug==3.1.8
apispec==6.10.0
bcrypt==5.0.0
click==8.4.1
cryptography==48.0.0
flask-cors==6.0.2
# 企业身份集成(T3):纯 Python 实现,免装系统 libldap/openldap-dev,生产机无需
# apt 即可用;仅做只读 Bind 校验(透传用户密码),不做密码同步。精确 pin 同其它依赖。
ldap3==2.9.1
marshmallow==4.3.0
netmiko==4.7.0
openpyxl==3.1.5
pandas==3.0.3
psutil==7.2.2
PyMySQL==1.2.0
pysnmp==7.1.27
python-dotenv==1.2.2
pyghmi==1.6.19
qrcode==8.2
redis==8.0.0
requests==2.34.2
textfsm==2.1.0
reportlab==4.5.1 # 客户终止存档 PDF 生成(惰性 import,决策见 docs/_archive/CUSTOMER_TERMINATED_PLAN.md §4.4.1)
PyYAML==6.0.3 # 配置/种子与脚本(如 import_zabbix_templates.py)
# ── 时序存储:ClickHouse 客户端(>300 台切 CH 时的接入层)──────────────
# 决策与论证见 code_review/ClickHouse时序存储落地设计-20260920.md §4.1 / §4.9(v1.4 改判)。
# 为什么不用现有 requests 手写 TSV:原选型给 requests 的唯一硬理由是"零新依赖",该约束
# 解除后,手写序列化(\N NULL、\t \n \\ 转义、Decimal/DateTime64 时区、NaN/Inf、数组字面量)
# 只剩正确性负债 —— 转义错一次即整批拒写或静默串列。本库自带 FORMAT Native 列式序列化,
# 走 HTTP :8123(仍不开 native TCP :9000),并协商 LZ4/ZSTD 压缩。
# 传递依赖由 pip 解析(urllib3 / certifi / lz4);Python>=3.14 的 zstd 走标准库(PEP 784),
# 故**不需要** zstandard。⚠️ 本包是平台相关 wheel(内含预编译 C 加速扩展),离线部署机
# 需按平台预热(pip download --only-binary=:all:)。⚠️ 元数据 Requires-Python = >=3.10,<3.15
# ⇒ 升到 3.15 时 pip 安装会直接失败,升级 Python 前须先确认上游放宽上界。
# 精确 pin 同其它运行时依赖;升级需同步验证测试(含 code_review/ch_client_roundtrip_probe.py)。
clickhouse-connect==1.8.0
# ── AI 长任务异步底座(Celery worker 独立进程)────────────────────
# broker 与 result backend 均复用既有 Redis(db 1 / db 2 分离),不引入新中间件。
celery==5.6.3
# ── 实时网关 (realtime_gateway) 独立 ASGI 进程运行时依赖 ──────────────
uvicorn==0.49.0
# 生产 WSGI 服务器:deploy/systemd/ipip-web.service 直接调用 gunicorn
# (start.sh 虽有"gunicorn 缺失回退 run.py"的降级逻辑,但 systemd unit 没有回退,
# 故必须作为显式依赖,否则新环境部署后 web 服务起不来)
# 精确 pin:与同文件其它运行时依赖(uvicorn/celery/starlette)保持同一风格。
# 原先写 >=23,<27 —— 24~26 并不存在,上界形同虚设,且非精确 pin 会让不同时间
# 的全新安装拿到不同 gunicorn,安装结果无法复现。
gunicorn==23.0.0
# ⚠️ 不可升级到 starlette 1.x:chromadb==1.0.0 硬锁 fastapi==0.115.9,
# 而 fastapi 0.115.9 约束 starlette>=0.40.0,<0.46.0。此处曾写 1.3.1,
# 与两者同时冲突,导致**全新环境 pip 安装必然失败**(本机 venv 因历史
# 安装顺序侥幸停在 0.45.3,故问题被长期掩盖)。realtime_gateway 自身
# 的 requirements.txt 只要求 starlette>=0.37.0,0.45.3 功能无损。
starlette==0.45.3
# 本仓代码**不 import fastapi**(实时网关用 starlette;`rg "import fastapi" app/ realtime_gateway/`
# 零命中),但仍然显式钉住(审计 A-P2-3),理由有两条:
# 1. 它是**约束链的一环**,而不是无关的传递依赖 —— chromadb==1.0.0 硬锁
# fastapi==0.115.9,而 fastapi 又约束 starlette<0.46.0(见上)。不写出来时,
# 这条链只能靠读 chromadb 的元数据才知道,starlette 的上界就成了"魔法数字";
# 2. 不写出来时,fastapi 的实际版本由 chromadb 决定,上游一改就静默漂移,
# 而 0.115.9 正是上面那条上界的**唯一依据**。
fastapi==0.115.9
# ── AI 能力 (Phase 0-4) ──────────────────────────────────────────────
openai>=1.99,<3 # OpenAI 兼容 LLM 客户端
chromadb==1.0.0 # RAG 本地向量库
sentence-transformers>=6.0,<7 # RAG 中文 embedding(bge-small-zh-v1.5)
# 模型缓存解析:上游 sentence-transformers(>=1.3) 与 transformers(>=1.5) 均要求 <2。
# 此处显式锁定上界——离线部署的模型缓存由 scripts/download_models.py 以 HF 布局写入,
# 若将来 huggingface_hub 大版本变更缓存校验规则,非标准布局(无 blobs/etag metadata)
# 可能失效,锁上界可避免被动升级。
huggingface-hub>=1.21,<2
jieba>=0.42,<1 # RAG FTS5 中文分词
pydantic>=1.10,<3 # 技能 YAML schema 校验
tenacity>=8.0,<10 # 重试退避
prometheus-client>=0.20,<1 # 指标暴露
python-frontmatter>=1.0 # Phase 6 agentic SKILL.md 解析
#── 语音 ──────────────
tencentcloud-sdk-python>=3.0.166,<4
alibabacloud_dyvmsapi20170525>=5.3,<6