From 973fc7a455557148cda5d634be4ca5badf405dde Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 4 Jun 2026 14:49:42 +0800 Subject: [PATCH] feat(web): refine operator navigation IA --- apps/web/messages/en.json | 29 ++- apps/web/messages/zh-TW.json | 29 ++- apps/web/src/app/[locale]/awooop/layout.tsx | 54 +++-- .../command-palette/CommandPalette.tsx | 48 +++- apps/web/src/components/layout/sidebar.tsx | 134 ++++++---- docs/LOGBOOK.md | 45 ++++ ...-04-navigation-and-ai-flywheel-workplan.md | 229 ++++++++++++++++++ 7 files changed, 493 insertions(+), 75 deletions(-) create mode 100644 docs/workplans/2026-06-04-navigation-and-ai-flywheel-workplan.md diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json index 93e3b0cc..357e5fc0 100644 --- a/apps/web/messages/en.json +++ b/apps/web/messages/en.json @@ -69,6 +69,11 @@ "classicAICenter": "經典 AI 中心", "governance": "AI 治理", "awooop": "AwoooP", + "awooopHome": "AwoooP 總覽", + "workItems": "工作鏈路", + "runMonitor": "Run 監控", + "approvalQueue": "審批佇列", + "operationsOverview": "營運總覽", "iwooos": "IwoooS", "iwooosSecurityCompliance": "IwoooS 安全合規" }, @@ -1354,6 +1359,9 @@ } }, "navSection": { + "queues": "處理佇列", + "truth": "真相與治理", + "legacy": "系統與相容", "aiCore": "AI 核心", "monitoring": "監控與安全", "ops": "運維管理", @@ -2221,7 +2229,11 @@ "actionGoSettings": "前往設定", "actionGoTerminal": "前往終端頁面", "actionGoApprovals": "前往授權中心", - "actionGoIwooos": "前往 IwoooS 資安主控台" + "actionGoIwooos": "前往 IwoooS 資安主控台", + "actionGoAwoooP": "前往 AwoooP 總覽", + "actionGoWorkItems": "前往工作鏈路", + "actionGoRuns": "前往 Run 監控", + "actionGoApprovalQueue": "前往審批佇列" }, "aiopsTimeline": { "title": "AIOps 全景時序", @@ -2652,6 +2664,21 @@ } }, "awooop": { + "shell": { + "title": "AwoooP 操作控制台", + "subtitle": "控制平面", + "mode": "影子模式優先", + "operator": "操作員", + "navLabel": "AwoooP 工作流導航", + "nav": { + "overview": "總覽", + "workItems": "工作鏈路", + "runs": "Run 監控", + "approvals": "審批佇列", + "contracts": "合約", + "tenants": "租戶" + } + }, "home": { "eyebrow": "AI 自動化飛輪控制面", "title": "AwoooP 治理總覽", diff --git a/apps/web/messages/zh-TW.json b/apps/web/messages/zh-TW.json index 93e3b0cc..357e5fc0 100644 --- a/apps/web/messages/zh-TW.json +++ b/apps/web/messages/zh-TW.json @@ -69,6 +69,11 @@ "classicAICenter": "經典 AI 中心", "governance": "AI 治理", "awooop": "AwoooP", + "awooopHome": "AwoooP 總覽", + "workItems": "工作鏈路", + "runMonitor": "Run 監控", + "approvalQueue": "審批佇列", + "operationsOverview": "營運總覽", "iwooos": "IwoooS", "iwooosSecurityCompliance": "IwoooS 安全合規" }, @@ -1354,6 +1359,9 @@ } }, "navSection": { + "queues": "處理佇列", + "truth": "真相與治理", + "legacy": "系統與相容", "aiCore": "AI 核心", "monitoring": "監控與安全", "ops": "運維管理", @@ -2221,7 +2229,11 @@ "actionGoSettings": "前往設定", "actionGoTerminal": "前往終端頁面", "actionGoApprovals": "前往授權中心", - "actionGoIwooos": "前往 IwoooS 資安主控台" + "actionGoIwooos": "前往 IwoooS 資安主控台", + "actionGoAwoooP": "前往 AwoooP 總覽", + "actionGoWorkItems": "前往工作鏈路", + "actionGoRuns": "前往 Run 監控", + "actionGoApprovalQueue": "前往審批佇列" }, "aiopsTimeline": { "title": "AIOps 全景時序", @@ -2652,6 +2664,21 @@ } }, "awooop": { + "shell": { + "title": "AwoooP 操作控制台", + "subtitle": "控制平面", + "mode": "影子模式優先", + "operator": "操作員", + "navLabel": "AwoooP 工作流導航", + "nav": { + "overview": "總覽", + "workItems": "工作鏈路", + "runs": "Run 監控", + "approvals": "審批佇列", + "contracts": "合約", + "tenants": "租戶" + } + }, "home": { "eyebrow": "AI 自動化飛輪控制面", "title": "AwoooP 治理總覽", diff --git a/apps/web/src/app/[locale]/awooop/layout.tsx b/apps/web/src/app/[locale]/awooop/layout.tsx index 4fcf24bf..a2bdc0d2 100644 --- a/apps/web/src/app/[locale]/awooop/layout.tsx +++ b/apps/web/src/app/[locale]/awooop/layout.tsx @@ -8,8 +8,9 @@ import { AppLayout } from "@/components/layout"; import { Link, usePathname } from "@/i18n/routing"; -import { Activity, BrainCircuit, Building2, ClipboardList, FileText, ShieldCheck } from "lucide-react"; +import { Activity, BrainCircuit, Building2, ClipboardList, FileText, LayoutDashboard, ShieldCheck } from "lucide-react"; import { cn } from "@/lib/utils"; +import { useTranslations } from "next-intl"; // ============================================================================= // 導航設定 @@ -17,30 +18,36 @@ import { cn } from "@/lib/utils"; const navItems = [ { - label: "工作鏈路", + labelKey: "overview", + href: "/awooop" as const, + icon: LayoutDashboard, + exact: true, + }, + { + labelKey: "workItems", href: "/awooop/work-items" as const, icon: ClipboardList, }, { - label: "租戶管理", - href: "/awooop/tenants" as const, - icon: Building2, - }, - { - label: "合約儀表板", - href: "/awooop/contracts" as const, - icon: FileText, - }, - { - label: "執行監控", + labelKey: "runs", href: "/awooop/runs" as const, icon: Activity, }, { - label: "審批佇列", + labelKey: "approvals", href: "/awooop/approvals" as const, icon: ShieldCheck, }, + { + labelKey: "contracts", + href: "/awooop/contracts" as const, + icon: FileText, + }, + { + labelKey: "tenants", + href: "/awooop/tenants" as const, + icon: Building2, + }, ]; // ============================================================================= @@ -55,6 +62,7 @@ export default function AwoooPLayout({ params: { locale: string }; }) { const pathname = usePathname(); + const t = useTranslations("awooop.shell"); return ( @@ -67,31 +75,31 @@ export default function AwoooPLayout({

- AwoooP 操作控制台 + {t("title")}

- 控制平面 + {t("subtitle")} - 影子模式優先 + {t("mode")}
- 操作員 + {t("operator")}