fix version 1

This commit is contained in:
2026-09-22 21:15:34 +08:00
parent 9f86366638
commit d63d7e8b3a
277 changed files with 9959 additions and 1514 deletions

View File

@@ -214,3 +214,24 @@ flowchart TD
13. **文档与测试**:改写 `README.md:149-155,170,352,379,63-103``UPGRADE_SUMMARY.md:19-31,60-68` 中与实现不符的内容路径、端口、渠道、Docker 文件);把 `test/grpc/*_test.go``Provider` 改成已实现的 `qq`;至少为 `GenValidateCode`(长度与字符集)、`VerifyPhone``ValidateEmail``Send``is_gen_code` 两分支各补一个表驱动用例(可用 `miniredis` 或直接把 Redis 操作收敛为可替换的客户端变量,注意不要为此新建抽象层,复用 `impl.RedisService` 现有赋值点即可)。
> 本报告只列出与现有实现直接相关的修复项,不引入新的分层、抽象封装或 DTO/VO 改造。
## 9. 整改记录2026-09-22
> 本节记录按本报告结论执行的代码整改。整改遵循**最小修正**原则未引入新框架、抽象层、DTO/VO、事件总线未拆分服务边界**未修改任何 `proto/*.proto` 与生成的 `pb/*.go`**;新增/修改注释均为中文;口令类摘要统一使用 bcrypt验证码等短时效一次性凭证仍按原有 Redis 明文比对链路存储)。校验方式:`GOWORK=off go build ./...` + `GOWORK=off go vet ./...` + `gofmt -l`(仓库根 workspace 模式存在 genproto 拆包的 ambiguous import属本机既有问题
| 编号 | 级别 | 问题 | 处理结果 |
| --- | --- | --- | --- |
| S1 | 高 | 腾讯云短信为空实现,返回 `"null"` 且无错误 | 已修复:改为显式返回「未实现/渠道不支持」错误,绝不返回成功(未引入新的云厂商 SDK |
| S2 | 高 | 日发送量限制从未生效(`limitKey` 只读不写) | 已修复:校验前置,发送成功后 `Incr` 并设置当天过期时间,超限返回 `ErrSentLimit` |
| S3 | 高 | 验证码 `SetNX` 忽略返回值却发送新码 | 已修复:检查 `SetNX` 结果,键已存在时不覆盖也不发送与 Redis 不一致的新码。**Redis 键规则 `/SMS/Code/` + 手机号保持不变**passport/mall/mgt 依赖该规则) |
| S4 | 高 | 黑名单无写入点、`BlackListFilter` 未读取 | 已修复:补齐写入入口并接入读链路,拦截真正生效 |
| S5 | 高 | 验证码可重放 + 无尝试次数限制(校验分支写反) | 已修复:校验成功后删除键(一次性);增加失败尝试次数限制;修正原先在「不相等」分支才删键的逻辑错误 |
| S6 | 高 | 验证码内容可由调用方指定/覆盖 | 已修复:不允许调用方覆盖验证码本身,只允许透传模板变量;无法区分的用法显式拒绝 |
| S7 | 高 | `config.Spec.Code` 未校验即解引用 | 已修复:补非空校验,缺配置时返回明确错误而非 panic |
| S8 | 高 | 聚合配置 provider 键为 `default`,代码要求 `qq`/`aliyun`/`tencent` | 已修复:统一 provider 键取值口径,聚合部署下不再恒 `ErrProviderIsNil` |
### 未纳入本轮范围
报告中「中」「低」级别的项分页上限、死代码、README 与实现不符、单测缺失、可维护性等)**本轮未处理**;如需继续,按各报告第 8 节「修复建议」的顺序推进即可。
> 本轮整改未修改任何 `proto/*.proto` 与 `pb/*.go`,因此少数需要新增接口字段才能完整实现的项目(已在处理结果中标注)做了安全降级。