Spaces:
Sleeping
Sleeping
| from datetime import datetime | |
| from sqlalchemy import DateTime, Float, ForeignKey, Integer, String, Text | |
| from sqlalchemy.orm import Mapped, mapped_column | |
| from app.db import Base | |
| from app.models.entities import utcnow | |
| from app.models.enums import ArtifactStatus, Recommendation, db_enum | |
| class ArtifactColumns: | |
| """Shared columns for the three per-stage ML artifacts.""" | |
| id: Mapped[int] = mapped_column(Integer, primary_key=True) | |
| status: Mapped[ArtifactStatus] = mapped_column( | |
| db_enum(ArtifactStatus, 16), default=ArtifactStatus.PENDING | |
| ) | |
| payload_json: Mapped[str | None] = mapped_column(Text, default=None) | |
| generated_by: Mapped[str] = mapped_column(String(128), default="") | |
| prompt_version: Mapped[str] = mapped_column(String(64), default="") | |
| fallback_reason: Mapped[str | None] = mapped_column(String(64), default=None) | |
| requires_mandatory_review: Mapped[bool] = mapped_column(default=False) | |
| error: Mapped[str | None] = mapped_column(Text, default=None) | |
| created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utcnow) | |
| completed_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), default=None) | |
| class DiagnosticReport(ArtifactColumns, Base): | |
| __tablename__ = "diagnostic_reports" | |
| claim_id: Mapped[int] = mapped_column(ForeignKey("claims.id"), index=True) | |
| document_id: Mapped[int | None] = mapped_column(ForeignKey("documents.id"), default=None) | |
| modality: Mapped[str | None] = mapped_column(String(16), default=None) | |
| modality_confidence: Mapped[float | None] = mapped_column(Float, default=None) | |
| authenticity_verdict: Mapped[str | None] = mapped_column(String(32), default=None) | |
| authenticity_risk: Mapped[float | None] = mapped_column(Float, default=None) | |
| class RecommendationNote(ArtifactColumns, Base): | |
| __tablename__ = "recommendation_notes" | |
| claim_id: Mapped[int] = mapped_column(ForeignKey("claims.id"), index=True) | |
| recommendation: Mapped[Recommendation | None] = mapped_column( | |
| db_enum(Recommendation, 32), default=None | |
| ) | |
| confidence: Mapped[float | None] = mapped_column(Float, default=None) | |
| class AdjudicationSummary(ArtifactColumns, Base): | |
| __tablename__ = "adjudication_summaries" | |
| claim_id: Mapped[int] = mapped_column(ForeignKey("claims.id"), index=True) | |
| recommendation_lean: Mapped[str | None] = mapped_column(String(32), default=None) | |
| confidence: Mapped[float | None] = mapped_column(Float, default=None) | |