diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json index 9b469e43c..302bcb204 100644 --- a/apps/web/messages/en.json +++ b/apps/web/messages/en.json @@ -12815,11 +12815,36 @@ "iwooos": { "eyebrow": "資訊安全網", "title": "IwoooS", - "subtitle": "AWOOOI 的 AI 自動化資安閉環:把 Kali、原始碼、主機、告警、候選、執行閘門、驗證器與 AwoooP 證據串成可視化資安態勢。", + "subtitle": "AI SOC 資安控制台:集中讀取主機、原始碼、告警、候選處置與驗證器狀態。", "boundary": { "label": "目前邊界", - "state": "只讀鏡像 / 先觀測", - "detail": "只顯示態勢與缺口;掃描、修復、更新、阻擋仍未開閘。" + "state": "AI 受控推進 / critical break-glass", + "detail": "低 / 中 / 高風險走 selector、dry-run、rollback 與 verifier;secret、破壞性 DB、重啟、付費 provider 與 refs 破壞維持 break-glass。" + }, + "commandRail": { + "eyebrow": "控制面", + "title": "AI SOC 工作台", + "navLabel": "IwoooS 第一屏控制入口", + "metrics": { + "controlledApply": { + "label": "受控執行" + }, + "automationClosure": { + "label": "自動化" + }, + "securityPosture": { + "label": "資安態勢" + }, + "breakGlass": { + "label": "硬邊界" + } + }, + "links": { + "evidence": "證據", + "decisions": "決策", + "scope": "範圍", + "owners": "Owner" + } }, "progressIntegrityRibbon": { "eyebrow": "進度誠實儀表", diff --git a/apps/web/messages/zh-TW.json b/apps/web/messages/zh-TW.json index f80a30c10..484a5069b 100644 --- a/apps/web/messages/zh-TW.json +++ b/apps/web/messages/zh-TW.json @@ -12815,11 +12815,36 @@ "iwooos": { "eyebrow": "資訊安全網", "title": "IwoooS", - "subtitle": "AWOOOI 的 AI 自動化資安閉環:把 Kali、原始碼、主機、告警、候選、執行閘門、驗證器與 AwoooP 證據串成可視化資安態勢。", + "subtitle": "AI SOC 資安控制台:集中讀取主機、原始碼、告警、候選處置與驗證器狀態。", "boundary": { "label": "目前邊界", - "state": "只讀鏡像 / 先觀測", - "detail": "只顯示態勢與缺口;掃描、修復、更新、阻擋仍未開閘。" + "state": "AI 受控推進 / critical break-glass", + "detail": "低 / 中 / 高風險走 selector、dry-run、rollback 與 verifier;secret、破壞性 DB、重啟、付費 provider 與 refs 破壞維持 break-glass。" + }, + "commandRail": { + "eyebrow": "控制面", + "title": "AI SOC 工作台", + "navLabel": "IwoooS 第一屏控制入口", + "metrics": { + "controlledApply": { + "label": "受控執行" + }, + "automationClosure": { + "label": "自動化" + }, + "securityPosture": { + "label": "資安態勢" + }, + "breakGlass": { + "label": "硬邊界" + } + }, + "links": { + "evidence": "證據", + "decisions": "決策", + "scope": "範圍", + "owners": "Owner" + } }, "progressIntegrityRibbon": { "eyebrow": "進度誠實儀表", diff --git a/apps/web/src/app/[locale]/iwooos/page.tsx b/apps/web/src/app/[locale]/iwooos/page.tsx index e026a6ba7..8924f34a8 100644 --- a/apps/web/src/app/[locale]/iwooos/page.tsx +++ b/apps/web/src/app/[locale]/iwooos/page.tsx @@ -6295,6 +6295,20 @@ const evidenceItems = [ 'kali-integration-status.snapshot.json', ] +const commandRailMetrics = [ + { key: 'controlledApply', value: 'L/M/H', icon: Activity, tone: 'steady' }, + { key: 'automationClosure', value: '21/21', icon: Workflow, tone: 'steady' }, + { key: 'securityPosture', value: '64%', icon: ShieldCheck, tone: 'warn' }, + { key: 'breakGlass', value: 'critical', icon: Lock, tone: 'locked' }, +] as const + +const commandRailLinks = [ + { key: 'evidence', href: '#iwooos-first-layer-evidence', icon: SearchCheck, tone: 'steady' }, + { key: 'decisions', href: '#iwooos-decision-gate-visuals', icon: Radar, tone: 'warn' }, + { key: 'scope', href: '#iwooos-scope-evidence-visuals', icon: Network, tone: 'steady' }, + { key: 'owners', href: '#iwooos-source-control-readiness-board', icon: ClipboardCheck, tone: 'warn' }, +] as const + const toneColors = { steady: '#1f7a4d', warn: '#b66a2d', @@ -15504,6 +15518,128 @@ function IwoooSFirstProgressUnlockPathBoard() { ) } +function IwoooSCommandRail() { + const t = useTranslations('iwooos.commandRail') + + return ( +
+
+
+
+ + {t('eyebrow')} +
+

{t('title')}

+
+ +
+ {commandRailMetrics.map(item => { + const Icon = item.icon + + return ( +
+
+ + + {t(`metrics.${item.key}.label` as never)} + +
+ {item.value} +
+ ) + })} +
+ + +
+
+ ) +} + function IwoooSProgressIntegrityRibbon() { const t = useTranslations('iwooos.progressIntegrityRibbon') const textWrap = { overflowWrap: 'anywhere' as const, wordBreak: 'break-word' as const } @@ -23548,6 +23684,7 @@ export default function IwoooSPage({ params }: { params: { locale: string } }) { +