diff --git a/src/groupped_repport_monthly.rs b/src/groupped_repport_monthly.rs index 129b79e..de5759e 100644 --- a/src/groupped_repport_monthly.rs +++ b/src/groupped_repport_monthly.rs @@ -233,11 +233,37 @@ fn main() { } }; }) - .filter_map_ok(|(ai_repsonse, file_path_csv)| { + .filter_map_ok(|(ai_response, file_path_csv)| { + + + // ---------- LOG 1: mostra qual arquivo está sendo processado ---------- + eprintln!("🔍 Processando arquivo: {:?}", file_path_csv); + // Opcional: mostrar as primeiras linhas do CSV + eprintln!("📄 Primeiras 200 caracteres do CSV:\n{}", &ai_response[..200.min(ai_response.len())]); + // + let mut reader = csv::ReaderBuilder::new() .has_headers(true) .delimiter(b';') - .from_reader(ai_repsonse.as_bytes()); + .from_reader(ai_response.as_bytes()); + + + // ---------- LOG 2: tenta desserializar e conta os registros ---------- + let deserialized = reader.deserialize::().collect::>(); + eprintln!("🧾 Total de linhas lidas (incluindo cabeçalho?): {}", deserialized.len()); + + for (i, result) in deserialized.iter().enumerate() { + match result { + Ok(record) => { + eprintln!("✅ Linha {}: CATEGORIA={}, PONTOS={:?}", i, record.CATEGORIA, record.PONTOS); + } + Err(e) => { + eprintln!("❌ Linha {} ERRO: {}", i, e); + } + } + } + // + let mut deserialized_iter = reader.deserialize::(); diff --git a/src/groupped_repport_weekly.rs b/src/groupped_repport_weekly.rs index 0ef4e2b..dc13168 100644 --- a/src/groupped_repport_weekly.rs +++ b/src/groupped_repport_weekly.rs @@ -8,6 +8,9 @@ use std::time::Duration; use csv; +use std::fs::metadata; +use std::io::Read; + pub mod send_mail_util; pub mod zip_directory_util; @@ -228,11 +231,53 @@ fn main() { } }; }) - .filter_map_ok(|(ai_repsonse, file_path_csv)| { + .filter_map_ok(|(ai_response, file_path_csv)| { + + // ---------- LOG 1: mostra qual arquivo está sendo processado ---------- +// eprintln!("🔍 Processando arquivo: {:?}", file_path_csv); + + // Mostra o caminho absoluto + let path = file_path_csv.path(); + + // Caminho absoluto + if let Ok(abs_path) = std::fs::canonicalize(&path) { + eprintln!("📁 Caminho absoluto: {:?}", abs_path); + } + + // Metadados + if let Ok(meta) = std::fs::metadata(&path) { + if let Ok(modified) = meta.modified() { + let datetime: chrono::DateTime = modified.into(); + eprintln!("📅 Modificado (local): {}", datetime.format("%Y-%m-%d %H:%M:%S%.3f")); + //eprintln!("🕒 Modificado: {:?}", modified); + } + eprintln!("📏 Tamanho: {} bytes", meta.len()); + } + + // Opcional: mostrar as primeiras linhas do CSV + eprintln!("📄 Primeiras 200 caracteres do CSV:\n{}", &ai_response[..200.min(ai_response.len())]); + // + let mut reader = csv::ReaderBuilder::new() .has_headers(true) .delimiter(b';') - .from_reader(ai_repsonse.as_bytes()); + .from_reader(ai_response.as_bytes()); + + // ---------- LOG 2: tenta desserializar e conta os registros ---------- + let deserialized = reader.deserialize::().collect::>(); + eprintln!("🧾 Total de linhas lidas (incluindo cabeçalho?): {}", deserialized.len()); + + for (i, result) in deserialized.iter().enumerate() { + match result { + Ok(record) => { + eprintln!("✅ Linha {}: CATEGORIA={}, PONTOS={:?}", i, record.CATEGORIA, record.PONTOS); + } + Err(e) => { + eprintln!("❌ Linha {} ERRO: {}", i, e); + } + } + } + // let mut deserialized_iter = reader.deserialize::();