@@ -20,7 +20,6 @@ pub struct NodeRewardsCtx {
2020 pub end_date : NaiveDate ,
2121 pub algorithm_version : Option < RewardsCalculationAlgorithmVersion > ,
2222 pub csv_detailed_output_path : Option < String > ,
23- pub provider_id : Option < String > ,
2423 pub compare_with_governance : bool ,
2524 pub governance_providers_rewards : BTreeMap < PrincipalId , u64 > ,
2625 pub governance_rewards_raw : ic_nns_governance_api:: MonthlyNodeProviderRewards ,
@@ -86,14 +85,6 @@ pub trait NodeRewardsDataFetcher {
8685 }
8786 }
8887
89- if let Some ( ref provider_filter) = ctx. provider_id {
90- providers_rewards. retain ( |provider_id, _| {
91- let provider_id_str = provider_id. to_string ( ) ;
92- let prefix = get_provider_prefix ( & provider_id_str) ;
93- provider_id_str == * provider_filter || prefix == * provider_filter
94- } ) ;
95- }
96-
9788 Ok ( NrcData {
9889 providers_rewards,
9990 subnets_failure_rates,
@@ -402,7 +393,7 @@ pub trait NodeRewardsCsvOutput {
402393
403394 // Generate node providers summary CSV with ICP rewards and accounts only for PastRewards mode
404395 if ctx. is_past_rewards_mode {
405- self . create_node_providers_summary_csv ( & rewards_dir) ?;
396+ self . create_node_providers_summary_csv ( & rewards_dir, nrc_data ) ?;
406397 }
407398
408399 Ok ( ( ) )
@@ -781,12 +772,18 @@ pub trait NodeRewardsCsvOutput {
781772 }
782773
783774 /// Create node providers summary CSV with provider IDs, rewards in ICP, and account information
784- fn create_node_providers_summary_csv ( & self , output_dir : & str ) -> anyhow:: Result < ( ) > {
775+ fn create_node_providers_summary_csv ( & self , output_dir : & str , nrc_data : & NrcData ) -> anyhow:: Result < ( ) > {
785776 let filename = format ! ( "{}/node_providers_summary.csv" , output_dir) ;
786777 let mut wtr = Writer :: from_path ( & filename) ?;
787778
788779 // Write header
789- wtr. write_record ( [ "node_provider_id" , "rewards_icp" , "account_id" ] ) ?;
780+ wtr. write_record ( [
781+ "node_provider_id" ,
782+ "rewards_icp" ,
783+ "account_id" ,
784+ "total_base_rewards_xdr_permyriad" ,
785+ "total_adjusted_rewards_xdr_permyriad" ,
786+ ] ) ?;
790787
791788 let ctx = self . ctx ( ) ;
792789
@@ -820,7 +817,29 @@ pub trait NodeRewardsCsvOutput {
820817 . map ( |s| s. to_string ( ) )
821818 . unwrap_or ( "" . to_string ( ) ) ;
822819
823- wtr. write_record ( [ & provider_id, & format ! ( "{:.8}" , rewards_icp) , & account_id] ) ?;
820+ // Calculate total base and adjusted rewards from nrc_data (sum across all days)
821+ let ( total_base_rewards, total_adjusted_rewards) = provider_id_principal
822+ . and_then ( |id| nrc_data. providers_rewards . get ( & id) )
823+ . map ( |daily_rewards| {
824+ let base_total: u64 = daily_rewards
825+ . iter ( )
826+ . map ( |( _, reward) | reward. total_base_rewards_xdr_permyriad . unwrap_or ( 0 ) )
827+ . sum ( ) ;
828+ let adjusted_total: u64 = daily_rewards
829+ . iter ( )
830+ . map ( |( _, reward) | reward. total_adjusted_rewards_xdr_permyriad . unwrap_or ( 0 ) )
831+ . sum ( ) ;
832+ ( base_total, adjusted_total)
833+ } )
834+ . unwrap_or ( ( 0 , 0 ) ) ;
835+
836+ wtr. write_record ( [
837+ & provider_id,
838+ & format ! ( "{:.8}" , rewards_icp) ,
839+ & account_id,
840+ & total_base_rewards. to_string ( ) ,
841+ & total_adjusted_rewards. to_string ( ) ,
842+ ] ) ?;
824843 }
825844
826845 wtr. flush ( ) ?;
@@ -836,10 +855,6 @@ pub struct CommonArgs {
836855 #[ arg( long) ]
837856 pub csv_detailed_output_path : Option < String > ,
838857
839- /// Filter to a single provider (full principal or provider prefix)
840- #[ arg( long) ]
841- pub provider_id : Option < String > ,
842-
843858 /// If set, display comparison table with governance rewards
844859 #[ arg( long) ]
845860 pub compare_with_governance : bool ,
0 commit comments