From d61bb3e117d538219aca01debd1fa2ce2e10a104 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 17 Oct 2026 17:24:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/pages/prescriptions.py | 7 +++-- app/tests/test_issued_prescription_ai.py | 29 +++++++++++++++++- artifacts/ai-analysis-column-hidden.png | Bin 0 -> 64962 bytes .../ai-analysis-column-visibility-review.md | 26 ++++++++++++++++ ...i-analysis-column-visibility-validation.md | 16 ++++++++++ 5 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 artifacts/ai-analysis-column-hidden.png create mode 100644 artifacts/ai-analysis-column-visibility-review.md create mode 100644 artifacts/ai-analysis-column-visibility-validation.md diff --git a/app/src/doctor_workstation/ui/pages/prescriptions.py b/app/src/doctor_workstation/ui/pages/prescriptions.py index b4fa45950..4bf9ba9dd 100644 --- a/app/src/doctor_workstation/ui/pages/prescriptions.py +++ b/app/src/doctor_workstation/ui/pages/prescriptions.py @@ -1694,8 +1694,8 @@ class PrescriptionsPage(QWidget): def _set_ai_columns(self, enabled: bool) -> None: changed = enabled != self._ai_enabled self._ai_enabled = enabled - self.table.setColumnHidden(11, not enabled) - self.table.setColumnHidden(12, not (enabled and self._agreement_visible)) + for column in (11, 12): + self.table.setColumnHidden(column, not (enabled and self._agreement_visible)) if enabled: header = self.table.horizontalHeader() header.moveSection(header.visualIndex(11), header.visualIndex(4) + 1) @@ -1708,7 +1708,8 @@ class PrescriptionsPage(QWidget): def _set_agreement_visible(self, visible: bool) -> None: self._agreement_visible = visible - self.table.setColumnHidden(12, not (self._ai_enabled and visible)) + for column in (11, 12): + self.table.setColumnHidden(column, not (self._ai_enabled and visible)) self.ai_statistics_button.setVisible( visible and has_permission(self.permissions, "tcm.prescriptionAi/statistics", default=False) and callable(getattr(self.repository, "prescription_ai_statistics", None))) diff --git a/app/tests/test_issued_prescription_ai.py b/app/tests/test_issued_prescription_ai.py index b00fb00d0..c61f87a97 100644 --- a/app/tests/test_issued_prescription_ai.py +++ b/app/tests/test_issued_prescription_ai.py @@ -794,6 +794,33 @@ def test_revoked_agreement_cache_discards_flat_comparison_metadata() -> None: assert value["models"]["qwen"]["reason"] == sentinel +@pytest.mark.parametrize("flag", [False, None, 1, "true"]) +def test_unlisted_account_hides_ai_analysis_column_and_keeps_reports( + application: QApplication, immediate: None, monkeypatch: pytest.MonkeyPatch, flag: Any, +) -> None: + repository = Repository() + repository.agreement_visible = flag + opened = [] + monkeypatch.setattr(page_module, "present_issued_prescription_ai", lambda *_args, **kwargs: opened.append(kwargs)) + page = page_module.PrescriptionsPage(repository, ["*"], {"root": 1}) + try: + page.resize(1366, 800) + page.show() + application.processEvents() + page.table.selectRow(0) + assert page.table.isColumnHidden(11) and page.table.isColumnHidden(12) + # Later status refreshes must not re-expose the analysis column. + page._set_ai_columns(True) + assert page.table.isColumnHidden(11) and page.table.isColumnHidden(12) + assert page.ai_report_button.isVisible() and page.ai_report_button.isEnabled() + assert any(button.accessibleName() == "AI 报告" + for button in page.table.cellWidget(0, 2).findChildren(QPushButton)) + page.ai_report_button.click() + assert opened == [{"prescription_id": 801}] + finally: + page.close() + + def test_list_capability_failure_revocation_and_late_status_cannot_restore_scores( application: QApplication, immediate: None, monkeypatch: pytest.MonkeyPatch, ) -> None: @@ -810,7 +837,7 @@ def test_list_capability_failure_revocation_and_late_status_cannot_restore_score page._load_ai_capabilities() page._ai_statuses_ready(old_statuses, [801, 802], old_token, page._generation) page._ai_capabilities_ready({"agreement_visible": True}, old_capability_token, page._generation) - assert page.table.isColumnHidden(12) and not page.table.isColumnHidden(11) + assert page.table.isColumnHidden(12) and page.table.isColumnHidden(11) assert page.ai_statistics_button.isHidden() assert page.ai_report_button.isVisible() assert page._ai_statuses diff --git a/artifacts/ai-analysis-column-hidden.png b/artifacts/ai-analysis-column-hidden.png new file mode 100644 index 0000000000000000000000000000000000000000..243699adf07d2b522878427ea6077a72e8959c99 GIT binary patch literal 64962 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 x2?i7?EVMUS%IP}!^0S{W@AAd9lp05g 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 EAAwI0Z2$lO literal 0 HcmV?d00001 diff --git a/artifacts/ai-analysis-column-visibility-review.md b/artifacts/ai-analysis-column-visibility-review.md new file mode 100644 index 000000000..326e05086 --- /dev/null +++ b/artifacts/ai-analysis-column-visibility-review.md @@ -0,0 +1,26 @@ +# 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。 diff --git a/artifacts/ai-analysis-column-visibility-validation.md b/artifacts/ai-analysis-column-visibility-validation.md new file mode 100644 index 000000000..df2002739 --- /dev/null +++ b/artifacts/ai-analysis-column-visibility-validation.md @@ -0,0 +1,16 @@ +# 未授权账号隐藏 AI 分析列 + +2026-10-17。用户补充范围:未被指定授权的账号隐藏已开处方列表“AI 分析”列,保留“AI 报告”按钮。 + +修改 `app/src/doctor_workstation/ui/pages/prescriptions.py` 的两个列显隐入口,统一按分析服务启用且当前账号获授权显示第 11/12 列。能力查询开始、失败、撤销、后续状态响应均会更新两列;服务状态仍独立保留,工具栏及行内报告入口继续可用。 + +验证结果: + +- 修复前定向 5 个场景失败,复现未授权及能力查询失败后 AI 分析列仍显示。 +- `test_issued_prescription_ai.py`:142 passed。 +- `test_prescription_ui.py`:23 passed。 +- 最终补充行内报告入口断言后,定向 5 个场景通过,含 toolbar 报告点击、root 不豁免、缺失/非布尔能力及旧回调。 +- Ruff、限定变更文件 `git diff --check` 通过。 +- 使用真实主题与内存数据离屏核对 [预览](ai-analysis-column-hidden.png):两列已隐藏,AI 报告入口保留。 + +本次仅修改桌面端源码和测试,未打包部署、不涉及新增 SQL;前次授权配置迁移若已执行,本次无需再执行数据库变更。更新桌面端后生效。