Commit Graph

59 Commits

Author SHA1 Message Date
张翔 c2b8c740ec feat(dept): 实现部门管理前端页面
dept.ts API: CRUD + buildTree 树形构建;
DeptManagement 页面: 树形表格 + 新增/编辑/删除 + 权限守卫;
修复 validation-rules.ts 的 as const 导致 readonly 类型不兼容问题。
2026-05-06 16:23:49 +08:00
张翔 b99dd73f74 refactor(validation): 应用统一验证规则到菜单/字典/配置/通知页面
菜单名称添加长度校验,排序使用 VALIDATION 常量;
字典名称/类型添加长度校验,字典标签/值添加长度校验;
配置名称/键/值添加长度校验;
通知标题添加长度校验,内容添加长度校验。
2026-05-06 15:38:51 +08:00
张翔 6b5f7a517b refactor(role): 应用统一验证规则到角色管理表单
角色名称添加长度(2-50)校验,角色标识添加长度和格式校验,
排序使用 VALIDATION 常量的 initialValue 和 rules。
2026-05-06 15:36:27 +08:00
张翔 1c5145f1a5 fix(user): 应用统一验证规则到用户管理表单
用户名添加长度(3-50)和格式校验,密码添加长度(8-20)和强度校验,
邮箱添加格式和长度校验,手机添加格式校验,昵称添加长度校验。
2026-05-06 15:35:40 +08:00
张翔 dc23d76ee0 feat(validation): 创建前端验证规则常量文件
以后端 @Valid 注解为唯一真相源,建立 VALIDATION 常量映射,
统一前后端验证规则,消除 roleSort 类不一致问题。
2026-05-06 15:34:34 +08:00
张翔 5dc53f57cc feat: 新增监控页面、部门管理占位与单元测试
- 新增系统监控模块(在线用户、定时任务、数据监控、服务器监控、缓存监控)
- 新增部门管理占位页面
- 路由注册新增模块与懒加载
- DefaultLayout 侧边菜单与布局优化
- 新增前端单元测试与后端 RoleUpdateRequest 测试
2026-05-06 14:18:17 +08:00
张翔 0b246b3e24 chore: 配置与基础设施更新
- 开发服务器端口从 3002 改为 5174
- vitest 配置从 vue plugin 改为 react plugin
- playwright 新增 uat 项目配置,修正 baseURL
- 添加 less 依赖支持
- 修复各页面 catch 块空语句为注释标记
2026-05-06 14:17:31 +08:00
张翔 7e2752b533 fix(api): 修复通知模块字段名与后端不匹配
通知模块字段从 title/type/content 改为 noticeTitle/noticeType/noticeContent,
与后端 DTO 字段名对齐;API 层补充完整类型定义与错误处理。
2026-05-06 14:16:40 +08:00
张翔 35ee138f29 refactor(antd): 替换 Modal destroyOnClose 为 destroyOnHidden
antd 新版本将 destroyOnClose 重命名为 destroyOnHidden,
消除控制台废弃警告。涉及 user、menu、notify、dict、config 页面。
2026-05-06 14:16:16 +08:00
张翔 6115ed0214 fix(role): 修复 roleSort 默认值与后端验证不一致
前端 initialValue 从 0 改为 1,min 从 0 改为 1,添加前端验证规则;
后端 RoleUpdateRequest.roleSort 补充 @Min(value=1) 验证注解。
统一前后端约束,避免默认值提交时触发验证错误。
2026-05-06 14:15:55 +08:00
张翔 5b26a355a0 fix(guards): 修复 SPA 直接导航重定向到登录页
authLoader 中 initFromStorage() 后需重新调用 getState() 获取最新状态,
否则 isAuthenticated 检查使用过时的快照值导致已登录用户被重定向到登录页。
同步修复 usePermissionStore 的相同问题。
2026-05-06 14:15:02 +08:00
张翔 8163fc39c5 feat(web): Phase 5 - 业务页面迁移完成
完成所有业务页面从 Vue 3 到 React 19 的迁移:

页面迁移:
- Login: 表单验证 + 认证集成
- Dashboard: 统计卡片 + G2 图表占位
- UserManagement: 表格 + 分页 + CRUD + 权限控制
- RoleManagement: 表格 + 弹窗 + TreeSelect 权限分配
- MenuManagement: 树形表格 + 层级菜单管理
- ConfigManagement: 参数配置 CRUD
- DictManagement: 字典类型/数据双面板管理
- FileManagement: 文件上传 + 图片预览
- NoticeManagement: 通知公告 CRUD
- LoginLog/OpLog/ExLog: 审计日志只读查询
- 403: 权限拒绝页面

API 层补充:
- loginLog.ts: 新增 LoginLog/OpLog/ExLog 接口与 API
- status.ts: 新增 userStatusMap/roleStatusMap/menuStatusMap/noticeStatusMap

