docs: 补回合并时丢失的 ruff 基线;合并主干 6 提交(含架构师对我疏漏的修正)

## 1. 补回被我丢失的门禁条目

主干 `AGENTS.md` 原本有一条 `ruff` 干净,但我在解决 `AGENTS.md` 冲突时**只保留了自己的
mypy/pytest 基线,把这条丢了** —— 合并时丢信息,和代码冲突一样是缺陷。

本次补回,并把命令写准(这点很重要):

- `ruff check app tests tools alembic` → **`All checks passed`(0 错)**
- 直接 `ruff check .`(全仓)会报 **40 个错,全部来自仓库根目录的 `hq.py` / `nl2sql_yc.py`**
  (袁聪线的演示脚本,不属本项目包结构)

所以"ruff 干净"**必须带范围**,否则会和别人的脚本混在一起、把一个健康状态误报成 40 个错。

## 2. 我的一个真实疏漏(已由架构师修正,本次合并带入)

架构师提交 `ffbcc22`:**`fix: 删掉 NL 合并后残留的未使用变量 role_ids(ruff F841)`**

该疏漏是我引入的:改 `tools/seed_test_rbac.py` 时把
`zip(user_ids, role_ids, strict=True)` 换成显式配对表 `USER_ROLES`,删掉了 `user_ids`
却**没删 `role_ids`**。根因是**我全程没跑过 ruff** —— 项目门禁里有它,
只跑 mypy 和 pytest 是不够的。

已在本机复跑 `ruff check app tests tools alembic` 确认:我改过的文件全部干净
(`role_ids` 已随主干修正进来)。

## 3. 合并主干 6 提交

`fedbf5a..c8cdc06`,含上条修正与投顾线的行情双源、验收归档等,**无冲突**。

## 验证

- `ruff check app tests tools alembic` → `All checks passed`
- `mypy app` → 0 错 / 245 文件
- `pytest tests`(全量)→ `2 failed, 1421 passed, 1 skipped`
  (2 个失败为既有环境项:httpx 把中文序列化成 `\uXXXX`,非本次引入)
This commit is contained in:
2026-09-12 14:26:43 +08:00
parent 8cb75992e6
commit 86d1cf1ffc
+8 -2
View File
@@ -117,13 +117,19 @@
**新增模型前先搜一遍 `__tablename__` 有没有被占用。**
- 测试基线(**2026-09-12 合并主干 PR #7 + 本线记忆投影链路之后实测**):
`mypy app` → **245 个文件 0 错**;
`pytest tests`(全量)→ `2 failed, 1415 passed, 2 skipped`;
`pytest tests`(全量)→ `2 failed, 1421 passed, 1 skipped`;
`pytest tests/integration` → `102 passed, 1 skipped`。
⚠️ **用例数会随开发增减,判断健康看"0 failed"而不是看绝对值**。
剩下那 2 个失败**都不是代码缺陷**,接手时不要"修"它们:
那 2 个失败**都不是代码缺陷**,接手时不要"修"它们:
`tests/unit/service/test_offsite_document_recognition_adapter.py` 的 2 个用例 —— **环境相关**:
它们断言请求体里是中文原文,而 httpx 会把中文序列化成 `\uXXXX`,字节序列自然不匹配。
功能无影响;若要修,正确做法是断言 `json.loads(body)` 后的字段值(字节级断言不该用来测 JSON)。
- **`ruff`:`ruff check app tests tools alembic` → 全部 `All checks passed`(0 错)。**
⚠️ **检查范围要写对**:直接 `ruff check .`(全仓)会报 40 个错,**全部来自仓库根目录的两个
散落脚本 `hq.py` / `nl2sql_yc.py`**(袁聪线的演示脚本,不属本项目包结构)。
所以门禁命令用上面那条;报"ruff 干净"时**必须带范围**,否则会和别人的脚本混在一起。
(`pyproject.toml` 的 `[tool.ruff.lint]` 选的是 `E,F,I,B,UP`、`line-length=100`;
`tools/*.py` 另配了 `E501/I001/B007` 的 per-file-ignores。)
- **mypy:`mypy app` → `Success: no issues found in 245 source files`(0 错)。**
⚠️ 曾在本机报 184 个错,**已查明是环境版本旧**,与代码质量无关 —— 复现矩阵: