Files
fquiz/memory/2026-06-16.md
T
chengkai3 3899a2345e [fix]:[FL-145][系统消息要支持删除]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-16 17:44:11 +08:00

1.9 KiB
Raw Blame History

Work Log - 修复系统消息查看 5002026-06-16

  • 背景:

    • /api/v1/system-messages/me 返回系统消息列表时,对 SQLAlchemy ORM 对象执行 SystemMessagePublic.model_validate()Pydantic v2 未启用属性读取,导致 500。
  • 本次处理:

    • SystemMessagePublic 增加 ConfigDict(from_attributes=True),允许响应 schema 从 ORM/属性对象读取字段。
    • 新增系统消息 schema 回归测试,覆盖属性对象序列化路径。
  • 验证:

    • 基线:未启用 from_attributes 时,属性对象 model_validate 复现 Pydantic model_type 校验失败。
    • 修改后:属性对象 model_validate 可正常输出。
    • pytest api/tests/test_system_message_schema.py 通过。
  • 风险与关注点:

    • 改动仅影响系统消息公开响应 schema 的序列化方式,不改变接口字段、数据库结构或查询逻辑。

Work Log - 系统消息支持删除(FL-145)

  • 背景:

    • 系统消息管理页已有创建、查看、标记已读能力,但缺少删除入口。
  • 本次处理:

    • 后端新增 DELETE /api/v1/system-messages/{message_id},复用 admin.system_message 权限,删除系统消息记录。
    • 前端系统消息列表新增删除操作,使用二次确认,并在删除后刷新列表与未读统计。
    • 新增系统消息删除服务测试,覆盖存在记录删除与缺失记录返回 False
  • 验证:

    • UV_CACHE_DIR=/tmp/fquiz-uv-cache uv run --with pytest --with sqlalchemy --with pydantic --with pydantic-settings --with email-validator python -m pytest api/tests/test_system_message_schema.py api/tests/test_system_message_service.py 通过。
    • npm --workspace web exec eslint src/app/admin/system-messages/page.tsx 通过。
    • npm --workspace web run build 通过。
  • 风险与关注点:

    • 当前删除为管理端物理删除系统消息记录;广播消息删除后对所有用户不可见。