| 时间 | 阶段 | 事件 | 备注 |
|---|---|---|---|
| 2026-07-27 | Research | 复核细化整改清单和当前源码 | 确认浏览器 Secret、数据库明文比较和弱种子仍存在;未输出值 |
| 2026-07-27 | Proposal/HARD-GATE | 创建 Spec、Tasks、Test Spec 和执行日志 | 用户已明确授权按分阶段思路继续实施 |
| 2026-07-27 | Baseline | System 插件现有测试 | 8 条在 Mockito agent 和未安装 crypto Core 类处失败,未进入业务断言 |
| 2026-07-27 | Red/Green | 新增 Codec、Policy、Service 条件升级测试 | Red 为 Codec 不存在;Green 10 条通过 |
| 2026-07-27 | Backend | System Reactor package | JDK 17,25 模块全部成功,测试按增量矩阵单独执行 |
| 2026-07-27 | Frontend | Admin UI production build | Node 20.19.0,8725 模块,1分28秒;仅既有警告 |
| 2026-07-27 | Static | XML/SQL/Secret/Wrapper 扫描 | Mapper XML 合法;弱种子、浏览器 Secret、SysClient Controller Wrapper、Flyway placeholder 均为零 |
| 2026-07-27 | Review/阶段二 | 独立代码质量复审 | 首次 FAIL:迁移会覆盖已关闭 legacy-read,缺少 CAS 更新失败测试和最新证据 |
| 2026-07-27 | Fix | 修复两项阶段二阻塞 | JSON 属性仅缺失时补默认值;新增条件升级返回 0 时不清缓存测试 |
| 2026-07-27 | Retest | System 4 个目标测试类 | 20 条通过,0 失败、0 错误、0 跳过;BUILD SUCCESS |
| 2026-07-27 | Review/阶段二终审 | 独立 Reviewer 基于最新工作树复审 | FAIL:1 Critical、1 Important、2 Minor;登录操作日志和缓存旧值回填为阻塞 |
| 2026-07-27 | Final fix | 硬排除凭据入口日志;认证配置数据库直读;删除全部浏览器 Secret 环境声明;补合同测试 | 不改变浏览器会话密钥协议,不连接数据库或 Redis |
| 2026-07-27 | Final retest | System 5 个目标测试类、System Reactor、Admin UI build | 24/24;Reactor 退出码 0;8727 modules 构建成功 |
| 2026-07-27 | Review/阶段二第三次 | 独立 Reviewer 基于最新工作树复审 | FAIL:2 Critical、2 Important、2 Minor;Secret 并发恢复、Token 日志和 Mapper JSON 映射为阻塞 |
| 2026-07-27 | Review fix 3 | 空 Secret 零写、Secret CAS、Token 日志/广播清理、在线下线日志硬排除、Mapper resultMap | completed |
| 2026-07-27 | Review fix 3 retest | System 5 个目标测试类、System Reactor、XML/静态扫描 | 26/26;25 模块构建成功;扫描无命中 |
| 2026-07-27 | Review fix 4 | 修复 2 Critical + 2 Important | /auth/online/** 强制登录/显式权限/租户边界;删除 /test;响应改会话 ID;客户端单 SQL 双旧值 CAS;删除 Token 原文日志 |
| 2026-07-27 | Review fix 4 retest | 7 个目标测试类及目标静态检查 | 36/36,0 failure/error/skip;Vue ESLint、Mapper XML、Flyway、环境/Token/响应/格式扫描通过 |
| 2026-07-27 | Latest Code Quality Review | 独立 Reviewer 复核在线会话边界 | FAIL:1 Critical |
| 决策 | 选择 | 放弃的方案 | 原因 |
|---|---|---|---|
| 浏览器客户端 | client_auth_method=none |
在浏览器继续保存固定 Secret | 分发式客户端无法保密 |
| 机密客户端存储 | {bcrypt} 摘要 |
可逆加密、裸 SHA-256 | 不需要取回原文,BCrypt 抵抗弱值枚举 |
| 存量兼容 | 成功验证后条件升级 | 启动即批量改写、永久明文双读 | 避免无凭据迁移和并发覆盖 |
| 查询实现 | Mapper XML | Service/Controller Wrapper | 满足 DataScope 和项目 SQL 规范 |
| 问题 | 原因 | 解决方案 | 沉淀? |
|---|---|---|---|
| 待执行 | — | — | — |
| 时间 | 范围 | 命令 | 结果 | 警告/跳过 |
|---|---|---|---|---|
| 2026-07-27 | Review fix 格式/迁移合同 | git diff --check;扫描 JSON_CONTAINS_PATH 门禁 |
通过 | 未执行真实 Flyway/MySQL |
| 2026-07-27 | System 目标测试 | mvn -pl forge-framework/forge-plugin-parent/forge-plugin-system test -Dforge.compiler.skip=false -Dforge.tests.skip=false -Dforge.test.groups= -Dtest=ClientSecretCodecTest,ClientCredentialPolicyTest,ClientServiceImplCredentialTest,SystemAuthServiceImplClientCredentialTest |
20 条通过,BUILD SUCCESS |
首次 Reactor 运行被 forge-starter-datascope 缺少 JUnit 依赖阻断;模块定向测试成功 |
| 2026-07-27 | 阶段二最终修复测试 | compiler:testCompile 后执行 5 个目标类 surefire:test |
24 条通过,0 failure/error/skip | 单模块首次受 .m2 旧 core 快照阻断;先执行 System -am package -DskipTests 后有效运行 |
| 2026-07-27 | 阶段二第三次修复测试 | System -am package -DskipTests;5 个目标类模块测试;xmllint 和 Token/环境静态扫描 |
25 模块构建成功;26 条通过;XML 合法且扫描无命中 | 真实 MySQL、Redis 和登录/轮换 E2E 保留为部署门禁 |
| 2026-07-27 | 本轮首次目标测试 | System 单模块目标测试 | 未进入测试 | 默认 JDK 8 不支持 Java 17;切换本机 JDK 17 |
| 2026-07-27 | 本轮依赖对齐 | Core 单模块 install -DskipTests;Core+System Reactor |
Core 编译成功;安装被沙箱禁止写 ~/.m2,Core+System 被共享 Excel 新常量阻断 |
改为只选 Core、Excel、System 三模块,不执行 install 或全量构建 |
| 2026-07-27 | 本轮目标测试首次执行 | Core、Excel、System 三模块;7 个目标测试类 | 32 条通过,3 条在线服务测试因 Mockito agent 无法自附加报环境错误 | 将新增测试改用 JDK 动态代理,不降低断言 |
| 2026-07-27 | 本轮目标测试最终执行 | mvn -pl forge-starter-core,forge-starter-excel,forge-plugin-system test,限定 7 个测试类 |
36 条通过,0 failure/error/skip,BUILD SUCCESS |
Reactor 仅 3 个模块;有既有 deprecated/commons-logging 警告 |
| 2026-07-27 | 在线 SQL 合同加固复测 | 同一三模块 Reactor,限定 OnlineUserSecurityContractTest |
5 条通过,0 failure/error/skip,BUILD SUCCESS |
列集合显式断言不含 token_value |
| 2026-07-27 | 本轮目标静态检查 | Vue 单文件 ESLint、两份 Mapper XML、Flyway 唯一版本/placeholder、环境 Secret、Token 日志/响应、尾随空白和 diff check | 全部通过 | 未启动任何服务 |
| 偏差点 | Spec 预期 | 实际情况 | 处理方式 |
|---|---|---|---|
| 待执行 | — | — | — |