feat(web): consolidate navigation IA shell
Some checks failed
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m45s
CD Pipeline / build-and-deploy (push) Successful in 5m15s
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
Some checks failed
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m45s
CD Pipeline / build-and-deploy (push) Successful in 5m15s
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
This commit is contained in:
@@ -42,6 +42,7 @@ interface PaletteItem {
|
||||
icon: React.ReactNode
|
||||
action: () => void
|
||||
keywords?: string[]
|
||||
secondary?: boolean
|
||||
}
|
||||
|
||||
export function CommandPalette() {
|
||||
@@ -88,6 +89,7 @@ export function CommandPalette() {
|
||||
icon: <Zap size={14} />,
|
||||
action: () => nav('/authorizations'),
|
||||
keywords: ['授權', 'approve', '批准', 'authorization'],
|
||||
secondary: true,
|
||||
},
|
||||
{
|
||||
id: 'observability',
|
||||
@@ -105,6 +107,22 @@ export function CommandPalette() {
|
||||
action: () => nav('/awooop'),
|
||||
keywords: ['awooop', 'operator', 'console', '操作控制台', '總覽'],
|
||||
},
|
||||
{
|
||||
id: 'knowledge-automation',
|
||||
label: t('actionGoKnowledgeAutomation'),
|
||||
group: t('groupNav'),
|
||||
icon: <BookOpen size={14} />,
|
||||
action: () => nav('/knowledge-base'),
|
||||
keywords: ['knowledge', 'automation', '自動化', '知識', 'kb', 'playbook', 'runbook'],
|
||||
},
|
||||
{
|
||||
id: 'governance-security',
|
||||
label: t('actionGoGovernanceSecurity'),
|
||||
group: t('groupNav'),
|
||||
icon: <ShieldCheck size={14} />,
|
||||
action: () => nav('/governance'),
|
||||
keywords: ['governance', 'security', 'iwooos', 'code review', '治理', '安全', '資安', '審查'],
|
||||
},
|
||||
{
|
||||
id: 'awooop-work-items',
|
||||
label: t('actionGoWorkItems'),
|
||||
@@ -112,6 +130,7 @@ export function CommandPalette() {
|
||||
icon: <ClipboardList size={14} />,
|
||||
action: () => nav('/awooop/work-items'),
|
||||
keywords: ['work items', '工作鏈路', '工作項', 'recurrence'],
|
||||
secondary: true,
|
||||
},
|
||||
{
|
||||
id: 'awooop-runs',
|
||||
@@ -120,6 +139,7 @@ export function CommandPalette() {
|
||||
icon: <Activity size={14} />,
|
||||
action: () => nav('/awooop/runs'),
|
||||
keywords: ['runs', 'run monitor', '執行監控', 'run 監控'],
|
||||
secondary: true,
|
||||
},
|
||||
{
|
||||
id: 'awooop-approvals',
|
||||
@@ -128,6 +148,7 @@ export function CommandPalette() {
|
||||
icon: <ShieldCheck size={14} />,
|
||||
action: () => nav('/awooop/approvals'),
|
||||
keywords: ['approval queue', '審批佇列', '人工閘門', 'approve'],
|
||||
secondary: true,
|
||||
},
|
||||
{
|
||||
id: 'automation',
|
||||
@@ -136,6 +157,7 @@ export function CommandPalette() {
|
||||
icon: <Wrench size={14} />,
|
||||
action: () => nav('/automation'),
|
||||
keywords: ['automation', '自動化', 'auto'],
|
||||
secondary: true,
|
||||
},
|
||||
{
|
||||
id: 'operations',
|
||||
@@ -162,14 +184,16 @@ export function CommandPalette() {
|
||||
'資安網',
|
||||
'資安態勢',
|
||||
],
|
||||
secondary: true,
|
||||
},
|
||||
{
|
||||
id: 'knowledge',
|
||||
label: t('actionGoKnowledge'),
|
||||
group: t('groupNav'),
|
||||
icon: <BookOpen size={14} />,
|
||||
action: () => nav('/knowledge'),
|
||||
action: () => nav('/knowledge-base'),
|
||||
keywords: ['knowledge', '知識', '殿堂', 'kb'],
|
||||
secondary: true,
|
||||
},
|
||||
{
|
||||
id: 'settings',
|
||||
@@ -178,6 +202,7 @@ export function CommandPalette() {
|
||||
icon: <Settings size={14} />,
|
||||
action: () => nav('/settings'),
|
||||
keywords: ['settings', '設定', 'config'],
|
||||
secondary: true,
|
||||
},
|
||||
{
|
||||
id: 'terminal-page',
|
||||
@@ -186,11 +211,12 @@ export function CommandPalette() {
|
||||
icon: <Terminal size={14} />,
|
||||
action: () => nav('/terminal'),
|
||||
keywords: ['terminal', '終端', 'shell'],
|
||||
secondary: true,
|
||||
},
|
||||
]
|
||||
|
||||
const filtered = query.trim() === ''
|
||||
? items
|
||||
? items.filter(item => !item.secondary)
|
||||
: items.filter(item => {
|
||||
const q = query.toLowerCase()
|
||||
return item.label.toLowerCase().includes(q) ||
|
||||
|
||||
Reference in New Issue
Block a user