This commit is contained in:
Your Name
2026-10-17 17:24:04 +08:00
parent 872b19ef28
commit d61bb3e117
5 changed files with 74 additions and 4 deletions
@@ -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)))
+28 -1
View File
@@ -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