9e39e16248
Co-authored-by: multica-agent <github@multica.ai>
3.2 KiB
3.2 KiB
Work Log - 修复系统消息查看 500(2026-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复现 Pydanticmodel_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通过。
-
风险与关注点:
- 当前删除为管理端物理删除系统消息记录;广播消息删除后对所有用户不可见。
Work Log - 系统消息页面布局与 Markdown 支持(2026-06-16)
-
背景:
- FL-144 要求参考用户管理页面改造系统消息页面:发送消息改为按钮点击后弹出表单,并支持 Markdown 编辑与展示。
-
本次处理:
- 将系统消息页面收敛为“消息列表”卡片布局,顶部动作区提供刷新、全部已读、发送消息入口,筛选项改为与用户管理页面一致的行内表单风格。
- 将发送消息表单迁移到 Ant Design Modal,内容输入支持 Markdown,并提供实时预览。
- 列表内容与详情弹窗使用安全的本地 Markdown 渲染,支持标题、列表、引用、代码块、强调、行内代码和安全链接。
-
验证:
- 基线:
npx eslint src/app/admin/system-messages/page.tsx src/app/admin/users/page.tsx通过,存在users/page.tsx既有 3 条 warning。 - 修改后:
npx eslint src/app/admin/system-messages/page.tsx src/app/admin/users/page.tsx通过,仍仅存在同样 3 条既有 warning。 - 修改后:
npx tsc --noEmit通过。
- 基线:
-
风险与关注点:
- 改动仅涉及前端系统消息页面,不改变 API 字段、数据库结构或消息存储格式;Markdown 作为普通文本存储并在前端渲染。