All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m35s
- 企微提交被明确拒绝时,在同一事务内写 submission_failed 决策投递记录与终态事件
- Worker 两处 ApprovalContextRepository 注入决策写入器;未注入时提交失败直接报错,不再静默只改实例状态
- 终态决策消费入口单独放行 submission_failed,渠道回调仍不能推进到提交失败
- 6298a906 的编辑脚本在本文件锚点不唯一处中断,三处改动未落盘;本次补齐
- 第1批 ⑤ 5.4、① 5.2/5.4/5.5 测试环境验证完成
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3.0 KiB
3.0 KiB
1. M1 登录密码规则与修改密码提示
- 1.1
pkg/validator新增登录密码规则函数(8~12 位 →1001;仅 ASCII 可见字符、四类至少三类 →1016),消息不含密码;在本人改密码、后台账号创建/修改/改密码、建店铺初始密码、企业新增/改密码、代理注册(替换distribution.go:67的 6~64 判断)共七处哈希前调用;对应 DTO 标签改为min=8,max=12并更新字段说明。不改登录校验与CreateSystemAccount。 - 1.2 为
ChangePasswordRequest的旧密码、新密码字段补中文描述,统一修改密码 Handler 用validation.Message返回“修改密码参数不合法:”加字段级提示;结构校验通过后在 Handler 内做强度判断(同样带该前缀),先于旧密码比对;不回显密码。 - 1.3 核对短于 8 位、超过 12 位、强度不足、必填缺失四种消息符合 delta spec;JSON 解析失败与旧密码错误行为不变。
2. M4 订单导出操作人
- 2.1 订单导出查询带出
operator_name,新任务在最后一列输出“操作人”;orderCardGroupCountFromHeaders先识别末列是否为“操作人”再反推卡列组数;按ResolvedHeaders判定是否输出,历史任务保持旧列序与行宽。
3. M5 IoT 卡导出套餐到期时间
- 3.1 IoT 卡导出新任务在最后一列增加“套餐到期时间”;每个分页调用一次
packageexpiry.Query.ResolveBatch,只有exact输出时间,其余留空;历史任务不加列。
4. M6 设备导出流量单位
- 4.1 设备导出新任务表头改为
ICCIDn使用的流量(MB)、“设备合计(MB)”,在最后一列增加“设备合计(GB)”(MB 合计 ÷ 1024,两位小数),cardGroupCountFromHeaders增加对新尾部列数(7)的识别;无绑定卡设备 MB、GB 合计输出格式化零值;历史任务按冻结表头输出。 - 4.2 核对三类导出新旧表头与每行列数严格一致,空操作人、到期不可精确推算、无绑定卡设备均不丢行。
5. 文档与测试环境验证
- 5.1
gofmt、go build ./cmd/api ./cmd/worker、go run cmd/gendocs/main.go。 - 5.2 按 ENG-TEST-001(测试库
junhong_cmp_test、Redis DB 6):修改密码接口验证四种提示且失败不改密码;七个入口各用Abc12345成功、abcd1234返回1016、7 位与 13 位返回1001、含空格返回1016;用规则上线前的 6 位旧密码账号登录照常成功。只使用本 Change 自建的测试账号、企业与店铺,验证后清理。 - 5.3 通知测试环境前端同步七个入口的密码提示与前端校验(8~12 位、四类至少三类)。
- 5.4 测试环境为订单、IoT 卡、设备各建一个导出任务,下载核对新表头、值来源、MB/GB 换算与列数;再用变更前创建的任务验证旧表头与行宽不变;只清理本 Change 自建的任务与对象。
- 5.5 运行
openspec validate --all与./scripts/context-health.sh。