更新: 2 个文件 - 2026-03-21 18:00:07

这个提交包含在:
hao
2026-03-21 18:00:07 -07:00
父节点 e82b7d8cf6
当前提交 2d92ef6bce
修改 2 个文件,包含 69 行新增1 行删除

查看文件

@@ -1101,6 +1101,12 @@ def _write_dashboard_docs(architecture: Dict[str, Any]) -> None:
_safe_read_text(ROOT / "08-threat-intel" / "generated" / "entity-discovery-backlog.md", "entity discovery backlog has not been generated yet."),
"工作台内置镜像页:待编目 repo / 插件 / 包 backlog 与等待原因。",
),
(
"version-sync-report.html",
"安全相关版本同步报告",
_safe_read_text(ROOT / "08-threat-intel" / "generated" / "version-sync-report.md", "version sync report has not been generated yet."),
"工作台内置镜像页安全相关版本历史、source-gap 与版本驱动 lab enqueue 摘要。",
),
(
"coverage-matrix.html",
"覆盖矩阵镜像",
@@ -1440,12 +1446,22 @@ def render_dashboard(
for system_id, system in systems.items():
entity_summary = entity_summary_map.get(system_id, {})
version_summary = version_summary_map.get(system_id, {})
root_entity = next((item for item in entities_by_system.get(system_id, []) if item.get("entity_id") == system_id), {})
system["entity_summary"] = entity_summary
system["version_summary"] = version_summary
system["top_entities"] = entity_summary.get("top_entities", [])
system["backlog_preview"] = entity_summary.get("backlog_preview", [])
system["entity_total"] = entity_summary.get("cataloged_entity_total", 0)
system["entity_backlog"] = entity_summary.get("candidate_entity_total", 0)
system["entity_type_counts"] = entity_summary.get("entity_type_counts", {})
system["latest_version"] = root_entity.get("latest_version") or next(
(item.get("latest_version") for item in (version_summary.get("latest_versions") or []) if item.get("latest_version")),
"",
)
system["last_version_synced_at"] = root_entity.get("last_version_synced_at") or ""
system["version_sync_status"] = root_entity.get("version_sync_status") or ("source-gap" if version_summary.get("source_gap_count") else "green")
system["security_version_count"] = version_summary.get("security_version_count", 0)
recent_runs = sorted(runs, key=lambda item: item.get("finished_at") or "", reverse=True)[:100]
decorated_runs: List[Dict[str, Any]] = []
@@ -1511,6 +1527,7 @@ def render_dashboard(
"last_fully_green_run": source_health.get("last_fully_green_run"),
},
"entity_coverage": entity_completeness,
"version_coverage": version_completeness,
}
for item in merged_advisories:
status = item.get("verification_status", "triage-manual")
@@ -1555,6 +1572,10 @@ def render_dashboard(
"candidate_entity_total": entity_completeness.get("candidate_entity_total", 0),
"workflow_complete_count": entity_completeness.get("workflow_complete_count", 0),
"version_mapped_count": entity_completeness.get("version_mapped_count", 0),
"latest_version_synced_count": version_completeness.get("latest_version_synced_count", 0),
"version_source_gap_count": version_completeness.get("source_gap_count", 0),
"security_version_total": version_completeness.get("security_version_total", 0),
"lab_enqueued_count": version_completeness.get("lab_enqueued_count", 0),
}
write_json(DASHBOARD_DIR / "summary.json", summary)
@@ -1571,6 +1592,10 @@ def render_dashboard(
write_json(DASHBOARD_DIR / "data" / "entity-completeness.json", entity_completeness)
write_json(DASHBOARD_DIR / "data" / "entity-discovery-backlog.json", entity_backlog)
write_json(DASHBOARD_DIR / "data" / "entity-queues.json", entity_queues)
write_json(DASHBOARD_DIR / "data" / "version-completeness.json", version_completeness)
write_json(DASHBOARD_DIR / "data" / "version-backlog.json", version_backlog)
write_json(DASHBOARD_DIR / "data" / "release-index.json", release_index)
write_json(DASHBOARD_DIR / "data" / "lab-enqueue-summary.json", lab_enqueue_summary)
_write_testing_completeness_report(completeness)
architecture = _build_architecture_data(summary, source_map, repro_map)
write_json(DASHBOARD_DIR / "architecture.json", architecture)