diff --git a/apps/web/src/components/layout/header.tsx b/apps/web/src/components/layout/header.tsx
index 0915de06..fd0d37ee 100644
--- a/apps/web/src/components/layout/header.tsx
+++ b/apps/web/src/components/layout/header.tsx
@@ -7,7 +7,7 @@
* - brand-area: AwoooI Pills V2 logo + display name
* - page-title: Syne 26px 800
* - lang-btn: pill 樣式 (border-radius 20px)
- * - avatar: 34px 圓形 #d97757
+ * - operator marker: 34px 圓形 #d97757,僅顯示角色圖示,不顯示個人縮寫
*
* Phase 19: 使用 Z_INDEX.HEADER (30)
* @see lib/constants/z-index.ts
@@ -17,6 +17,7 @@
import { useCallback } from 'react'
import { useTranslations } from 'next-intl'
import { usePathname } from 'next/navigation'
+import { ShieldCheck } from 'lucide-react'
import { Z_INDEX } from '@/lib/constants/z-index'
// =============================================================================
@@ -194,8 +195,11 @@ export function Header({
{t('en')}
- {/* Avatar — 34px 圓形 #d97757 */}
-
- OG
+ }}
+ >
+
diff --git a/scripts/security/security-mirror-progress-guard.py b/scripts/security/security-mirror-progress-guard.py
index 04aecafa..e18fbfe5 100755
--- a/scripts/security/security-mirror-progress-guard.py
+++ b/scripts/security/security-mirror-progress-guard.py
@@ -276,6 +276,9 @@ def validate(root: Path) -> None:
sidebar = (root / "apps" / "web" / "src" / "components" / "layout" / "sidebar.tsx").read_text(
encoding="utf-8"
)
+ layout_header = (root / "apps" / "web" / "src" / "components" / "layout" / "header.tsx").read_text(
+ encoding="utf-8"
+ )
command_palette = (
root / "apps" / "web" / "src" / "components" / "command-palette" / "CommandPalette.tsx"
).read_text(encoding="utf-8")
@@ -350,6 +353,7 @@ def validate(root: Path) -> None:
governance_automation_inventory_tab,
iwooos_bridge,
public_security_redaction,
+ layout_header,
]
)
for forbidden in [
@@ -368,6 +372,8 @@ def validate(root: Path) -> None:
"ws={route.websocket_route_count}",
]:
assert_text_not_contains("frontend.tenants_visible_internal_implementation_text", awooop_tenants_page, forbidden)
+ assert_text_not_contains("frontend.layout_header.personal_initials", layout_header, ">OG<")
+ assert_text_contains("frontend.layout_header.operator_marker_icon", layout_header, "ShieldCheck")
for label, text in [
("awooop_home_page", awooop_home_page),