chore: 修我文件里的 mypy 类型错误(8 处)

源自评审 §1.4「数字不可比」引发的核查,结论比预想更有价值:

**mypy 报错的主因不是代码质量,而是本机缺 SQLAlchemy 2.0 的类型信息。**
装上 `sqlalchemy2-stubs` 后 181 → 43(该类存根是 2.0 之前的旧包,会换一批新错:
`mapped_column`/`DeclarativeBase` 不存在),卸载后回到 184。**本机 mypy 数字不可作为
质量结论,双方也不可比。** 但那 184 里有 8 个是**我文件里的真实错误**,已修:

- `knowledge_retrieval_service`:返回类型 `Mapping` → `dict`(回表后要就地补写
  `score`/`intent`,而 `Mapping` 是只读协议);`ids` 显式标注并过滤 `None`;
  去掉 3 处已失效的 `type: ignore`(strict 下 unused-ignore 本身是错误)
- `knowledge_management`:服务工厂返回类型 `Any` → `KnowledgeManagementService`
  (`TYPE_CHECKING` 期导入,运行时仍惰性,不引入循环依赖),消掉 3 个 `no-any-return`

未动的:`model_gateway` 2 处 `dict-item`(`ModelEndpointConfig` 实际具备协议要求的
全部字段,属 SQLAlchemy `Mapped[T]` 在缺存根时的消解问题,不是真缺陷,不用 cast 掩盖)。
This commit is contained in:
qyqy
2026-09-11 19:13:43 +08:00
parent 7677aeaee1
commit 636dcbbe7e
3 changed files with 32 additions and 9 deletions
+7
View File
@@ -52,6 +52,13 @@ testpaths = ["tests"]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
markers = ["integration: requires local database services"]
# 临时目录固定到仓库内(`.workdir/` 已在 .gitignore 中忽略)。
#
# 为什么不用系统临时目录:Windows 上 `%TEMP%\pytest-of-<user>` 一旦被权限更高的会话
# 建过,后续运行就**无权写入**,所有用 `tmp_path` 的用例批量 setup 失败
# (实测 33 个用例 ERROR,报 WinError 5)。固定到仓库内后不受系统临时目录权限影响,
# 且清理范围可见、可控。
basetemp = ".workdir/pytest-tmp"
[tool.ruff]
line-length = 100