5.5 KiB
5.5 KiB
P0-P2 问题修复回归报告
日期:2026-07-31
正式仓库:D:\baiyue-firstleg
范围:IAM 成员授权、Order/Warehouse 主数据链路、File 资质存储、Gateway CORS、服务文件日志。
测试边界:未连接或写入测试数据库,未启动业务服务,未占用业务端口。
1. 验证结论
本轮报告中的问题均属实,已完成代码、配置和自动化测试修复。目标模块自动化回归全部通过;测试环境是否达到最终业务验收,还需要发布 Nacos 配置、重新部署对应实例并执行真实接口联调,不能用单元测试结果替代环境验收。
2. P0 修复
2.1 成员越权授予角色
- 新增成员携带非空
roleIds时,除merchant:member:create外还必须具有merchant:member:grant-role。 - 编辑成员时,仅当角色集合实际变化时要求
merchant:member:grant-role;空集合清空已有角色也属于角色变更。 - 只编辑姓名、联系方式等资料且角色集合不变时,不额外要求授角权限。
- 跨租户成员先按当前租户查询并返回 404,不在确认租户归属前读取角色关系。
2.2 订单草稿主数据链路
config/nacos/local/order-service.yml和config/nacos/cn/order-service.yml的 Warehouse URL 默认值统一为空。- 默认由 OpenFeign 使用注册名
warehouse-service通过 Nacos 调用;只有隔离端口回归时才显式设置WAREHOUSE_SERVICE_URL。 - 修复了容器内默认访问
127.0.0.1:9205、实际回环到 Order 容器自身的问题。 - Warehouse 内部接口统一返回:不存在或跨租户为 404,已停用为 409;Order 分别转换为业务不存在和业务冲突,下游 5xx、解码失败或内部令牌不一致转换为
S0503。
3. P1 修复
3.1 File 服务与资质文件
- File 启动时不仅检查目录属性,还会在存储根目录真实创建、写入并删除随机探针文件;挂载不可写时直接启动失败,不再出现实例看似存活、首次上传才报错。
config/nacos/cn/file-service.yml删除当前代码未实现的 OSS 假配置,改为显式读取FILE_STORAGE_ROOT。- 运行期文件写入异常保持返回
S0503,避免把磁盘或挂载故障包装成普通业务错误。 - 历史资质迁移脚本生成的前向和回滚 SQL 不再自动
COMMIT;执行人员必须核对affected_rows=1和真实文件预览后显式提交,否则回滚。 - Gateway 的 File 路由契约已通过测试确认指向
lb://file-service。
宿主机 bind mount 不会继承镜像内目录属主。发布前必须保证 File 上传目录和各服务日志目录由容器用户 UID 10001 可写;历史 /phase1-seed/... 记录必须在取得真实脱敏文件后按《企业资质文件迁移说明》迁移,不能只改 URL。
4. P2 修复
- Gateway 继续只允许明确配置的 CORS 来源,禁止通配符
*。 - 精确覆盖
OPTIONS /api/auth/login、Origin: http://localhost:5174,预检无需 Token 并返回允许来源、方法和请求头。 - 新增响应式请求标识过滤器,预检成功、拒绝来源和安全失败响应均携带
X-Request-Id。 - 非白名单来源仍返回 403,不会因为放行
OPTIONS而绕过 CORS 白名单。
5. 文件日志
Gateway、Auth、IAM、Firstleg、Order、Warehouse、File、Print、Integration、Event Bridge、Audit 共 11 个服务均在自己的 src/main/resources/application.yml 配置日志文件和滚动策略。
- 默认本地路径:
./logs/{spring.application.name}.log - 容器路径:由
LOG_PATH=/app/logs覆盖,并使用现有 Docker Compose 宿主机挂载。 - 默认单文件上限:100 MB
- 默认保留:30 天
- 默认总容量上限:5 GB
- 所有值均可通过
LOGGING_*环境变量覆盖。
6. 自动化回归
正式仓串行执行:
mvn -o "-Dmaven.repo.local=C:\Users\25137\.m2\repository" -pl iam,warehouse,order,file,gateway -am clean test
结果:11 个 Reactor 模块全部 SUCCESS,总耗时 59.223 秒。
| 目标模块 | 测试数 | 失败 | 错误 | 跳过 |
|---|---|---|---|---|
| Gateway | 9 | 0 | 0 | 0 |
| IAM | 64 | 0 | 0 | 0 |
| Order | 24 | 0 | 0 | 0 |
| Warehouse | 32 | 0 | 0 | 0 |
| File | 5 | 0 | 0 | 0 |
| 合计 | 134 | 0 | 0 | 0 |
git diff --check 通过。测试只使用单元测试和随机端口测试上下文,没有启动固定业务端口,也没有访问数据库。
7. 测试环境最终验收清单
- 发布更新后的
local/cnNacos 配置并重新部署 Order、Warehouse、File、Gateway、IAM。 - 在宿主机预建 File 上传目录和 11 个日志目录,确认 UID 10001 可以创建和删除文件。
- 确认 Nacos 中只有当前版本实例,并验证 Gateway 到
file-service、warehouse-service的负载均衡路由。 - 使用受限商户成员重放新增和编辑成员请求:携带角色但无授角权限必须返回 403;角色不变的资料编辑必须成功。
- 使用平台公共作用域
0的启用仓库、启用往来单位创建头程草稿;再分别验证不存在、非平台公共作用域、停用和重复提交。 - 上传一张脱敏营业执照并完成商户、平台预览;不得继续使用
/phase1-seed/...路径。 - 从
http://localhost:5174直连 Gateway 验证登录预检、登录、401、403 和非白名单来源。 - 检查宿主机固定日志目录,确认每个服务产生独立日志文件并按策略滚动。
完成以上环境联调后,才能把本轮状态从“代码级回归通过”提升为“测试环境业务成熟验收通过”。