diff --git a/AGENTS.md b/AGENTS.md index 7dd6a40..2fb0b42 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -86,7 +86,24 @@ (`app/core/knowledge_schema.py`)——**不要在任何地方硬编码字段名**,那会把另一套环境打挂。 - ⚠️ **Docker Desktop 不会常驻**:它没运行时 Milvus 不可用(`docker` CLI 报连不上守护进程)。 跑真机验证前先确认 Docker Desktop 在运行。 -- 测试基线:`1 failed, 1034 passed, 2 skipped`(2026-09-11 实测);唯一失败是 `tests/unit/repository/test_fund_readonly_contract.py`(**底座既有缺陷,不要修也不要报**)。 -- mypy:本机 `mypy app` 报 181 个错,其中 170 个集中在 `app/model/` 的模型文件(**本机未安装 `sqlalchemy2-stubs`**, - SQLAlchemy 的 `BIGINT`/`DATETIME` 被判成未类型化函数);架构师环境报 0 错。 - **这个数字双方不可比**,不要拿它当结论;只需保证"不比自己改动前更多"。 +- 测试基线:`3 failed, 1219 passed, 2 skipped`(2026-09-11 合并主干后实测)。 + 三个失败**都不是代码缺陷**,接手时不要"修"它们: + ① `tests/unit/repository/test_fund_readonly_contract.py`(**底座既有缺陷,不要修也不要报**); + ② ③ `tests/unit/service/test_offsite_document_recognition_adapter.py` 的 2 个用例 —— **环境相关**: + 它们断言请求体里是中文原文,而 httpx 会把中文序列化成 `\uXXXX`,字节序列自然不匹配。 + 功能无影响;若要修,正确做法是断言 `json.loads(body)` 后的字段值(字节级断言不该用来测 JSON)。 +- **mypy:`mypy app` → `Success: no issues found in 180 source files`(0 错)。** + ⚠️ 曾在本机报 184 个错,**已查明是环境版本旧**,与代码质量无关 —— 复现矩阵: + + | SQLAlchemy | mypy | 报错数 | + |---|---|---| + | 2.0.34(本机旧) | 1.14.1 | **173** | + | 2.0.34 | 1.20.2 | 173 | + | 2.0.52 | 1.14.1 | **6** | + | 2.0.52 | 1.20.2 | **0**(当前) | + + ⇒ 主因是 **SQLAlchemy 的补丁版本**(旧补丁版类型标注不完整,`BIGINT`/`DATETIME` 被判成未类型化 + 函数,`app/model/*.py` 每个列定义报一条)。**不要装 `sqlalchemy2-stubs`** —— 那是给 + SQLAlchemy **1.4** 用的,装上会按 1.4 API 核对 2.0 代码、换一批新错。 + `pyproject.toml` 的 `sqlalchemy>=2.0,<3` 允许范围内补丁版差异会造成量级差异; + 若门禁数字要求稳定,需把 SQLAlchemy 钉到具体补丁版(属公共约定,改前先问)。