Files
assist/frontend/README.md

212 lines
4.3 KiB
Markdown
Raw Normal View History

# TSP智能助手前端
基于 Vue 3 + TypeScript + Element Plus 的现代化前端应用。
## 技术栈
- **Vue 3** - 渐进式 JavaScript 框架
- **TypeScript** - JavaScript 的超集,提供类型安全
- **Element Plus** - Vue 3 组件库
- **Vite** - 快速构建工具
- **Vue Router** - 官方路由管理器
- **Pinia** - 状态管理库
- **Vue I18n** - 国际化解决方案
- **Socket.IO** - 实时通信
- **ECharts** - 数据可视化
## 项目结构
```
frontend/
├── src/
│ ├── components/ # 公共组件
│ │ └── ChatWidget.vue # 聊天组件
│ ├── views/ # 页面组件
│ │ ├── Dashboard.vue # 仪表板
│ │ ├── Chat.vue # 聊天页面
│ │ ├── Alerts.vue # 预警管理
│ │ ├── AlertRules.vue # 预警规则
│ │ ├── Knowledge.vue # 知识库
│ │ ├── FieldMapping.vue # 字段映射
│ │ └── System.vue # 系统设置
│ ├── stores/ # 状态管理
│ │ ├── useAppStore.ts # 应用状态
│ │ ├── useChatStore.ts # 聊天状态
│ │ └── useAlertStore.ts # 预警状态
│ ├── router/ # 路由配置
│ ├── i18n/ # 国际化
│ ├── App.vue # 根组件
│ └── main.ts # 入口文件
├── package.json
├── vite.config.ts
├── tsconfig.json
└── README.md
```
## 功能特性
### 🎯 核心功能
- **统一聊天系统** - 支持首页和独立页面的聊天功能
- **预警管理** - 实时预警监控和规则管理
- **知识库管理** - 智能知识库的增删改查
- **字段映射** - 灵活的字段映射配置
- **系统监控** - 系统状态和性能监控
### 🌍 国际化支持
- 支持中文/英文切换
- 完整的国际化文本覆盖
- Element Plus 组件国际化
### 🎨 现代化UI
- 响应式设计,支持移动端
- 暗色/亮色主题切换
- 优雅的动画效果
- 统一的视觉风格
### 🔧 开发体验
- TypeScript 类型安全
- 组件自动导入
- 热重载开发
- ESLint 代码规范
## 快速开始
### 安装依赖
```bash
cd frontend
npm install
```
### 开发模式
```bash
npm run dev
```
访问 http://localhost:3000
### 构建生产版本
```bash
npm run build
```
构建文件将输出到 `../src/web/static/dist`
### 类型检查
```bash
npm run type-check
```
## 开发指南
### 添加新页面
1.`src/views/` 创建新的 Vue 组件
2.`src/router/index.ts` 添加路由配置
3.`src/i18n/locales/` 添加国际化文本
4.`src/layout/index.vue` 添加导航菜单
### 添加新组件
1.`src/components/` 创建组件
2. 使用 TypeScript 定义 props 和 emits
3. 添加必要的样式
### 状态管理
使用 Pinia 进行状态管理:
```typescript
// stores/useExampleStore.ts
import { defineStore } from 'pinia'
export const useExampleStore = defineStore('example', () => {
const state = ref('')
const action = () => {
// 状态更新逻辑
}
return { state, action }
})
```
### 国际化
在组件中使用:
```vue
<template>
<div>{{ $t('common.save') }}</div>
</template>
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
console.log(t('common.save'))
</script>
```
## API 集成
### HTTP 请求
使用 axios 进行 API 调用:
```typescript
import axios from 'axios'
const response = await axios.get('/api/alerts')
```
### WebSocket 连接
使用 Socket.IO 进行实时通信:
```typescript
import { io } from 'socket.io-client'
const socket = io('ws://localhost:8765')
socket.on('message', (data) => {
// 处理消息
})
```
## 部署说明
### 开发环境
前端开发服务器运行在端口 3000通过代理访问后端 API
- API 请求代理到 `http://localhost:5000`
- WebSocket 代理到 `ws://localhost:8765`
### 生产环境
1. 运行 `npm run build` 构建生产版本
2. 构建文件输出到 `../src/web/static/dist`
3. 后端 Flask 应用会直接提供静态文件服务
## 浏览器支持
- Chrome >= 87
- Firefox >= 78
- Safari >= 14
- Edge >= 88
## 贡献指南
1. Fork 项目
2. 创建功能分支
3. 提交更改
4. 推送到分支
5. 创建 Pull Request
## 许可证
MIT License