Files
yidaima/RuoYi-Vue/docs/superpowers/plans/2026-05-25-online-run-preview.md

70 lines
3.5 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.

# 在线运行预览实施计划
> **给智能体执行者:** 必须使用 `superpowers:subagent-driven-development`(推荐)或 `superpowers:executing-plans`,按任务逐项执行。本计划使用复选框(`- [ ]`)跟踪进度。
**目标:** 为 EasyCode 生成出来的项目增加第一期本机在线运行预览能力。
**架构:** 新增一个内存态运行预览服务,负责导出生成源码、解压到本地工作目录、初始化 MySQL、启动后端/前端子进程,并暴露状态查询和停止接口。在现有项目预览页增加一个紧凑的运行预览控制区。
**技术栈:** Spring Boot 2.5、Java 8、JUnit 4、Mockito、Vue 3、Element Plus、Vite。
---
### 任务 1后端运行预览核心能力
**文件:**
- 新建:`ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/ProjectRunPreviewStatus.java`
- 新建:`ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/IFrontProjectRunPreviewService.java`
- 新建:`ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/RunPreviewPortAllocator.java`
- 新建:`ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/RunPreviewDatabaseInitializer.java`
- 新建:`ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/RunPreviewProcessRunner.java`
- 新建:`ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/FrontProjectRunPreviewServiceImpl.java`
- 测试:`ruoyi-generator/src/test/java/com/ruoyi/generator/service/front/FrontProjectRunPreviewServiceImplTest.java`
- [ ] 编写失败测试:启动预览后返回后端/前端 URL创建工作目录初始化数据库并启动两个进程。
- [ ] 编写失败测试:停止预览会终止两个进程,并返回 `STOPPED`
- [ ] 实现最小可用的服务、辅助类和 DTO。
- [ ] 运行 `mvn -pl ruoyi-generator -Dtest=FrontProjectRunPreviewServiceImplTest test`
### 任务 2后端控制器接口
**文件:**
- 修改:`ruoyi-admin/src/main/java/com/ruoyi/web/controller/front/FrontProjectController.java`
- [ ] 增加启动、状态查询和停止预览接口。
- [ ] 每个接口通过 `SecurityUtils.getUserId()` 获取当前用户,并委托给 `IFrontProjectRunPreviewService`
- [ ] 运行 `mvn -pl ruoyi-admin -am -DskipTests package`
### 任务 3生成模板运行时配置
**文件:**
- 修改:`ruoyi-generator/src/main/resources/qing/application.yml.vm`
- 修改:`ruoyi-generator/src/main/resources/qing/vue-config.js.vm`
- [ ] 后端端口和数据源通过环境变量配置。
- [ ] Vue 开发服务端口和后端代理地址通过环境变量配置。
- [ ] 如已有 qing 模板测试,则运行相关测试。
### 任务 4前端预览页控制区
**文件:**
- 修改:`easycode-web/src/api/project.js`
- 修改:`easycode-web/src/views/PreviewView.vue`
- 测试:`easycode-web/src/views/previewView.test.mjs`
- [ ] 编写失败的源码级测试,覆盖运行预览控件和 API 调用。
- [ ] 增加 `startRunPreview``getRunPreviewStatus``stopRunPreview` API 方法。
- [ ] 在预览页增加运行预览按钮、状态文本、预览链接和日志展示。
- [ ] 运行前端单元/源码测试,并使用 Node 20 执行 `npm run build`
### 任务 5验证
**文件:**
- 预计不新增文件。
- [ ] 运行目标后端测试。
- [ ] 运行目标前端测试。
- [ ] 运行后端打包构建。
- [ ] 使用 Node 20 运行前端生产构建。
- [ ] 说明限制:第一期依赖本机可用的 MySQL、Maven、Node/npm。