feat(web): 視覺化 IwoooS 資安指揮板
This commit is contained in:
@@ -225,6 +225,90 @@ def validate(root: Path) -> None:
|
||||
web_messages_en,
|
||||
web_messages_zh,
|
||||
)
|
||||
for text in [
|
||||
"IwoooSVisualCommandDashboard",
|
||||
'data-testid="iwooos-visual-command-dashboard"',
|
||||
"visualDashboardMetrics",
|
||||
"visualDashboardNodes",
|
||||
"visualDashboardGates",
|
||||
"conic-gradient",
|
||||
"visualCommandDashboard",
|
||||
]:
|
||||
assert_text_contains("iwooos_projection_page.visual_command_dashboard", iwooos_projection_page, text)
|
||||
for key in [
|
||||
"eyebrow",
|
||||
"title",
|
||||
"subtitle",
|
||||
"metrics",
|
||||
"nodes",
|
||||
"gateMatrix",
|
||||
"gates",
|
||||
"drilldown",
|
||||
]:
|
||||
assert_contains(
|
||||
"web_messages.zh-TW.iwooos.visualCommandDashboard",
|
||||
list(web_messages_zh["iwooos"]["visualCommandDashboard"].keys()),
|
||||
key,
|
||||
)
|
||||
for key in ["overall", "framework", "runtime"]:
|
||||
assert_contains(
|
||||
"web_messages.zh-TW.iwooos.visualCommandDashboard.metrics",
|
||||
list(web_messages_zh["iwooos"]["visualCommandDashboard"]["metrics"].keys()),
|
||||
key,
|
||||
)
|
||||
for key in ["awoooiCore", "websites", "kali112", "devHosts", "githubPrimary", "runtimeGate"]:
|
||||
assert_contains(
|
||||
"web_messages.zh-TW.iwooos.visualCommandDashboard.nodes",
|
||||
list(web_messages_zh["iwooos"]["visualCommandDashboard"]["nodes"].keys()),
|
||||
key,
|
||||
)
|
||||
for key in ["kaliMaintenance", "ownerResponse", "githubPrimary", "runtimeExecution"]:
|
||||
assert_contains(
|
||||
"web_messages.zh-TW.iwooos.visualCommandDashboard.gates",
|
||||
list(web_messages_zh["iwooos"]["visualCommandDashboard"]["gates"].keys()),
|
||||
key,
|
||||
)
|
||||
for key in [
|
||||
"eyebrow",
|
||||
"title",
|
||||
"subtitle",
|
||||
"maintenanceGateLabel",
|
||||
"maintenanceGate",
|
||||
"nextEvidenceLabel",
|
||||
"nextEvidence",
|
||||
"boundaryTitle",
|
||||
"boundaryIntro",
|
||||
"items",
|
||||
]:
|
||||
assert_contains(
|
||||
"web_messages.zh-TW.iwooos.kaliMaintenanceReadiness",
|
||||
list(web_messages_zh["iwooos"]["kaliMaintenanceReadiness"].keys()),
|
||||
key,
|
||||
)
|
||||
for key in [
|
||||
"readOnlySnapshot",
|
||||
"upgradablePackages",
|
||||
"failedSystemdUnits",
|
||||
"runtimeGate",
|
||||
]:
|
||||
assert_contains(
|
||||
"web_messages.zh-TW.iwooos.kaliMaintenanceReadiness.items",
|
||||
list(web_messages_zh["iwooos"]["kaliMaintenanceReadiness"]["items"].keys()),
|
||||
key,
|
||||
)
|
||||
for text in [
|
||||
"KaliMaintenanceReadinessBoard",
|
||||
'data-testid="iwooos-kali-maintenance-readiness-board"',
|
||||
"kali_112_upgradable_package_count=1994",
|
||||
"kali_112_failed_systemd_unit_count=1",
|
||||
"kali_112_full_upgrade_authorized=false",
|
||||
"kali_112_reboot_authorized=false",
|
||||
"kali_112_package_update_executed=false",
|
||||
"kali_112_host_reboot_executed=false",
|
||||
"kali_112_active_scan_executed=false",
|
||||
"kali_112_runtime_execution_authorized=false",
|
||||
]:
|
||||
assert_text_contains("iwooos_projection_page.kali_maintenance_readiness", iwooos_projection_page, text)
|
||||
|
||||
progress = rollup["progress_estimate"]
|
||||
assert_equal("progress.overall_percent", progress["overall_percent"], 61)
|
||||
@@ -1305,6 +1389,12 @@ def validate(root: Path) -> None:
|
||||
"dev_168_development_host",
|
||||
"dev_111_development_host",
|
||||
]
|
||||
expected_iwooos_kali_maintenance_readiness_item_ids = [
|
||||
"kali_112_read_only_snapshot",
|
||||
"kali_112_upgradable_package_count",
|
||||
"kali_112_failed_systemd_unit_count",
|
||||
"kali_112_full_upgrade_reboot_gate",
|
||||
]
|
||||
expected_iwooos_host_action_gate_item_ids = [
|
||||
"host_active_scan_gate",
|
||||
"host_credentialed_scan_gate",
|
||||
@@ -1601,6 +1691,19 @@ def validate(root: Path) -> None:
|
||||
"host_decision_record_human_record_owner_review_preparation_validation_runtime_gate_separate_check",
|
||||
"host_decision_record_human_record_owner_review_preparation_no_execution_attestation_present_check",
|
||||
]
|
||||
assert_equal(
|
||||
"iwooos_projection.summary.visual_command_dashboard_widget_count",
|
||||
iwooos_projection["summary"]["visual_command_dashboard_widget_count"],
|
||||
13,
|
||||
)
|
||||
assert_true(
|
||||
"iwooos_projection.summary.visual_command_dashboard_first_layer",
|
||||
iwooos_projection["summary"]["visual_command_dashboard_first_layer"],
|
||||
)
|
||||
assert_true(
|
||||
"iwooos_projection.summary.long_form_sections_default_collapsed",
|
||||
iwooos_projection["summary"]["long_form_sections_default_collapsed"],
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.summary.frontend_surface_coverage_group_count",
|
||||
iwooos_projection["summary"]["frontend_surface_coverage_group_count"],
|
||||
@@ -1626,6 +1729,11 @@ def validate(root: Path) -> None:
|
||||
iwooos_projection["summary"]["host_coverage_item_count"],
|
||||
len(expected_iwooos_host_coverage_item_ids),
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.summary.kali_maintenance_readiness_item_count",
|
||||
iwooos_projection["summary"]["kali_maintenance_readiness_item_count"],
|
||||
len(expected_iwooos_kali_maintenance_readiness_item_ids),
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.summary.host_action_gate_item_count",
|
||||
iwooos_projection["summary"]["host_action_gate_item_count"],
|
||||
@@ -2819,6 +2927,76 @@ def validate(root: Path) -> None:
|
||||
f"iwooos_projection.host_coverage_items.{item['host_id']}.not_authorization",
|
||||
item["not_authorization"],
|
||||
)
|
||||
iwooos_kali_maintenance_readiness = iwooos_projection["kali_maintenance_readiness_items"]
|
||||
assert_equal(
|
||||
"iwooos_projection.kali_maintenance_readiness_items.ids",
|
||||
[item["item_id"] for item in iwooos_kali_maintenance_readiness],
|
||||
expected_iwooos_kali_maintenance_readiness_item_ids,
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.kali_maintenance_readiness_items.display_order",
|
||||
[item["display_order"] for item in iwooos_kali_maintenance_readiness],
|
||||
list(range(1, len(expected_iwooos_kali_maintenance_readiness_item_ids) + 1)),
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.kali_maintenance_readiness_items.upgradable_package_count",
|
||||
iwooos_kali_maintenance_readiness[1]["metric_value"],
|
||||
1994,
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.kali_maintenance_readiness_items.failed_systemd_unit_count",
|
||||
iwooos_kali_maintenance_readiness[2]["metric_value"],
|
||||
1,
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.kali_maintenance_readiness_items.reboot_gate_queue_item",
|
||||
iwooos_kali_maintenance_readiness[3]["source_queue_item_id"],
|
||||
"kali-full-upgrade-reboot-approval-20260513",
|
||||
)
|
||||
for item in iwooos_kali_maintenance_readiness:
|
||||
assert_equal(
|
||||
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.display_mode",
|
||||
item["display_mode"],
|
||||
"maintenance_readiness_only",
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.runtime_execution_authorized",
|
||||
item["runtime_execution_authorized"],
|
||||
)
|
||||
if "full_upgrade_authorized" in item:
|
||||
assert_false(
|
||||
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.full_upgrade_authorized",
|
||||
item["full_upgrade_authorized"],
|
||||
)
|
||||
if "reboot_authorized" in item:
|
||||
assert_false(
|
||||
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.reboot_authorized",
|
||||
item["reboot_authorized"],
|
||||
)
|
||||
if "package_update_executed" in item:
|
||||
assert_false(
|
||||
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.package_update_executed",
|
||||
item["package_update_executed"],
|
||||
)
|
||||
if "host_reboot_executed" in item:
|
||||
assert_false(
|
||||
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.host_reboot_executed",
|
||||
item["host_reboot_executed"],
|
||||
)
|
||||
if "active_scan_executed" in item:
|
||||
assert_false(
|
||||
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.active_scan_executed",
|
||||
item["active_scan_executed"],
|
||||
)
|
||||
if "action_buttons_allowed" in item:
|
||||
assert_false(
|
||||
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.action_buttons_allowed",
|
||||
item["action_buttons_allowed"],
|
||||
)
|
||||
assert_true(
|
||||
f"iwooos_projection.kali_maintenance_readiness_items.{item['item_id']}.not_authorization",
|
||||
item["not_authorization"],
|
||||
)
|
||||
iwooos_host_action_gates = iwooos_projection["host_action_gate_items"]
|
||||
assert_equal(
|
||||
"iwooos_projection.host_action_gate_items.ids",
|
||||
@@ -5588,6 +5766,7 @@ def validate(root: Path) -> None:
|
||||
for output in [
|
||||
"display_security_posture",
|
||||
"display_progress_estimate",
|
||||
"display_visual_command_dashboard",
|
||||
"display_awooop_read_only_landing_readiness",
|
||||
"display_awooop_cross_session_handoff_packets",
|
||||
"display_progress_hold_movement_gates",
|
||||
@@ -5603,6 +5782,7 @@ def validate(root: Path) -> None:
|
||||
"display_operator_journey_steps",
|
||||
"display_owner_evidence_readiness_board",
|
||||
"display_host_coverage_view",
|
||||
"display_kali_maintenance_readiness_board",
|
||||
"display_host_action_gate_matrix",
|
||||
"display_host_evidence_readiness_board",
|
||||
"display_host_evidence_collection_order",
|
||||
|
||||
Reference in New Issue
Block a user