"""Schemas for Interpretation-in-Map (step 5). A thin adapter that evaluates a customer interpretation WITHIN the already-built RegulatoryMap — it does not assess abstract legal questions. Application types only; no compliance-meta-model classes (freeze v1.0 untouched). """ from __future__ import annotations from typing import List from pydantic import BaseModel, Field from compliance.product_scope.schemas import UnsupportedDomain from compliance.profile.canonical import CanonicalProductRegulatoryProfile from compliance.reasoning.enums import Confidence, InterpretationVerdict class InterpretationInMapRequest(BaseModel): product_profile: CanonicalProductRegulatoryProfile customer_interpretation: str class InterpretationInMapResult(BaseModel): raw_interpretation: str assessment: InterpretationVerdict in_scope_of_map: bool # True if it touches a regulation/obligation present in the map affected_regulations: List[str] = Field(default_factory=list) # intersected with the map affected_obligations: List[str] = Field(default_factory=list) # intersected (registry-linked) related_uncertainties: List[str] = Field(default_factory=list) # map-uncertain regs it touches future_corpus_domains: List[UnsupportedDomain] = Field(default_factory=list) # NOT evaluated corrected_interpretation: str = "" risks: List[str] = Field(default_factory=list) legal_basis_refs: List[str] = Field(default_factory=list) explanation: str = "" confidence: Confidence = Confidence.MEDIUM