wip: 客户评级弹窗化/公司信息精简/参数中文化/品牌站点同步(基于 927592b)
This commit is contained in:
1 parent
927592b472
commit
27533eb465
43 files changed
+2959
-434
No files matched your search
@@ -77,3 +77,55 @@ class RatingGradeUpdateIn(RatingGradeCreateIn):
|
||||
|
||||
前端表单全量提交,故为全量替换语义;等级表无启停状态列,字段与新增一致。
|
||||
"""
|
||||
|
||||
|
||||
class CustomerRatingOut(BaseModel):
|
||||
"""客户评级响应(每客户一行;总分与分值按红线以字符串出参)。
|
||||
|
||||
grade_name 是保存时点按等级映射**快照固化**的值(无外键):等级表后续
|
||||
增删改不影响已保存的评级结论;为 NULL 表示保存时未命中任何等级
|
||||
(总分低于全部下限或等级表被清空)。
|
||||
"""
|
||||
|
||||
customer_id: int
|
||||
score_ship_amount: str
|
||||
score_receipt_rate: str
|
||||
score_profit_rate: str
|
||||
score_contract_cooperation: str
|
||||
score_site_construction: str
|
||||
total_score: str
|
||||
grade_name: str | None = None
|
||||
remark: str | None = None
|
||||
scorer_name: str
|
||||
create_time: datetime
|
||||
update_time: datetime
|
||||
|
||||
|
||||
class CustomerRatingSaveIn(BaseModel):
|
||||
"""保存客户评级(每客户一行,整体替换语义)。
|
||||
|
||||
五项分值为 0-20 的数字字符串(schema 只拦格式;0≤分≤20 与总分等级
|
||||
判定在 service 层审计上下文内完成 —— 失败的 400 同样留痕)。总分由
|
||||
服务端按五项重算,**不采信前端回传的总分**。
|
||||
"""
|
||||
|
||||
model_config = ConfigDict(str_strip_whitespace=True)
|
||||
|
||||
score_ship_amount: str = Field(description="发货额评分(0-20 数字字符串)")
|
||||
score_receipt_rate: str = Field(description="回款率评分(0-20 数字字符串)")
|
||||
score_profit_rate: str = Field(description="毛利率评分(0-20 数字字符串)")
|
||||
score_contract_cooperation: str = Field(description="合同履约配合能力评分(0-20 数字字符串)")
|
||||
score_site_construction: str = Field(description="现场规范施工能力评分(0-20 数字字符串)")
|
||||
remark: str | None = Field(default=None, max_length=255, description="备注")
|
||||
|
||||
@field_validator(
|
||||
"score_ship_amount",
|
||||
"score_receipt_rate",
|
||||
"score_profit_rate",
|
||||
"score_contract_cooperation",
|
||||
"score_site_construction",
|
||||
)
|
||||
@classmethod
|
||||
def _check_score(cls, value: str) -> str:
|
||||
"""单项分值须为有限数字(值域 0-20 由 service 层判定)。"""
|
||||
return _parse_score(value, label="评分")
|
||||
Reference in new issue
Block a user