feat(web): add IwoooS topology atlas
All checks were successful
CD Pipeline / tests (push) Successful in 1m21s
Code Review / ai-code-review (push) Successful in 12s
CD Pipeline / build-and-deploy (push) Successful in 3m38s
CD Pipeline / post-deploy-checks (push) Successful in 2m28s

This commit is contained in:
Your Name
2026-06-01 10:02:51 +08:00
parent 07000d532c
commit 86fe36dc55
7 changed files with 1286 additions and 1 deletions

View File

@@ -612,6 +612,7 @@ def validate(root: Path) -> None:
"s2_145_iwooos_first_layer_focus_deck",
"s2_146_iwooos_immediate_visual_mesh",
"s2_147_iwooos_gate_radar_first_layer",
"s2_148_iwooos_professional_topology_atlas",
]
assert_equal(
"progress_delta_ledger.delta_ids",
@@ -1565,6 +1566,43 @@ def validate(root: Path) -> None:
iwooos_projection["summary"]["immediate_visual_mesh_runtime_gate_count"],
0,
)
assert_true(
"iwooos_projection.summary.topology_atlas_first_layer",
iwooos_projection["summary"]["topology_atlas_first_layer"],
)
assert_equal(
"iwooos_projection.summary.topology_atlas_lens_count",
iwooos_projection["summary"]["topology_atlas_lens_count"],
4,
)
assert_equal(
"iwooos_projection.summary.topology_atlas_node_count",
iwooos_projection["summary"]["topology_atlas_node_count"],
7,
)
assert_equal(
"iwooos_projection.summary.topology_atlas_layer_count",
iwooos_projection["summary"]["topology_atlas_layer_count"],
5,
)
assert_equal(
"iwooos_projection.summary.topology_atlas_technical_chart_count",
iwooos_projection["summary"]["topology_atlas_technical_chart_count"],
3,
)
assert_true(
"iwooos_projection.summary.topology_atlas_interactive_lens_allowed",
iwooos_projection["summary"]["topology_atlas_interactive_lens_allowed"],
)
assert_true(
"iwooos_projection.summary.topology_atlas_above_gate_radar",
iwooos_projection["summary"]["topology_atlas_above_gate_radar"],
)
assert_equal(
"iwooos_projection.summary.topology_atlas_runtime_gate_count",
iwooos_projection["summary"]["topology_atlas_runtime_gate_count"],
0,
)
assert_true(
"iwooos_projection.summary.gate_radar_first_layer",
iwooos_projection["summary"]["gate_radar_first_layer"],
@@ -11957,6 +11995,66 @@ def validate(root: Path) -> None:
iwooos_projection_page,
text,
)
for text in [
'data-testid="iwooos-topology-atlas-board"',
'data-testid="iwooos-topology-atlas-canvas"',
'data-testid="iwooos-topology-atlas-active-panel"',
'data-testid="iwooos-topology-atlas-technical-charts"',
'data-testid="iwooos-topology-atlas-boundaries"',
"IwoooSTopologyAtlasBoard",
"IwoooSTopologyAtlasMode",
"iwooosTopologyAtlasLenses",
"iwooosTopologyAtlasNodes",
"iwooosTopologyAtlasLayers",
"iwooosTopologyAtlasCharts",
"iwooosTopologyAtlasBoundaries",
"iwooos-topology-grid",
]:
assert_text_contains(
"iwooos_page.topology_atlas",
iwooos_projection_page,
text,
)
assert_text_before(
"iwooos_page.immediate_visual_mesh_before_topology_atlas",
iwooos_projection_page,
"<IwoooSImmediateVisualMeshBoard />",
"<IwoooSTopologyAtlasBoard />",
)
assert_text_before(
"iwooos_page.topology_atlas_before_gate_radar",
iwooos_projection_page,
"<IwoooSTopologyAtlasBoard />",
"<IwoooSGateRadarBoard />",
)
assert_text_before(
"iwooos_page.topology_atlas_before_command_map",
iwooos_projection_page,
"<IwoooSTopologyAtlasBoard />",
"<IwoooSCommandMapBoard />",
)
for text in [
"iwooos_topology_atlas_first_layer=true",
"iwooos_topology_atlas_lens_count=4",
"iwooos_topology_atlas_node_count=7",
"iwooos_topology_atlas_layer_count=5",
"iwooos_topology_atlas_technical_chart_count=3",
"iwooos_topology_atlas_interactive_lens_allowed=true",
"iwooos_topology_atlas_execution_action_buttons_allowed=false",
"iwooos_topology_atlas_runtime_gate_count=0",
"iwooos_topology_atlas_scan_authorized=false",
"iwooos_topology_atlas_host_change_authorized=false",
"iwooos_topology_atlas_source_control_mutation_authorized=false",
"runtime_execution_authorized=false",
"active_runtime_gate_count=0",
"action_buttons_allowed=false",
"not_authorization=true",
]:
assert_text_contains(
"iwooos_page.topology_atlas_boundary",
iwooos_projection_page,
text,
)
for text in [
'data-testid="iwooos-gate-radar-board"',
'data-testid="iwooos-gate-radar-canvas"',
@@ -12228,6 +12326,155 @@ def validate(root: Path) -> None:
"iwooos_projection.immediate_visual_mesh_nodes.runtimeGate.scan_authorized",
runtime_gate_mesh_node["scan_authorized"],
)
expected_topology_atlas_lens_ids = [
"architecture",
"topology",
"attackSurface",
"evidenceFlow",
]
topology_atlas_lenses = iwooos_projection["topology_atlas_lenses"]
assert_equal(
"iwooos_projection.topology_atlas_lenses.ids",
[item["lens_id"] for item in topology_atlas_lenses],
expected_topology_atlas_lens_ids,
)
assert_equal(
"iwooos_projection.topology_atlas_lenses.display_order",
[item["display_order"] for item in topology_atlas_lenses],
list(range(1, len(expected_topology_atlas_lens_ids) + 1)),
)
for item in topology_atlas_lenses:
assert_equal(
f"iwooos_projection.topology_atlas_lenses.{item['lens_id']}.display_mode",
item["display_mode"],
"first_screen_professional_topology_atlas",
)
assert_true(
f"iwooos_projection.topology_atlas_lenses.{item['lens_id']}.interactive_lens_allowed",
item["interactive_lens_allowed"],
)
assert_false(
f"iwooos_projection.topology_atlas_lenses.{item['lens_id']}.execution_action_button_allowed",
item["execution_action_button_allowed"],
)
assert_false(
f"iwooos_projection.topology_atlas_lenses.{item['lens_id']}.runtime_gate_opened",
item["runtime_gate_opened"],
)
assert_false(
f"iwooos_projection.topology_atlas_lenses.{item['lens_id']}.runtime_execution_authorized",
item["runtime_execution_authorized"],
)
assert_true(
f"iwooos_projection.topology_atlas_lenses.{item['lens_id']}.not_authorization",
item["not_authorization"],
)
topology_lens = next(item for item in topology_atlas_lenses if item["lens_id"] == "topology")
for flag in ["scan_authorized", "host_change_authorized"]:
assert_false(
f"iwooos_projection.topology_atlas_lenses.topology.{flag}",
topology_lens[flag],
)
attack_surface_lens = next(item for item in topology_atlas_lenses if item["lens_id"] == "attackSurface")
for flag in ["source_control_mutation_authorized", "github_primary_switch_authorized", "blast_radius_verified"]:
assert_false(
f"iwooos_projection.topology_atlas_lenses.attackSurface.{flag}",
attack_surface_lens[flag],
)
evidence_flow_lens = next(item for item in topology_atlas_lenses if item["lens_id"] == "evidenceFlow")
for count_key in ["owner_response_received_count", "reviewer_accepted_count"]:
assert_equal(
f"iwooos_projection.topology_atlas_lenses.evidenceFlow.{count_key}",
evidence_flow_lens[count_key],
0,
)
expected_topology_atlas_node_ids = [
"productSurface",
"sourceControl",
"kali",
"devHosts",
"monitoring",
"awooopTruth",
"runtimeGate",
]
topology_atlas_nodes = iwooos_projection["topology_atlas_nodes"]
assert_equal(
"iwooos_projection.topology_atlas_nodes.ids",
[item["node_id"] for item in topology_atlas_nodes],
expected_topology_atlas_node_ids,
)
assert_equal(
"iwooos_projection.topology_atlas_nodes.display_order",
[item["display_order"] for item in topology_atlas_nodes],
list(range(1, len(expected_topology_atlas_node_ids) + 1)),
)
for item in topology_atlas_nodes:
assert_true(
f"iwooos_projection.topology_atlas_nodes.{item['node_id']}.read_only",
item["read_only"],
)
assert_false(
f"iwooos_projection.topology_atlas_nodes.{item['node_id']}.runtime_gate_opened",
item["runtime_gate_opened"],
)
assert_false(
f"iwooos_projection.topology_atlas_nodes.{item['node_id']}.runtime_execution_authorized",
item["runtime_execution_authorized"],
)
assert_true(
f"iwooos_projection.topology_atlas_nodes.{item['node_id']}.not_authorization",
item["not_authorization"],
)
for node_id in ["kali", "devHosts"]:
node = next(item for item in topology_atlas_nodes if item["node_id"] == node_id)
assert_false(
f"iwooos_projection.topology_atlas_nodes.{node_id}.scan_authorized",
node["scan_authorized"],
)
assert_false(
f"iwooos_projection.topology_atlas_nodes.{node_id}.host_change_authorized",
node["host_change_authorized"],
)
source_control_topology_node = next(item for item in topology_atlas_nodes if item["node_id"] == "sourceControl")
assert_false(
"iwooos_projection.topology_atlas_nodes.sourceControl.source_control_mutation_authorized",
source_control_topology_node["source_control_mutation_authorized"],
)
expected_topology_atlas_chart_ids = [
"contextDepth",
"blastRadius",
"evidenceFreshness",
]
topology_atlas_charts = iwooos_projection["topology_atlas_technical_charts"]
assert_equal(
"iwooos_projection.topology_atlas_technical_charts.ids",
[item["chart_id"] for item in topology_atlas_charts],
expected_topology_atlas_chart_ids,
)
assert_equal(
"iwooos_projection.topology_atlas_technical_charts.display_order",
[item["display_order"] for item in topology_atlas_charts],
list(range(1, len(expected_topology_atlas_chart_ids) + 1)),
)
for item in topology_atlas_charts:
assert_equal(
f"iwooos_projection.topology_atlas_technical_charts.{item['chart_id']}.display_mode",
item["display_mode"],
"first_screen_professional_topology_atlas",
)
assert_false(
f"iwooos_projection.topology_atlas_technical_charts.{item['chart_id']}.runtime_delta",
item["runtime_delta"],
)
assert_true(
f"iwooos_projection.topology_atlas_technical_charts.{item['chart_id']}.not_authorization",
item["not_authorization"],
)
blast_radius_chart = next(item for item in topology_atlas_charts if item["chart_id"] == "blastRadius")
assert_false(
"iwooos_projection.topology_atlas_technical_charts.blastRadius.blast_radius_verified",
blast_radius_chart["blast_radius_verified"],
)
expected_gate_radar_lane_ids = [
"visible",
"blocker",
@@ -12544,6 +12791,138 @@ def validate(root: Path) -> None:
list(web_messages_en["iwooos"]["immediateVisualMesh"]["nodes"][key].keys()),
field,
)
assert_contains(
"web_messages.zh-TW.iwooos.topologyAtlas",
list(web_messages_zh["iwooos"].keys()),
"topologyAtlas",
)
assert_contains(
"web_messages.en.iwooos.topologyAtlas",
list(web_messages_en["iwooos"].keys()),
"topologyAtlas",
)
for key in [
"eyebrow",
"title",
"subtitle",
"tabsLabel",
"mapLabel",
"panelLabels",
"lenses",
"nodes",
"layers",
"charts",
"boundaryTitle",
"boundaryIntro",
]:
assert_contains(
"web_messages.zh-TW.iwooos.topologyAtlas.keys",
list(web_messages_zh["iwooos"]["topologyAtlas"].keys()),
key,
)
assert_contains(
"web_messages.en.iwooos.topologyAtlas.keys",
list(web_messages_en["iwooos"]["topologyAtlas"].keys()),
key,
)
for key in ["evidence", "next", "locked"]:
assert_contains(
"web_messages.zh-TW.iwooos.topologyAtlas.panelLabels",
list(web_messages_zh["iwooos"]["topologyAtlas"]["panelLabels"].keys()),
key,
)
assert_contains(
"web_messages.en.iwooos.topologyAtlas.panelLabels",
list(web_messages_en["iwooos"]["topologyAtlas"]["panelLabels"].keys()),
key,
)
for key in ["architecture", "topology", "attackSurface", "evidenceFlow"]:
assert_contains(
"web_messages.zh-TW.iwooos.topologyAtlas.lenses",
list(web_messages_zh["iwooos"]["topologyAtlas"]["lenses"].keys()),
key,
)
assert_contains(
"web_messages.en.iwooos.topologyAtlas.lenses",
list(web_messages_en["iwooos"]["topologyAtlas"]["lenses"].keys()),
key,
)
for field in ["title", "mapTitle", "detail", "evidence", "next", "locked"]:
assert_contains(
f"web_messages.zh-TW.iwooos.topologyAtlas.lenses.{key}",
list(web_messages_zh["iwooos"]["topologyAtlas"]["lenses"][key].keys()),
field,
)
assert_contains(
f"web_messages.en.iwooos.topologyAtlas.lenses.{key}",
list(web_messages_en["iwooos"]["topologyAtlas"]["lenses"][key].keys()),
field,
)
for key in ["productSurface", "sourceControl", "kali", "devHosts", "monitoring", "awooopTruth", "runtimeGate"]:
assert_contains(
"web_messages.zh-TW.iwooos.topologyAtlas.nodes",
list(web_messages_zh["iwooos"]["topologyAtlas"]["nodes"].keys()),
key,
)
assert_contains(
"web_messages.en.iwooos.topologyAtlas.nodes",
list(web_messages_en["iwooos"]["topologyAtlas"]["nodes"].keys()),
key,
)
assert_contains(
f"web_messages.zh-TW.iwooos.topologyAtlas.nodes.{key}",
list(web_messages_zh["iwooos"]["topologyAtlas"]["nodes"][key].keys()),
"title",
)
assert_contains(
f"web_messages.en.iwooos.topologyAtlas.nodes.{key}",
list(web_messages_en["iwooos"]["topologyAtlas"]["nodes"][key].keys()),
"title",
)
for key in ["externalSurface", "codeSupply", "hostFabric", "evidenceOps", "gateControl"]:
assert_contains(
"web_messages.zh-TW.iwooos.topologyAtlas.layers",
list(web_messages_zh["iwooos"]["topologyAtlas"]["layers"].keys()),
key,
)
assert_contains(
"web_messages.en.iwooos.topologyAtlas.layers",
list(web_messages_en["iwooos"]["topologyAtlas"]["layers"].keys()),
key,
)
for field in ["title", "body"]:
assert_contains(
f"web_messages.zh-TW.iwooos.topologyAtlas.layers.{key}",
list(web_messages_zh["iwooos"]["topologyAtlas"]["layers"][key].keys()),
field,
)
assert_contains(
f"web_messages.en.iwooos.topologyAtlas.layers.{key}",
list(web_messages_en["iwooos"]["topologyAtlas"]["layers"][key].keys()),
field,
)
for key in ["contextDepth", "blastRadius", "evidenceFreshness"]:
assert_contains(
"web_messages.zh-TW.iwooos.topologyAtlas.charts",
list(web_messages_zh["iwooos"]["topologyAtlas"]["charts"].keys()),
key,
)
assert_contains(
"web_messages.en.iwooos.topologyAtlas.charts",
list(web_messages_en["iwooos"]["topologyAtlas"]["charts"].keys()),
key,
)
for field in ["label", "body"]:
assert_contains(
f"web_messages.zh-TW.iwooos.topologyAtlas.charts.{key}",
list(web_messages_zh["iwooos"]["topologyAtlas"]["charts"][key].keys()),
field,
)
assert_contains(
f"web_messages.en.iwooos.topologyAtlas.charts.{key}",
list(web_messages_en["iwooos"]["topologyAtlas"]["charts"][key].keys()),
field,
)
assert_contains(
"web_messages.zh-TW.iwooos.gateRadar",
list(web_messages_zh["iwooos"].keys()),