feat(交易记录): 新增交易记录管理页面与API接口 feat(上传): 添加统一上传接口支持自动识别文件类型 feat(用户管理): 为用户模型添加备注字段并更新相关接口 feat(邮件): 实现SMTP邮件发送功能并添加测试脚本 feat(短信): 增强短信服务配置灵活性与日志记录 fix(发票): 修复发票列表时间筛选功能 fix(nginx): 调整上传大小限制与超时配置 docs: 添加多个功能模块的说明文档 docs(估值): 补充估值计算流程与API提交数据说明 chore: 更新依赖与Docker镜像版本
3.4 KiB
背景与确认
-
备注为“用户维度”,按指示在
app_user增加备注字段并贯通列表与配额调整流程。 -
操作记录需补充时间字段以便前端展示。
-
交易管理列表需支持“提交时间区间、状态、手机号、公司名称、公司税号”搜索。
-
上传接口从两个合并为一个,统一入参与返回结构。
改动总览
-
模型:为
AppUser增加notes: CharField(256, null=True)。 -
接口:
-
admin-App用户管理:列表返回notes;配额调整将remark同步写入AppUser.notes;配额日志返回created_at。 -
交易管理:对公转账列表增加“提交时间区间”筛选。 -
上传:新增统一上传接口/api/v1/upload/upload(或/api/v1/upload),老接口内部复用统一实现保留兼容。
-
-
迁移:使用现有 Aerich 流程生成并升级迁移。
详细实施
1. App 用户备注(用户维度)
-
文件:
app/models/user.py- 在
AppUser增加字段notes = fields.CharField(max_length=256, null=True, description="备注")。
- 在
-
文件:
app/api/v1/app_users/admin_manage.py-
/list:返回notes = u.notes or ""。 -
/quota:接收remark后,除写入AppUserQuotaLog
-
2. 操作记录时间字段
-
文件:
app/schemas/app_user.pyAppUserQuotaLogOut增加created_at: str。
-
文件:
app/api/v1/app_users/admin_manage.py/ {user_id}/quota-logs:为每条日志填充created_at = r.created_at.isoformat()返回。
3. 交易管理列表搜索增强
-
文件:
app/controllers/invoice.py-
list_receipts(...):增加对PaymentReceipt.created_at的区间筛选:- 支持
created_at(数组,毫秒时间戳)或submitted_start/submitted_end(ISO 或毫秒)。
- 支持
-
-
文件:
app/api/v1/transactions/transactions.pylist_receipts:路由签名增加上述可选查询参数并传入控制器。
4. 上传接口统一
-
文件:
app/controllers/upload.py-
新增
upload_any(file: UploadFile):-
image/*保存到static/images;其他受支持类型保存到static/files。 -
返回
{ url, filename, content_type }。
-
-
-
文件:
app/api/v1/upload/upload.py-
新增
/upload(或/upload/upload按路由前缀安排):统一入口; -
旧
/image、/file内部调用upload_any保持兼容。
-
-
文件:
app/schemas/upload.py- 若需要,补充统一响应模型,或复用
FileUploadResponse(包含content_type)。
- 若需要,补充统一响应模型,或复用
迁移与兼容
-
Aerich:
init_db已集成迁移流程,生成迁移后执行upgrade,自动创建app_user.notes列。 -
旧接口兼容:上传旧路径保留;交易列表与日志返回仅新增字段,不影响既有消费逻辑。
验证与测试
-
备注更新:调用
/app-user-admin/quota传remark,再查/app-user-admin/list验证notes;查/app-user-admin/{id}/quota-logs验证created_at存在。 -
交易筛选:造两条不同日期的凭证,分别用时间区间查询命中与不命中。
-
上传统一:上传 PNG 与 PDF 验证保存路径与返回结构;旧接口路由到统一实现成功。
交付
- 提交代码与迁移;更新接口文档的路由说明与字段变化;前端无需大改即可使用新返回的
notes与日志created_at,交易列表按“凭证时间”筛选可用。