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

@@ -54,6 +54,34 @@ class ReviewDecision:
created_at: str
@dataclass(frozen=True)
class AnalysisRunDiffItem:
change_type: str
item_type: str
key: str
base: dict[str, Any] | None = None
target: dict[str, Any] | None = None
@dataclass(frozen=True)
class AnalysisRunDiffSection:
added: list[AnalysisRunDiffItem] = field(default_factory=list)
removed: list[AnalysisRunDiffItem] = field(default_factory=list)
changed: list[AnalysisRunDiffItem] = field(default_factory=list)
weakened: list[AnalysisRunDiffItem] = field(default_factory=list)
@dataclass(frozen=True)
class AnalysisRunDiff:
repository: Repository
base_run: AnalysisRun
target_run: AnalysisRun
facts: AnalysisRunDiffSection
chunks: AnalysisRunDiffSection
candidates: AnalysisRunDiffSection
approved_entries: AnalysisRunDiffSection
@dataclass(frozen=True)
class ObservedFact:
id: int