Files
qiji/backend/app/models/ai_summary.py
T
v6ole 5b38246801 feat: AI 摘要持久化 — DB 缓存 + 自动加载
后端:
- 新增 ai_summaries 表 (week_start/week_end/generated_by/summary)
- get_cached_summary(): 按周+用户查缓存
- delete_cached_summary(): 生成前清理旧缓存
- generate_summary(): 自动保存到 DB
- API: GET /ai/summary(加载) POST(生成) DELETE(清除)

前端:
- onMounted 自动 GET 缓存摘要, 有则直接展示
- 按钮: 无缓存→'AI 生成摘要', 有缓存→'重新生成'
- 标题栏显示生成时间戳
2026-06-25 11:45:04 +08:00

22 lines
948 B
Python

"""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())