fix(iwooos): restore security navigation guard
Some checks failed
Code Review / ai-code-review (push) Successful in 14s
CD Pipeline / tests (push) Failing after 1m32s
CD Pipeline / build-and-deploy (push) Has been skipped
CD Pipeline / post-deploy-checks (push) Has been skipped

This commit is contained in:
Your Name
2026-06-26 18:37:47 +08:00
parent 6814104aaa
commit 7f4c497297
2 changed files with 20 additions and 9 deletions

View File

@@ -114,11 +114,11 @@ export const PRODUCT_NAV_SECTIONS: ProductNavSection[] = [
},
{
id: 'iwooos-security',
href: '/governance',
href: '/iwooos',
labelKey: 'iwooos',
Icon: ShieldCheck,
aliases: ['/security-compliance'],
relatedPaths: ['/iwooos', '/security', '/compliance'],
relatedPaths: ['/security', '/compliance'],
},
{
id: 'code-review',

View File

@@ -409,6 +409,9 @@ def validate(root: Path) -> None:
public_security_redaction = (
root / "apps" / "web" / "src" / "lib" / "public-security-redaction.ts"
).read_text(encoding="utf-8")
product_ia = (root / "apps" / "web" / "src" / "lib" / "navigation" / "product-ia.ts").read_text(
encoding="utf-8"
)
sidebar = (root / "apps" / "web" / "src" / "components" / "layout" / "sidebar.tsx").read_text(
encoding="utf-8"
)
@@ -646,14 +649,22 @@ def validate(root: Path) -> None:
intake_contracts = [contract for wave in intake["intake_waves"] for contract in wave["contracts"]]
assert_contains("intake.contracts", intake_contracts, "iwooos_posture_projection_v1")
assert_text_contains("sidebar.iwooos_security_unified_entry", sidebar, "id: 'iwooos-security'")
assert_text_contains("sidebar.iwooos_security_label", sidebar, "labelKey: 'iwooos'")
assert_text_not_contains("sidebar.iwooos_security_duplicate_label", sidebar, "labelKey: 'iwooosSecurityCompliance'")
assert_text_contains("sidebar.security_compliance_alias", sidebar, "aliases: ['/security-compliance']")
assert_text_contains("product_ia.iwooos_security_unified_entry", product_ia, "id: 'iwooos-security'")
assert_text_contains("product_ia.iwooos_security_route", product_ia, "href: '/iwooos'")
assert_text_contains("product_ia.iwooos_security_label", product_ia, "labelKey: 'iwooos'")
assert_text_not_contains(
"product_ia.iwooos_security_duplicate_label",
product_ia,
"labelKey: 'iwooosSecurityCompliance'",
)
assert_text_contains("product_ia.security_compliance_alias", product_ia, "aliases: ['/security-compliance']")
assert_text_not_contains("sidebar.duplicate_security_compliance_entry", sidebar, "id: 'security-compliance'")
assert_text_contains("command_palette.iwooos_entry", command_palette, "id: 'iwooos'")
assert_text_contains("command_palette.iwooos_route", command_palette, "nav('/iwooos')")
assert_text_contains("command_palette.security_keyword", command_palette, "'安全合規'")
assert_text_contains("command_palette.iwooos_entry", command_palette, "'iwooos-security'")
assert_text_contains(
"command_palette.product_ia_source",
command_palette,
"PRODUCT_NAV_SECTIONS.flatMap(section => section.items)",
)
assert_text_not_contains("command_palette.legacy_security_entry", command_palette, "id: 'security'")
assert_text_not_contains("command_palette.legacy_security_compliance_route", command_palette, "nav('/security-compliance')")
assert_equal(