From 02007614d61931c9f948b18cf2c079d48a8ba6dc Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 1 Jun 2026 16:12:56 +0800 Subject: [PATCH] fix(web): collapse IwoooS advanced visuals --- apps/web/messages/en.json | 8 ++++ apps/web/messages/zh-TW.json | 8 ++++ apps/web/src/app/[locale]/iwooos/page.tsx | 47 +++++++++++++------ docs/LOGBOOK.md | 22 +++++++++ ...ecurity-mirror-status-rollup.snapshot.json | 12 +++++ .../security-mirror-progress-guard.py | 35 +++++++++++--- 6 files changed, 110 insertions(+), 22 deletions(-) diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json index 125ed87a7..88a528fd1 100644 --- a/apps/web/messages/en.json +++ b/apps/web/messages/en.json @@ -6172,6 +6172,14 @@ "title": "一眼看懂", "summary": "詳細重點、下一個 閘門、進度移動條件與目前仍鎖住的邊界;預設收合,避免首頁文字過重。" }, + "decisionGateVisuals": { + "title": "決策與閘門進階圖表", + "summary": "將決策跑道、執行閘雷達、工作地圖與第一解鎖路徑收在同一個可展開區;首層先保持清爽。" + }, + "scopeEvidenceVisuals": { + "title": "產品、主機與證據進階圖表", + "summary": "將產品範圍、主機工具鏈、VibeWork 與工作交付明細收成可展開區;需要查證時再下鑽。" + }, "frontStage": { "title": "前台入口與既有資安頁", "summary": "整合安全合規、告警、授權、治理、稽核與 程式碼審查 的只讀入口。" diff --git a/apps/web/messages/zh-TW.json b/apps/web/messages/zh-TW.json index 125ed87a7..88a528fd1 100644 --- a/apps/web/messages/zh-TW.json +++ b/apps/web/messages/zh-TW.json @@ -6172,6 +6172,14 @@ "title": "一眼看懂", "summary": "詳細重點、下一個 閘門、進度移動條件與目前仍鎖住的邊界;預設收合,避免首頁文字過重。" }, + "decisionGateVisuals": { + "title": "決策與閘門進階圖表", + "summary": "將決策跑道、執行閘雷達、工作地圖與第一解鎖路徑收在同一個可展開區;首層先保持清爽。" + }, + "scopeEvidenceVisuals": { + "title": "產品、主機與證據進階圖表", + "summary": "將產品範圍、主機工具鏈、VibeWork 與工作交付明細收成可展開區;需要查證時再下鑽。" + }, "frontStage": { "title": "前台入口與既有資安頁", "summary": "整合安全合規、告警、授權、治理、稽核與 程式碼審查 的只讀入口。" diff --git a/apps/web/src/app/[locale]/iwooos/page.tsx b/apps/web/src/app/[locale]/iwooos/page.tsx index e68cb4c02..e9b48f5d4 100644 --- a/apps/web/src/app/[locale]/iwooos/page.tsx +++ b/apps/web/src/app/[locale]/iwooos/page.tsx @@ -2467,11 +2467,11 @@ const iwooosExecutiveSnapshotBoundaries = [ ] as const const iwooosFocusDeckItems: IwoooSFocusDeckItem[] = [ - { key: 'workMap', href: '#iwooos-command-map-board', metric: '6', icon: Radar, tone: 'warn' }, - { key: 'unlockPath', href: '#iwooos-first-progress-unlock-path-board', metric: 'S4.9', icon: ListChecks, tone: 'warn' }, - { key: 'productScope', href: '#iwooos-global-security-mesh-matrix-board', metric: '8/8', icon: ShieldCheck, tone: 'steady' }, - { key: 'hostTools', href: '#iwooos-host-tool-evidence-chain-board', metric: '3', icon: Activity, tone: 'warn' }, - { key: 'sourceControl', href: '#iwooos-command-map-source-control', metric: '0', icon: GitBranch, tone: 'locked' }, + { key: 'workMap', href: '#iwooos-decision-gate-visuals', metric: '6', icon: Radar, tone: 'warn' }, + { key: 'unlockPath', href: '#iwooos-decision-gate-visuals', metric: 'S4.9', icon: ListChecks, tone: 'warn' }, + { key: 'productScope', href: '#iwooos-scope-evidence-visuals', metric: '8/8', icon: ShieldCheck, tone: 'steady' }, + { key: 'hostTools', href: '#iwooos-scope-evidence-visuals', metric: '3', icon: Activity, tone: 'warn' }, + { key: 'sourceControl', href: '#iwooos-decision-gate-visuals', metric: '0', icon: GitBranch, tone: 'locked' }, ] const iwooosFocusDeckBoundaries = [ @@ -4237,11 +4237,13 @@ const band = { } function IwoooSSectionGroup({ + id, title, summary, defaultOpen = false, children, }: { + id?: string title: string summary: string defaultOpen?: boolean @@ -4251,6 +4253,7 @@ function IwoooSSectionGroup({ return (
setExpanded(event.currentTarget.open)} style={{ @@ -16387,16 +16390,30 @@ export default function IwoooSPage({ params }: { params: { locale: string } }) { - - - - - - - - - - + + + + + + + + + + + + + + + + None: iwooos_first_screen_text, forbidden, ) + for text in [ + 'id="iwooos-decision-gate-visuals"', + 'id="iwooos-scope-evidence-visuals"', + "decisionGateVisuals", + "scopeEvidenceVisuals", + "iwooos-decision-gate-visuals", + "iwooos-scope-evidence-visuals", + ]: + assert_text_contains("iwooos_projection_page.progressive_disclosure_groups", iwooos_projection_page, text) + for key in ["decisionGateVisuals", "scopeEvidenceVisuals"]: + assert_contains( + "web_messages.zh-TW.iwooos.informationArchitecture.progressive_disclosure", + list(web_messages_zh["iwooos"]["informationArchitecture"].keys()), + key, + ) for text in [ "IwoooSVisualCommandDashboard", 'data-testid="iwooos-visual-command-dashboard"', @@ -728,6 +743,7 @@ def validate(root: Path) -> None: "s2_152_iwooos_decision_runway", "s2_153_iwooos_executive_snapshot", "s2_154_iwooos_first_screen_language_polish", + "s2_155_iwooos_first_layer_progressive_disclosure", ] assert_equal( "progress_delta_ledger.delta_ids", @@ -12095,10 +12111,16 @@ def validate(root: Path) -> None: "", ) assert_text_before( - "iwooos_page.first_progress_unlock_path_before_deep_sections", + "iwooos_page.decision_gate_group_contains_first_progress_unlock_path", + iwooos_projection_page, + 'id="iwooos-decision-gate-visuals"', + "", + ) + assert_text_before( + "iwooos_page.first_progress_unlock_path_before_scope_evidence_group", iwooos_projection_page, "", - " None: 'data-testid="iwooos-focus-deck-boundaries"', ) for text in [ - "href: '#iwooos-command-map-board'", - "href: '#iwooos-first-progress-unlock-path-board'", - "href: '#iwooos-global-security-mesh-matrix-board'", - "href: '#iwooos-host-tool-evidence-chain-board'", - "href: '#iwooos-command-map-source-control'", + "href: '#iwooos-decision-gate-visuals'", + "href: '#iwooos-scope-evidence-visuals'", + "id=\"iwooos-decision-gate-visuals\"", + "id=\"iwooos-scope-evidence-visuals\"", "iwooos-command-map-source-control", "iwooos_focus_deck_first_layer=true", "iwooos_focus_deck_item_count=5",