5b38246801
后端: - 新增 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 生成摘要', 有缓存→'重新生成' - 标题栏显示生成时间戳
22 lines
948 B
Python
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())
|