refactor(schema): 移除重复的模型验证逻辑并简化字段验证

统一移除各模块schema中重复的model_validator前置处理逻辑,改用更简洁的字段验证方式
优化字段验证逻辑,移除冗余的字符串处理和类型转换代码
This commit is contained in:
zhangtao
2025-11-11 23:34:30 +08:00
parent 5d0d0cd26a
commit b678588d13
15 changed files with 34 additions and 401 deletions
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from typing import Optional
from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
from pydantic import BaseModel, ConfigDict, Field, field_validator
from app.core.base_schema import BaseSchema
@@ -15,33 +15,6 @@ class ParamsCreateSchema(BaseModel):
status: bool = Field(default=True, description="状态(True:正常 False:停用)")
description: Optional[str] = Field(default=None, max_length=500, description="描述")
@model_validator(mode='before')
@classmethod
def _normalize(cls, data):
"""前置归一化:字符串去空格、空串转 None、布尔兼容转换,并规范键为小写。"""
if isinstance(data, dict):
for key in ('config_name', 'config_key', 'config_value', 'description'):
val = data.get(key)
if isinstance(val, str):
val = val.strip()
if key in ('config_value', 'description') and val == '':
val = None
data[key] = val
# 规范键为小写
if isinstance(data.get('config_key'), str):
data['config_key'] = data['config_key'].lower()
# 规范布尔
for bkey in ('config_type', 'status'):
val = data.get(bkey)
if isinstance(val, str):
lowered = val.strip().lower()
if lowered in {'true', '1', 'y', 'yes'}:
data[bkey] = True
elif lowered in {'false', '0', 'n', 'no'}:
data[bkey] = False
elif isinstance(val, int):
data[bkey] = bool(val)
return data
@field_validator('config_key')
@classmethod