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 生成摘要', 有缓存→'重新生成' - 标题栏显示生成时间戳
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
"""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())
|
||||
Reference in New Issue
Block a user