更新: 1 个文件 - 2026-03-18 11:26:00
这个提交包含在:
@@ -70,6 +70,45 @@ def _merge_preserved_records(
|
||||
return preserved_advisories + advisories, preserved_triage + triage
|
||||
|
||||
|
||||
def _merge_advisory_records(
|
||||
advisories: List[AdvisoryRecord],
|
||||
incoming: List[AdvisoryRecord],
|
||||
) -> List[AdvisoryRecord]:
|
||||
merged: Dict[str, AdvisoryRecord] = {item.canonical_id: item for item in advisories}
|
||||
for item in incoming:
|
||||
merged[item.canonical_id] = item
|
||||
return sorted(merged.values(), key=lambda item: (item.system_id, item.canonical_id))
|
||||
|
||||
|
||||
def _merge_triage_records(
|
||||
triage: List[Dict[str, Any]],
|
||||
incoming: List[Dict[str, Any]],
|
||||
) -> List[Dict[str, Any]]:
|
||||
merged: Dict[str, Dict[str, Any]] = {}
|
||||
for item in triage:
|
||||
canonical_id = item.get("canonical_id")
|
||||
if canonical_id:
|
||||
merged[canonical_id] = item
|
||||
for item in incoming:
|
||||
canonical_id = item.get("canonical_id")
|
||||
if canonical_id:
|
||||
merged[canonical_id] = item
|
||||
return sorted(
|
||||
merged.values(),
|
||||
key=lambda item: (item.get("system_id", ""), item.get("canonical_id", "")),
|
||||
)
|
||||
|
||||
|
||||
def _merge_existing_registry(
|
||||
advisories: List[AdvisoryRecord],
|
||||
triage: List[Dict[str, Any]],
|
||||
) -> tuple[List[AdvisoryRecord], List[Dict[str, Any]]]:
|
||||
return (
|
||||
_merge_advisory_records(_load_existing_advisories(), advisories),
|
||||
_merge_triage_records(_load_existing_triage(), triage),
|
||||
)
|
||||
|
||||
|
||||
def _load_existing_selection(
|
||||
full_source_map: Dict[str, Any],
|
||||
source_map: Dict[str, Any],
|
||||
@@ -202,10 +241,10 @@ def pipeline(
|
||||
advisories = route_advisories(source_map, advisories)
|
||||
if hotlane_only:
|
||||
advisories, triage = _select_hotlane(advisories, triage)
|
||||
advisories, triage = _merge_existing_registry(advisories, triage)
|
||||
change_summary = _summarize_changes(advisories)
|
||||
render_map = source_map
|
||||
if len(source_map["systems"]) != len(full_source_map["systems"]):
|
||||
advisories, triage = _merge_preserved_records(source_map, advisories, triage)
|
||||
render_map = full_source_map
|
||||
_write_outputs(render_map, advisories, triage, failures, change_summary)
|
||||
return advisories, triage, failures, change_summary
|
||||
|
||||
在新工单中引用
屏蔽一个用户