"""AI-generated weekly report summary — cached per week per user.""" import uuid from datetime import date, datetime from sqlalchemy import String, Text, DateTime, Date, func from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy.dialects.postgresql import UUID from app.database import Base class AISummary(Base): __tablename__ = "ai_summaries" id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) week_start: Mapped[date] = mapped_column(Date, index=True) week_end: Mapped[date] = mapped_column(Date) period: Mapped[str] = mapped_column(String(10), default="week") # 'week' / 'month' generated_by: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), index=True) role: Mapped[str] = mapped_column(String(20)) summary: Mapped[str] = mapped_column(Text) created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())