# 数智 AI 聊天前端页面实现计划
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** 在 `src/views/frontend` 目录下实现完整的数智 AI 聊天页面,包含左侧会话列表、聊天窗口、输入区(含@引用文件)、右侧文件列表面板。
**Architecture:** 采用 Vue 3 Composition API + Element Plus + SCSS,主页面 `index.vue` 整合各子组件,各组件职责单一,通过 props/emit 通信。
**Tech Stack:** Vue 3, Element Plus, SCSS
---
## 文件结构
```
src/views/frontend/
├── index.vue # 主页面
└── components/
├── ConversationSidebar.vue # 左侧会话列表
├── ChatHeader.vue # 顶部栏
├── ChatWindow.vue # 聊天消息区
├── InputArea.vue # 输入区域(含@引用)
├── FilePanel.vue # 右侧文件列表面板
├── FileSelectModal.vue # @文件选择弹层
└── QuotedFiles.vue # 已引用文件区域
```
---
## Task 1: 创建目录结构
- [ ] **Step 1: 创建 components 目录**
```bash
mkdir -p src/views/frontend/components
```
---
## Task 2: 创建 ConversationSidebar.vue(左侧会话列表)
**Files:**
- Create: `src/views/frontend/components/ConversationSidebar.vue`
- [ ] **Step 1: 创建组件文件**
```vue
```
---
## Task 3: 创建 ChatHeader.vue(顶部栏)
**Files:**
- Create: `src/views/frontend/components/ChatHeader.vue`
- [ ] **Step 1: 创建组件文件**
```vue
```
---
## Task 4: 创建 ChatWindow.vue(聊天消息区)
**Files:**
- Create: `src/views/frontend/components/ChatWindow.vue`
- [ ] **Step 1: 创建组件文件**
```vue
```
---
## Task 5: 创建 QuotedFiles.vue(已引用文件区域)
**Files:**
- Create: `src/views/frontend/components/QuotedFiles.vue`
- [ ] **Step 1: 创建组件文件**
```vue
```
---
## Task 6: 创建 FileSelectModal.vue(@文件选择弹层)
**Files:**
- Create: `src/views/frontend/components/FileSelectModal.vue`
- [ ] **Step 1: 创建组件文件**
```vue
```
---
## Task 7: 创建 InputArea.vue(输入区域)
**Files:**
- Create: `src/views/frontend/components/InputArea.vue`
- [ ] **Step 1: 创建组件文件**
```vue
```
---
## Task 8: 创建 FilePanel.vue(右侧文件列表面板)
**Files:**
- Create: `src/views/frontend/components/FilePanel.vue`
- [ ] **Step 1: 创建组件文件**
```vue
```
---
## Task 9: 创建 index.vue(主页面整合)
**Files:**
- Create: `src/views/frontend/index.vue`
- [ ] **Step 1: 创建主页面**
```vue
```
---
## Task 10: 配置路由
**Files:**
- Modify: `src/router/index.js`
- [ ] **Step 1: 添加前端路由**
在 `dynamicRoutes` 中添加:
```javascript
{
path: '/frontend',
component: Layout,
children: [
{
path: 'index',
component: () => import('@/views/frontend/index'),
name: 'Frontend',
meta: { title: '数智 AI' }
}
]
}
```
---
## Task 11: 测试验证
- [ ] **Step 1: 启动开发服务器验证**
```bash
npm run dev
```
访问 `/frontend/index` 验证:
1. 左侧会话列表可折叠/展开
2. 点击会话切换聊天窗口
3. 顶部栏智能体(默认选中)和文件按钮
4. 输入框 @ 触发文件选择弹层
5. 点击文件按钮展开右侧文件面板
6. 文件树可点击预览/编辑/保存
7. 布局自适应
---
## 自检清单
- [ ] Spec 覆盖:每个设计功能都有对应实现
- [ ] 占位符检查:无 TBD/TODO/待实现
- [ ] 类型一致性:组件 props/emit 命名一致
- [ ] 组件独立:每个组件职责单一