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 应用
This commit is contained in:
张翔
2026-05-03 15:14:24 +08:00
committed by zhangxiang
parent 7ba9d32a31
commit e4111ddb1a
16 changed files with 6973 additions and 1527 deletions
+25
View File
@@ -0,0 +1,25 @@
#!/bin/bash
SECRET="NovalonManageSystemSecretKey2026"
METHOD=$1
URL=$2
BODY=$3
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
NONCE="${TIMESTAMP}-$(head /dev/urandom | LC_ALL=C tr -dc 'a-z0-9' | head -c 13)"
PATH_PART=$(echo "$URL" | sed -E 's|^https?://[^/]+||' | sed 's|\?.*||')
QUERY_PART=$(echo "$URL" | sed -E 's|^https?://[^/]+||' | sed -n 's|.*\?||p')
STRING_TO_SIGN="${METHOD}
${PATH_PART}
${QUERY_PART}
${BODY}
${TIMESTAMP}
${NONCE}"
SIGNATURE=$(echo -n "$STRING_TO_SIGN" | openssl dgst -sha256 -hmac "$SECRET" -binary | base64)
echo "X-Signature: $SIGNATURE"
echo "X-Timestamp: $TIMESTAMP"
echo "X-Nonce: $NONCE"
+230
View File
@@ -0,0 +1,230 @@
# Dogfood Report: Novalon管理系统
| Field | Value |
|-------|-------|
| **Date** | 2026-04-28 |
| **App URL** | http://localhost:3002 |
| **Session** | novalon-test |
| **Scope** | 全应用探索性测试,重点关注用户旅程(User Journey |
## Summary
| Severity | Count |
|----------|-------|
| Critical | 0 |
| High | 1 |
| Medium | 2 |
| Low | 1 |
| **Total** | **4** |
## Test Environment
- **Frontend**: http://localhost:3002 (Vue 3 + Vite)
- **Gateway**: http://localhost:8080 (Spring Cloud Gateway)
- **Backend**: http://localhost:8084 (Spring Boot)
- **Database**: PostgreSQL on localhost:55432
- **Test User**: admin / Test@123
## Test Execution Summary
### 服务状态验证
- ✅ 后端服务 (8084): 正常运行
- ✅ 网关服务 (8080): 正常运行
- ✅ 前端服务 (3002): 正常运行
- ✅ 数据库连接: 正常
### 数据库验证
- ✅ 用户表: 7条记录
- ✅ 角色表: 8条记录
- ✅ 菜单表: 51条记录
- ✅ 字典类型表: 8条记录
- ✅ 系统配置表: 9条记录
### API测试结果
- ✅ 登录API: 正常工作,返回JWT token
- ✅ 用户管理API: 正常工作,需要签名验证
- ✅ 角色管理API: 正常工作,需要签名验证
- ✅ 菜单管理API: 正常工作,需要签名验证
- ✅ 字典管理API: 正常工作,需要签名验证
- ✅ 系统配置API: 正常工作,需要签名验证
### 日志监控结果
- ✅ 后端日志: 无ERROR或Exception
- ⚠️ 网关日志: 有配置警告,但不影响功能
- ✅ 前端日志: 未发现异步功能错误
## Issues
### ISSUE-001: API签名验证机制导致测试困难
| Field | Value |
|-------|-------|
| **Severity** | high |
| **Category** | functional |
| **URL** | http://localhost:8080/api/* |
| **Repro Video** | N/A |
**Description**
所有API请求都需要签名验证(X-Signature, X-Timestamp, X-Nonce),这导致:
1. 直接使用curl或Postman测试API时会被拒绝
2. 测试脚本需要实现签名生成逻辑,增加了测试复杂度
3. 签名验证失败时,错误信息不够友好
**Expected Behavior**
- 应该提供测试模式,允许跳过签名验证
- 或者提供测试工具/库来简化签名生成
**Actual Behavior**
- API返回401错误,提示签名验证失败
- 错误信息:`{"error": "Unauthorized", "code": "INVALID_SIGNATURE", "message": "Request signature verification failed. Please ensure you have included valid X-Signature, X-Timestamp, and X-Nonce headers."}`
**Impact**
- 增加了API测试的复杂度
- 影响开发效率
- 可能导致测试覆盖率不足
---
### ISSUE-002: 网关配置警告
| Field | Value |
|-------|-------|
| **Severity** | medium |
| **Category** | console |
| **URL** | N/A |
| **Repro Video** | N/A |
**Description**
网关启动时出现多个配置警告:
1. `management.endpoint.env.enabled` 配置项使用了不兼容的目标类型
2. `management.endpoint.loggers.enabled` 配置项使用了不兼容的目标类型
3. `management.endpoint.metrics.enabled` 配置项使用了不兼容的目标类型
4. `management.metrics.web.server.request.autotime.enabled` 配置项应该全局配置
**Expected Behavior**
- 网关启动时不应该有配置警告
- 配置文件应该符合Spring Boot 3.x的最佳实践
**Actual Behavior**
- 网关启动时出现多个配置警告
- 虽然不影响功能,但可能会在未来的Spring Boot版本中导致问题
**Impact**
- 配置警告可能导致未来的兼容性问题
- 影响日志的可读性
---
### ISSUE-003: Playwright测试执行卡住
| Field | Value |
|-------|-------|
| **Severity** | medium |
| **Category** | functional |
| **URL** | N/A |
| **Repro Video** | N/A |
**Description**
执行Playwright测试时,测试进程似乎卡住,没有输出任何内容:
- 运行 `npm run test:e2e:journeys` 后,进程一直处于运行状态
- 没有测试输出,没有错误信息
- 需要手动终止进程
**Expected Behavior**
- 测试应该正常执行并输出结果
- 如果有问题,应该输出错误信息
**Actual Behavior**
- 测试进程卡住,无输出
- 无法判断测试是否在运行
**Impact**
- 无法执行自动化测试
- 影响CI/CD流程
- 无法验证代码质量
---
### ISSUE-004: 测试数据清理不彻底
| Field | Value |
|-------|-------|
| **Severity** | low |
| **Category** | functional |
| **URL** | N/A |
| **Repro Video** | N/A |
**Description**
数据库中存在测试用户数据,说明之前的测试没有正确清理:
- 用户表中有多条 `testuser_*` 开头的测试用户
- 这些数据可能是之前测试遗留的
**Expected Behavior**
- 每次测试后应该清理测试数据
- 数据库应该保持干净状态
**Actual Behavior**
- 数据库中存在遗留的测试数据
- 可能影响后续测试的结果
**Impact**
- 可能导致测试结果不准确
- 影响数据质量
---
## Recommendations
### 高优先级
1. **简化API签名验证机制**
- 提供测试模式,允许跳过签名验证
- 或者提供测试工具/库来简化签名生成
- 改进错误信息,提供更详细的调试信息
### 中优先级
2. **修复网关配置警告**
- 更新配置文件以符合Spring Boot 3.x的最佳实践
- 参考Spring Boot官方文档更新配置项
3. **修复Playwright测试问题**
- 检查Playwright配置
- 确保测试能够正常执行
- 添加超时机制,避免测试卡住
### 低优先级
4. **改进测试数据清理**
- 在测试套件中添加清理步骤
- 使用事务回滚或数据库快照来隔离测试数据
## Test Coverage
### 已测试的功能模块
- ✅ 用户登录
- ✅ 用户管理(查询)
- ✅ 角色管理(查询)
- ✅ 菜单管理(查询)
- ✅ 字典管理(查询)
- ✅ 系统配置(查询)
### 未测试的功能模块
- ❌ 用户管理(创建、编辑、删除)
- ❌ 角色管理(创建、编辑、删除)
- ❌ 字典管理(创建、编辑、删除)
- ❌ 系统配置(创建、编辑、删除)
- ❌ 文件管理
- ❌ 通知管理
- ❌ 日志管理
## Conclusion
本次dogfood测试发现了一些关键问题:
1. API签名验证机制增加了测试复杂度,需要改进
2. 网关配置存在警告,需要修复以避免未来的兼容性问题
3. Playwright测试执行存在问题,需要修复
4. 测试数据清理不彻底,需要改进
建议优先解决API签名验证问题,以便能够更有效地进行自动化测试。同时,修复网关配置警告和Playwright测试问题,确保测试套件能够正常运行。