Compare add-building cluster exclusivity

This commit is contained in:
Jan Petykiewicz 2026-04-19 10:21:45 -07:00
commit 2fbc0bd7e7
2 changed files with 51 additions and 0 deletions

View file

@ -347,6 +347,9 @@ struct RuntimeCompactEventDispatchClusterReport {
add_building_condition_tuple_map_counts: BTreeMap<String, usize>,
add_building_signature_condition_cluster_occurrence_counts: BTreeMap<String, usize>,
add_building_signature_condition_cluster_map_counts: BTreeMap<String, usize>,
add_building_signature_condition_cluster_descriptor_keys: BTreeMap<String, Vec<String>>,
add_building_signature_condition_cluster_non_add_building_descriptor_keys:
BTreeMap<String, Vec<String>>,
}
#[derive(Debug, Serialize)]
@ -373,6 +376,9 @@ struct RuntimeCompactEventDispatchClusterCountsReport {
add_building_condition_tuple_map_counts: BTreeMap<String, usize>,
add_building_signature_condition_cluster_occurrence_counts: BTreeMap<String, usize>,
add_building_signature_condition_cluster_map_counts: BTreeMap<String, usize>,
add_building_signature_condition_cluster_descriptor_keys: BTreeMap<String, Vec<String>>,
add_building_signature_condition_cluster_non_add_building_descriptor_keys:
BTreeMap<String, Vec<String>>,
}
#[derive(Debug, Clone, Serialize)]
@ -1858,6 +1864,10 @@ fn run_runtime_inspect_compact_event_dispatch_cluster_counts(
.add_building_signature_condition_cluster_occurrence_counts,
add_building_signature_condition_cluster_map_counts: report
.add_building_signature_condition_cluster_map_counts,
add_building_signature_condition_cluster_descriptor_keys: report
.add_building_signature_condition_cluster_descriptor_keys,
add_building_signature_condition_cluster_non_add_building_descriptor_keys: report
.add_building_signature_condition_cluster_non_add_building_descriptor_keys,
},
};
println!("{}", serde_json::to_string_pretty(&output)?);
@ -1891,6 +1901,9 @@ fn build_runtime_compact_event_dispatch_cluster_report(
let mut add_building_signature_condition_cluster_occurrence_counts =
BTreeMap::<String, usize>::new();
let mut add_building_signature_condition_cluster_map_counts = BTreeMap::<String, usize>::new();
let mut signature_condition_cluster_descriptor_keys =
BTreeMap::<String, BTreeSet<String>>::new();
let mut add_building_signature_condition_clusters = BTreeSet::<String>::new();
let mut dispatch_descriptor_occurrences =
BTreeMap::<String, Vec<RuntimeCompactEventDispatchClusterOccurrence>>::new();
let mut unknown_descriptor_occurrences =
@ -1976,12 +1989,18 @@ fn build_runtime_compact_event_dispatch_cluster_report(
rows: rows.clone(),
};
let descriptor_key = compact_event_dispatch_descriptor_key(descriptor_id, &rows);
signature_condition_cluster_descriptor_keys
.entry(signature_condition_cluster_key.clone())
.or_default()
.insert(descriptor_key.clone());
*dispatch_descriptor_occurrence_counts
.entry(descriptor_key.clone())
.or_insert(0) += 1;
map_descriptor_keys.insert(descriptor_key.clone());
if compact_event_dispatch_add_building_descriptor_id(descriptor_id) {
record_has_add_building = true;
add_building_signature_condition_clusters
.insert(signature_condition_cluster_key.clone());
*add_building_descriptor_occurrence_counts
.entry(descriptor_key.clone())
.or_insert(0) += 1;
@ -2063,6 +2082,29 @@ fn build_runtime_compact_event_dispatch_cluster_report(
.map(|label| format!("{descriptor_id} -> {label}"))
})
.collect::<Vec<_>>();
let add_building_signature_condition_cluster_descriptor_keys =
add_building_signature_condition_clusters
.iter()
.map(|cluster| {
let keys = signature_condition_cluster_descriptor_keys
.get(cluster)
.map(|keys| keys.iter().cloned().collect::<Vec<_>>())
.unwrap_or_default();
(cluster.clone(), keys)
})
.collect::<BTreeMap<_, _>>();
let add_building_signature_condition_cluster_non_add_building_descriptor_keys =
add_building_signature_condition_cluster_descriptor_keys
.iter()
.map(|(cluster, keys)| {
let filtered = keys
.iter()
.filter(|key| !key.contains("Add Building"))
.cloned()
.collect::<Vec<_>>();
(cluster.clone(), filtered)
})
.collect::<BTreeMap<_, _>>();
Ok(RuntimeCompactEventDispatchClusterReport {
maps_scanned: input_paths.len(),
@ -2089,6 +2131,8 @@ fn build_runtime_compact_event_dispatch_cluster_report(
add_building_condition_tuple_map_counts,
add_building_signature_condition_cluster_occurrence_counts,
add_building_signature_condition_cluster_map_counts,
add_building_signature_condition_cluster_descriptor_keys,
add_building_signature_condition_cluster_non_add_building_descriptor_keys,
})
}