Carry finance news candidates in service events

This commit is contained in:
Jan Petykiewicz 2026-04-18 05:40:49 -07:00
commit 5e480a5f74

View file

@ -1,3 +1,4 @@
use std::collections::BTreeMap;
use std::collections::BTreeSet; use std::collections::BTreeSet;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
@ -70,6 +71,8 @@ pub struct ServiceEvent {
pub activated_record_ids: Vec<u32>, pub activated_record_ids: Vec<u32>,
pub deactivated_record_ids: Vec<u32>, pub deactivated_record_ids: Vec<u32>,
pub removed_record_ids: Vec<u32>, pub removed_record_ids: Vec<u32>,
#[serde(default)]
pub finance_news_family_candidates: BTreeMap<u32, String>,
pub dirty_rerun: bool, pub dirty_rerun: bool,
} }
@ -512,6 +515,7 @@ fn service_company_annual_finance_policy(
let mut mutated_company_ids = BTreeSet::new(); let mut mutated_company_ids = BTreeSet::new();
let mut applied_effect_count = 0u32; let mut applied_effect_count = 0u32;
let mut finance_news_family_candidates = BTreeMap::new();
for company_id in active_company_ids { for company_id in active_company_ids {
let Some(policy_state) = runtime_company_annual_finance_policy_state(state, company_id) let Some(policy_state) = runtime_company_annual_finance_policy_state(state, company_id)
@ -574,6 +578,7 @@ fn service_company_annual_finance_policy(
.service_state .service_state
.annual_finance_last_news_family_candidates .annual_finance_last_news_family_candidates
.insert(company_id, label.to_string()); .insert(company_id, label.to_string());
finance_news_family_candidates.insert(company_id, label.to_string());
} }
applied_effect_count += 1; applied_effect_count += 1;
mutated_company_ids.insert(company_id); mutated_company_ids.insert(company_id);
@ -658,6 +663,7 @@ fn service_company_annual_finance_policy(
.service_state .service_state
.annual_finance_last_news_family_candidates .annual_finance_last_news_family_candidates
.insert(company_id, label.to_string()); .insert(company_id, label.to_string());
finance_news_family_candidates.insert(company_id, label.to_string());
} }
applied_effect_count += 1; applied_effect_count += 1;
mutated_company_ids.insert(company_id); mutated_company_ids.insert(company_id);
@ -817,6 +823,7 @@ fn service_company_annual_finance_policy(
.service_state .service_state
.annual_finance_last_news_family_candidates .annual_finance_last_news_family_candidates
.insert(company_id, label.to_string()); .insert(company_id, label.to_string());
finance_news_family_candidates.insert(company_id, label.to_string());
} }
applied_effect_count += 1; applied_effect_count += 1;
mutated_company_ids.insert(company_id); mutated_company_ids.insert(company_id);
@ -906,6 +913,7 @@ fn service_company_annual_finance_policy(
.service_state .service_state
.annual_finance_last_news_family_candidates .annual_finance_last_news_family_candidates
.insert(company_id, label.to_string()); .insert(company_id, label.to_string());
finance_news_family_candidates.insert(company_id, label.to_string());
} }
applied_effect_count += 1; applied_effect_count += 1;
mutated_company_ids.insert(company_id); mutated_company_ids.insert(company_id);
@ -926,6 +934,7 @@ fn service_company_annual_finance_policy(
activated_record_ids: Vec::new(), activated_record_ids: Vec::new(),
deactivated_record_ids: Vec::new(), deactivated_record_ids: Vec::new(),
removed_record_ids: Vec::new(), removed_record_ids: Vec::new(),
finance_news_family_candidates,
dirty_rerun: false, dirty_rerun: false,
}); });
@ -1030,6 +1039,7 @@ fn service_trigger_kind(
activated_record_ids, activated_record_ids,
deactivated_record_ids, deactivated_record_ids,
removed_record_ids, removed_record_ids,
finance_news_family_candidates: BTreeMap::new(),
dirty_rerun, dirty_rerun,
}); });
@ -2825,7 +2835,8 @@ mod tests {
.iter() .iter()
.any(|event| event.kind == "annual_finance_policy" .any(|event| event.kind == "annual_finance_policy"
&& event.applied_effect_count == 1 && event.applied_effect_count == 1
&& event.mutated_company_ids == vec![21]) && event.mutated_company_ids == vec![21]
&& event.finance_news_family_candidates.is_empty())
); );
} }
@ -3008,7 +3019,8 @@ mod tests {
.iter() .iter()
.any(|event| event.kind == "annual_finance_policy" .any(|event| event.kind == "annual_finance_policy"
&& event.applied_effect_count == 1 && event.applied_effect_count == 1
&& event.mutated_company_ids == vec![22]) && event.mutated_company_ids == vec![22]
&& event.finance_news_family_candidates.get(&22) == Some(&"4053".to_string()))
); );
} }
@ -3167,7 +3179,8 @@ mod tests {
.iter() .iter()
.any(|event| event.kind == "annual_finance_policy" .any(|event| event.kind == "annual_finance_policy"
&& event.applied_effect_count == 1 && event.applied_effect_count == 1
&& event.mutated_company_ids == vec![23]) && event.mutated_company_ids == vec![23]
&& event.finance_news_family_candidates.get(&23) == Some(&"2887".to_string()))
); );
} }
@ -3310,7 +3323,9 @@ mod tests {
.iter() .iter()
.any(|event| event.kind == "annual_finance_policy" .any(|event| event.kind == "annual_finance_policy"
&& event.applied_effect_count == 1 && event.applied_effect_count == 1
&& event.mutated_company_ids == vec![24]) && event.mutated_company_ids == vec![24]
&& event.finance_news_family_candidates.get(&24)
== Some(&"2882_2886".to_string()))
); );
} }
@ -3471,7 +3486,9 @@ mod tests {
.iter() .iter()
.any(|event| event.kind == "annual_finance_policy" .any(|event| event.kind == "annual_finance_policy"
&& event.applied_effect_count == 1 && event.applied_effect_count == 1
&& event.mutated_company_ids == vec![25]) && event.mutated_company_ids == vec![25]
&& event.finance_news_family_candidates.get(&25)
== Some(&"2882_2886".to_string()))
); );
} }
@ -3645,7 +3662,9 @@ mod tests {
.iter() .iter()
.any(|event| event.kind == "annual_finance_policy" .any(|event| event.kind == "annual_finance_policy"
&& event.applied_effect_count == 1 && event.applied_effect_count == 1
&& event.mutated_company_ids == vec![26]) && event.mutated_company_ids == vec![26]
&& event.finance_news_family_candidates.get(&26)
== Some(&"2882_2886".to_string()))
); );
} }
@ -3823,7 +3842,8 @@ mod tests {
.iter() .iter()
.any(|event| event.kind == "annual_finance_policy" .any(|event| event.kind == "annual_finance_policy"
&& event.applied_effect_count == 1 && event.applied_effect_count == 1
&& event.mutated_company_ids == vec![31]) && event.mutated_company_ids == vec![31]
&& event.finance_news_family_candidates.get(&31) == Some(&"2881".to_string()))
); );
} }
@ -3998,7 +4018,8 @@ mod tests {
.iter() .iter()
.any(|event| event.kind == "annual_finance_policy" .any(|event| event.kind == "annual_finance_policy"
&& event.applied_effect_count == 1 && event.applied_effect_count == 1
&& event.mutated_company_ids == vec![32]) && event.mutated_company_ids == vec![32]
&& event.finance_news_family_candidates.get(&32) == Some(&"2881".to_string()))
); );
} }