service logic for facts, chunks, candidates, and current-approved-vs-target comparison

This commit is contained in:
2026-04-26 15:43:03 +02:00
parent 35274baac1
commit ea5da4a8e0
7 changed files with 600 additions and 0 deletions

View File

@@ -206,6 +206,16 @@ class CandidateGraphApproval(BaseModel):
}
class AnalysisRunChangeApproval(BaseModel):
notes: str = ""
model_config = {
"json_schema_extra": {
"examples": [{"notes": "Accept target run changes after review."}]
}
}
class CandidateRejection(BaseModel):
notes: str = ""
@@ -506,6 +516,31 @@ class CandidateGraphResponse(BaseModel):
}
class AnalysisRunDiffItemResponse(BaseModel):
change_type: str
item_type: str
key: str
base: dict[str, Any] | None = None
target: dict[str, Any] | None = None
class AnalysisRunDiffSectionResponse(BaseModel):
added: list[AnalysisRunDiffItemResponse]
removed: list[AnalysisRunDiffItemResponse]
changed: list[AnalysisRunDiffItemResponse]
weakened: list[AnalysisRunDiffItemResponse]
class AnalysisRunDiffResponse(BaseModel):
repository: RepositoryResponse
base_run: AnalysisRunResponse
target_run: AnalysisRunResponse
facts: AnalysisRunDiffSectionResponse
chunks: AnalysisRunDiffSectionResponse
candidates: AnalysisRunDiffSectionResponse
approved_entries: AnalysisRunDiffSectionResponse
class EvidenceResponse(BaseModel):
id: int
type: str