# 040 进度 状态:已验证(本地代码与定向检查)。当前分支 `test-202609v2`;本轮与 029 一并提交;尚未发布。 - [x] 确认主动注销用 `del_flag=1`,平台停用用 `status=1`;仅普通用户获得翻悔期。 - [x] 按用户确认移除旧 token 无 Redis 会话的兼容放行,所有 `@Auth` 接口要求有效会话;失效返回 HTTP/业务 401。 - [x] 新增可空 `cancellation_deadline_at`,补齐实体、Mapper 映射与专用 SQL;通用实体更新不能写入截止时间。 - [x] 注销记录默认 7 天截止时间、撤销用户会话,重复申请不得延长;保留已有未完成订单检查。 - [x] 手机号、Apple/Google/LINE 已绑定登录、第三方绑定手机号、设备确认及独立 LINE 网页回调覆盖恢复。 - [x] 数据库行锁覆盖注销、登录与 token 刷新;恢复 SQL 再校验角色、停用/删除状态、截止时间。会话签发失败抛错回滚;LINE 回调捕获异常也回滚。 - [x] 到期、历史无截止时间及平台停用账号禁止恢复;平台直接删除清空截止时间。 - [x] 补充业务注释、`spec.md`、`plan.md`、迁移 SQL 及 `frontend-app-integration.md`;未修改 App。 - [x] JDK21 定向测试 121 项通过,受影响模块 Maven package 成功,`git diff --check` 通过。 ## 验证记录(2026-10-30) 使用本机 GraalVM JDK21,执行: ```powershell mvn -q -pl ruoyi-admin -am '-Dtest=UserCancellationServiceTest,UserCancellationMapperTest,InfoUserControllerTest,DeviceTrustFlowTest,LineCallbackControllerTest,LineCallbackDeviceTrustTest,AuthAspectTest,MerchantSessionAuthAnnotationTest' '-Dsurefire.failIfNoSpecifiedTests=false' package ``` 8 个测试类共 121 项,失败 0、错误 0、跳过 0。Mapper 测试实际解析 MyBatis XML 并检查账号锁、角色/停用/截止时间条件和平台删除清理。业务测试覆盖七天、截止时刻、历史删除、停用、非用户、重复申请、短信失败、各恢复入口、刷新不恢复与旧会话拒绝。 构建日志:`ruoyi-admin/target/grace-package.log`;产物:`ruoyi-admin/target/ruoyi-admin.jar`。 未执行:真实 MySQL/Redis 并发集成、用户 App 联调及环境发布。迁移 SQL 仅登记在 `updatesql/sql.md`,须由开发者手动执行后再部署。没有依赖定时任务的到期操作。 ## 2026-10-30 联合提交前验证 用户要求 029 同设备换号解绑与 040 注销翻悔期一并提交。使用 JDK21 执行: ```powershell mvn -q -pl ruoyi-admin -am '-Dtest=UserCancellationServiceTest,UserCancellationMapperTest,DeviceBindingSwitchTest,DeviceTrustServiceTest,DeviceTrustFlowTest,InfoUserControllerTest,LineCallback*Test,AuthAspectTest,MerchantSessionAuthAnnotationTest' '-Dsurefire.failIfNoSpecifiedTests=false' package ``` 结果:143 项测试,0 失败、0 错误、0 跳过;package 成功,git diff --cached --check 通过。日志:ruoyi-admin/target/029-040-package.log。 未执行真实 MySQL/Redis 并发集成、App 联调及环境发布。用户已确认 029 关联表 SQL 在测试库执行;040 cancellation_deadline_at 字段迁移是否已执行尚未单独确认。 ## 字典管理增量 - [x] T010 翻悔期改为 user_cancellation_grace_days 字典;读取失败或非法值回退7天,已有截止时间不重算。 - [x] T011 更新注释、spec/plan、App文档及幂等字典初始化 SQL;执行定向测试及模块构建。 字典增量验证:JDK21 执行 `mvn -q -pl ruoyi-admin -am -Dtest=UserCancellationServiceTest,UserCancellationMapperTest,InfoUserControllerTest -Dsurefire.failIfNoSpecifiedTests=false package`,94项测试通过,模块打包成功,git diff --check 通过。新测试先复现字典设为14仍返回7,再随实现通过。日志:ruoyi-admin/target/040-dict-package.log。 本次新增字典 INSERT 尚未执行;此前测试库关联表执行确认不包括本次字典 SQL。未执行真实数据库/Redis及App联调,本轮字典调整单独提交,发票打印等其他改动不纳入本次提交。