fix:[FL-143][处理消息查看报错]

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
chengkai3
2026-06-16 17:03:18 +08:00
parent 5173a975b5
commit 946312cb6e
3 changed files with 44 additions and 1 deletions
+3 -1
View File
@@ -1,10 +1,12 @@
from datetime import datetime
from typing import Literal
from pydantic import BaseModel, Field
from pydantic import BaseModel, ConfigDict, Field
class SystemMessagePublic(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: str
title: str
content: str
+25
View File
@@ -0,0 +1,25 @@
from __future__ import annotations
from datetime import datetime
from types import SimpleNamespace
from app.schemas.system_message import SystemMessagePublic
def test_system_message_public_validates_attribute_object() -> None:
message = SimpleNamespace(
id="message-1",
title="系统通知",
content="测试内容",
message_type="info",
target_user_id=None,
is_read=False,
created_at=datetime(2026, 1, 1, 12, 0, 0),
read_at=None,
)
result = SystemMessagePublic.model_validate(message)
assert result.id == "message-1"
assert result.title == "系统通知"
assert result.is_read is False
+16
View File
@@ -0,0 +1,16 @@
# 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 的序列化方式,不改变接口字段、数据库结构或查询逻辑。