refactor: 优化API路由和响应模型 feat(admin): 添加App用户管理接口 feat(sms): 实现阿里云短信服务集成 feat(email): 添加SMTP邮件发送功能 feat(upload): 支持文件上传接口 feat(rate-limiter): 实现手机号限流器 fix: 修复计算步骤入库问题 docs: 更新API文档和测试计划 chore: 更新依赖和配置
5.3 KiB
5.3 KiB
目标与范围
- 针对“估值二期”需求(用户端、管理端)设计完整 API,去除 Webhook 回调。
- 对齐现有约定:认证
POST /api/v1/base/access_token(app/api/v1/base/base.py:19-38)、token请求头(web/src/utils/http/interceptors.js:11-14);响应Success/SuccessExtra/Fail(app/schemas/base.py),成功码code===200(web/src/utils/http/interceptors.js:23-33);估值域已有/api/v1/valuations(app/api/v1/valuations/valuations.py:21-191)。
核心流程
- 用户端:登录→评估提交→个人中心(汇款凭证、抬头选择、类型选择、发票列表/详情)→估值记录(下载证书/报告、分享、历史结果、剩余次数)。
- 管理端:交易管理(查看/核验/邮件/开票/状态)→用户管理(信息/操作/修改/审核/投诉/短信文案/证书与报告)→审核列表(上传证书/下载/重传)。
实体与关系
- AppUser ⇄ Valuation(1..n)、Invoice(1..n)、InvoiceHeader(n)
- Valuation ⇄ ValuationCalculationStep(1..n) ⇄ Certificate/Report
- Invoice ⇄ InvoiceHeader/PaymentReceipt/Transaction
- Complaint、SMSMessage 与用户/估值/发票按需关联
端点设计(与前端映射保持一致)
- 认证与用户
- POST
/api/v1/base/access_token登录(app/api/v1/base/base.py:19-38) - GET
/api/v1/base/userinfo用户信息(app/api/v1/base/base.py:40-46) - GET
/api/v1/app-user/profile当前用户画像与剩余估值次数 - GET
/api/v1/app-user/list、GET/api/v1/app-user/get、POST/api/v1/app-user/register|update、DELETE/api/v1/app-user/delete(对齐 web/src/api/index.js:433-503)
- POST
- 估值评估(沿用并扩展)
- POST
/api/v1/valuations/、GET/api/v1/valuations/、GET/api/v1/valuations/{id}(已存在) - GET
/api/v1/valuations/{id}/steps(已存在,用于过程展示) - GET
/api/v1/valuations/{id}/certificate(新增:证书下载) - GET
/api/v1/valuations/{id}/report(新增:报告下载) - POST
/api/v1/valuations/{id}/share(新增:生成分享链接/小程序码,异步) - POST
/api/v1/valuations/batch/delete(已存在)
- POST
- 发票与交易(保留现有路径)
- GET
/api/v1/invoice/list、GET/api/v1/invoice/detail、POST/api/v1/invoice/create|update|send|remind|refund、DELETE/api/v1/invoice/delete、POST/api/v1/invoice/update-status(对齐 web/src/api/index.js:504-725) - POST
/api/v1/invoice/{id}/receipt(新增:上传付款凭证) - GET
/api/v1/invoice/headers、GET/api/v1/invoice/headers/{id}、POST/api/v1/invoice/headers(新增:抬头管理) - POST
/api/v1/invoice/{id}/issue(新增:开票,异步 Job)
- GET
- 审核与证书
- GET
/api/v1/review/valuations审核列表(新增) - POST
/api/v1/review/valuations/{id}/approve|reject(复用估值审核,app/api/v1/valuations/valuations.py:167-183) - POST
/api/v1/review/valuations/{id}/certificate上传证书(新增) - PUT
/api/v1/review/valuations/{id}/report重传报告(新增)
- GET
- 投诉与短信
- GET
/api/v1/complaints、GET/api/v1/complaints/{id}、PUT/api/v1/complaints/{id}(新增) - GET
/api/v1/sms/templates、POST/api/v1/sms/templates、POST/api/v1/sms/send(新增)
- GET
请求/响应格式与认证
- 统一 JSON;请求头
token必填(除登录与公共资源)。 - 成功:
{code:200,data:...,msg:"success"};失败:{code:4xx/5xx,msg:"错误"}。
字段与校验(示例)
- ValuationCreate:
asset_name(1-64),institution(1-128),industry(1-64),heritage_level?,inputs(object),attachments?[url[]] - InvoiceCreate:
ticket_type(electronic|paper),invoice_type(special|normal),phone,email,company_name,tax_number,register_address,register_phone,bank_name,bank_account - PaymentReceipt:
url,uploaded_at,verified - ShareRequest:
channel(miniprogram|link),expire(<=604800) - 规则:邮箱/手机号/税号格式;枚举校验;附件数量与大小限制。
错误码
- 200 成功;400 参数错误;401 未认证(前端自动登出,web/src/utils/http/interceptors.js:45-53);403 无权限;404 不存在;409 冲突;422 校验失败;429 频率限制;500 内部错误。
批量与异步(无 Webhook)
- 批量:发票批量开具、邮件批量发送(
POST /api/v1/invoice/batch/issue|send)。 - 异步 Job:开票/报告/分享生成返回
job_id;查询GET /api/v1/jobs/{id}(status: pending|running|success|failed)。客户端采用轮询或前端提示重试。
性能目标
- 登录/用户信息 P95 ≤ 100ms;列表分页 P95 ≤ 200ms(单页 ≤ 100 条)。
- 异步任务完成 ≤ 5s;QPS(单实例):读 200+/s、写 50+/s。
实施建议
- 在
app/api/v1/新增 invoices/reviews/complaints/sms 路由文件。 - 在
controllers/实现控制器,复用ValuationController的计算步骤记录(app/controllers/valuation.py:24-53)。 - 在
schemas/新增/扩展 Pydantic 模型,严格校验。 - 增加 Job 状态查询端点,统一返回结构;无 Webhook 的情况下采用客户端轮询。
- 前端按
web/src/api/index.js对齐接入,复用错误处理与 401 登出。
——请确认该无 Webhook 版本的 API 方案,确认后我将开始后端路由/控制器/模型实现并提供前端对接示例。