mrme77/dfars-assistant
0
1"""Shared data models for DFARS context records."""2 3from pydantic import BaseModel, Field4 5 6class PageText(BaseModel):7 """Text extracted from a single PDF page."""8 9 page_number: int = Field(ge=1)10 text: str11 12 13class SectionRecord(BaseModel):14 """Structured DFARS section with source text and retrieval metadata."""15 16 section_id: str17 title: str18 part: str | None = None19 subpart: str | None = None20 page_start: int = Field(ge=1)21 page_end: int = Field(ge=1)22 original_text: str23 summary: str = ""24 key_topics: list[str] = Field(default_factory=list)25 applies_when: list[str] = Field(default_factory=list)26 required_actions: list[str] = Field(default_factory=list)27 obligations: list[str] = Field(default_factory=list)28 exceptions: list[str] = Field(default_factory=list)29 cross_references: list[str] = Field(default_factory=list)30 contracting_officer_notes: list[str] = Field(default_factory=list)31 32 33class RetrievedSection(BaseModel):34 """Retrieved section plus score used for context selection."""35 36 section: SectionRecord37 score: float38 retrieval_method: str39 