Files
chengkai3 9e39e16248 feat:[FL-144][改造系统消息页面]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-16 17:54:25 +08:00

53 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` 通过。
- 风险与关注点:
- 当前删除为管理端物理删除系统消息记录;广播消息删除后对所有用户不可见。
## 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 作为普通文本存储并在前端渲染。