Files
junhong_cmp_fiber/openspec/changes/deliver-july-iteration-confirmed-scope/tasks.md
break 09ffee8590
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 7m30s
完成
2026-07-25 19:06:31 +08:00

62 lines
10 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.
## 0. 需求证据与实施基线
- [x] 0.1 建立本 Change 的需求证据矩阵,逐项核对 #45#46#55#60#86#38#94#96#98#43 已有接口和迁移,记录只需联调的证据;同时确认 #73 当前行业卡复机行为不改。【主:只读核验|边界:代码与契约证据|不迁移:任何业务模块】
## 1. 局部缺陷、字段与筛选
- [x] 1.1 修复 #189:沿现有换货迁移关系让原订单退款准确失效新资产上的对应套餐权益,不影响其他订单权益。【主:旧 Service边界单个退款后套餐失效路径不迁移换货、退款、套餐模块】
- [x] 1.2 修复 #181C 端订单使用既有 `purchase_role` 保存正确渠道,订单/退款列表与详情中卡返回 ICCID设备按 VirtualNo 优先、IMEI 兜底返回资产标识。【主:旧 Service/Query边界字段来源与 DTO不迁移订单或退款模块】
- [x] 1.3 完成 #182/#44 的退款、充值、换货提交人 ID/名称返回,使用批量账号查询避免 N+1。【主Query/旧 Store边界人员字段投影不迁移审批模型或历史回填】
- [x] 1.4 完成 #53 卡/设备实名筛选卡按自身状态设备以任意有效绑定卡已实名为已实名。【主Query/旧 Store边界实时 EXISTS 查询不新建投影、Worker、事件消费者】
- [x] 1.5 完成 #57:在现有换货创建入口以当前未终结退款状态拦截并返回“该资产存在退款申请”。【主:旧 Service边界创建前单次校验不依赖企微 Adapter】
- [x] 1.6 为 1.11.5 更新 DTO description、错误码、中文注释和相关 API 契约;未新增 Handler不改两个文档生成器装配文件。【主API 契约|不扩展:其他字段】
## 2. 店铺、实名、套餐与支付配置
- [x] 2.1 交付 #41 店铺 C 端登录限制纵向切片:增量迁移 `client_login_disabled`,复用店铺管理更新/查询,在 `VerifyAsset` 签发令牌前拦截;默认允许登录且不吊销已有 Token。【主简单写 + 旧 Service不迁移认证和代理权限体系】
- [x] 2.2 交付 #62 实名策略纵向切片:保持三种枚举和单资产 PATCH补齐卡/设备批量接口(最多 500、事务全成全败及 C 端 `effective_realname_policy` 等字段。【主:简单写/Query不迁移资产模块】
- [x] 2.3 交付 #40 下架套餐续费:普通可购列表排除下架套餐,当前使用者通过资产/历史订单稳定引用调用现有下单接口创建新订单并按当前套餐配置购买,代理代购/新客户仍拒绝;既有待支付订单保持原支付方式。【主:旧 Service/Query不新增续费接口不迁移套餐、订单模块】
- [x] 2.4 交付 #48 支付方式配置:在 `system_config` 为卡/设备分别初始化全选 `wallet/wechat/alipay` 且支持三项独立启停、至少保留一项C 端返回配置与业务场景交集,强充和普通充值剔除钱包,订单/支付准备后端强校验,强充继续自动购包,并修复 C 端强充资格遗漏已触发状态的问题;增量更新审计覆盖基线。【主:简单写 + Query既有 system_config/强充自动购包|仅现有能力无法承载时做最小新增】
## 3. 站内通知接线
- [x] 3.1 交付 #188:创建物流换货单成功后通过现有 Outbox/站内通知向关联个人客户发送一次 C 端弹窗提醒。【主Application + 既有通知 Adapter不建设营销投放、地址表单、ERP】
- [x] 3.2 交付 #97:主钱包余额首次跌破固定 100 元时通知店铺业务员阈值以下不重复、恢复后可再次触发。【主Application + Outbox既有钱包事实不增加可配置阈值】
- [x] 3.3 交付 #33:每日识别 15/7/3 天节点,提供后台/代理分页临期列表、数量/高亮/优先标识,并向 C 端发送节点站内通知。【主Application/Query + 既有通知|不建设:企微业务员提醒或营销平台】
## 4. 企业微信最小审批 Adapter
- [x] 4.1 交付企微应用连接纵向切片:安全配置 corp_id/agent_id/Secret/回调凭据,按应用缓存 access_token、短锁防并发回源并记录外部调用 Integration Log。【主Infrastructure Adapter不迁移通用审批核心】
- [x] 4.2 交付通讯录与账号绑定纵向切片:分页拉取/同步应用可见成员,账号列表/详情返回绑定字段,管理员从候选成员绑定 `(corp_id,userid)`;不做扫码和手机号自动匹配。【主:简单写 + Infrastructure/Query不建设组织模型】
- [x] 4.3 交付业务场景与模板纵向切片保存业务类型、template_id、控件/选项映射,调用模板详情校验并阻断失效配置;更新审计覆盖基线。【主:简单写 + Infrastructure Adapter不建设模板创建、审批节点、审批人规则】
- [x] 4.4 实现 WeCom Adapter 对现有 Approval Port 的准备与提交:内部员工使用有效绑定 userid代理等非企微账号使用应用默认发起人按后台模板流程组装控件、必要时上传附件、调用 applyevent、保存 sp_no并正确处理提交失败/结果未知真实业务提交人保持不变。【主Infrastructure Adapter + Outbox 消费|不修改:资金领域规则】
- [x] 4.5 交付加密回调纵向切片GET 验证、POST 验签解密、receiveid 校验、事件幂等、快速响应并异步拉取详情,将企微状态翻译为现有标准决策;新增 Handler 时同步两个文档生成器。【主Infrastructure Adapter + Application不直接执行退款/充值终态】
- [x] 4.6 交付主动恢复与读取投影:批量单号时间窗补偿、未终态详情轮询、结果未知恢复、审批节点 userid 批量映射系统账号。【主Infrastructure Worker + Query不实时逐行调用企微】
## 5. 退款与员工线下代充接入企微
- [x] 5.1 交付 #34 员工线下代充值纵向切片:业务申请、真实提交人、金额/凭证快照、通用审批实例和提交 Outbox 同事务创建approved 通过既有钱包用例幂等入账,其他终态不入账。【主:复杂写 Application/DomainApproval Port不实现代理在线扫码充值】
- [x] 5.2 交付 #35 退款企微审批纵向切片:现有退款申请关联唯一通用实例,标准终态驱动既有退款处理,确保换货迁移套餐、订单、资产和佣金副作用幂等。【主:复杂写 Application/DomainApproval Port不实现原路退款】
- [x] 5.3 完成退款 approve/reject 和线下充值 offline-pay 旧入口的可控停用代码及存量 provider 切换清单默认保留旧入口待后续真实联调验收通过后再由发布配置停用前端接口改为只读审批状态。【主API 切换/迁移|不删除:历史业务事实】
## 6. 批量、导出与 Gateway
- [x] 6.1 交付 #36 单列 CSV 批量订购纵向切片:复用现有上传/任务五态/对象存储整批选择一个套餐和支付方式不选择代理逐行复用订单资格、价格、支付和幂等规则。【主Infrastructure + 旧订单 Service不新建批量任务平台】
- [x] 6.2 交付 #42 lot 卡与套餐两个导出 datasource按现有筛选、权限和字段来源输出。【主Query/既有导出 Infrastructure不建设统一字段权限平台】
- [x] 6.3 交付 #42 钱包流水与代理充值两个导出 datasource金额使用既有事实和稳定格式代理数据权限正确。【主Query/既有导出 Infrastructure不修改钱包流水】
- [x] 6.4 交付 #42 退款与换货两个导出 datasource复用本 Change 已补齐的资产和提交人字段。【主Query/既有导出 Infrastructure不依赖企微实时详情】
- [x] 6.5 交付 #47 IoT 卡固定档位限速纵向切片:定义中文注释常量、后台权限和卡 ICCID 解析,调用 Gateway 并记录操作者与 Integration Log移除错误的设备限速入口不通过设备绑定关系间接限速。【主旧 Service + Gateway Adapter不实现设备限速或自动限速算法】
- [x] 6.6 交付 #49 CSV 批量分配设备纵向切片:复用现有导入任务,单列设备标识,整批选择目标代理或套餐系列,沿用现有分配/系列绑定权限和幂等规则。【主Infrastructure + 旧设备 Service不新建导入平台】
## 7. 文档与联调交付
- [x] 7.1 补齐所有新增/修改 API 的 DTO description、枚举名称字段、中文错误码、路由注释和统一响应示例新增 Handler 同步 `cmd/api/docs.go``cmd/gendocs/main.go`,并按后续明确要求生成 OpenAPI 核对契约。【主API 契约】
- [x] 7.2 增量维护 `.scratch/tech-global-audit/审计覆盖基线.md`,逐项登记 Audit Event、Domain Ledger、Integration Log、Outbox 或 N/A 理由。【主:治理门禁】
- [x] 7.3 对全部变更生产代码执行 `gofmt`、只读一致性检查和 `git diff --check`记录未执行测试、常规构建、LSP 和实际迁移的验证缺口OpenAPI 已按后续明确要求生成核对。【主:静态收口】
- [x] 7.4 准备企微、Gateway、Redis/Asynq、对象存储和前端联调所需配置、接口说明、已知限制及回滚步骤本次不执行真实环境闭环。【主联调交付】
- [x] 7.5 更新实施证据和任务状态,保留 `complete-july-iteration-test-release` 的历史完成证据严格校验、真实联调验收和归档由后续流程处理。【主OpenSpec 收口】
## 8. 补充核对发现的缺口
- [x] 8.1 核对 #181 设备退款资产标识快照链路:新建退款从订单复制按 VirtualNo 优先、IMEI 兜底生成的 `asset_identifier`,列表和详情只返回退款快照,不按 `device_id` 解析当前设备且不兼容历史空快照;单卡 ICCID 口径保持不变。同步更新对接说明并重新生成 OpenAPI 核对 `asset_identifier`。Audit Event、Domain Ledger、Integration Log、Outbox 均 N/A只核对快照写入与读取不修改业务状态。【主旧 Service边界退款资产标识快照不迁移退款、订单或资产模块】