44e77dcb0e
**重构前**(旧编号 02-11): - docs/02-产品需求/ → 00 产品规划/PRD - docs/03-技术架构/ → 01-05 子目录散落 - docs/04-原型设计/ → 01-02 产品设计(HTML 原型) - docs/05-原型设计/ → screens/ - docs/06-测试素材/ → 02-E2E / 03-功能 / 04-版本测试 - docs/07-项目管理/ → 任务说明书/日报/计划 - docs/08-安全审计/ → 审计报告 - docs/09-堡垒运维/ → toolbox / deploy - docs/10-项目管理/ → 任务说明书(重复) - docs/11-历史归档/ → deploy-nas-archived **重构后**(新编号 00-07,语义化): - docs/00-产品开发流程与文档管理规范.md - docs/00-版本迭代总览.md - docs/01-产品文档/ (PRD/原型/认证/会话/AI 服务/坐席/集成) - docs/02-技术文档/ (技术方案/架构图/重构记录/前端改造/实现配置) - docs/03-测试文档/ (E2E/功能用例/版本报告/缺陷单) - docs/04-运维文档/ (部署运维/运维指南) - docs/05-运营文档/ (品牌推广/用户手册) - docs/06-安全审计/ (审计报告) - docs/07-项目管理/ (任务说明书/日报/计划/看板) **净收益**: - 目录编号与产品文档管理规范对齐(按文档阶段 01-07 编号) - 消除 02-产品需求 与 10-项目管理 的编号重叠 - 子目录按文档类型分组(如 01-产品文档/00-产品规划、01-产品文档/01-认证与登录) - 把运维/安全/项目管理从 0X 散落改为 04/06/07 合计 494 文件 + 78495 行 / - 14076 行
259 lines
10 KiB
Markdown
259 lines
10 KiB
Markdown
# 智能IT支持服务台 — 项目迁移文档
|
||
**生成时间**:2026-06-06
|
||
**来源项目**:`C:\Users\simon\wecom_it_smart_desk`
|
||
**原型文件**:`C:\Users\simon\WorkBuddy\2026-05-21-16-57-26\agent-workspace-v5_3.html`
|
||
|
||
---
|
||
|
||
## 一、项目概览
|
||
|
||
| 项目 | 路径 | 技术栈 |
|
||
|------|------|---------|
|
||
| 后端 | `C:\Users\simon\wecom_it_smart_desk\backend` | Python 3.12 + FastAPI + SQLAlchemy |
|
||
| 前端(坐席工作台) | `C:\Users\simon\wecom_it_smart_desk\frontend-agent` | Vue 3 + TypeScript + Vite + Element Plus + Pinia |
|
||
| 原型 HTML | `C:\Users\simon\WorkBuddy\2026-05-21-16-57-26\agent-workspace-v5_3.html` | 单文件,v5.3 定版 |
|
||
| 服务器 | `10.80.0.129` | Docker Compose (postgres + redis + backend + nginx) |
|
||
|
||
---
|
||
|
||
## 二、锁定的设计决策(迁移后必须遵守)
|
||
|
||
### 2.1 原型规范
|
||
- ✅ **原型 v5.3 已锁定**(`agent-workspace-v5_3.html`),调整样式前必须与用户确认
|
||
- ✅ 用户偏好**深色科技风 UI**,原型**必须使用中文**
|
||
- ✅ 所有修改基于现有面板内调整,**不另开新页面**
|
||
- ✅ 聊天区域应缩小,给侧栏更多空间
|
||
|
||
### 2.2 布局架构(三栏)
|
||
```
|
||
┌──────────┬────────────────────────┬──────────────┐
|
||
│ 左栏 │ 中栏 │ 右栏 │
|
||
│ (240px) │ (flex:1 自适应) │ (320px) │
|
||
│ │ │ │
|
||
│ 会话列表 │ UserInfoBar │ AI 智能推荐 │
|
||
│ 搜索框 │ TroubleshootBar │ 快速回复 │
|
||
│ 待办事项 │ 消息列表 │ (三层导航) │
|
||
│ │ ReplyBox (输入框) │ │
|
||
└──────────┴────────────────────────┴──────────────┘
|
||
```
|
||
|
||
### 2.3 关键交互规则
|
||
| 功能 | 规则 |
|
||
|------|------|
|
||
| 排查步骤栏 | 始终可见(不可收起),位于 UserInfoBar 下方、消息列表上方 |
|
||
| 全流程图 | 默认收起,通过 `▶` / `▼` 三角图标切换 |
|
||
| 用户信息栏展开箭头 | 收起 `▶`(向右)→ 展开 `▼`(向下,CSS `rotate(90deg)`) |
|
||
| AI 推荐 | **仅在右边栏**,不在中间栏内联显示 |
|
||
| 快速回复 | 三层渐进导航:L1(7列grid) → L2(chip流式) → L3(列表) |
|
||
| 主题切换 | 浅色(`:root`) / 深色(`[data-theme="dark"]`) 双主题 |
|
||
| 输入框 | `resize: vertical` 手动拖拽 + `autosize` 最大 8 行 + `max-height: 200px` |
|
||
|
||
---
|
||
|
||
## 三、原型 v5.3 布局细节(已确认的终版)
|
||
|
||
> **文件**:`C:\Users\simon\WorkBuddy\2026-05-21-16-57-26\agent-workspace-v5_3.html`
|
||
|
||
### 3.1 中间栏(center-column)DOM 顺序
|
||
```html
|
||
<div class="center-column">
|
||
<div class="chat-view"> <!-- 整个聊天视图容器 -->
|
||
<div class="user-info-bar"> <!-- 用户信息栏(含6卡片展开详情) -->
|
||
<div class="user-detail-panel"> <!-- 展开详情(默认收起) -->
|
||
<div class="troubleshoot-bar" id="tsBar"> <!-- 排查步骤(紧跟用户信息栏) -->
|
||
<div class="ts-header"> <!-- 标题行:[🔧 排查步骤] [①→②→③→④→⑤] [▶] -->
|
||
<div class="chat-messages"> <!-- 消息列表 -->
|
||
<div class="chat-input-area"> <!-- 输入框区域 -->
|
||
<textarea autosize maxRows=8 resize=vertical>
|
||
</div> <!-- chat-view 闭合标签 -->
|
||
<div class="sidebar-right"> <!-- 右边栏(AI推荐 + 快速回复) -->
|
||
</div>
|
||
```
|
||
|
||
### 3.2 排查步骤栏(ts-header 单行布局)
|
||
```html
|
||
<div class="ts-header">
|
||
<span class="ts-title">🔧 排查步骤</span>
|
||
<el-select>...</el-select> <!-- 模板选择下拉 -->
|
||
<div class="ts-path-inline"> <!-- 内联路径步骤 -->
|
||
<span class="path-step-inline done">① 确认版本</span>
|
||
<span class="path-arrow-inline">→</span>
|
||
...
|
||
</div>
|
||
<span class="ts-flowchart-toggle">▶</span> <!-- 三角切换图标 -->
|
||
</div>
|
||
```
|
||
|
||
### 3.3 用户信息栏展开箭头
|
||
```css
|
||
.user-info-bar.expanded .expand-icon {
|
||
transform: rotate(90deg); /* ▶ 旋转后变成 ▼ */
|
||
}
|
||
```
|
||
```html
|
||
<span class="expand-icon">▶</span> <!-- 收起时向右,展开时向下 -->
|
||
```
|
||
|
||
---
|
||
|
||
## 四、Vue 3 项目 — 已修改文件清单
|
||
|
||
### 4.1 核心视图
|
||
| 文件 | 修改内容 |
|
||
|------|---------|
|
||
| `src/views/Workspace.vue` | `onMounted` 添加 `fetchConversations()` + 自动选第一个会话;`assistantVisible` 默认 `true` |
|
||
| `src/components/chat/ChatArea.vue` | 移除 `AiRecommendInline`;`TroubleshootBar` 位置调整到 `UserInfoBar` 下方;移除重复的第一个 `TroubleshootBar` |
|
||
|
||
### 4.2 聊天组件
|
||
| 文件 | 修改内容 |
|
||
|------|---------|
|
||
| `src/components/chat/UserInfoBar.vue` | 展开箭头 `▶` → `▼`(rotate 90deg),之前方向反了 |
|
||
| `src/components/chat/TroubleshootBar.vue` | 路径步骤合并到标题行;展开按钮简化为三角 `▶`/`▼` |
|
||
| `src/components/chat/ReplyBox.vue` | `autosize` 上限 4→8 行;`resize: none` → `resize: vertical`;支持手动拖拽 |
|
||
| `src/components/chat/AiRecommendInline.vue` | 已从 `ChatArea.vue` 移除引用(AI推荐仅保留右边栏) |
|
||
|
||
### 4.3 右边栏组件
|
||
| 文件 | 修改内容 |
|
||
|------|---------|
|
||
| `src/components/assistant/AiAssistantPanel.vue` | 右边栏主容器(AI推荐 + 快速回复) |
|
||
| `src/components/assistant/QuickReplyPanel.vue` | 三层渐进导航,L1 七类,数据源 `src/data/qrData.ts` |
|
||
| `src/components/assistant/RiskAlert.vue` | 风险告警组件 |
|
||
| `src/components/assistant/OperationSteps.vue` | 操作步骤组件 |
|
||
|
||
### 4.4 状态管理(Stores)
|
||
| 文件 | 修改内容 |
|
||
|------|---------|
|
||
| `src/stores/conversation.ts` | `fetchConversations()` DEV 环境 Mock 兜底;自动选中第一个会话 |
|
||
| `src/stores/agent.ts` | `initAuth()` 检查 localStorage token |
|
||
| `src/stores/todo.ts` | 待办事项 Mock 数据 |
|
||
| `src/composables/useWebSocket.ts` | WebSocket 直连后端 `ws://localhost:8000/ws/{agentId}` |
|
||
|
||
### 4.5 样式
|
||
| 文件 | 修改内容 |
|
||
|------|---------|
|
||
| `src/styles/global.css` | `.reply-box .el-textarea__inner { max-height: 200px; }`;`.message-list-scroll { flex: 1; overflow-y: auto; }` |
|
||
|
||
### 4.6 数据
|
||
| 文件 | 说明 |
|
||
|------|------|
|
||
| `src/data/qrData.ts` | 快速回复 180 条(7大类 × 28子类),TypeScript 类型化 |
|
||
|
||
---
|
||
|
||
## 五、后端关键修改(参考)
|
||
|
||
> 路径:`C:\Users\simon\wecom_it_smart_desk\backend`
|
||
|
||
| 文件 | 修改内容 |
|
||
|------|---------|
|
||
| `app/services/session_service.py` | `get_conversations()` 排序改为 Python 侧(SQLite 不支持 JSONB 操作符) |
|
||
| `app/main.py` | 添加 `dify_conversation_id` 列(PostgreSQL) |
|
||
| `app/models/todo_item.py` | TodoItem 模型 |
|
||
| `app/models/troubleshooting_template.py` | TroubleshootingTemplate 模型 |
|
||
|
||
---
|
||
|
||
## 六、已修复的关键 Bug(迁移后注意)
|
||
|
||
### Bug 1:会话列表不显示 / 页面空白
|
||
**根因**:`Workspace.vue` `onMounted` 未调用 `fetchConversations()`,`currentConversation` 始终为 `null`,`ChatArea` 不渲染。
|
||
**修复**:`onMounted` 中添加 `await conversationStore.fetchConversations()` + 自动选中第一个会话。
|
||
|
||
### Bug 2:AI 推荐同时出现在中间栏和右边栏
|
||
**根因**:`ChatArea.vue` 中引入了 `<AiRecommendInline />` 组件。
|
||
**修复**:移除 `ChatArea.vue` 中的 `AiRecommendInline` 模板、import、ref、`onAiRecommend` 快捷键绑定。
|
||
|
||
### Bug 3:原型 HTML 右边栏显示在中栏内部
|
||
**根因**:`<div class="chat-view">` 缺少 `</div>` 闭合标签,浏览器把 `sidebar-right` 解析为 `center-column` 的子元素。
|
||
**修复**:在 `chat-input-area` 关闭后补 `</div>` 闭合 `chat-view`。
|
||
|
||
### Bug 4:排查步骤栏出现两个(上下重复)
|
||
**根因**:`ChatArea.vue` 模板里有两个 `<TroubleshootBar />`(一个在 UserInfoBar 下方,一个在 ReplyBox 下方)。
|
||
**修复**:删除 ReplyBox 下方的重复 `<TroubleshootBar />`。
|
||
|
||
### Bug 5:用户信息栏展开箭头方向反了
|
||
**根因**:收起时 `▼`,展开时 `▲`(CSS `rotate(180deg)`)。
|
||
**修复**:收起 `▶`,展开 `▼`(CSS `rotate(90deg)`)。
|
||
|
||
### Bug 6:会话列表 API 500 错误
|
||
**根因**:`session_service.py` 用 SQL 侧 `case()` + `tags["hand_raise"].as_boolean()` 排序,SQLite 不支持 JSONB 操作符。
|
||
**修复**:排序改为 Python 侧 `_sort_key()` 函数实现。
|
||
|
||
---
|
||
|
||
## 七、服务器部署状态
|
||
|
||
| 项目 | 状态 |
|
||
|------|------|
|
||
| 服务器地址 | `10.80.0.129` |
|
||
| Docker Compose 容器 | `postgres`, `redis`, `backend`, `nginx` |
|
||
| nginx | 已修复 301 重定向和 API 双重前缀问题 |
|
||
| PostgreSQL | 已添加 `dify_conversation_id` 列 |
|
||
| Redis | `it-desk-redis` 容器中运行中 |
|
||
|
||
---
|
||
|
||
## 八、知识库
|
||
|
||
| 项目 | 状态 |
|
||
|------|------|
|
||
| 数据源 | `IT支持知识库2026-4-24.docx` |
|
||
| 快速回复条数 | 180 条(7大类 × 28子类) |
|
||
| 前端数据文件 | `frontend-agent/src/data/qrData.ts` |
|
||
| 原型数据文件 | `agent-workspace-v5_3.html` 内联(因 file:// CORS 限制) |
|
||
|
||
---
|
||
|
||
## 九、迁移 checklist
|
||
|
||
### 备份这些文件/目录:
|
||
```
|
||
# 原型
|
||
C:\Users\simon\WorkBuddy\2026-05-21-16-57-26\agent-workspace-v5_3.html
|
||
|
||
# 前端项目(整体复制)
|
||
C:\Users\simon\wecom_it_smart_desk\frontend-agent\
|
||
|
||
# 后端项目(整体复制)
|
||
C:\Users\simon\wecom_it_smart_desk\backend\
|
||
|
||
# 项目记忆(WorkBuddy)
|
||
C:\Users\simon\WorkBuddy\2026-05-21-16-57-26\.workbuddy\memory\
|
||
```
|
||
|
||
### 新项目中需要重新配置:
|
||
- [ ] `.env` 文件(数据库连接、Redis、Dify API Key)
|
||
- [ ] `vite.config.ts` 中的 proxy 端口(当前 `5174`)
|
||
- [ ] Docker Compose 环境变量
|
||
- [ ] 服务器部署配置(`10.80.0.129`)
|
||
|
||
### 新项目中需要重新执行:
|
||
```bash
|
||
# 后端
|
||
cd backend
|
||
python -m venv venv
|
||
venv\Scripts\activate
|
||
pip install -r requirements.txt
|
||
# 初始化数据库
|
||
alembic upgrade head # 或 python -m app.db.init_db
|
||
|
||
# 前端
|
||
cd frontend-agent
|
||
npm install
|
||
npm run dev # → http://localhost:5174/itagent/workspace
|
||
```
|
||
|
||
---
|
||
|
||
## 十、待完成任务(迁移后继续)
|
||
|
||
- [ ] 重启 dev server 验证所有修改已生效(当前修改已保存,需 Ctrl+C → npm run dev)
|
||
- [ ] 后端 AI 集成(Dify)代码修复(T02 任务)
|
||
- [ ] 前端方案评估(T03/T04)
|
||
- [ ] 企微回调服务器对接
|
||
- [ ] 生产环境部署验证
|
||
|
||
---
|
||
|
||
*此文档由 WorkBuddy 自动生成,汇总了 2026-05-21 至 2026-06-06 的所有工作内容。*
|