# 7月迭代技术方案总览 > 状态:待评审 > 负责人:待指定 > 评审人:后端、前端、产品、验收负责人、运维待指定 > 讨论日期:2026-07-11 > 最后更新:2026-07-14 > 分支:Iteration/7-11 > 系统:junhong_cmp_fiber(已上线,渐进迭代) --- ## 一、评审结论 当前方案的技术方向没有跑偏:渐进式 DDD、通用审批流、Outbox、异步任务复用和查询侧独立都符合当前系统约束。 此前版本缺少流程图、前端方案、发布方案和若干关键业务决策。本轮已经补齐这些评审材料,并确认以下口径: - 平台员工不建立信用额度;信用额度只属于代理主钱包。 - 批量订购的支付方式按整批统一,Excel 不携带支付方式。 - 角色级导出字段配置属于本期必做能力。 - Gateway 限速只面向卡号,设备场景先解析当前卡再调用 `cardNo`;本期仅人工设置/取消,不做套餐自动限速。 - 需求 16“代理分销码与佣金提现”已移出 7 月迭代,后续独立立项。 - 审批结论与退款、充值等业务处理结果分别建模和展示。 - 审批详情必须展示业务快照、业务资料、历史意见和审批附件;业务资料与审批附件分开存储和展示。 - 非代理钱包退款由财务人工处理;代理钱包退款仅回退原扣款代理主钱包。 - 本次采用停机发布,不保留旧审批接口兼容窗口。 本目录按 [技术方案评审规范](../技术方案评审规范.md) 整理。当前范围为 21 项实施需求,需求 16 仅保留移出记录。评审建议按“基础设施 → 资金与审批 → 批量任务 → 展示类需求”分组。 --- ## 二、评审材料导航 | 材料 | 作用 | |------|------| | [DDD 规范](./DDD规范.md) | 判断复杂写、简单写和 Query 通道,以及旧模块如何渐进迁移 | | [前端技术方案](./前端技术方案.md) | 跨需求的页面、状态、轮询、权限和停机发布约定 | | [审批流](./基础设施/审批流.md) | 流程定义、实例、任务、状态机、并发、事件和业务接入 | | [站内消息](./基础设施/站内消息.md) | 审批和临期提醒的站内通知基础设施 | | [系统配置](./基础设施/系统配置.md) | C 端支付方式的受控动态配置 | | 各需求专项文档 | 业务规则、接口、数据改动和专项前端差异 | --- ## 三、系统上下文 ```mermaid flowchart LR Admin[后台管理端] --> API[Junhong API] Client[C端 H5/公众号] --> API API --> PG[(PostgreSQL)] API --> Redis[(Redis)] API --> Gateway[Gateway] API --> Outbox[(Outbox)] Relay[Outbox Relay] --> Outbox Relay --> Asynq[Asynq] Asynq --> Worker[Worker] Worker --> Notification[站内消息] Worker --> Business[退款/充值/临期等业务处理器] Worker -. Phase 2 .-> WeCom[企业微信] ``` 关键边界: - API 负责同步校验、事务提交和返回可追踪的业务状态。 - Worker 负责通知、导出、批量任务和审批后的业务处理。 - Gateway 是本迭代唯一已确认可以直接接入的外部业务系统。 - 企业微信相关能力属于 Phase 2,不得阻塞 Phase 1 的站内审批闭环。 --- ## 四、依赖关系 ```mermaid flowchart TD DDD[渐进式 DDD 规范] Config[系统配置] Notice[站内消息] Approval[通用审批流] Export[统一导出任务] DDD --> Approval Notice --> Approval Approval --> R18[需求18 多人审批] Approval --> R20[需求20 退款审批] Approval --> R21[需求21 充值审批] Config --> R09[需求09 支付限制] Notice --> R22[需求22 临期提醒] Export --> R14[需求14 导出] Approval --> R14 ``` --- ## 五、阶段划分 | 阶段 | 范围 | 说明 | |------|------|------| | Phase 1 | 需求 1-22 中除需求16外的本系统和 Gateway 能力 | 必须形成站内闭环、人工可追踪和可回滚的后台流程 | | Phase 2 | 需求 18 APR-009、需求 22 EXP-003 | 企业微信审批/推送与状态同步,单独评审外部 API、安全和补偿策略 | Phase 1 不建设 BPMN 全规范、拖拽流程设计器、任意回退、子流程和复杂规则引擎。 --- ## 六、需求总览 ### 6.1 简单改动 | # | 需求 | 文档 | 实现要点 | |---|------|------|----------| | 1 | 行业卡复机允许未实名 | [需求01](./需求01-复机实名规则.md) | 复机规则修正,无新状态 | | 3 | 店铺列表加联系电话搜索 | [需求03](./需求03-07-11-12-13-简单改动.md#需求03店铺列表搜索新增联系电话) | Query 增加过滤条件 | | 4 | 退款中资产禁止换货 | [需求04](./需求04-06-退款拦截与最后到期时间.md#需求04退款中禁止换货) | 创建换货前校验活跃退款 | | 7 | IoT卡/设备加实名筛选 | [需求07](./需求03-07-11-12-13-简单改动.md#需求07iot卡设备管理新增已实名未实名筛选) | 列表筛选和索引评估 | | 11 | 当前套餐到期高亮 | [需求11](./需求03-07-11-12-13-简单改动.md#需求11资产详情-套餐到期时间字段--15天高亮) | 复用后端日期字段,前端统一颜色规则 | | 12 | 换货显示修复 | [需求12](./需求03-07-11-12-13-简单改动.md#需求12换货管理显示修复) | 字段和检索口径对齐 | | 13 | 列表字段新增 | [需求13](./需求03-07-11-12-13-简单改动.md#需求13列表字段新增) | 审批人改为动态摘要 | 简单改动不要求单独绘制系统图;涉及条件分支时用短流程图或规则表即可。 ### 6.2 标准方案 | # | 需求 | 文档 | 关键评审点 | |---|------|------|------------| | 2 | H5流程顺序配置化 | [需求02](./需求02-H5流程配置.md) | 资产视角、配置优先级、C端跳转 | | 5 | 套餐分配生效条件 | [需求05](./需求05-套餐分配生效条件.md) | 覆盖值到使用记录的快照链 | | 6 | 资产最后到期时间 | [需求06](./需求04-06-退款拦截与最后到期时间.md#需求06资产详情-所有套餐的最后到期时间) | Query 聚合与排队套餐口径 | | 8 | 设备批量分配 Excel | [需求08](./需求08-设备批量分配Excel.md) | 异步任务、部分成功、失败明细 | | 9 | C端支付限制配置化 | [需求09](./需求09-C端支付限制配置化.md) | 前端隐藏与后端强校验一致 | | 10 | 限速规则 | [需求10](./需求10-限速规则.md) | 手动卡限速、`kbps` 单位和 Gateway 审计 | | 14 | 导出功能 | [需求14](./需求14-导出功能.md) | 复用 ExportTask、动态字段权限 | | 15 | 下架套餐允许续费 | [需求15](./需求15-16-18-19-20-21-复杂需求.md#需求15套餐下架后允许续费) | 续费身份和历史使用判断 | | 22 | 套餐临期提醒 | [需求22](./需求22-套餐临期提醒.md) | 15/7/3 天规则、去重、三端展示 | ### 6.3 完整方案 | # | 需求 | 文档 | 关键评审点 | |---|------|------|------------| | 17 | 信用额度 | [需求17](./需求17-信用额度.md) | 钱包不变量、主体模型、角色权限 | | 18 | 多人审批 | [需求18](./需求15-16-18-19-20-21-复杂需求.md#需求18多人审批apr-001009) | 动态审批人、串行节点、通知 | | 19 | 批量订购套餐 | [需求19](./需求15-16-18-19-20-21-复杂需求.md#需求19批量订购套餐bpo-001008) | 逐行审计、钱包幂等、部分成功 | | 20 | 退款审批 | [需求20](./需求15-16-18-19-20-21-复杂需求.md#需求20退款审批) | 审批与实际退款的最终一致性 | | 21 | 充值审批 | [需求21](./需求15-16-18-19-20-21-复杂需求.md#需求21充值审核流程) | 审批与钱包入账分离、停机切换旧接口 | ### 6.4 已移出本期 | # | 需求 | 状态 | 后续处理 | |---|------|------|----------| | 16 | 代理分销码与佣金提现 | 2026-07-14 移出 7 月迭代 | 独立立项,重新评审范围、技术方案和工时 | --- ## 七、跨需求技术决策 - 架构迁移按完整用例触碰式进行,禁止一次性重构旧模块。 - 管理端 API 使用 `/api/admin/*`,C 端 API 使用 `/api/c/v1/*`。 - 复杂查询进入 Query 模块,不通过聚合根拼装报表或导出。 - 审批人只支持角色或指定账号,当前系统不引入部门模型。 - 审批完成事件使用 Outbox + Asynq,通知和业务处理均按至少一次投递设计。 - 导入、批量购买和导出必须有服务端任务状态,前端轮询只是展示手段。 - 资金、审批、导出和敏感配置必须记录操作人和审计信息。 - 信用额度只属于代理主钱包;平台员工是操作主体,不是结算和负债主体。 - 批量订购支付方式整批统一;线下支付按整批上传凭证,代理钱包按整批选择代理钱包。 - 角色管理必须提供导出字段配置,导出请求字段与角色授权字段取交集。 - 限速最终目标始终是卡,Gateway 请求只传 `cardNo`;设备入口必须解析当前绑定卡,本期仅手动设置或取消。 - 退款和员工线下充值统一通过任务级审批接口处理。 - 审批状态与实际退款、钱包入账等处理状态分别返回;审批详情返回业务快照、业务资料和审批时间线。 - 本次停机发布并同时切换 API、Worker 和前端,不建设旧审批接口兼容门面。 --- ## 八、已确认技术决策 | 编号 | 已确认结论 | 影响需求 | |------|------------|----------| | D-01 | 不实现平台员工信用额度,只保留代理主钱包授信 | 17、19 | | D-02 | 角色级导出字段配置本期落地,服务端执行字段授权 | 14 | | D-03 | 批量订购支付方式整批统一,不允许 Excel 行级混合支付 | 19 | | D-04 | Gateway 限速统一按 `cardNo`;设备套餐取 `tb_device_sim_binding.is_current=true` 对应卡 | 10 | | D-05 | 审批结论和实际业务处理状态分离 | 20、21 | | D-06 | 采用停机发布,旧退款审批和线下充值直接入账/驳回接口同步下线 | 20、21 | | D-07 | 需求16移出本期,不创建相关表、接口、流程和前端页面 | 16 | | D-08 | 第三方退款本期由财务人工完成;代理钱包仅回退原扣款代理主钱包,客户资产钱包不走自动回退 | 20 | | D-09 | 设备批量分配代理与套餐系列拆为两个命令和两个前端入口 | 8 | | D-10 | 当前套餐与排队主套餐按购买时长快照推算预计最后到期时间;临期页面实时查询,定时任务只做通知 | 06、22 | 前端源码不在当前仓库。接口评审后仍需在前端仓库完成路由、权限指令、上传组件、任务轮询组件和动态表格能力的实现映射,但这不再是业务方案决策项。 --- ## 九、发布与回滚总策略 ```mermaid flowchart LR S[进入维护模式并停止写入] --> M[执行数据库迁移] M --> D[同时发布 API、Worker 和前端] D --> C[初始化流程定义和业务绑定] C --> L[回填存量待审批单] L --> V[人工验证核心链路] V --> O[开放系统访问] ``` 发布原则: 1. 发布前进入维护模式,停止创建订单、退款、充值和审批操作。 2. 维护窗口内执行数据库迁移,并同时发布 API、Worker/Relay 和前端静态资源。 3. 初始化并发布 `refund_approval`、`recharge_approval`,完成业务绑定后再验证。 4. 使用一次性 Application 命令为存量待审批退款和员工线下充值创建流程实例;历史终态记录保持只读,不伪造审批时间线。 5. 旧退款业务单审批接口和线下充值 `offline-pay/reject` 在新版本中不再注册,不保留兼容门面。 6. 人工验证发起审批、存量审批、任务处理、业务回调、通知和查询后再开放访问。 7. 开放前验证失败可回滚应用版本和可逆迁移;已经形成的审批历史、资金流水、Outbox 和审计日志不得通过清表回滚。 8. Worker 暂停时保留 Outbox 事件,恢复后继续消费。 --- ## 十、可观测性与人工验收 关键日志和查询维度: - `request_id`、`event_id`、`task_id`、`process_instance_id`、`biz_type`、`biz_id`。 - Outbox 待投递数量、失败次数和最早积压时间。 - 审批业务处理失败、批量任务失败和导出任务失败。 - 钱包扣款前后余额、版本冲突和业务幂等键。 人工验收至少覆盖: - 正常路径、无权限、重复点击、并发审批、退回重提。 - Worker 暂停后恢复,事件和任务可继续处理。 - 维护模式下不能产生新写入;开放前确认 API、Worker 和前端版本一致。 - 所有仍需审批的存量退款和员工线下充值均已生成流程实例,历史终态记录只读可查。 - 旧退款审批和线下充值 `offline-pay/reject` 路由不可访问。 - PostgreSQL 中业务状态、审批状态、任务状态、操作日志和资金流水一致。 --- ## 十一、执行顺序建议 ```text 评审批次 A:DDD 边界、系统配置、站内消息、审批流 评审批次 B:退款、充值、信用额度、批量订购、导出权限 评审批次 C:H5 流程、限速、临期提醒、批量分配 评审批次 D:简单字段、筛选和显示修复 实施顺序: 1. 增量迁移、TxManager/Outbox、系统配置和站内消息 2. 审批定义、实例、任务和前端待办 3. 退款和充值接入通用审批 4. 批量任务、代理信用额度和导出权限 5. 其他中小需求 ``` 每个评审批次独立形成结论,未通过的复杂需求不阻塞已经闭环的简单需求实施。