Files
shanxia2.0/openspec/changes/cell-storage-protocol-modules/tasks.md
T
2026-05-17 08:36:37 +08:00

3.2 KiB

1. 后端模型与 CRUD

  • 1.1 在 backend/app/models/models.py 增加 BizCollectionProtocol、BizProtocolAudit、BizProtocolPayment、BizProtocolPaymentDetail 与 DDL 字段对齐
  • 1.2 新建 backend/app/crud/collection_protocol.py(或拆分多个模块):协议单列表/详情查询、审核插入、缴费明细状态更新、分期预警查询;统一 _row_to_dict camelCase 输出与租户过滤
  • 1.3 新建 backend/app/schemas/ 下 Pydantic 请求体(审核、财务确认、分页参数)若项目惯例需要(已在 collection_protocol.py 内联 Body,未单独建 schemas 文件)

2. 后端 API

  • 2.1 新建 backend/app/api/collection_protocol.py(名称可调整):实现 GET 列表/详情、POST 审核、GET/POST 收款确认、GET/POST 退费确认、GET 分期预警;依赖 require_admin_or_super_admin 与 get_db
  • 2.2 在 backend/app/api/__init__.py 与 backend/app/main.py 注册路由前缀 /web/admin(或既有聚合方式)
  • 2.3 手工验证:Swagger /docs 中上述路径可用,错误状态与业务校验符合 spec(需在本地启动后端后点验)

3. 菜单与路由对齐

  • 3.1 更新 backend/app/api/menu.py 的 STATIC_MENU_TREE:新增一级「细胞存储管理」及 5 个子菜单(path/component 与前端一致)
  • 3.2 更新 web-admin/src/router/modules/sqxp.ts:同级路由与 meta.title;图标与现有风格一致

4. 前端 API 与类型

  • 4.1 新建 web-admin/src/api/collection-protocol.ts(或并入 admin.ts):封装列表、详情、审核、两种确认、预警接口,路径与后端一致
  • 4.2 在 web-admin/src/types/api.d.ts 补充必要类型(若项目惯例)(页面使用 Record<string, unknown> / 专用 Row 类型已够用)

5. 前端页面(五页)

  • 5.1 新建 web-admin/src/views/cell-storage/protocol/index.vue:列表 + 概要详情弹窗;对齐 system/unit/index.vue 结构
  • 5.2 新建 web-admin/src/views/cell-storage/protocol-audit/index.vue:审核列表 + 审核弹窗(通过/退回)
  • 5.3 新建 web-admin/src/views/cell-storage/payment-confirm/index.vue:仅 jfqrz 列表 + 确认弹窗
  • 5.4 新建 web-admin/src/views/cell-storage/refund-confirm/index.vue:仅 tfqrz 列表 + 确认弹窗
  • 5.5 新建 web-admin/src/views/cell-storage/installment-warning/index.vue:筛选预警/逾期/全部 + 标签列;对齐 Fresh Mint 状态色

6. 数据与文档收尾

  • 6.1 若 DB 菜单走种子数据:在 docs/sql/ 增加补丁脚本(可选),与仓库既有 docs/sql/ 增量脚本惯例一致(全量基线为 zkxw.sql;当前为前端静态路由 + STATIC_MENU_TREE,若生产依赖 DB 菜单种子再补)
  • 6.2 本地联调:登录 admin → 五菜单可进 → 列表有接口响应(可用占位数据或手动插库验证)

7. 验证

  • 7.1 后端:pytest 现有用例通过;如有新增关键逻辑可补最小单测(可选)(当前仓库 tests/test_api_crypto.py 与实现不一致导致 1 例失败,与本次变更无关)
  • 7.2 前端:pnpm build 或 pnpm build:typecheck 通过(仓库内尚有既有 vue-tsc 报错;新增页面未引入新的独占阻塞项)