# plm **Repository Path**: iocs/plm ## Basic Information - **Project Name**: plm - **Description**: 简易项目管理工具 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-05-17 - **Last Updated**: 2026-09-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PLM — AI Native 项目管理系统 基于 Vue 3 + Spring Boot 的全栈项目管理系统,支持研发项目、需求、任务、缺陷的全生命周期管理。 ## 技术栈 | 层级 | 技术 | |------|------| | 前端 | Vue 3 + TDesign + Vite + ECharts + MdEditorV3 | | 后端 | Java 8 + Spring Boot + MyBatis + MyBatis-Plus | | 数据库 | MySQL 8.0 | | 构建 | Maven + Vite | ## 项目结构 ``` plm/ ├── frontend/ # Vue 3 前端 │ ├── src/ │ │ ├── views/ # 页面组件 │ │ ├── components/ # 公用组件 │ │ ├── api/ # API 请求封装 │ │ ├── router/ # 路由配置 │ │ └── utils/ # 工具函数 │ ├── scripts/ │ │ └── copy-to-backend.mjs # 构建产物拷贝脚本 │ ├── vite.config.ts │ └── package.json ├── backend/ # Spring Boot 后端 │ ├── src/main/java/com/zhr/plm/ │ │ ├── controller/ # 控制器 │ │ ├── service/ # 服务层 │ │ ├── mapper/ # MyBatis 映射 │ │ ├── entity/ # 实体类 │ │ ├── config/ # 配置(CORS、JWT 等) │ │ └── security/ # 安全(JWT 过滤器) │ ├── src/main/resources/ │ │ ├── application.yml # 主配置(context-path: /plm) │ │ └── static/ # 一体化部署前端产物目标目录 │ └── sql/ │ └── init.sql # 建表语句统一入口 └── .workbuddy/ └── memory/ # 项目工作记忆 ``` ## 开发环境搭建 ### 1. 后端 ```bash cd backend # 修改 application.yml 中的数据库连接信息 mvn spring-boot:run # 后端运行在 http://localhost:8080/plm/ ``` ### 2. 前端 ```bash cd frontend npm install npm run dev # 前端运行在 http://localhost:3001 # Vite 自动代理 /plm 请求到 localhost:8080 ``` ### 3. 数据库 执行 `backend/sql/init.sql` 初始化表结构。 ## 一体化发布流程 一体化部署将前端构建产物打包到后端 `static` 目录,最终编译成一个独立可运行的 JAR 包,简化部署。 ### 原理 ``` npm run build:deploy ↓ vite build(生产模式,base=/plm/) ↓ scripts/copy-to-backend.mjs dist/ 内容 → backend/src/main/resources/static/ ↓ mvn clean package -DskipTests ↓ target/plm-backend.jar(单 jar,含前端 + 后端) ↓ java -jar target/plm-backend.jar ↓ 浏览器访问 http://host:8080/plm/ ``` ### 关键配置点 | 配置项 | 文件 | 说明 | |--------|------|------| | `context-path: /plm` | `application.yml` | 后端统一路径前缀 | | `base: '/plm/'`(生产) | `vite.config.ts` | 生产模式前端资源路径前缀 | | `base: '/'`(开发) | `vite.config.ts` | 开发模式不设前缀,走 Vite 代理 | | `/plm` 代理 → `localhost:8080` | `vite.config.ts` | 开发时前端代理后端 | | 静态资源后缀放行 | `JwtAuthFilter.java` | `.html/.js/.css/.svg` 等不走 JWT 验证 | | `/assets/` 路径放行 | `JwtAuthFilter.java` | Vite 构建的静态资源目录 | | `/plm` / `/plm/` 入口放行 | `JwtAuthFilter.java` | SPA 首页入口 | ### 一键发布步骤 ```bash # 1. 构建前端并拷贝到后端 static cd frontend npm run build:deploy # 2. 打包后端(含前端静态资源) cd ../backend mvn clean package -DskipTests # 3. 运行 java -jar target/plm-backend.jar # 4. 访问 # http://localhost:8080/plm/ ``` ### 开发模式不受影响 - 开发时仍用 `npm run dev`,Vite 代理 `/plm` 到后端,无需部署。 - `build:deploy` 只在需要发布时使用,开发环境前端 proxy 和后端 CORS 保持不变。