Skip to content

Commit c3c2ade

Browse files
committed
feat(main): integrate AI report generation after commit analysis
After analyze_repo(), if profile has [ai] config, call generate_ai_report() and attach the result as ai_report field in the repo JSON output. AI errors are non-fatal: logged to stderr, analysis continues.
1 parent bb89300 commit c3c2ade

1 file changed

Lines changed: 24 additions & 1 deletion

File tree

src/main.rs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use clap::Parser;
2+
use git_reports::ai::generate_ai_report;
23
use git_reports::analysis::{analyze_repo, clone_or_update};
34
use git_reports::config::load_config;
45
use serde_json;
@@ -72,7 +73,29 @@ fn main() {
7273
report.total_commits, profile.email
7374
);
7475

75-
profile_reports.push(serde_json::to_value(&report).unwrap());
76+
// Análisis de IA (si está configurado en el perfil)
77+
let ai_report = match &profile.ai {
78+
Some(ai_cfg) => {
79+
eprintln!(" → Generando reporte IA con {} ({})...", ai_cfg.provider, ai_cfg.model);
80+
match generate_ai_report(&report, ai_cfg, &profile.name) {
81+
Ok(r) => {
82+
eprintln!(" ✓ Reporte IA generado");
83+
r.map(|r| serde_json::to_value(r).unwrap())
84+
}
85+
Err(e) => {
86+
eprintln!(" ✗ Error IA: {}", e);
87+
None
88+
}
89+
}
90+
}
91+
None => None,
92+
};
93+
94+
let mut repo_value = serde_json::to_value(&report).unwrap();
95+
if let Some(ai) = ai_report {
96+
repo_value["ai_report"] = ai;
97+
}
98+
profile_reports.push(repo_value);
7699
}
77100

78101
all_reports.push(serde_json::json!({

0 commit comments

Comments
 (0)