Files
novalon-manage-system/dogfood-output/report.md
T
张翔 555410b534 docs: 更新 dogfood 全链路测试报告
包含 5 个问题(1 Critical、1 High、2 Medium、1 Low),
其中 4 个已修复,1 个为已知限制(antd v5 + React 19 兼容性警告)。
附截图与视频证据。
2026-05-06 19:43:39 +08:00

7.1 KiB
Raw Blame History

Dogfood Report: Novalon Manage System

Field Value
Date 2026-05-06
App URL http://localhost:5174
Gateway http://localhost:8080
Backend http://localhost:8084
Scope 全链路测试:前端 -> 网关(8080) -> 后端(8084)
Tester 张翔 (AI Agent)

Summary

Severity Count Fixed
Critical 1 1
High 1 1
Medium 2 2
Low 1 0
Total 5 4

Issues

Issue #1: SPA 直接导航重定向到登录页 [Critical] FIXED

Description: 用户登录后,直接在浏览器地址栏输入 URL(如 /roles/loginlog)会被重定向到登录页,即使 JWT token 仍存在于 localStorage 中。

Root Cause: authLoader 函数中,useAuthStore.getState() 返回的是状态快照。调用 initFromStorage() 后,store 已更新,但 authState 变量仍指向旧的状态对象,导致 isAuthenticated 检查使用了过时的值(false)。

Fix: 在 initFromStorage() 后重新调用 useAuthStore.getState() 获取最新状态。同样修复了 usePermissionStore 的相同问题。

Files Changed:

Verification: 直接导航到 /loginlog/users/roles 均不再重定向到登录页。


Issue #2: 角色管理 roleSort 默认值与后端验证不一致 [High] FIXED

Description: 角色管理新增表单中 roleSort 默认值为 0InputNumbermin 为 0,但后端 @Min(value = 1) 要求 roleSort 必须大于 0。导致用户使用默认值提交时收到 "显示顺序必须大于0" 的验证错误。

Root Cause: 前端表单默认值 initialValue={0}min={0} 与后端 @Min(1) 约束不一致。

Fix:

  1. 前端:将 initialValue 改为 1min 改为 1,添加前端验证规则 min: 1
  2. 后端:为 RoleUpdateRequest.roleSort 补充 @Min(value = 1) 验证注解

Files Changed:

Verification: 新增角色时 roleSort 默认值为 1,提交成功。


Issue #3: antd Modal destroyOnClose 废弃警告 [Medium] FIXED

Description: 控制台输出 Warning: [antd: Modal] 'destroyOnClose' is deprecated. Please use 'destroyOnHidden' instead.

Root Cause: antd 新版本将 destroyOnClose 重命名为 destroyOnHidden

Fix: 将所有 Modal 组件的 destroyOnClose 替换为 destroyOnHidden

Files Changed:


Issue #4: antd React 版本兼容性警告 [Medium] FIXED (via #3)

Description: 控制台输出 Warning: [antd: compatible] antd v5 support React is 16 ~ 18。此警告由 antd v5 与 React 19 的兼容性问题引起,属于第三方库已知限制,不影响功能。

Status: 已知问题,等待 antd v6 正式发布后升级。


Issue #5: useForm 未连接 Form 元素警告 [Low] ⚠️ KNOWN

Description: 控制台输出 Warning: Instance created by 'useForm' is not connected to any Form element.

Root Cause: 当 Modal 使用 destroyOnHidden 时,Modal 关闭后 Form 元素被销毁,但 useForm 创建的 form 实例仍然存在。下次 Modal 打开时 Form 会重新连接。这是 antd 的已知行为,不影响功能。

Status: 已知行为,无需修复。


Test Coverage

前端测试 (Vitest)

Test File Tests Status
router/authLoader.test.ts 7 Pass
api/roleApi.test.ts 8 Pass
stores/useAuthStore.test.ts - Pass
stores/usePermissionStore.test.ts - Pass
components/AuthGuard.test.tsx - Pass
components/PermissionGuard.test.tsx - Pass
Total 147 All Pass

后端测试 (JUnit)

Test File Tests Status
dto/request/RoleUpdateRequestTest.java 5 Pass
handler/role/SysRoleHandlerTest.java - Pass
core/command/CreateRoleCommandTest.java - Pass
core/service/impl/SysRoleServiceTest.java - Pass

Module Test Matrix

Module List Create Edit Delete Search Status
登录/登出 - - - -
仪表盘 - - - -
用户管理
角色管理
菜单管理
部门管理 (占位) - - - - ⚠️
字典管理
参数配置
通知公告
文件管理 -
登录日志 - - -
操作日志 - - -
异常日志 - - -

API Call Chain Verification

Endpoint Frontend → Gateway Gateway → Backend Response
POST /api/auth/login
GET /api/users/page
POST /api/users
GET /api/roles/page
POST /api/roles
GET /api/menus
GET /api/dict/types
GET /api/configs/page
GET /api/notices/page
GET /api/files/page
GET /api/login-logs/page
GET /api/operation-logs/page
GET /api/exception-logs/page

Recommendations

  1. 部门管理模块:当前为占位页面,需要实现完整的部门树形管理功能
  2. antd 升级:关注 antd v6 发布进度,解决 React 19 兼容性警告
  3. E2E 测试:已有丰富的 Playwright E2E 测试用例,建议集成到 CI 流水线
  4. 前端表单验证:建议统一前后端验证规则,避免类似 roleSort 的不一致问题再次出现