fix(api): keep src/dest fileitem fields in transfer history response

TransferHistory schema omitted src_fileitem, dest_fileitem and files which
are emitted by to_dict, so the response_model filter stripped the file
size the frontend reads from src_fileitem.size.
This commit is contained in:
jxxghp
2026-08-14 20:40:02 +08:00
parent b3509c60bb
commit c580181049
2 changed files with 12 additions and 0 deletions

View File

@@ -73,6 +73,10 @@ class TransferHistory(OptionalMediaIdentityMixin, BaseModel):
src_storage: Optional[str] = None
# 目标存储类型
dest_storage: Optional[str] = None
# 源文件项(含文件大小等运行时字段,与 to_dict 直出保持一致)
src_fileitem: Optional[JsonData] = None
# 目标文件项
dest_fileitem: Optional[JsonData] = None
# 源目录
src: Optional[str] = None
# 目的目录
@@ -121,6 +125,8 @@ class TransferHistory(OptionalMediaIdentityMixin, BaseModel):
errmsg: Optional[str] = None
# 日期
date: Optional[str] = None
# 文件清单
files: Optional[JsonData] = None
model_config = ConfigDict(from_attributes=True)

View File

@@ -50,9 +50,15 @@ def test_stable_collections_serialize_without_changing_payload_shape():
dest_storage="alist",
src="/downloads/demo.mkv",
dest="/media/demo.mkv",
src_fileitem={"path": "/downloads/demo.mkv", "size": 1024},
dest_fileitem={"path": "/media/demo.mkv", "size": 1024},
files=[{"path": "/downloads/demo.mkv"}],
).model_dump()
assert history["src_storage"] == "local"
assert history["dest_storage"] == "alist"
assert history["src_fileitem"]["size"] == 1024
assert history["dest_fileitem"]["size"] == 1024
assert history["files"][0]["path"] == "/downloads/demo.mkv"
assert episode.model_dump()["crew"][0]["job"] == "Writer"
assert episode.model_dump()["guest_stars"][0]["character"] == "Guest"