Files
zyt/artifacts/ai-analysis-column-visibility-review.md
T
2026-10-17 17:24:04 +08:00

27 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI 分析列显隐只读复核
日期:2026-10-17。已读根目录 `AGENTS.md`;项目没有 `.trellis/`,因此没有可读的 workflow/spec。本次只读代码与既有测试;仅新增本报告,未改业务代码或测试,未连接生产。
## 结论与最小修复
- `prescriptions.py:1276` 初始化隐藏第 11 列;`1697` 是唯一运行时直接修改第 11 列显隐的位置。目前 `_set_ai_columns()` 仅按服务开关 `enabled` 显示“AI 分析”,因此一致度未授权时仍显示该列。
- 建议第 11、12 列统一使用 `self._ai_enabled and self._agreement_visible` 决定显示。在 `_set_ai_columns()` 中按新条件处理两列;在 `_set_agreement_visible()` 中同时更新两列,覆盖能力查询开始、失败、撤权、授权恢复及 statuses 顶层 flag 变化。只改前者会遗漏撤权立即隐藏与后续授权恢复。
- 保留 `_ai_enabled = enabled` 的服务状态含义,不能改成 `enabled and agreement_visible`。行内“AI 报告”在 `1589` 依赖 `_ai_enabled`;复用该变量表示授权会误删用户要求保留的按钮。
- 第 11 列除此之外没有 `hideColumn/showColumn/setColumnHidden` 路径。`_render_ai_statuses()` 只更新内容;表头移动/列宽设置不会改变显隐,无需修改。
## AI 报告入口条件
- 行内按钮:`1589`,服务启用、同时具备 reports/detail 权限、非空白处方;不依赖一致度授权,应保持。
- 工具栏按钮:`1884–1890`,非空白处方、reports/detail 权限、仓库支持 `list_prescription_ai_reports`;不依赖服务开关或一致度授权,应保持。
- 右键菜单:`1828–1838`,reports/detail 权限、仓库支持 reports、非空白处方;受限时仍显示“AI 报告”。
- `can_open_issued_ai()` 在 `issued_prescription_ai.py:402` 只检查 reports/detail 权限。现有统计与报告详情的一致度门禁不需要因本次列显隐要求改动。
## 必要回归
1. 服务启用但 capability 为 false、缺失或非布尔 true,以及 capability 查询失败:第 11、12 列均隐藏,工具栏与行内“AI 报告”仍存在;root/`*` 不豁免。
2. capability 已允许但 statuses 顶层 `agreement_visible` 未明确 true:两列隐藏;statuses 的 `enabled` 仍为 true,报告入口可用。
3. 已授权显示两列 → 重新查询能力时立即隐藏 → 撤权或失败保持隐藏,旧回调不能恢复;重新明确授权且 statuses 允许后恢复两列。
4. 保留服务关闭、无 statuses 权限、空白处方原行为;服务关闭仍可查看历史报告。
现有 `app/tests/test_issued_prescription_ai.py:813` 明确断言受限时第 11 列仍显示,需随新要求反转;该测试已覆盖能力失败、撤权、旧回调、工具栏报告保留,可扩展行内按钮断言。`test_list_rechecks_completed_scores_after_hide_and_show` 可补两列恢复断言。建议离线更新/目视检查 `artifacts/prescription-ai-visibility/list-restricted.png`;原截图脚本已有受限列表 fixture。