## Why 8-9 月迭代中的 4 个优化项原排在第 2 批,2026-10-11 确定并入第 1 批一起交付:修改密码失败只提示“参数验证失败”(M1),且各入口密码规则不一(6~20、6~50、6~64、8~32 位)、只限长度无强度要求;订单导出缺“操作人”(M4,运营清单 B-1);IoT 卡导出缺“套餐到期时间”(M5,运营清单 21);设备导出流量未标单位、无 GB 合计(M6,运营清单 22)。2026-10-14 确认 IoT 卡导出也补 GB 流量列,与设备导出口径一致(M5 补充)。内容沿用原 `fix-august-iteration-follow-up-gaps` 中已核实的方案,依据为《8-9月迭代排期安排》。 ## What Changes - **BREAKING** 所有设置登录密码的入口统一为:8~12 位、仅 ASCII 可见字符、大写/小写/数字/特殊符号四类至少三类。长度不符返回 `1001`,强度不足返回 `1016`。存量密码照常登录,不强制修改。 - `PUT /api/auth/password` 校验失败消息改为“修改密码参数不合法:”加字段与规则,例如“新密码长度不能小于 8”;不回显密码。 - 订单导出新任务在最后一列增加“操作人”,取订单冻结的 `operator_name`。 - IoT 卡导出新任务在最后一列增加“套餐到期时间”,复用卡列表最终到期推算,只有精确推算时输出。 - 设备导出新任务表头改为 `ICCIDn使用的流量(MB)`、“设备合计(MB)”,在最后一列新增“设备合计(GB)”(MB ÷ 1024,两位小数)。 - IoT 卡导出新任务在“套餐到期时间”之后追加“使用流量(GB)”“剩余流量(GB)”两列(对应 MB 列 ÷ 1024,两位小数);原 MB 列不变(M5 补充,2026-10-14 确认)。 - 历史导出任务按冻结表头输出,不插入新列。 ## Capabilities ### New Capabilities 无。 ### Modified Capabilities - `identity-access`:登录密码统一长度与强度规则;修改密码接口的字段级中文校验提示。 - `export-task`:订单、IoT 卡、设备三类导出的新列、来源、单位与历史任务表头兼容。 ## Impact - 代码:`pkg/validator`(新增登录密码规则函数);设置密码的服务入口 `internal/service/auth/service.go`、`internal/service/account/service.go`、`internal/application/shop/create.go`、`internal/service/enterprise/service.go`、`internal/domain/distribution/distribution.go`;相关 DTO 校验标签(`auth_dto.go`、`account_dto.go`、`shop_dto.go`、`enterprise_dto.go`、`agent_distribution_dto.go`);`internal/handler/auth/handler.go`、`internal/exporter/order_scene.go`、`internal/exporter/iot_card_scene.go`(批量调用 `packageexpiry.Query.ResolveBatch`)、`internal/exporter/device_scene.go`。 - 接口:七个设置密码入口的长度上限与强度规则变化,修改密码错误消息变化;三类导出新任务表头变化;重新生成接口文档。 - 前端:后台建账号、改密码、新增企业、建店铺与 H5 代理注册页面的密码提示与前端校验需同步改为新规则;导出无需改动。 - 无数据库迁移,不改 Redis 与第三方调用。