Files
junhong_cmp_fiber/openspec/changes/add-employee-collection-bills/tasks.md
break 370fd3e67f
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m49s
update
2026-09-03 09:28:28 +08:00

3.6 KiB
Raw Blame History

1. 账单数据与基础契约

  • 1.1 盘点现有订单、代理充值、通用企业微信审批、附件、Outbox 和审计模型,确定来源事件、附件键和审批快照的复用点;不得复制敏感付款内容。
  • 1.2 新增成对迁移及 GORM 模型:线下收款方式字典、员工代收款账单、核销申请、申请—账单分摊、退款冲销/审批快照关联;为来源唯一性、审批实例唯一性、账单查询和分摊锁定建立约束/索引。
  • 1.3 定义金额分、账单状态、申请状态、来源类型和稳定错误码实现中文名称、DTO 枚举说明及金额/附件/分摊校验。
  • 1.4 实现超级管理员维护线下收款方式字典的新增、编辑、启停和受引用不可删除规则,并写配置审计。

2. 来源建账与账单读取

  • 2.1 在后台线下套餐订单成功路径识别应建账场景,以实际操作后台账号和 actual_paid_amount 可靠、幂等地创建账单;调整仅该场景的创建时付款凭证要求,保留赠送等非建账订单的既有要求。
  • 2.2 在代理线下预存款/主钱包充值企业微信通过且完成入账路径可靠、幂等地创建账单,金额取充值 amount;线上充值和未入账审批不得建账。
  • 2.3 实现账单列表、详情和统计 Query按来源、状态、时间、员工、客户筛选员工仅见本人财务/超级管理员按数据范围见全部;返回应收、已核销、预占和未核销金额及审批中标识。
  • 2.4 实现账单关闭用例:仅超级管理员、仅允许无审批中申请的未结清账单、必须填写原因,并在事务内保存状态变化与成功审计。

3. 核销申请、审批与退款联动

  • 3.1 实现核销申请创建和已驳回重提:锁定选中账单、按时间预填、校验付款金额与分摊、预占余额、冻结收款方式/外部付款/附件/账单摘要,并创建新的企业微信审批实例和可靠提交请求。
  • 3.2 接入企业微信最终通过、驳回、提交失败和状态查询恢复:通过时一次性增加已核销并释放预占,驳回时释放预占;用审批实例、状态条件更新和账单锁保证重复/乱序回调不重复核销。
  • 3.3 实现代办权限、申请/分摊/审批历史查询及附件授权访问;超级管理员代办创建、修改或重提时强制记录实际代办人和原因。
  • 3.4 在套餐退款成功处理链路实现账单冲销:无已通过分摊的全额退款自动关闭、部分退款冲减应收;存在已通过分摊时只保留退款关联提示,不恢复欠款。
  • 3.5 为建账、申请提交/重提、审批通过/驳回、账单关闭和退款冲销补齐事务内审计;检查日志、错误和导出不暴露附件内容、完整交易敏感体或 OCR 原始结果。

4. 路由、文档与验证

  • 4.1 注册账单、申请、字典和导出所需路由及 RouteSpec补齐 internal/bootstrapcmd/api/docs.gocmd/gendocs/main.go 装配Handler 使用 pkg/response 和稳定错误。
  • 4.2 在隔离数据库按显式 DB_*scripts/migrate.sh 验证迁移 up/down/up人工核对上线前来源不建账、来源幂等、并发预占、审批重放、驳回重提、关闭限制及退款三类联动。
  • 4.3 运行 gofmt -w(变更 Go 文件)、go build ./cmd/api ./cmd/workergo run cmd/gendocs/main.goopenspec validate add-employee-collection-bills --strictopenspec doctor --json./scripts/context-health.sh;自动化测试按项目决策为 N/A。