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

54 lines
7.4 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.
## Why
`complete-july-iteration-test-release` 将七月迭代中的字段、筛选和局部缺陷扩大成模块迁移、通用平台和长依赖链,且遗漏或误解了多条 CSV 需求已经不能作为可靠实施契约。feature-2026-july-confirmed-scope 依据已填写的需求范围确认表重新建立一个可直接上线的最小交付 Change优先复用现有代码完成用户可见需求不借本期工作重构未触碰模块。
## What Changes
- 新 Change 完整替代 `complete-july-iteration-test-release` 的后续规划;旧 Change 在本 Change 校验通过前保留完成证据,之后归档为被替代,不继续执行其未完成任务。
- 实施遵循“存量能力优先”优先修改或复用现有接口、字段、Service、Query、任务和基础设施只有现有能力确实无法承载已确认需求时才允许做边界最小、可说明必要性的新增。
- 本 Change 当前交付不编写或补齐测试代码,不运行单元、集成、验收或业务流程测试,也不执行 `go test`、常规 `go build`、LSP 诊断和实际迁移;只完成生产代码、必要迁移文件和契约文档至可联调状态,修改 API 契约后必须重新生成 OpenAPI 核对,可使用 `gofmt`、只读检查与 `git diff --check` 做静态收口。
-#189#181#57 等缺陷和 #53#44#182 等字段/筛选需求收敛为旧 Service、Store 和现有 Query 上的局部修改,不进行 DDD 迁移;#181 的设备退款在创建时固化资产标识快照,列表和详情直接返回快照,不兼容历史空快照。
- 增加店铺级 C 端登录限制开关;仅阻止该店铺资产发起新登录,不建立代理 API 权限体系,也不强制吊销已登录 Token。
- 补齐三种实名顺序及卡/设备批量配置,保持既有 `realname_policy` 模型和前后端接口约定。
- 复用已有站内通知,完成换货单弹窗、固定 100 元钱包余额提醒、套餐 15/7/3 天临期列表和 C 端提醒,不建设通用营销平台。
- 复用已完成的渠道无关审批核心,交付最小企业微信 Adapter管理员从通讯录为系统账号绑定 `(corp_id, userid)`,后台创建模板,本系统配置业务场景/模板/控件映射,完成发起、回调、详情查询和轮询补偿;不做扫码绑定、本地流程设计器或未来渠道抽象扩建。
- **BREAKING**:退款和员工线下代充值的人工审批结果改由企业微信终态驱动;新链路可用后停用原系统内人工通过/驳回入口。代理在线扫码充值后置。
- 交付单列 CSV 批量订购、六类业务导出、固定档位限速、按资产类型配置支付方式、CSV 批量分配设备等已确认功能均复用现有导入、导出、Gateway、`system_config` 和任务基础设施;批量订购沿用现有后台认证和入口可见性,不新增“内部员工”账号类型限制;导出仅输出系统现有且有稳定来源的字段,不为原始清单中的缺失字段新增模型或迁移。
- 冻结已经完成的 #45#46#55#60#86#38#94#96#98#43,仅做接口联调或代码证据核验;#43 前端可复用套餐列表的建议售价/公司成本价与授权详情的已授权套餐 ID 完成展示和区分,无需新增后端接口;冻结行业卡现有复机行为,不按旧提案改写。
- 明确排除原路退款、聚水潭、跨品类换货、分销佣金提现、代理在线扫码充值、通用营销/ERP、自动限速、本地审批流引擎、全局 Audit Event 专项,以及已关闭且不处理的需求。
## Capabilities
### New Capabilities
- `shop-client-login-control`: 店铺级 C 端新登录开关及资产登录拦截。
- `wecom-approval-integration`: 企微应用、通讯录账号映射、模板场景绑定、审批发起、回调和轮询补偿。
- `package-expiration-reminder`: 套餐 15/7/3 天临期列表、站内通知和 C 端弹窗提醒。
- `asset-package-batch-order`: 单列 CSV、整批统一套餐和支付方式的批量订购。
- `business-data-export`: lot 卡、钱包流水、套餐、退款、换货和代理充值六类独立导出。
- `asset-speed-tier-management`: 后台为有权限 IoT 卡手动选择固定限速档位并调用 Gateway不提供设备限速。
### Modified Capabilities
- `card-replacement`: 换货前拦截活跃退款,并修复换货套餐在原订单退款后未失效的问题。
- `exchange-client-notification`: 创建物流换货单后复用站内通知在 C 端弹窗。
- `order-management`: 修复 C 端订单渠道和订单资产标识返回,并支持从历史订单使用稳定资产/套餐引用发起新的下架套餐续费订单。
- `refund-api`: 新建退款固化并返回正确设备资产标识快照和提交人,不兼容历史空快照,并将退款审批结果切换为企微驱动。
- `agent-recharge`: 返回提交人,仅保留员工线下代充值并接入企微审批,代理在线扫码充值后置。
- `exchange-admin-management`: 换货列表和详情返回提交人。
- `asset-realname-policy`: 支持三种实名顺序、单资产修改、卡/设备批量修改和 C 端生效策略字段。
- `asset-queries`: 卡按自身实名状态筛选;设备任意一张有效绑定卡已实名即视为设备已实名。
- `agent-wallet`: 主钱包低于固定 100 元时向店铺业务员发送一次站内预警。
- `package-management`: 下架套餐从普通可购列表排除,但允许当前使用者通过续费入口购买。
- `payment-dynamic-config`: 通过 `system_config` 分别配置卡和设备允许的支付方式两类资产初始化均全选钱包、微信和支付宝三项可独立取消C 端再按强充场景过滤钱包并由订单端复核。
- `device`: 复用现有导入任务模式,通过单列 CSV 批量分配设备所属代理或套餐系列。
## Impact
- **后端范围**:局部触及换货、订单、退款、充值、资产、店铺、套餐、钱包、设备导入、导出、通知和 Gateway只有审批终态与资金处理保留现有 Application/Domain 边界,简单字段、筛选和 Bug 沿用 `Handler → Service → Store → Model` 或既有 Query。
- **API/前端**:新增店铺登录开关、企微账号选择/绑定、模板场景配置、实名批量配置、批量订购、导出、限速和设备批量分配接口;修改列表/详情字段、C 端初始化与支付方式返回。新增 Handler 必须同步 `cmd/api/docs.go``cmd/gendocs/main.go` 和 OpenAPI 文档。
- **数据与基础设施**:使用 PostgreSQL、Redis/Asynq、现有 Outbox、Integration Log、对象存储、站内通知和 `system_config`;不新增外键或 GORM 关联标签,不引入新依赖。
- **外部系统**:企业微信自建应用与 Gateway。企微上线需应用 Secret、审批权限、通讯录可见范围、可信 IP、回调 Token/EncodingAESKey 和模板 ID。
- **性能**:列表保持分页并批量解析提交人/审批人,禁止 N+1批量实名上限 500 且事务全成全败CSV/导出沿用异步任务,外部接口设置超时、幂等和补偿。
- **交付边界**:本 Change 以生产代码、迁移文件、接口契约、联调配置和实施证据齐备为完成标准API 契约变更需重新生成 OpenAPI 核对。自动化测试、常规构建、LSP、实际迁移执行及真实企微/Gateway 环境验收不在本次执行范围,后续联调或发布流程另行承担。