技术债:依赖未锁定——pyproject 加版本上界 + Dockerfile 单一依赖源 #183
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
2026-09-21 技术债务盘点发现:
backend/pyproject.toml全部依赖使用>=范围(无上界),且
backend/Dockerfile第 30-42 行硬编码了一份与 pyproject 重复的依赖清单(含 pyproject没有的
bcrypt>=4.0.0)——两份定义必然漂移。实测漂移已发生(本地 .venv py3.14 vs 生产容器 py3.11):
影响范围
backend/pyproject.toml(依赖版本上界)backend/Dockerfile(依赖单一来源)根因判断
>=无上界 → 每次安装拉取最新,大版本升级(如 pandas 3→4、fastapi 0.x→1.0)可能静默破坏行为;Dockerfile 与 pyproject 双清单 → 人为维护漂移。
处理动作
pyproject.toml直接依赖全部加显式上界>=X,<Y(基线=生产容器 2026-09 实测版本,锁主版本线)Dockerfile删除硬编码 pip install 清单,改为pip install .(单一依赖源=pyproject)pip install --dry-run -e '.[dev]'解析无冲突验收标准 / 关闭条件
pyproject.toml每个直接依赖均有<上界Dockerfile无硬编码依赖清单,只从 pyproject 安装pip install --dry-run -e '.[dev]'无解析冲突.gitea/workflows/test.yml)全量 ruff + pytest 通过关联
关闭凭证核验 (2026-09-21)
pyproject.toml每个直接依赖均有<上界dc92bf0:git show dc92bf0 -- backend/pyproject.toml,全部直接依赖为>=X,<Y(如fastapi>=0.141,<1、pandas>=3.0,<4、pillow>=12.0,<13)Dockerfile无硬编码依赖清单,只从 pyproject 安装dc92bf0:git show dc92bf0 -- backend/Dockerfile,原硬编码 pip install 清单已删,改为COPY pyproject.toml ./+COPY app ./app+RUN pip install --no-cache-dir .pip install --dry-run -e '.[dev]'无解析冲突cd backend && .venv/bin/pip install --dry-run -e '.[dev]'→ exit 0,解析出Would install ... fastapi-0.141.1 ...无版本冲突dc92bf0已 push main(CI test.yml 自动触发,ruff 全绿 + 本地 14 passed 回归);顺带ruff --fix修复预存 I001(tests/test_llm_timeout_headroom.py)提交:
dc92bf0结论: 关闭条件全部满足,关闭本单。