diff --git a/app/api/schemas/admin.py b/app/api/schemas/admin.py index 467ba5b..f1f602b 100644 --- a/app/api/schemas/admin.py +++ b/app/api/schemas/admin.py @@ -80,9 +80,25 @@ class IntentPayload(StrictPayload): version: int = Field(default=1, ge=1) +#: `agent_reply_template.chk_template_scene` 允许的取值。**必须逐字对齐**: +#: 此前 `ReplyPayload.scene` 只校验长度(`min_length=1, max_length=32`), +#: 于是传一个不在列内的场景会**穿过接口校验、撞上数据库 CHECK 约束**, +#: 最终以 `500` 冒出(`(3819, "Check constraint 'chk_template_scene' is violated.")`)—— +#: 那本该是一次 `422` 参数校验失败。2026-09-13 由接口逐条测试发现。 +ReplyScene = Literal[ + "disclaimer", + "low_confidence", + "compliance_block", + "transfer", + "model_failure", + "system_busy", + "clarification", +] + + class ReplyPayload(StrictPayload): template_code: str = Field(min_length=1, max_length=64) - scene: str = Field(min_length=1, max_length=32) + scene: ReplyScene title: str = Field(min_length=1, max_length=128) content_text: str = Field(min_length=1, max_length=32000) variables: list[str] = Field(default_factory=list)