refactor: 优化API路由和响应模型 feat(admin): 添加App用户管理接口 feat(sms): 实现阿里云短信服务集成 feat(email): 添加SMTP邮件发送功能 feat(upload): 支持文件上传接口 feat(rate-limiter): 实现手机号限流器 fix: 修复计算步骤入库问题 docs: 更新API文档和测试计划 chore: 更新依赖和配置
26 lines
1.7 KiB
Markdown
26 lines
1.7 KiB
Markdown
## 问题
|
||
- 计算步骤创建时报 Pydantic 校验错误:`step_order` 期望整型,但代码使用层级小数(如 2.1、2.11)。这不是计算公式问题,而是“类型不匹配”导致步骤未入库。
|
||
|
||
## 修复原则
|
||
- 不改变任何计算公式或数值流程,仅调整“步骤顺序”的存储与校验类型,使其能接受层级小数。
|
||
|
||
## 具体改动
|
||
1) 模型字段修改(不涉公式):
|
||
- `app/models/valuation.py` 中 `ValuationCalculationStep.step_order: IntField → DecimalField(max_digits=8, decimal_places=3)`;保留 `ordering=["step_order"]`,确保排序正确。
|
||
|
||
2) Schema 修改(不涉公式):
|
||
- `ValuationCalculationStepCreate.step_order: int → Decimal`,添加前置校验,支持 int/float/str 自动转换为 Decimal;`ValuationCalculationStepOut` 同步为 Decimal。
|
||
- 列表与详情端点已使用 `model_dump_json()` 再 `json.loads()`,Decimal 会被正确序列化为 JSON 数字,无需改动。
|
||
|
||
3) 代码调用无需改(不涉公式):
|
||
- 由于 Schema 接受 float 并转换为 Decimal,现有调用处传入 `2.1/2.11/...` 不需改。
|
||
|
||
4) 迁移与验证
|
||
- 启动时执行 Aerich 迁移更新列类型(项目已有初始化流程)。
|
||
- 跑脚本观测:`calcstep.create` 不再报错;`calcstep.list` 数量 > 0;后台“估值计算步骤”返回完整数组。
|
||
|
||
## 影响范围与安全性
|
||
- 仅变更“步骤顺序”的字段类型与 Schema 校验,不触及任何计算逻辑或公式。
|
||
- 排序按照 Decimal 正常工作,层级表达(2.11 < 2.2)保留。
|
||
|
||
——确认后,我将按以上方案修改模型与 Schema,并执行验证,保证不改变计算逻辑,仅解决类型不匹配问题。 |