Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 8h37m36s
- M2 批量换绑表头改为“平台登录账号”,只认手机号,细分格式、不存在、多匹配、非平台、已禁用失败原因 - M3 后台订单列表与详情返回 C 端在线购买的交易流水号、支付渠道、商户名称,详情新增全部支付单 payments - M16 预警规则不再返回 real_data_mb,预警列表/详情新增 threshold_mb,导出末列追加“阈值流量(MB)” - M23 设备导入 IMEI 必填,空 IMEI 行记为失败 - OpenSpec Change fix-august-iteration-follow-up-gaps:13/18,导入任务、导出任务的 Worker 端到端验证与前端/运营通知待部署后完成
4.3 KiB
4.3 KiB
Context
本 Change 承接《第1批-8-9月迭代缺陷修复技术方案》(下称“方案”)第 1、2、9、10 节,四项都是导入与展示类,无迁移、互不依赖。旧版本中的 M1、M4~M6 已移到同属第 1 批的 fix-august-iteration-export-and-password-hints。
| 项 | 现状(已验证) |
|---|---|
| M2 | 导入按 username = ? AND user_type = 2 AND status = 1 查业务员(internal/task/shop_business_owner_import.go:321),运营填的是手机号,全部失败;查不到、非平台、已禁用合并为一个笼统原因 |
| M3 | 订单响应已有 payment_method、paid_at;第三方流水号只在导出里有;tb_payment 存渠道类型与商户名称快照,历史记录只有 payment_config_id;tb_payment 同时存充值类支付,ID 空间与套餐订单不同 |
| M16 | 规则项返回 real_data_mb(只是主套餐额度),预警列表的 limit_mb 是含加油包的汇总快照,两者对不上;列表没有阈值对应流量 |
| M23 | 设备唯一创建入口是导入(internal/task/device_import.go),pkg/utils/excel.go 只校验虚拟号非空 |
验证面只有维护者指定的测试环境;自动化测试为 N/A。
Goals / Non-Goals
Goals:
- 批量换绑按手机号定位平台账号,失败原因可定位到具体情形。
- 后台能看到 C 端在线购买的交易流水号、渠道、商户,详情能看到全部支付单。
- 预警规则页与列表口径一致、可读。
- 不再产生缺 IMEI 的新设备。
Non-Goals:
- 不改 C 端订单接口、支付写入、渠道补查、订单导出现有列。
- 不改预警判定、唯一键、通知,不处理旧预警记录。
- 不校验 IMEI 格式与唯一性,不处理存量缺 IMEI 设备。
- 不做 M1、M4~M6(在
fix-august-iteration-export-and-password-hints)。
Decisions
- M2 只认手机号,表头叫“平台登录账号”。 2026-10-11 确认。项目没有公共手机号校验函数,各处只检查“长度 11、全为数字”(如 DTO
len=11,numeric),本项格式规则同样定为“去首尾空白后为 11 位数字”。行级失败原因中原“业务员登录账号”文案统一改为“平台登录账号”。按手机号查全部未删除账号、不在 SQL 里过滤类型与状态,再在代码里依次判定,才能把“不存在 / 多匹配 / 非平台 / 已禁用”区分开。表头唯一来源是pkg/constants/shop_business_owner_import.go的ShopBusinessOwnerImportColumns,失败原因文案也放常量。不做新旧表头并存:并存会让运营继续用旧模板填用户名,问题不收敛。 - M3 支付记录按订单 ID 批量读取,并强制带
order_type = 'package_order'。 不带会把同 ID 的充值支付串进来。已支付取一条时按paid_at DESC, id DESC,保证异常多条时结果确定。payments用专用响应 DTO,不直接序列化model.Payment,避免以后模型加字段被带出。已退款订单仍给值,因为对账需要原交易信息。 - M16 删除
real_data_mb而不是改名或标注。 规则按百分比配置,任何具体额度都会被误读为分母;服务端RealDataMB > 0校验保留。threshold_mb由limit_mb × threshold_percent ÷ 100计算,口径天然与limit_mb一致。导出列追加在末尾:分片按位置把行截齐到表头(internal/task/export_common.go的alignRowsToHeaders,由export_shard.go调用),追加在末尾时旧任务只是少一列,插在中间会整体错位。 - M23 在解析层校验。 与虚拟号为空写法一致,进
ParseErrors,由device_import.go并入失败明细,任务汇总方式不变。
Risks / Trade-offs
- [旧模板整批失败] → 交付测试环境前通知运营换新模板;失败原因明确提示“请填写手机号”。
- [前端仍读取
real_data_mb] → 测试环境交付时前端同步去掉该字段,任务里单列核对项。 - [异常的多条已支付支付记录] → 稳定排序取一条,不在读接口修数据。
- [IMEI 非空但格式错误或重复] → 本批不处理,后续对存量做统计后另行评审。
Migration Plan
无数据库迁移。部署测试环境的 API 与 Worker 后立即生效;已冻结表头的预警导出任务按旧表头输出。
Open Questions
无。