路由修正:
- routes.ts: 日志页面路径对齐实际目录结构

验证:tsc --noEmit 零错误,dev server 正常启动
2026-05-03 15:56:45 +08:00
张翔 c5547cff06 feat(react19-migration): 阶段4 - 布局与通用组件
- T4.1: DefaultLayout (ProLayout + Suspense + Outlet)
- T4.2: SideMenu (AntD Menu + 递归菜单转换 + 图标映射)
- T4.3: HeaderRight (Dropdown + Avatar + 退出登录)
- T4.4: AuthGuard (认证守卫 → Navigate /login)
- T4.5: PermissionGuard (权限守卫 → permission/role 检查)
- T4.6: ChartContainer (AntV 图表容器)
- T4.7: useAntV Hook (图表生命周期管理)
- T4.8: usePermission Hook (权限检查封装)
- 安装 @ant-design/pro-components @ant-design/icons

验证: npx tsc --noEmit 通过
2026-05-03 15:48:30 +08:00
张翔 8a03923dd7 feat(react19-migration): 阶段3 - 状态管理与路由
- T3.1: 创建 useAuthStore (Zustand) - login/logout/initFromStorage
- T3.2: 创建 usePermissionStore (Zustand) - fetchUserMenus/hasPermission/hasRole
- T3.3: 创建 useAppStore (Zustand) - collapsed 状态管理
- T3.4: 创建 React Router v7 数据路由配置 (createBrowserRouter)
- T3.5: 创建 authLoader 路由守卫 (token校验→初始化→权限加载)
- 创建占位页面组件 (13个路由页面 + DefaultLayout)
- 更新 App.tsx 使用 RouterProvider
- 安装 jwt-decode 依赖

验证: npx tsc --noEmit 通过, npm run dev 启动成功
2026-05-03 15:34:09 +08:00
张翔 49779479dd feat(react19-migration): 阶段2 - 核心框架层迁移
- T2.1: request.ts 确认无 Vue 依赖,无需修改
- T2.5: errorHandler.ts ElMessage → antd message
- T2.7: 新增 API (menu/config/dict/file/notice/loginLog) + 类型定义 (menu/permission/user)
- 清理旧 Vue 测试文件、views、stores、router、directives
- 修复 tsconfig: 添加 module:ESNext + types:vite/client

