# 灵越智报 Vue Demo

基于 Vue 3 + Vite + Element Plus 的前端演示项目，用于测试模板系统 API。

## 技术栈

- **Vue 3** - 渐进式 JavaScript 框架
- **Vite** - 下一代前端构建工具
- **Element Plus** - Vue 3 UI 组件库
- **Pinia** - Vue 状态管理
- **Vue Router** - 路由管理
- **Axios** - HTTP 客户端
- **Sass** - CSS 预处理器

## 功能模块

### 1. 首页 (Home)
- 统计概览（报告数、模板数、文档数）
- AI 对话入口
- 推荐模板展示
- 快捷操作入口

### 2. 模板管理 (Templates)
- 模板列表展示
- 模板搜索和筛选
- 创建新模板
- 模板发布、归档、复制、删除

### 3. 编辑器 (Editor)
- 文档内容编辑
- **变量标记**：选中文本后右键标记为变量
- 来源文件管理
- 变量管理面板
- 按类别分组显示变量
- 知识图谱弹窗（开发中）

### 4. 生成记录 (Generations)
- 生成任务列表
- 创建新生成任务
- 执行变量提取
- 确认并生成文档
- 下载生成的文档

## 快速开始

### 1. 安装依赖

```bash
cd frontend/vue-demo
npm install
```

### 2. 启动开发服务器

```bash
npm run dev
```

访问 http://localhost:5173

### 3. 连接后端 API

Vite 开发服务器已配置代理，将 `/api` 请求转发到 `http://localhost:18521`（extract-service）。

确保后端服务已启动：

```bash
cd backend/lingyue-starter
mvn spring-boot:run
```

## 项目结构

```
vue-demo/
├── index.html           # 入口 HTML
├── package.json         # 项目配置
├── vite.config.js       # Vite 配置
├── src/
│   ├── main.js          # 应用入口
│   ├── App.vue          # 根组件
│   ├── api/
│   │   └── index.js     # API 封装
│   ├── assets/
│   │   └── main.scss    # 全局样式
│   ├── components/      # 公共组件
│   ├── router/
│   │   └── index.js     # 路由配置
│   ├── stores/
│   │   └── template.js  # 模板状态管理
│   └── views/
│       ├── Home.vue           # 首页
│       ├── Templates.vue      # 模板列表
│       ├── TemplateDetail.vue # 模板详情
│       ├── Editor.vue         # 编辑器
│       ├── Generations.vue    # 生成记录列表
│       └── GenerationDetail.vue # 生成任务详情
```

## API 接口

### 模板 API
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/v1/templates` | GET | 获取模板列表 |
| `/api/v1/templates/{id}` | GET | 获取模板详情 |
| `/api/v1/templates` | POST | 创建模板 |
| `/api/v1/templates/{id}` | PUT | 更新模板 |
| `/api/v1/templates/{id}` | DELETE | 删除模板 |
| `/api/v1/templates/{id}/publish` | POST | 发布模板 |
| `/api/v1/templates/{id}/variables` | GET | 获取变量列表 |
| `/api/v1/templates/{id}/variables/grouped` | GET | 按类别分组获取变量 |

### 生成任务 API
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/v1/generations` | GET | 获取任务列表 |
| `/api/v1/generations/{id}` | GET | 获取任务详情 |
| `/api/v1/generations` | POST | 创建任务 |
| `/api/v1/generations/{id}/execute` | POST | 执行提取 |
| `/api/v1/generations/{id}/confirm` | POST | 确认生成 |
| `/api/v1/generations/{id}/download` | GET | 下载文档 |

## 变量类别

| 类别 | 标识 | 颜色 | 说明 |
|------|------|------|------|
| 核心实体 | entity | 蓝色 #1890ff | 项目名称、公司名等 |
| 概念/技术 | concept | 紫色 #722ed1 | 技术方案、概念等 |
| 数据/指标 | data | 绿色 #52c41a | 金额、数量、比例等 |
| 地点/组织 | location | 橙色 #faad14 | 地点、部门等 |
| 资源模板 | asset | 粉色 #eb2f96 | 图表、模板等 |

## 开发说明

### Mock 数据

当前版本使用 Mock 数据进行演示，实际使用时需要：

1. 启动后端服务
2. 移除组件中的 Mock 数据
3. 使用 API 获取真实数据

### 自定义主题

修改 `src/assets/main.scss` 中的 CSS 变量：

```scss
:root {
  --primary: #1890ff;
  --primary-dark: #096dd9;
  --primary-light: #e6f7ff;
  // ...
}
```

## 构建部署

```bash
# 构建生产版本
npm run build

# 预览构建结果
npm run preview
```

构建产物在 `dist/` 目录，可部署到 Nginx 等静态服务器。
