Files
DEMO-AGENT/review_agent/application_form_fill/schemas.py

59 lines
1.7 KiB
Python

from __future__ import annotations
from dataclasses import dataclass, field
from typing import Any
from review_agent.models import ApplicationFormFillBatch, ExportedSummaryFile, FileSummaryBatch, RegulatoryReviewBatch
@dataclass(frozen=True)
class TemplateSpec:
code: str
name: str
source_file: str
output_label: str
applies_when: dict[str, Any]
file_format: str
fields: list[dict[str, Any]]
checklist_items: list[dict[str, Any]] = field(default_factory=list)
@dataclass(frozen=True)
class ExtractedField:
key: str
label: str
value: str
source_file: str
source_role: str
evidence: str
extractor: str
confidence: float
@dataclass(frozen=True)
class MergedField:
key: str
label: str
value: str
source_file: str
evidence: str
confidence: float
has_conflict: bool = False
conflict_values: list[dict[str, Any]] = field(default_factory=list)
@dataclass
class FormFillContext:
batch: ApplicationFormFillBatch
source_summary_batch: FileSummaryBatch
source_regulatory_batch: RegulatoryReviewBatch | None
template_config: dict[str, Any] = field(default_factory=dict)
selected_templates: list[TemplateSpec] = field(default_factory=list)
document_texts: dict[str, str] = field(default_factory=dict)
regex_results: dict[str, Any] = field(default_factory=dict)
llm_results: dict[str, Any] = field(default_factory=dict)
merged_fields: dict[str, MergedField] = field(default_factory=dict)
checklist_items: dict[str, Any] = field(default_factory=dict)
conflicts: list[dict[str, Any]] = field(default_factory=list)
exports: list[ExportedSummaryFile] = field(default_factory=list)