Files
wwjcloud-nest-v1/.trae/documents/迁移 Java Admin 至 admin-vben(基于 Vben 框架).md

71 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 目标
-`niucloud-java/admin` 管理面板完整迁移到 `admin-vben` 项目中,采用 Vben 的工程与路由权限框架。
- 保持界面风格与交互一致(沿用现有 Element Plus 视觉与交互功能100%对齐。
- 保持接口、数据结构与 PHP 项目一致,无业务逻辑改动。
## 现状梳理
- 源:`niucloud-java/admin/src` 已包含完整模块(`app/auth/channel/dict/diy/...`、动态路由与权限、i18n、请求封装、存储等。
- 目标:`admin-vben` 为 Vben monorepo框架与工具链完善`src` 已具备同构的动态路由与权限实现。
- 路由与权限:`admin-vben/src/router/index.ts``niucloud-java/admin/src/router/index.ts` 基本一致(动态菜单、守卫、首路由计算)。
- 请求封装:`admin-vben/src/utils/request.ts` 已支持 Token、SiteId 头与错误处理。
- 目录结构:`admin-vben/src/app/api``admin-vben/src/app/views` 已对齐分层,利于无损迁移。
## 迁移范围
- 代码:`src/app/views/*` 页面与组件、`src/app/api/*` API 模块、`src/stores/*``src/lang/*``src/utils/*``src/layout/*``src/app/assets/*`
- 资源:图片、图标、样式(含 `element-plus.scss` 与全局样式)。
- 配置:环境变量(`VITE_APP_BASE_URL`、请求头 key 等)、路由免登录清单、动态菜单接入。
## 技术方案
- 框架对齐:保留现有 Element Plus 视觉;接入/复用 Vben 的工程与路由权限框架monorepo、turbo、vitest、动态路由、store 结构)。
- 动态路由与权限:继续使用服务端菜单 -> 动态路由的模式,复用 `formatRouters/findFirstValidRoute``getAuthMenusFn` 流程。
- API 无改动:保持 `src/app/api/*.ts` 方法签名与路径不变,沿用 `request.ts` 封装与头部约定Token、SiteId
- i18n 与多语言:迁移 `zh-cn/en` JSON 与 key 命名,维持页面按 `meta.view` 懒加载语言包策略。
- Store 与状态:迁移 `system/user/app/...` 模块,维持登录态、站点信息、菜单、按钮权限的读取方式。
- 资源与样式:迁移所有静态资源与主题变量;校验全局样式覆盖生效。
## 实施步骤
1. 代码清点与映射
- 按模块列出页面与 API 清单:`app/auth/channel(dict/wechat/weapp/pc/h5/aliapp)/diy/dict/poster/setting/site/home/login/error`
- 盘点 `stores``utils``lang``layout``assets` 依赖关系与引用路径。
2. 基座准备admin-vben
- 核对 `admin-vben` 的别名、环境变量、router 守卫、请求封装与存储接口;确认与源项目一致。
- 校验 `NO_LOGIN_ROUTES/STATIC_ROUTES/ADMIN_ROUTE/HOME_ROUTE/SITE_ROUTE` 与懒加载视图映射(`routers.ts:105-154`)。
3. 逐模块迁移(保持路径与命名不变)
- `src/app/api/*`:原样迁移;如已有同名文件,做差异合并,保留真实接口与入参。
- `src/app/views/*`:原样迁移页面与子组件;统一 import 路径别名与样式引用。
- `src/stores/modules/*`:迁移并校验与 router/权限流程一致(`user/system/app/style/tabbar/poster/diy`)。
- `src/lang/*`:迁移中英文 JSON保留 key 命名与页面 `meta.view` 对应关系。
- `src/layout/*``src/app/assets/*`:迁移布局与资源,确保视觉一致。
4. 动态菜单与首路由
- 对接 `getAuthMenusFn` 返回菜单;使用 `formatRouters` 转为 `RouteRecordRaw` 并注入。
- 校验首路由计算与各 appType 首页跳转(`routers.ts:178-190``router/index.ts:111-135`)。
5. 权限与按钮规则
- 迁移按钮权限收集 `findRules`;页面内使用一致的权限判断。
6. 配置与环境
- 迁移/对齐 `.env.development/.env.production``VITE_APP_BASE_URL` 与请求头 key。
- 保持 `lang``siteId` 的存取一致(`request.ts:31-45`)。
7. 验证与对齐
- 路由覆盖:全量路由可访问且元信息(标题、图标、显示)一致。
- 用例走查核心流程登录、站点选择、菜单加载、各频道配置、DIY/海报/字典/设置)端到端可用。
- 语言包:切换语言后所有页面文案正确。
- 接口对齐:对照 `niucloud-php` 控制器与 `sql/wwjcloud.sql`,确保请求路径/参数/返回结构一致。
- 样式一致:关键页面对比像素级差异(允许小幅度但需体验一致)。
8. 文档与脚本
- 更新启动与构建说明dev/preview/build保留 Docker 与 Nginx 配置适配。
## 验收标准
- 路由与页面:源项目所有页面在 `admin-vben` 中可进入且功能正常;首页与登录流程一致。
- 接口与数据:所有 API 返回正确;无 401/403/500 异常;按钮权限与菜单显示一致。
- 视觉风格:布局、配色、组件交互与源项目一致;多语言切换正常。
- 约束遵循:数据库、接口命名与 PHP 项目保持 100% 一致;无自创逻辑与硬编码。
## 风险与回滚
- 风险:路径别名差异、环境变量未对齐、组件库差异导致样式偏差、动态菜单字段变化。
- 缓解:逐模块迁移与联调;对照 PHP 代码与 SQL提供对比脚本与可视化走查。
- 回滚:保留 `niucloud-java/admin` 原代码;迁移采用增量合并策略,可随时切回原工程。
## 里程碑
- M1基座对齐与 2 个模块试迁auth、site
- M2频道与 DIY 全量迁移与联调。
- M3设置/字典/海报等模块迁移完成。
- M4QA 与验收、部署脚本更新。