MR-Outcome-Tracking & Scoring-Kalibrierung: Feedback-Loop aus MR-Ergebnissen #90
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Beschreibung
Die Grundlage für jedes Self-Improvement: Erfassen ob MRs approved oder
rejected werden, und diese Daten nutzen um Scoring-Gewichte und
Schwellwerte automatisch zu kalibrieren.
Aktuell existieren die DB-Felder
mr_outcome,mr_reviewed_atundmr_comments_countim Ticket-Model — sie werden aber nie befüllt.Es gibt keinen GitLab-Polling-Job und keinen Webhook-Handler. Die
Stats-API berechnet
success_rateaus Daten die immer NULL sind.Hintergrund
Ohne MR-Outcome-Daten ist kein Learning möglich:
success_rateim Dashboard ist immer 0% weilmr_outcomenie gesetzt wirdDieses Issue vereint: #15 (Scoring-Kalibrierung), #16 (MR-Erfolgs-Tracking),
#19 (Feedback-Loop), #27 (GitLab Webhook/Polling), #68 (Scoring-Gewichte konfigurierbar).
Akzeptanzkriterien
MR-Outcome Erfassung
poll_mr_outcomes()(Intervall: 10min) inmain.pymr_id IS NOT NULL AND mr_outcome IS NULLticket.mr_outcome: "approved" | "changes_requested" | "closed" | "merged"ticket.mr_reviewed_atbeim ersten Review-Eventticket.mr_comments_countbei jeder ÄnderungFalse-Positive / False-Negative Tracking
mr_outcome= "changes_requested" oder "closed"Scoring-Kalibrierung
weight_klarheit_was,weight_klarheit_wo,weight_kontextGET /api/stats/calibrationDashboard-Erweiterung
success_rate_by_score_range,false_positive_rate,false_negative_ratesuccess_rate_by_repo,success_rate_by_classificationTechnische Hinweise
backend/services/mr_tracker.py(GitLab MR-Polling-Job)backend/services/calibration_engine.py(Korrelationsanalyse, Gewicht-Optimierung)backend/models/ticket.py(Felder existieren bereits, nur sicherstellen dass sie korrekt typisiert sind)backend/services/scoring_engine.py(Gewichte aus Config statt hardcoded lesen)backend/config.py(+ weight_klarheit_was/wo/kontext, calibration_interval)backend/main.py(MR-Tracking Scheduler-Job registrieren)backend/api/pipeline.py(Stats erweitern um Accuracy-Metriken + Calibration-Endpoint)frontend/src/pages/Dashboard.tsx(Accuracy-Charts, Kalibrierungs-Empfehlung)frontend/src/pages/Settings.tsx(Scoring-Gewichte konfigurierbar)Kalibrierung starten. Gewichte als Runtime-Settings, nicht als Code-Änderung.
Aufwand: L