468ae0bd474c380059bfc9c175706569ba2700b9
两个相关的缺陷,都属于**静默失效**型。 1. `admin_service._transition_intent_config`(真正的 bug) 激活一个意图时按 `agent_type` 过滤旧 active 版本并归档,但唯一键是生成列 `active_key = concat(agent_type, ':', intent_code)` —— 同一 `agent_type` 下 **不同意图码本就允许并存**。于是激活 `general` 会把 `risk_overview` / `risk_search` / `risk_evidence` 一并归档:风控运行期只剩 1 条 active 意图,问"查看当前风险概览"被分到 `general`(confidence 0.5), 而**没有任何报错**。该函数自己的 docstring 写的正是正确行为,实现与它不符。 2. `tools/publish_risk_agent_config.py`(使脚本无法自愈) 按 `intent_code` 单键建 dict 收集现有意图,而列表**按 id 倒序**返回且同一意图码 有多个版本,于是**旧版本覆盖新版本**;取到 v1 后再"版本 +1"算出的正是已被占用的 v2,创建必然 409 IDEMPOTENCY_CONFLICT。现象是 4 条意图全部"创建失败"而库里 其实都有,`tools/seed_demo_data.py` 第 7 步因此必然失败。 修复后实测: - 库里 4 个风控意图全部 active; - 问"查看当前风险概览" → `intent=risk_overview`、`confidence=1.0000` (修复前为 `general` / 0.5); - `tools/seed_demo_data.py` 10/10 步完成、退出码 0(修复前第 7 步退出码 1)。 回归测试:`test_activating_one_intent_does_not_archive_sibling_intents`。 已确认把修复回退后该用例**确实失败**(`['beta'] != ['alpha', 'beta']`), 不是永远通过的空测试 —— 原有用例盖不住这个缺陷,因为它建的第二个意图始终停在 draft、 从未激活过。 门禁:ruff 通过;mypy 250 文件 0 错;unit+contract 1381 passed / 0 failed; integration 104 passed;e2e 冒烟 40/40。
Description
番茄炒蛋组
18 MiB
Languages
Python
99.9%