Skip to content

Commit 04a8d9c

Browse files
corevibe555HanqingZ
authored andcommitted
refactor(api): deduplicate Pydantic models across fields and controllers (langgenius#34718)
1 parent efe54bc commit 04a8d9c

3 files changed

Lines changed: 9 additions & 13 deletions

File tree

api/controllers/console/app/message.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from sqlalchemy import exists, func, select
99
from werkzeug.exceptions import InternalServerError, NotFound
1010

11+
from controllers.common.controller_schemas import MessageFeedbackPayload as _MessageFeedbackPayloadBase
1112
from controllers.common.schema import register_schema_models
1213
from controllers.console import console_ns
1314
from controllers.console.app.error import (
@@ -59,10 +60,8 @@ def validate_uuid(cls, value: str | None) -> str | None:
5960
return uuid_value(value)
6061

6162

62-
class MessageFeedbackPayload(BaseModel):
63+
class MessageFeedbackPayload(_MessageFeedbackPayloadBase):
6364
message_id: str = Field(..., description="Message ID")
64-
rating: Literal["like", "dislike"] | None = Field(default=None, description="Feedback rating")
65-
content: str | None = Field(default=None, description="Feedback content")
6665

6766
@field_validator("message_id")
6867
@classmethod

api/fields/conversation_fields.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ class Feedback(ResponseModel):
8080
from_account: SimpleAccount | None = None
8181

8282

83-
class Annotation(ResponseModel):
83+
class ConversationAnnotation(ResponseModel):
8484
id: str
8585
question: str | None = None
8686
content: str
@@ -95,7 +95,7 @@ def _normalize_created_at(cls, value: datetime | int | None) -> int | None:
9595
return value
9696

9797

98-
class AnnotationHitHistory(ResponseModel):
98+
class ConversationAnnotationHitHistory(ResponseModel):
9999
annotation_id: str
100100
annotation_create_account: SimpleAccount | None = None
101101
created_at: int | None = None
@@ -151,8 +151,8 @@ class MessageDetail(ResponseModel):
151151
from_account_id: str | None = None
152152
feedbacks: list[Feedback]
153153
workflow_run_id: str | None = None
154-
annotation: Annotation | None = None
155-
annotation_hit_history: AnnotationHitHistory | None = None
154+
annotation: ConversationAnnotation | None = None
155+
annotation_hit_history: ConversationAnnotationHitHistory | None = None
156156
created_at: int | None = None
157157
agent_thoughts: list[AgentThought]
158158
message_files: list[MessageFile]
@@ -223,7 +223,7 @@ class Conversation(ResponseModel):
223223
read_at: int | None = None
224224
created_at: int | None = None
225225
updated_at: int | None = None
226-
annotation: Annotation | None = None
226+
annotation: ConversationAnnotation | None = None
227227
model_config_: SimpleModelConfig | None = Field(default=None, alias="model_config")
228228
user_feedback_stats: FeedbackStat | None = None
229229
admin_feedback_stats: FeedbackStat | None = None

api/fields/message_fields.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,15 @@
44
from uuid import uuid4
55

66
from graphon.file import File
7-
from pydantic import BaseModel, ConfigDict, Field, field_validator
7+
from pydantic import Field, field_validator
88

99
from core.entities.execution_extra_content import ExecutionExtraContentDomainModel
10+
from fields.base import ResponseModel
1011
from fields.conversation_fields import AgentThought, JSONValue, MessageFile
1112

1213
type JSONValueType = JSONValue
1314

1415

15-
class ResponseModel(BaseModel):
16-
model_config = ConfigDict(from_attributes=True, extra="ignore")
17-
18-
1916
class SimpleFeedback(ResponseModel):
2017
rating: str | None = None
2118

0 commit comments

Comments
 (0)