feat: 持久化 AI 审查结果,文件级内联展示与页面集成
This commit is contained in:
+33
-1
@@ -63,7 +63,39 @@ func parseReportData(data ReportData) ParsedReview {
|
||||
noteMap[key] = append(noteMap[key], n.Content)
|
||||
}
|
||||
|
||||
// Try to parse structured analysis result
|
||||
// Try to parse structured analysis result (new ReviewResult format)
|
||||
var reviewResult ReviewResult
|
||||
if err := json.Unmarshal([]byte(data.Result), &reviewResult); err == nil && len(reviewResult.FileReviews) > 0 {
|
||||
// New format: { file_reviews: [...], summary: {...}, top_n: N }
|
||||
result.Score = reviewResult.Summary.Score
|
||||
result.Overall = reviewResult.Summary.Overall
|
||||
result.Findings = reviewResult.Summary.Findings
|
||||
result.Recommendations = reviewResult.Summary.Recommendations
|
||||
|
||||
for _, fr := range reviewResult.FileReviews {
|
||||
fileReport := FileReviewForReport{
|
||||
FileName: fr.FileName,
|
||||
ChangeLines: fr.ChangeLines,
|
||||
}
|
||||
// Collect file-level notes
|
||||
fileReport.Notes = noteMap["file:"+fr.FileName]
|
||||
|
||||
for _, s := range fr.Suggestions {
|
||||
sug := SuggestionForReport{
|
||||
Severity: s.Severity,
|
||||
SeverityCN: severityCN(s.Severity),
|
||||
Description: s.Description,
|
||||
Suggestion: s.Suggestion,
|
||||
CodeExample: s.CodeExample,
|
||||
}
|
||||
fileReport.Suggestions = append(fileReport.Suggestions, sug)
|
||||
}
|
||||
result.FileReviews = append(result.FileReviews, fileReport)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
// Fallback: try legacy flat format { score, overall, findings, recommendations }
|
||||
var analysisMap map[string]interface{}
|
||||
if err := json.Unmarshal([]byte(data.Result), &analysisMap); err == nil {
|
||||
if score, ok := analysisMap["score"].(float64); ok {
|
||||
|
||||
Reference in New Issue
Block a user