Files
fquiz/memory/2026-04-23.md
T
2026-04-23 09:41:54 +08:00

3.4 KiB
Raw Blame History

Work Log - 日记管理按 quiz 表与逻辑重构(2026-04-23

  • 背景:按“用老工程表,参考老工程逻辑改造当前工程日记管理功能”要求,将 fquiz/admin/diary 从系统日志复用页切换为独立 Diary 模块。

  • 本次改动(最小闭环):

    • 后端模型与接口落地(对齐 quiz 口径):

      • api/app/models/diary.py
        • 新增主表 diary,字段:
          • id/title/content/diary_date/mood/weather/archived/create_date/create_user/update_date/update_user
        • 索引:idx_diary_create_user/idx_diary_diary_date/idx_diary_mood/idx_diary_archived
      • api/app/schemas/diary.py
        • 新增 DiaryMood 枚举:HAPPY/CALM/SAD/ANGRY/TIRED/EXCITED
        • 新增 DiaryQueryRequest/DiaryCreateRequest/DiaryUpdateRequest/DiarySummary/DiaryPageResponse
      • api/app/services/diary_service.py
        • 新增 create/search/get/update/delete/archive 逻辑。
        • 查询逻辑对齐 quiz:按 create_user 隔离数据,支持 title/mood/diary_date_start/diary_date_end/archived 过滤,排序 diary_date DESC, create_date DESC
        • 归档逻辑对齐 quizarchive 仅修改 archived 状态,保留原记录。
      • api/app/api/v1/diary.py
        • 新增接口:
          • POST /api/v1/diary/search
          • GET /api/v1/diary/get/{id}
          • POST /api/v1/diary/create
          • PUT /api/v1/diary/update
          • DELETE /api/v1/diary/delete/{id}
          • POST /api/v1/diary/{id}/archive?archived=...
        • 权限口径:
          • 读:menu.read | menu.manage
          • 写:menu.manage
      • 路由与建表注册:
        • api/app/api/router.py 挂载 diary 路由。
        • api/app/models/__init__.pyapi/app/core/database.py 注册 diary 模型,确保 create_all 生效。
    • 前端页面改造(替换 syslog 复用):

      • web/src/app/admin/diary/page.tsx
        • 改为独立 Diary 页面:
          • 列表分页
          • 条件查询(标题、心情、日期范围、归档状态)
          • 新增 / 编辑 / 删除
          • 归档 / 取消归档
          • 详情弹窗
        • API 调整到新后端接口 /api/v1/diary/*
      • web/src/types/auth.ts
        • 新增 DiaryMood/DiarySummary/DiaryListResponse 类型。
      • web/src/app/admin/page.tsx
        • 首页卡片文案从“上帝视角”调整为“日记管理”。
      • api/app/services/seed_service.py
        • 菜单 admin.diary 名称更新为“日记管理”(路径保持 /admin/diary)。
  • 验证:

    • python3 -m py_compile api/app/models/diary.py api/app/schemas/diary.py api/app/services/diary_service.py api/app/api/v1/diary.py api/app/api/router.py api/app/models/__init__.py api/app/core/database.py api/app/services/seed_service.py -> 通过。
    • python3 -m compileall api/app -> 通过。
    • 前端 ESLint 未完成(环境依赖缺失):
      • npm run lint 提示 eslint: not found
      • 直接执行 eslint 后提示缺少 typescript 依赖(Cannot find module 'typescript')。
  • 风险与影响:

    • admin.diary 保留 menu.read/menu.manage 权限体系(未引入独立 diary.read/diary.manage),属于兼容方案;后续若需要更细权限边界,可单独拆分权限码。
    • 本次仅对齐了老工程 diary 主链路,不包含分组/tag 维度扩展(老工程该模块本身也未强依赖)。