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

3.0 KiB
Raw Blame History

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。