Skip to content

Commit d250617

Browse files
committed
feat(feedback): backfill review history into the feedback store
1 parent 212a020 commit d250617

8 files changed

Lines changed: 541 additions & 22 deletions

File tree

TODO.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ This roadmap is derived from deep research into Greptile's public docs, blog, MC
3131
7. [x] Add path-scoped reinforcement buckets so teams can prefer different standards in `tests/`, `scripts/`, and production code.
3232
8. [ ] Persist explanation text from follow-up feedback replies and mine it into reusable review guidance.
3333
9. [ ] Learn "preferred phrasing" for accepted comments so comment tone and specificity improve over time.
34-
10. [ ] Backfill existing stored reviews into the new outcome-aware feedback store for cold-start reduction.
34+
10. [x] Backfill existing stored reviews into the new outcome-aware feedback store for cold-start reduction.
3535

3636
## 2. Review Lifecycle and Merge Readiness
3737

src/commands/feedback_eval/input/loading/parse.rs

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use anyhow::Result;
22
use serde_json::Value;
3-
use std::collections::HashMap;
43

54
use crate::core;
65
use crate::server::state::ReviewSession;
@@ -14,11 +13,10 @@ pub(super) fn load_feedback_eval_input_from_value(
1413
input_format: FeedbackEvalInputFormat,
1514
) -> Result<LoadedFeedbackEvalInput> {
1615
match input_format {
17-
FeedbackEvalInputFormat::ReviewMap => {
18-
load_feedback_eval_input_from_review_map(serde_json::from_value(value)?)
19-
}
20-
FeedbackEvalInputFormat::ReviewList => {
21-
load_feedback_eval_input_from_review_list(serde_json::from_value(value)?)
16+
FeedbackEvalInputFormat::ReviewMap | FeedbackEvalInputFormat::ReviewList => {
17+
load_feedback_eval_input_from_review_sessions(
18+
crate::commands::load_review_sessions_input_from_value(value)?,
19+
)
2220
}
2321
FeedbackEvalInputFormat::SemanticStore => {
2422
load_feedback_eval_input_from_semantic_store(serde_json::from_value(value)?)
@@ -29,21 +27,11 @@ pub(super) fn load_feedback_eval_input_from_value(
2927
}
3028
}
3129

32-
fn load_feedback_eval_input_from_review_map(
33-
review_map: HashMap<String, ReviewSession>,
34-
) -> Result<LoadedFeedbackEvalInput> {
35-
let mut loaded = LoadedFeedbackEvalInput::default();
36-
for (review_id, session) in review_map {
37-
extend_from_review_session(&mut loaded, Some(review_id), session);
38-
}
39-
Ok(loaded)
40-
}
41-
42-
fn load_feedback_eval_input_from_review_list(
43-
review_list: Vec<ReviewSession>,
30+
fn load_feedback_eval_input_from_review_sessions(
31+
review_sessions: Vec<ReviewSession>,
4432
) -> Result<LoadedFeedbackEvalInput> {
4533
let mut loaded = LoadedFeedbackEvalInput::default();
46-
for session in review_list {
34+
for session in review_sessions {
4735
let review_id = session.id.clone();
4836
extend_from_review_session(&mut loaded, Some(review_id), session);
4937
}

src/commands/misc/feedback.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#[path = "feedback/apply.rs"]
22
mod apply;
3+
#[path = "feedback/backfill.rs"]
4+
mod backfill;
35
#[path = "feedback/command.rs"]
46
mod command;
57
#[path = "feedback/conventions.rs"]

0 commit comments

Comments
 (0)