Skip to content

Commit 74f0cb2

Browse files
committed
refactor(api_response): simplify model validation and remove unused fields
1 parent 654189e commit 74f0cb2

File tree

1 file changed

+2
-69
lines changed

1 file changed

+2
-69
lines changed

models/api_response.py

Lines changed: 2 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -19,34 +19,11 @@ def parse(cls, resp_body: dict) -> Self | None:
1919
:rtype: Self | None
2020
"""
2121
try:
22-
# 尝试验证模型
23-
return cls.model_validate(obj=resp_body, extra="forbid")
22+
return cls.model_validate(obj=resp_body, extra="allow")
2423

2524
except Exception as e:
2625
logger.debug(f"{format_exc()}\n[MODEL] 解析失败")
27-
logger.warning(f"解析数据过程出错, 尝试兼容多余字段")
28-
29-
# 尝试兼容多余字段
30-
return cls.__try_extra(resp_body)
31-
32-
@classmethod
33-
def __try_extra(cls, resp_body: dict) -> Self | None:
34-
"""
35-
解析API响应数据(兼容多语字段)
36-
37-
:param resp_body: 响应体
38-
:type resp_body: dict
39-
:return: 数据模型
40-
:rtype: Self | None
41-
"""
42-
try:
43-
model_instance = cls.model_validate(obj=resp_body, extra="allow")
44-
logger.success("兼容多余字段成功")
45-
return model_instance
46-
47-
except Exception as e:
48-
logger.error(f"数据解析失败, 请提供日志并且提交issue反馈")
49-
logger.debug(f"{format_exc()}\n[MODEL] 解析失败")
26+
logger.warning(f"数据解析失败, 请提供日志并且提交issue反馈")
5027
return None
5128

5229

@@ -59,7 +36,6 @@ class QuestionAnswerAPIResponse(BaseAPIResponse):
5936

6037
questionid: int
6138
"""问题ID = question_id"""
62-
correctreply: str
6339
correctAnswerList: list[str]
6440
"""正确答案列表 与 answer_list 性质相同"""
6541

@@ -169,12 +145,8 @@ class BasePageDTO(BaseModel):
169145
"""
170146
parentid: int
171147
"""页面ID = page_id"""
172-
orderIndex: int
173148
resourceid: int
174149
"""资源ID / 视频ID"""
175-
skipVideoTitle: int
176-
note: str
177-
resourceFullurl: str | None = None
178150

179151
class ContentPageDTO(BasePageDTO):
180152
"""内容元素数据模型"""
@@ -183,8 +155,6 @@ class ContentPageDTO(BasePageDTO):
183155
content: str
184156
"""内容"""
185157

186-
resourceDTOList: list
187-
188158
class VideoPageDTO(BasePageDTO):
189159
"""视频元素数据模型"""
190160

@@ -194,23 +164,12 @@ class VideoPageDTO(BasePageDTO):
194164
resourceid: int
195165
"""视频ID = video_id"""
196166

197-
resourceContentSize: int
198-
videoQuestionDTOList: list
199-
knowledgeResourceDTOS: list
200-
videoCover: str | None = None
201-
srtDTO: dict | None = None
202-
203167
class QuestionPageDTO(BasePageDTO):
204168
"""问题元素数据模型"""
205169

206170
class QuestionDTO(BaseModel):
207171
"""题目数据模型"""
208172

209-
class choiceitemModel(BaseModel):
210-
choiceitemid: int
211-
questionid: int
212-
title: str
213-
214173
questionid: int
215174
"""问题ID = question_id"""
216175
score: float
@@ -225,22 +184,6 @@ class choiceitemModel(BaseModel):
225184
2: "多选题",
226185
4: "判断题",
227186
"""
228-
iscontent: int
229-
hardlevel: int
230-
parentid: int
231-
createtime: str
232-
updatetime: str
233-
remark: str
234-
userid: int
235-
orgid: int
236-
isShare: int
237-
blankOrder: int
238-
choiceitemModels: list[choiceitemModel] | None = None
239-
tagList: list
240-
link: str | None = None
241-
linkList: list | None = None
242-
linkOptionList: dict | None = None
243-
relatedTextbookChapterDTOList: list
244187

245188
type: Literal[6]
246189
content: str
@@ -254,11 +197,6 @@ class DocumentPageDTO(BasePageDTO):
254197
content: str
255198
"""内容"""
256199

257-
resourceContentSize: int
258-
docTitle: str
259-
docSize: int
260-
knowledgeResourceDTOS: list
261-
262200
id: int
263201
"""页面ID = page_id"""
264202
relationid: int
@@ -271,11 +209,6 @@ class DocumentPageDTO(BasePageDTO):
271209
contentnodeid: int
272210
"""节ID = section_id"""
273211
type: int
274-
orderindex: int
275-
lastmodifydate: str
276-
share: int
277-
status: int
278-
qrcode: int
279212

280213
coursepageDTOList: list[
281214
Annotated[

0 commit comments

Comments
 (0)