feat: 添加生产环境配置和构建脚本,更新依赖

This commit is contained in:
xudan 2025-06-07 09:27:37 +08:00
parent c4166e94a3
commit 101f2e2399
5 changed files with 4550 additions and 3 deletions

View File

@ -0,0 +1,3 @@
ENV_APP_TITLE=大众一汽发动机AMR调度系统
ENV_HTTP_BASE=/mocks
ENV_WEBSOCKET_BASE=/ws

View File

@ -5,7 +5,8 @@
"type": "module",
"scripts": {
"start": "vite",
"build": "vue-tsc -b && vite build",
"build": "vue-tsc -b && vite build && npm run copy-mocks",
"copy-mocks": "node -e \"const fs=require('fs');const path=require('path');function copyDir(s,d){if(!fs.existsSync(d))fs.mkdirSync(d,{recursive:true});fs.readdirSync(s).forEach(f=>{const sp=path.join(s,f),dp=path.join(d,f);fs.statSync(sp).isDirectory()?copyDir(sp,dp):fs.copyFileSync(sp,dp)})}copyDir('mocks','dist/mocks')\"",
"preview": "vite preview"
},
"dependencies": {
@ -14,6 +15,7 @@
"@vueuse/rxjs": "^13.1.0",
"ant-design-vue": "^4.2.6",
"axios": "^1.8.4",
"dayjs": "^1.11.13",
"lodash-es": "^4.17.21",
"rxjs": "^7.8.2",
"vue": "^3.5.13",

4018
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -5,8 +5,8 @@
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
// "noUnusedLocals": true,
// "noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true,

524
项目说明文档.md Normal file
View File

@ -0,0 +1,524 @@
# AMR机器人管理系统 - 详细说明文档
## 📋 项目概述
AMR(Autonomous Mobile Robot)机器人管理系统是一个基于Vue3 + TypeScript + Ant Design Vue开发的前端应用。该系统主要用于管理和监控AMR机器人提供场景编辑、机器人组管理、路径规划和实时监控等功能。
### 🎯 核心功能
- **场景编辑器** - 可视化编辑机器人运行场景地图
- **机器人组管理** - 管理机器人分组和配置
- **路径规划** - 设计和管理机器人运行路径
- **实时监控** - 监控机器人运行状态和位置
- **点位管理** - 管理充电点、停靠点、动作点等特殊点位
- **区域管理** - 管理库区、互斥区等功能区域
## 🏗️ 技术架构
### 前端技术栈
```mermaid
graph TB
A[Vue 3.5.13] --> B[TypeScript]
A --> C[Ant Design Vue 4.2.6]
A --> D[Vue Router 4.5.0]
A --> E[Vue I18n 11.1.3]
A --> F[Vite 6.3.1]
B --> G[RxJS 7.8.2]
C --> H[@ant-design/icons-vue]
D --> I[动态路由]
E --> J[多语言支持]
F --> K[热重载开发]
L[Meta2d 1.0.78] --> M[2D图形引擎]
N[VueUse] --> O[组合式API工具]
P[Lodash-es] --> Q[工具函数库]
R[Axios] --> S[HTTP客户端]
T[Day.js] --> U[时间处理]
```
### 项目结构图
```
web-amr/
├── 📁 src/ # 源代码目录
│ ├── 📁 pages/ # 页面组件
│ │ ├── 🎨 scene-editor.vue # 场景编辑器页面
│ │ ├── 🎨 group-editor.vue # 机器人组编辑页面
│ │ ├── 📊 movement-supervision.vue # 运行监控页面
│ │ └── ❌ exception.vue # 异常页面
│ ├── 📁 components/ # 通用组件
│ │ ├── 📁 modal/ # 弹窗组件
│ │ ├── 📁 card/ # 卡片组件
│ │ ├── 🤖 robot-groups.vue # 机器人组组件
│ │ ├── 📍 pen-groups.vue # 点位组组件
│ │ └── 🛠️ editor-toolbar.vue # 编辑器工具栏
│ ├── 📁 apis/ # API接口层
│ │ ├── 📁 scene/ # 场景相关API
│ │ ├── 📁 robot/ # 机器人相关API
│ │ └── 📁 map/ # 地图相关API
│ ├── 📁 services/ # 核心服务层
│ │ ├── ⚙️ editor.service.ts # 编辑器服务(核心)
│ │ ├── 🎨 theme.service.ts # 主题服务
│ │ ├── 🌍 locale.service.ts # 国际化服务
│ │ ├── 🛤️ router.ts # 路由配置
│ │ ├── 🌐 http.ts # HTTP请求服务
│ │ └── 🔌 ws.ts # WebSocket服务
│ ├── 📁 assets/ # 静态资源
│ │ ├── 📁 themes/ # 主题文件
│ │ ├── 📁 images/ # 图片资源
│ │ ├── 📁 locales/ # 语言包
│ │ ├── 📁 icons/ # 图标资源
│ │ └── 📁 fonts/ # 字体文件
│ ├── 🎯 main.ts # 应用入口
│ ├── 📱 App.vue # 根组件
│ └── 🎨 style.scss # 全局样式
├── 📁 mocks/ # 模拟数据
├── 📁 public/ # 公共资源
├── ⚙️ vite.config.ts # Vite配置
├── 📦 package.json # 项目配置
└── 📝 README.md # 说明文档
```
## 🔧 核心模块详细说明
### 1. 场景编辑器模块 (Scene Editor)
**功能描述**: 提供可视化的2D场景编辑功能允许用户创建和修改机器人运行环境。
**技术实现**:
- 基于 `Meta2d` 图形引擎构建可视化编辑器
- 使用 `EditorService` 服务类封装所有编辑功能
- 支持点、线、面的绘制和编辑
- 实时保存和加载场景配置
**核心组件**:
```vue
<!-- 场景编辑器主页面 -->
<template>
<a-layout class="full">
<!-- 顶部工具栏 -->
<a-layout-header> <编辑模式切换> <导入导出功能> <推送到服务器> </a-layout-header>
<!-- 主体布局 -->
<a-layout>
<!-- 左侧面板 -->
<a-layout-sider> <机器人组管理> <库区管理> <高级组管理> </a-layout-sider>
<!-- 中央编辑区 -->
<a-layout-content>
<div ref="container" class="editor-container"></div>
</a-layout-content>
</a-layout>
</a-layout>
<!-- 右侧属性面板 -->
<详细信息卡片>
</template>
```
### 2. 机器人管理模块 (Robot Management)
**功能描述**: 管理机器人设备,包括注册、分组、状态监控等功能。
**数据结构**:
```typescript
interface RobotInfo {
id: string; // 机器人ID
label: string; // 机器人名称
brand: string; // 品牌
type: RobotType; // 机器人类型
ip: string; // IP地址
isConnected?: boolean; // 连接状态
state?: number; // 运行状态
canOrder?: boolean; // 可否下达指令
canStop?: boolean; // 可否停止
canControl?: boolean; // 可否控制
}
interface RobotGroup {
sid: string; // 场景ID
id: string; // 组ID
label: string; // 组名称
robots: string[]; // 机器人ID列表
}
```
**核心功能实现**:
- **机器人注册**: 通过表单收集机器人基本信息
- **分组管理**: 支持创建、删除、重命名机器人组
- **状态监控**: 实时显示机器人连接和运行状态
- **批量操作**: 支持批量添加、移除机器人
### 3. 地图编辑系统 (Map Editor System)
**功能描述**: 基于Meta2d的强大地图编辑功能支持多种地图元素的创建和编辑。
**地图元素类型**:
#### 📍 点位系统 (Point System)
```typescript
enum MapPointType {
普通点 = 0,
充电点 = 1,
停靠点 = 2,
动作点 = 3,
等待点 = 4,
禁行点 = 5,
}
```
#### 🛤️ 路径系统 (Route System)
```typescript
enum MapRouteType {
直线 = 'line',
二阶贝塞尔曲线 = 'bezier2',
三阶贝塞尔曲线 = 'bezier3',
}
```
#### 🏢 区域系统 (Area System)
```typescript
enum MapAreaType {
库区 = 1,
互斥区 = 2,
非互斥区 = 3,
}
```
### 4. 编辑器服务 (Editor Service)
**功能描述**: 系统核心服务类继承自Meta2d提供完整的编辑器功能。
**核心方法**:
```typescript
class EditorService extends Meta2d {
// 场景管理
async load(map?: string, editable?: boolean): Promise<void>;
save(): string;
// 机器人管理
addRobots(gid: string, robots: RobotInfo[]): void;
removeRobots(ids: string[]): void;
updateRobot(id: string, value: Partial<RobotInfo>): void;
// 点位管理
async addPoint(p: Point, type?: MapPointType, id?: string): Promise<void>;
updatePoint(id: string, info: Partial<MapPointInfo>): void;
changePointType(id: string, type: MapPointType): void;
// 路径管理
addRoute(p: [string, string], type?: MapRouteType, id?: string): void;
updateRoute(id: string, info: Partial<MapRouteInfo>): void;
// 区域管理
async addArea(p1: Point, p2: Point, type?: MapAreaType, id?: string): Promise<void>;
updateArea(id: string, info: Partial<MapAreaInfo>): void;
}
```
### 5. 实时监控模块 (Movement Supervision)
**功能描述**: 实时监控机器人运行状态,显示位置、路径、状态等信息。
**技术实现**:
- 使用WebSocket建立实时连接
- 基于RxJS处理实时数据流
- Canvas渲染机器人实时位置和路径
**数据流程**:
```mermaid
sequenceDiagram
participant C as 客户端
participant W as WebSocket服务
participant S as 后端服务
participant R as 机器人设备
C->>W: 建立WebSocket连接
W->>S: 订阅机器人状态
R->>S: 上报状态数据
S->>W: 推送实时数据
W->>C: 广播状态更新
C->>C: 更新界面显示
```
## 🎨 UI/UX设计特色
### 主题系统
- **双主题支持**: 明亮主题和暗黑主题
- **动态切换**: 实时主题切换无需刷新
- **一致性设计**: 基于Ant Design设计语言
### 响应式布局
```scss
// 布局适配
.full {
width: 100%;
height: 100vh;
}
.editor-container {
background-color: transparent !important;
}
// 悬浮工具栏
.toolbar-container {
position: fixed;
bottom: 40px;
left: 50%;
transform: translateX(-50%);
}
```
### 交互体验
- **拖拽编辑**: 支持元素拖拽创建和编辑
- **快捷键**: 常用操作快捷键支持
- **上下文菜单**: 右键菜单功能
- **实时预览**: 编辑结果实时反馈
## 🔗 API接口设计
### RESTful API结构
#### 场景管理API
```typescript
// 获取场景详情
POST /scene/getById
Request: { id: string }
Response: SceneDetail
// 保存场景
POST /scene/saveById
Request: { id: string; json: string; png?: string }
// 推送场景到数据库
POST /scene/pushById
Request: { id: string }
// 获取组场景
POST /scene/getByGroupId
Request: { id: string; sid: string }
Response: GroupSceneDetail
```
#### 机器人管理API
```typescript
// 获取所有机器人
POST / robot / getAll;
Response: Array<RobotInfo>;
// 注册机器人
POST / robot / register;
Request: RobotDetail;
Response: RobotInfo;
```
#### WebSocket实时通信
```typescript
// 场景监控WebSocket
WebSocket /scene/monitor/:id
// 实时数据格式
interface RobotRealtimeInfo {
id: string;
x: number; // X坐标
y: number; // Y坐标
angle: number; // 角度
active: boolean; // 是否激活
path: [number, number][]; // 路径轨迹
}
```
## 🚀 开发和部署
### 开发环境启动
```bash
# 安装依赖
npm install
# 或
pnpm install
# 启动开发服务器
npm run start
# 访问 http://localhost:8888
```
### 构建和部署
```bash
# 构建生产版本
npm run build
# 预览构建结果
npm run preview
```
### 项目配置
#### Vite配置特色
```typescript
export default defineConfig({
plugins: [
vue(),
Components({
dts: true,
resolvers: [
AntDesignVueResolver({
importStyle: false,
resolveIcons: true,
}),
],
}),
],
// 路径别名
resolve: {
alias: {
'@': resolve(__dirname, 'src/pages/'),
'@api': resolve(__dirname, 'src/apis/'),
'@common': resolve(__dirname, 'src/components/'),
'@core': resolve(__dirname, 'src/services/'),
},
},
// 开发服务器
server: {
port: 8888,
host: true,
proxy: {
// API代理配置
},
},
});
```
## 🔧 核心服务详解
### 1. 主题服务 (Theme Service)
- 支持明暗主题切换
- 动态CSS变量管理
- 主题配置持久化存储
### 2. 国际化服务 (Locale Service)
- 多语言支持框架
- 动态语言切换
- 语言包懒加载
### 3. HTTP服务 (HTTP Service)
- 基于Axios的请求封装
- 请求/响应拦截器
- 错误统一处理
### 4. WebSocket服务 (WS Service)
- 实时通信连接管理
- 自动重连机制
- 消息队列处理
## 📈 性能优化策略
### 代码分割
- 路由级别懒加载
- 组件按需导入
- 第三方库代码分割
### 构建优化
```typescript
build: {
target: 'es2020',
outDir: 'dist',
sourcemap: false,
minify: 'esbuild',
chunkSizeWarningLimit: 2000
}
```
### 运行时优化
- 虚拟滚动大列表
- 图片懒加载
- 防抖节流处理
- 内存泄漏防护
## 🛡️ 代码质量保障
### 类型安全
- 完整的TypeScript类型定义
- 严格的类型检查配置
- 接口类型统一管理
### 代码规范
```json
{
"eslint": "代码质量检查",
"prettier": "代码格式化",
"stylelint": "样式规范检查",
"husky": "Git钩子管理"
}
```
### 测试策略
- 组件单元测试
- API接口测试
- E2E端到端测试
## 🔮 未来发展规划
### 功能扩展
- [ ] 3D场景编辑支持
- [ ] AI路径优化算法
- [ ] 多机器人协作调度
- [ ] 实时视频监控集成
### 技术升级
- [ ] Vue 3.6+ 新特性应用
- [ ] WebGL图形渲染优化
- [ ] PWA渐进式Web应用
- [ ] 微前端架构迁移
## 📞 技术支持
### 开发团队联系方式
- 技术负责人: [联系信息]
- 项目经理: [联系信息]
- 运维支持: [联系信息]
### 文档更新
- 最后更新时间: 2024年12月
- 文档版本: v1.0.0
- 维护状态: 积极维护中
---
**注意**: 本文档基于项目当前状态生成,随着项目发展会持续更新。如有疑问或建议,请联系开发团队。