验证: npx tsc --noEmit 无类型错误
2026-05-03 15:26:42 +08:00
张翔 a01bcf791b feat(react19-migration): 阶段1 - 项目基础设施重建
- T1.1: 卸载 Vue 依赖,安装 React 19 + Ant Design 5 + Zustand 5 + AntV 全家桶
- T1.2: Vite 配置迁移 (plugin-vue → plugin-react, manualChunks 更新)
- T1.3: TypeScript 配置迁移 (jsx: preserve → react-jsx, 移除 .vue)
- T1.4: ESLint 配置迁移 (Vue 规则 → React/Hooks/Refresh 规则)
- T1.5: 入口文件迁移 (main.ts → main.tsx, App.vue → App.tsx, div#app → div#root)

验证: npm run dev 成功启动空白 React 应用
2026-05-03 15:14:24 +08:00
张翔 330828f585 test: 修复测试用例并提升测试覆盖率
- 修复 User Journey 测试中的菜单导航和登出问题
- 更新 vitest 配置以包含 role-based-tests
- 修复 role-auth-manager 测试中的 mock 问题
- 测试通过率从 70% 提升到 100%
2026-04-28 16:32:50 +08:00
张翔 0c3b67eb64 chore(ci): 移除 Woodpecker CI 配置,全面采用 Jenkins
- 删除 .woodpecker.yml
- 删除 .woodpecker-e2e.yml
- 删除 .woodpecker-test-suite.yml
2026-04-27 15:38:41 +08:00
张翔 f0746d06db feat(web): 迁移前端源代码(任务 T4.1)
- 删除 novalon 前端 src/ 下所有文件
- 从 gym-manage 复制前端 src/ 完整目录树
- 替换 gym-manage-api → novalon-manage-api
- 替换 gym_system → manage_system
- 无 gym 残留引用
2026-04-27 14:57:45 +08:00
张翔 99c78954a3 fix(用户管理): 修复用户搜索参数名称不一致问题
- 将前端搜索参数从 username 改为 keyword,与后端 API 保持一致
- 更新 UserPageRequest 接口,添加 keyword 字段

问题原因:
- 前端传递 username 参数,但后端期望 keyword 参数
- 导致后端无法正确处理搜索请求,搜索关键字为 null

影响范围:
- 用户管理页面的搜索功能
- E2E 测试中的用户搜索步骤
2026-04-08 15:42:09 +08:00
张翔 7420afa380 feat(权限): 实现基于角色的路由权限控制
- 新增路由元信息类型定义 (requiresAuth, roles, title)
- 实现路由守卫中的角色权限校验逻辑
- 新增 403 禁止访问页面
- 提取权限校验函数 checkRoutePermission,提高可测试性
- 修复 JSON.parse 异常处理,增强健壮性
- 优化页面标题动态设置

测试优化:
- 重构 global-setup.ts,支持 JAR 文件启动后端服务
- 优化测试用例等待逻辑,减少硬编码延迟
- 简化 playwright 配置,移除多浏览器支持
- 新增路由权限守卫单元测试

关联需求:权限系统完善
2026-04-08 15:29:03 +08:00
张翔 9b2c8a47a4 fix: 修复 Login 组件测试的 Pinia 初始化问题 2026-04-08 07:09:51 +08:00
张翔 6c0e510d64 feat: 完成动态菜单和API权限检查功能 2026-04-08 07:08:42 +08:00
张翔 76a7735099 feat: 添加递归菜单组件 MenuItem 2026-04-08 07:07:10 +08:00
张翔 b6600ad59a feat: 集成 Permission Store 到登录流程 2026-04-08 07:05:30 +08:00
张翔 20d12c1b94 feat: 添加 v-permission 指令实现按钮级权限控制 2026-04-08 07:04:26 +08:00
张翔 8fb3166356 feat: 添加 Permission Store 实现权限数据管理 2026-04-08 07:03:08 +08:00
张翔 0c8c993995 test: 删除根目录下的非核心E2E测试文件(任务 2/8) 2026-04-07 21:45:28 +08:00
张翔 6f2cd315ff refactor: 清理迁移相关的未使用变量
- 移除 permission-helper.test.ts 中未使用的 RoleDefinition 导入
- 使用下划线前缀标记 permission-helper.ts 中有意未使用的参数
- 删除 role-auth-manager.ts 中未使用的 generateSignatureHeaders 方法及相关导入
- 为 test-data-manager.ts 添加 getPage 方法以使用 _page 变量

修复所有迁移相关的 TS6133 类型错误
2026-04-05 09:27:42 +08:00
张翔 5db1e03fc4 refactor: 迁移roles单元测试到src目录 2026-04-05 09:12:49 +08:00
张翔 cd1211702e refactor: 迁移角色定义到src目录 2026-04-05 09:12:15 +08:00
张翔 e63a23a4ad refactor: 迁移shared单元测试到src目录 2026-04-05 09:11:29 +08:00
张翔 993753bf4f refactor: 迁移shared工具类到src目录 2026-04-05 09:10:52 +08:00
张翔 04e385a0a2 fix: 统一签名策略,签名不包含body
根本原因:
- 前端签名生成时包含body
- 后端WebFlux验证时body为空
- 导致签名不匹配,认证失败

修复方案:
- 修改前端signature.ts,签名时不包含body
- 修改测试role-auth-manager.ts,与前端保持一致
- 与后端WebFlux实现保持一致

影响范围:
- 所有需要签名验证的API请求
- Token注入登录测试
- 用户管理相关测试
2026-04-05 07:47:28 +08:00
张翔 a1497a480b fix: 修复登录页面401错误处理问题
根本原因:
- request拦截器在收到401错误时立即重定向到登录页
- 这会中断Login.vue的错误处理逻辑
- 导致ElMessage.error()无法执行,错误消息toast无法显示

修复方案:
- 在登录页面时不执行重定向
- 允许Login.vue正常处理错误并显示toast消息
- 改进测试等待策略,确保toast消息出现
2026-04-04 23:25:36 +08:00
张翔 f7e7cfc78d fix: 修复对话框在错误时不关闭的问题
- 在UserManagement.vue的handleModalOk中添加错误时关闭对话框
- 在RoleManagement.vue的handleModalOk中添加错误时关闭对话框
- 确保即使API调用失败,对话框也会正确关闭
2026-04-04 11:35:15 +08:00
张翔 56e1a0885d fix: 修复登录响应处理逻辑
- 移除不必要的code检查
- 添加token有效性验证
- 确保userId转换为字符串存储
- 添加错误日志输出
2026-04-04 10:19:45 +08:00
张翔 f882599072 fix: 改进成功消息等待策略,修复测试失败问题
- 添加waitForSuccessMessage()方法到UserManagementPage和RoleManagementPage
- 改进submitForm()方法,添加等待时间
- 更新测试用例使用新的等待方法
- 增加错误消息检测和日志输出
- 修复权限选择器问题(使用.el-tree替代固定value)
2026-04-04 10:03:19 +08:00
张翔 2de0529d34 feat: 实现登录日志和操作日志的分页查询功能
refactor: 重构日志服务层代码,将分页逻辑移至Repository层

test: 添加日志分页查询的单元测试和组件测试

docs: 更新README文档,记录API响应格式修复过程

chore: 清理无用文件,更新.gitignore配置

build: 添加Jacoco代码覆盖率插件配置

ci: 添加测试环境配置文件application-h2-test.yml

style: 统一日志服务代码格式,添加必要的日志输出
2026-04-03 17:49:55 +08:00
张翔 b0f91d74f5 feat: 统一JWT密钥配置并修复签名验证问题
修复前端签名生成中bodyString硬编码问题
添加start-frontend.sh脚本启动前端服务
统一manage-app和gateway的JWT密钥配置
修复Repository扫描路径问题
更新测试配置和依赖
重构表名映射为sys_user和sys_role
完善用户实体类字段映射
添加集成测试配置和测试用例
2026-04-02 12:28:49 +08:00
张翔 6392c08560 feat(api/web): 实现API请求签名验证功能并优化测试环境配置
refactor(db): 重构查询条件类到query目录下

test: 添加登录流程测试脚本和测试数据

chore: 添加crypto-js依赖用于签名验证

ci: 配置测试环境数据库和端口设置
2026-04-02 08:07:53 +08:00
张翔 24422c2c19 feat: 增强输入验证和安全防护
- 增强前端表单验证规则(用户名、密码、邮箱、手机号)
- 增强后端DTO验证注解(用户注册、角色创建)
- 添加后端Handler验证逻辑(用户创建、角色创建)
- 调整测试用例以适应系统实际情况
- 添加UAT测试套件(用户管理、角色管理、菜单管理、API交互、数据持久化、边界条件、安全测试)
- 修改远程分支为 https://git.f.novalon.cn/novalon/novalon-manage-system.git
2026-03-27 21:31:30 +08:00
张翔 a05368d306 feat(登录): 添加路由守卫和异步导航处理
fix(表单验证): 为用户、角色和菜单管理添加表单验证规则

test(e2e): 增加页面导航超时时间和网络空闲等待

refactor(数据库): 移除Flyway配置并更新数据源配置
2026-03-27 14:40:55 +08:00
张翔 af44c23f21 refactor(security): 重构安全配置并优化测试环境
- 移除旧的测试套件和UAT测试文件
- 更新密码编码器配置使用BCrypt strength=12
- 添加用户角色关联表和相关服务
- 优化前端日期显示格式
- 清理无用资源和配置文件
- 增强测试数据管理和清理功能
2026-03-27 13:00:22 +08:00
张翔 4ec1a3f4dd feat: 更新UAT测试配置和修复数据库连接问题
refactor(测试): 重构用户数据加载逻辑以支持数组格式
fix(数据库): 修正数据库连接配置和凭证
test: 添加新的导航和用户管理测试场景
docs: 生成UAT测试报告和最终报告
ci: 更新Woodpecker CI配置和测试命令
build: 添加application-test.yml配置文件
chore: 清理旧的测试场景文件
2026-03-25 15:32:49 +08:00
张翔 e2ad1331cc feat: 添加测试框架和覆盖率报告功能
feat(测试): 新增Playwright和Vitest测试配置
feat(测试): 添加测试覆盖率报告生成功能
feat(测试): 实现前后端测试脚本集成

fix(测试): 修复测试密码不匹配问题
fix(测试): 修正URL等待策略
fix(测试): 调整错误消息选择器

refactor(测试): 重构测试目录结构
refactor(测试): 优化测试用例组织方式

docs: 更新测试报告文档
docs: 添加测试覆盖率报告模板

ci: 添加Docker测试环境配置
ci: 实现测试自动化脚本

chore: 更新依赖版本
chore: 添加测试相关配置文件
2026-03-25 09:03:37 +08:00
张翔 117978e148 feat(ui): 增强操作日志和仪表盘页面的UI交互体验
为操作日志页面添加操作模块图标和参数格式化展示功能
优化仪表盘页面统计卡片样式和最近登录/系统信息展示效果
2026-03-24 17:32:01 +08:00
张翔 be5d5ede90 feat: 添加异常日志功能并优化UI样式
refactor: 重构后端查询逻辑和API响应处理

fix: 修复用户角色更新和文件上传问题

test: 添加前端性能测试脚本和E2E测试用例

chore: 更新依赖版本和配置文件

docs: 添加环境检查脚本和测试文档

style: 统一表格标签样式和路由命名

perf: 优化前端页面加载速度和响应时间
2026-03-24 13:32:20 +08:00
张翔 a97d317e4a refactor: RoleManagement component with API services and permission assignment 2026-03-20 08:02:03 +08:00
张翔 50c5afbbb7 refactor: UserManagement component with API services and role assignment 2026-03-20 08:00:49 +08:00