Spaces:
Sleeping
Sleeping
File size: 2,110 Bytes
a783939 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | from datetime import datetime, timezone
from sqlalchemy import Float, ForeignKey, Integer, String, Text
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship
class Base(DeclarativeBase):
pass
def _utc_now() -> datetime:
return datetime.now(timezone.utc)
class Analysis(Base):
__tablename__ = "analyses"
id: Mapped[str] = mapped_column(String(36), primary_key=True)
device_id: Mapped[str] = mapped_column(String(36), index=True)
created_at: Mapped[datetime] = mapped_column(default=_utc_now, index=True)
source: Mapped[str] = mapped_column(String(20))
language: Mapped[str] = mapped_column(String(10))
risk_score: Mapped[float] = mapped_column(Float)
risk_level: Mapped[str] = mapped_column(String(10))
duration_ms: Mapped[int] = mapped_column(Integer, default=0)
transcript_preview: Mapped[str | None] = mapped_column(Text, nullable=True)
text_hash: Mapped[str | None] = mapped_column(String(64), nullable=True)
features: Mapped[list["Feature"]] = relationship(
back_populates="analysis", cascade="all, delete-orphan"
)
class Feature(Base):
__tablename__ = "features"
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
analysis_id: Mapped[str] = mapped_column(
ForeignKey("analyses.id", ondelete="CASCADE"), index=True
)
type: Mapped[str] = mapped_column(String(30))
weight: Mapped[float] = mapped_column(Float)
evidence: Mapped[str] = mapped_column(Text)
analysis: Mapped[Analysis] = relationship(back_populates="features")
class Feedback(Base):
__tablename__ = "feedback"
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
analysis_id: Mapped[str] = mapped_column(
ForeignKey("analyses.id", ondelete="CASCADE"), index=True
)
device_id: Mapped[str] = mapped_column(String(36), index=True)
correct: Mapped[int] = mapped_column(Integer)
comment: Mapped[str | None] = mapped_column(Text, nullable=True)
created_at: Mapped[datetime] = mapped_column(default=_utc_now)
|