guzhi/.trae/documents/初始化交易记录数据并在后台可见的实施方案.md
邹方成 f536178428 feat: 新增交易记录管理功能与统一上传接口
feat(交易记录): 新增交易记录管理页面与API接口
feat(上传): 添加统一上传接口支持自动识别文件类型
feat(用户管理): 为用户模型添加备注字段并更新相关接口
feat(邮件): 实现SMTP邮件发送功能并添加测试脚本
feat(短信): 增强短信服务配置灵活性与日志记录

fix(发票): 修复发票列表时间筛选功能
fix(nginx): 调整上传大小限制与超时配置

docs: 添加多个功能模块的说明文档
docs(估值): 补充估值计算流程与API提交数据说明

chore: 更新依赖与Docker镜像版本
2025-11-20 20:53:09 +08:00

60 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 目标
- 创建若干“交易记录”(对公转账付款凭证)测试数据,并确保后台管理可以正常查看、筛选与分页。
- 全流程可回滚,严格隔离开发与生产数据。
## 关键假设
- 交易记录以 `PaymentReceipt`(关联 `Invoice`)为核心:后端模型位于 `app/models/invoice.py`
- 后端已提供发票与凭证相关 API
- 发票:`GET/POST /api/v1/invoice/*``app/api/v1/invoice/invoice.py`
- 凭证:`POST /api/v1/invoice/{id}/receipt`、列表 `GET /api/v1/transactions/receipts``app/api/v1/transactions/transactions.py`)。
- 现有后台页已覆盖发票列表 `web/src/views/transaction/invoice/index.vue`,尚无“凭证专属列表”页面。
## 数据建模与来源
- `Invoice`:发票记录(开票状态、类型、抬头信息、公司税号、银行账户等)。
- `PaymentReceipt`:对公转账付款凭证(字段含 `invoice_id``url``note``verified``created_at`)。
- 为保证后台可见,需同时插入可查询的 `Invoice` 与其关联的 `PaymentReceipt`
## 实施路径
### 方案 A通过现有 API 批量生成(零代码改动,首选)
- 步骤:
- 调用 `POST /api/v1/invoice/create` 批量创建 510 条覆盖不同类型/状态的发票(含公司名、税号、银行账户等)。
- 对每条发票调用 `POST /api/v1/invoice/{id}/receipt` 上传/登记 12 条付款凭证(`file_url``url``note``verified`)。
- 可选:通过 `POST /api/v1/transactions/send-email` 生成邮件日志,验证通知链路。
- 优势:不改动代码,快速、低风险;与现有权限和审计链路一致。
### 方案 B后端种子脚本仅开发环境便于重复初始化
-`app/core/init_app.py` 新增 `init_demo_transactions()`
- 仅在开发环境执行(如 `ENV=dev`);避免污染生产。
- 批量创建 `Invoice` 测试数据,再为每条 `Invoice` 创建若干 `PaymentReceipt`
- 为可识别性,在 `note` 中加入 `DEMO` 标签或新增布尔字段(若允许)。
- 将该方法纳入现有 `init_data()` 的“开发模式”分支;保留一键清理逻辑(删除 `DEMO` 标记数据)。
## 前端后台展示
- 新增后台页“交易记录”:`web/src/views/transaction/receipts/index.vue`Naive UI
- 数据源:`GET /api/v1/transactions/receipts`;支持分页与筛选(手机号、公司名、税号、状态、类型等)。
- 列:凭证时间、公司名称、税号、转账备注(`note`)、审核状态(`verified`)、关联发票 ID/类型,查看详情。
- 行为:查看详情(`GET /api/v1/transactions/receipts/{id}`),跳转到发票详情。
- 菜单与权限:
- 在后端 `init_menus()` 增加“交易记录”菜单,并为管理员角色在 `init_roles()` 授权;在 `init_apis()` 注册 `receipts` 相关 API。
- 备选轻改:在 `invoice/index.vue` 增加“凭证数/链接”列与详情入口,先实现可见性,后续再拆分独立列表页。
## 验证步骤
- 数据验证:
- 通过 API 查询:`GET /api/v1/invoice/list``GET /api/v1/transactions/receipts`,确认条数、筛选与分页正确。
- 随机抽样验证 `PaymentReceipt` 与对应 `Invoice` 关联完整、字段齐备。
- 前端验证:
- 后台页加载正常、列渲染与筛选可用;详情跳转与状态标签正确。
- 安全验证:
- 在生产环境禁用种子逻辑;标记测试数据,提供清理。
## 回滚与清理
- 提供清理脚本/接口:按 `DEMO` 标记或 ID 范围批量删除测试发票与凭证。
- 菜单与权限变更可回退至原状态(移除菜单、撤销授权)。
## 交付物
- A一组 API 请求示例(可直接运行)生成测试交易与凭证。
- B可选开发环境种子函数与清理脚本。
- C前端“交易记录”后台页或在发票页增加凭证列的最小改动
## 备注
- 编码时为新增函数与接口补充函数级注释(功能、参数、返回值说明),遵循现有代码风格与安全规范。