## 1. M2 批量换绑按平台登录账号(手机号) - [x] 1.1 `pkg/constants/shop_business_owner_import.go`:固定表头改为「店铺编码、操作类型、平台登录账号、备注」;行级失败原因常量按 delta spec 改名与拆分(换绑必须填写平台登录账号、清空不得填写平台登录账号、格式不正确、不存在、匹配多个、不是平台用户、已禁用)。 - [x] 1.2 `internal/task/shop_business_owner_import.go`:值去首尾空白后校验为 11 位数字,不合法直接失败不查库;按手机号查全部未删除账号,代码中依次判定零条、多条、非平台、已禁用。 - [x] 1.3 同步 `internal/routes/business_user_group.go` 导入说明与模板说明(“填写平台用户的登录手机号”)。 ## 2. M3 后台订单支付信息 - [x] 2.1 新增按订单 ID 集合批量读取 `order_type = 'package_order'` 支付记录的只读查询;已支付取一条按 `paid_at DESC, id DESC`;渠道类型快照为空时按 `payment_config_id` 推断。 - [x] 2.2 `internal/service/order/service.go` 列表与详情组装三个字段,仅个人客户、微信或支付宝、订单已支付或已退款时给值,其余为空串;数据库错误照常返回。 - [x] 2.3 详情新增 `payments` 数组与专用响应 DTO(字段与排除项按 delta spec),列表不返回。 ## 3. M16 预警口径展示 - [x] 3.1 从 `PackageTrafficAlertRuleItem` 删除 `real_data_mb`,`internal/query/packagetrafficalert/query.go` 同步去掉取值;保留 `rule.go` 的 `RealDataMB > 0` 校验。 - [x] 3.2 预警列表、详情 DTO 增加 `threshold_mb`(两位小数);导出数据源追加“阈值流量(MB)”为最后一列,按冻结表头兼容历史任务。 - [x] 3.3 更新规则与预警接口字段说明(汇总口径)。 ## 4. M23 设备导入 IMEI 必填 - [x] 4.1 `pkg/utils/excel.go` 在虚拟号校验之后增加 IMEI 非空校验,原因文案放常量。 - [x] 4.2 `internal/routes/device.go` 导入说明中 `imei` 改为必填。 ## 5. 文档与测试环境验证 - [x] 5.1 对变更 Go 文件执行 `gofmt`,运行 `go build ./cmd/api ./cmd/worker` 与 `go run cmd/gendocs/main.go`,核对新字段与说明。 - [x] 5.2 按 ENG-TEST-001 在 `junhong_cmp_test` 创建并清理专用账号与店铺:用新表头 CSV 验证启用平台账号手机号换绑成功且审计前后值正确;格式不合法、用户名、不存在、非平台、已禁用分别按 delta spec 失败且原负责人不变;旧表头整批失败。 - [x] 5.3 订单:C 端微信、支付宝已支付及已退款订单三个字段与 `tb_payment` 一致;代理、钱包、线下、未支付为空串;构造“先微信未付、再支付宝已付”订单核对 `payments`;套餐订单与同 ID 充值单不串;列表无逐行查询。 - [x] 5.4 预警:规则列表与详情不含 `real_data_mb`,无额度套餐仍被拒;列表与详情 `threshold_mb` 计算正确;新导出任务最后一列为阈值流量,旧任务列序不变。 - [x] 5.5 设备导入:混合文件、整份空 IMEI、仅空格、虚拟号与 IMEI 都为空四种情形按 delta spec 核对。 - [ ] 5.6 通知测试环境前端去掉 `real_data_mb` 的使用、接入订单新字段;通知运营换新换绑模板、导入须填 IMEI。 - [ ] 5.7 运行 `openspec validate --all` 与 `./scripts/context-health.sh`。