diff --git a/docs/08_Design_Rules/DR04_ChatFirst_Redesign.md b/docs/08_Design_Rules/DR04_ChatFirst_Redesign.md new file mode 100644 index 0000000..20a3d0b --- /dev/null +++ b/docs/08_Design_Rules/DR04_ChatFirst_Redesign.md @@ -0,0 +1,164 @@ +# DR04 — 全局 Chat-First(WorkBuddy 风格)改造方案 + +> **版本:V1.1** +> **日期:2026-09-14** +> **状态:实施中——路由接入 + 外壳重写已完成,AI 工具逐页迁移进行中** +> **目标对齐:** `eai_agentplatform/frontend/src/views/tools/CHAT_UI_PREVIEW.html` +> **参考:** `CHAT_FIRST_REDESIGN_PLAN.md` + +--- + +## 0. 命名统一(改造前置要求) + +> 本项目为 **数字员工平台 / AI Agent 平台(eai_agentplatform)**,不再是旧培训平台。 +> 改造过程中,**必须移除 / 替换**所有旧培训平台命名与标题: + +| 旧命名(需移除/替换) | 统一替换为 | +|---|---| +| `eaisalestrain_app` / `eai_ap_app` / `pj0231` | `eai_agentplatform` / `数字员工平台` | +| 博昇内部培训平台 | 数字员工平台 / EAI Agent 平台 | +| 培训平台定位(知识库+考试+素材审批) | AI 数字员工平台定位 | + +- 涉及范围:`CLAUDE.md`、`CODING_RULES.md`、全部 `views/**` 与共享组件中的标题/文案、`docs` 相关文档。 +- `CHAT_UI_PREVIEW.html`、`CHAT_FIRST_REDESIGN_PLAN.md` 中的旧标题一并替换。 + +--- + +## 1. 改造目标(对齐 CHAT_UI_PREVIEW.html) + +| 视觉元素 | 定义 | +|---|---| +| 主动能区背景 | `#f0f2f5` 浅灰 | +| 侧边栏 | 窄 `220px`,可折叠至 `60px`;背景 `#f7f8fa`;含「新建任务」+ 主导航 + 任务列表 + 用户信息 | +| 顶栏 | 极简 `48px`:`选择工作空间 ▾` / `默认权限 ▾` + `🔔` | +| 主色 | 按钮渐变 `#409eff→#2b63d9`;激活高亮 `#e1effe` | +| 欢迎态 | 大标题 + 分类胶囊 + 模式胶囊 + 大输入框(文件/语音/引用)+ 圆形发送钮 + 最佳实践卡片 | +| 聊天态 | 用户右对齐深蓝 `#2b63d9`,AI 左对齐白底卡片,消息操作钮(复制/下载/追问) | +| 圆角 / 描边 / 阴影 | `10-16px`、`#e8ecf1`、柔和阴影 | + +--- + +## 2. 改造范围与策略 + +### 2.1 全局外壳(MainLayout.vue → WorkBuddy Shell) +- 移除:深蓝渐变顶栏(72px)、应用卡片左栏、底部运行面板。 +- 新增:极简顶栏 + 窄侧边栏(新建任务 / 助理 / 项目 / 专家·技能·连接器 / 定时任务 / 资料库 / 更多 / 任务列表 / 用户信息)。 +- 内容区承载 Welcome 态 / Chat 态两种容器。 +- **保留全部路由与业务跳转,仅改外观与信息架构。** + +### 2.2 AI 工具页(完整 Chat-First) +| 页面 | 落地 | +|---|---| +| 智能助手 `SmartAssistantPage.vue` | 完整 Chat 优先 | +| 文档翻译 / 文案校对 / 语音转写 / 批量提取 | 表单 → Chat + 文件上传 | +| 合同审查 | Chat + 可展开配置面板 | +| 报告生成 | 保留复合表单,统一视觉 | + +复用已有组件并统一到预览标准:`ChatLayout.vue` / `ChatInputBar.vue` / `ChatMessage.vue` / `HistorySidebar.vue`。 +新增共享组件:全局顶栏、Welcome 欢迎态、分类/模式胶囊、最佳实践卡片。 + +### 2.3 业务页面(保留功能,统一视觉) +首页、工作台(专员/市场/工坊/知识库/控制台)、考试、系统管理、产品、课程等页面: +**保留现有内容与交互逻辑**,仅统一采用 WorkBuddy 视觉语言,并嵌入全局外壳容器。 + +--- + +## 3. 分阶段实施 + +1. **外壳**:重写 `MainLayout.vue` 为 WorkBuddy Shell + 极简顶栏。 +2. **基建**:统一 `ChatLayout` 等共享组件到预览标准。 +3. **AI 工具**:逐页 Chat-First(助手→翻译→校对→转录→提取→审查)。 +4. **业务页**:逐页统一视觉,接入新外壳。 +5. **命名替换**:按第 0 节替换旧培训标题/文案。 +6. **回归**:全部路由可达、登录/权限、交互不被破坏。 + +--- + +## 4. 影响与风险 + +- 改动面大:`MainLayout.vue`、全部 `views/**`、共享组件、`global.css`。 +- 业务逻辑不变,仅视觉与信息架构变化。 +- 建议分批提交、可回滚。 + +--- + +## 5. 实施记录 + +### 5.1 已拍板决策 + +| 议题 | 决定 | +|---|---| +| 入口模型 | **Chat-First 为主入口,`/apps/*` 业务工作台页面退役** | +| 推进顺序 | **先接路由导航,再改视觉** | + +### 5.2 关键发现:Chat-First 页面此前「不可达」 + +阶段 1 之前,`grep -rn "tools/" src/ --include=*.vue --include=*.js | grep -v "views/tools/"` **无任何输出**—— +即没有任何 `router.push` / `` / 配置项指向 `/tools/*` 或 `/report-gen`。 + +commit `5c0870a` 的 Chat 界面并非损坏,而是**入口全部指向 `/apps/*`**(渲染 `BusinessAppPage.vue`,内含 0 个聊天组件)。 +用户只能手动敲 URL 才能看到新界面。**这不是旧代码问题,是路由未接入。** + +### 5.3 阶段完成情况 + +| 阶段 | 状态 | 说明 | +|---|---|---| +| 1. 路由接入 | ✅ 完成 | 新增 `chat-tools` 面;7 个 AI 工具入口;`/` 与登录后均落到 `/tools/smart-assistant` | +| 2. 外壳重写 | ✅ 完成 | `MainLayout.vue` 重写为 WorkBuddy Shell | +| 3. AI 工具逐页 | ⏳ 进行中 | 智能助手页面结构仍与预览有差异(大输入框未居中为主视觉) | +| 4. 业务页统一视觉 | ⏳ 未开始 | | +| 5. 命名替换 | ⏳ 部分 | `CLAUDE.md` / `global.css` / `Login.vue` 已改;`views/**` 存量待清 | +| 6. 回归 | ⏳ 未开始 | | + +### 5.4 外壳落地细节(阶段 2) + +- 单一侧边栏 `220px`(折叠 `60px`),背景 `#f7f8fa`,含「新建任务」渐变按钮 / 分组导航 / 底部用户信息。 +- 极简顶栏 `48px` 移入主列,含标题 / 搜索 / 通知 / 账号菜单。 +- **已移除**:深蓝渐变顶栏、应用卡片左栏、底部运行面板(`bottomTabs`)。 +- 保留工作区页签(不在移除清单内)。 +- 侧边栏导航项**按 `router.resolve()` 校验可达性**后再渲染,避免配置项变成死链。 + +### 5.5 侧边栏去重(重要) + +`ChatLayout.vue` 内部**自带一份与预览稿几乎一致的工作台侧边栏**(220px / `#f7f8fa`,含新建任务、助理、项目、专家·技能·连接器、定时任务、资料库、更多、任务列表)。 +外壳重写后,AI 工具页会**叠出两条 220px 侧边栏(共 440px)**。 +核查其后端支撑: + +- 导航项(助理/项目/定时任务/资料库/更多)仅 `emit` 事件,**无任何路由**,纯装饰。 +- 任务列表来自硬编码数组(`SmartAssistantPage.vue` 中 `taskItems = ref([...])`,`:history-count="5"` 为字面量),**系统内无会话存储**。 +- 唯一真实功能是「新建任务」→ `handleNewChat` 重置消息。 + +**处置:** 全局外壳是唯一侧边栏。`ChatLayout` 新增 `showSidebar` 属性,**默认 `false`**;浮动折叠把手同样受控。 +外壳「新建任务」通过 `window` 事件 `wb:new-task` 广播,`ChatLayout` 监听后转 `newChat` 事件, +使 6 个 AI 工具页无需各自改造即可保留重置行为。 + +### 5.6 与预览稿的有意偏离 + +预览稿顶栏含 `选择工作空间 ▾` / `默认权限 ▾`,侧边栏含「定时任务」「项目」。 +本系统**无对应数据与路由**,故不照搬,改用真实可达路由填充导航——不制造无功能的装饰元素。 + +### 5.7 资料库降为一级入口 + 二级页签 + +**需求:** 资料库作为「AI 工具」下的一级菜单;其下二级菜单改为页签(不再占用侧边栏)。 + +**实现:** + +- 侧边栏「AI 工具」组新增单一入口「资料库」,指向 `knowledgeLinks[0]`; + 该入口带 `match: libraryRoutes`,在五个子路由任意一个下均保持高亮。 +- 原独立「资料库」分组移除(`knowledgeLinks` 五项不再逐条占位)。 +- 新增 `src/components/LibraryTabs.vue`:下划线式二级页签,位于内容区顶部、固定不随页面滚动; + 可见子项 ≤1 时不渲染;`知识库管理` 沿用 `adminOnly` 过滤(非管理员看不到该页签)。 + +**路由不变:** 五个子路由(`/knowledge-hub`、`/knowledge-management`、`/products`、`/courses`、`/company-train`) +保持原路径,深链与站内既有跳转不受影响——本次仅调整信息架构,未改路由表。 + +**内容区调整:** `.wb-content` 由 `overflow:auto` 改为 flex 列 + 内层 `.wb-content-scroll` 承担滚动, +使二级页签固定。页面自身滚动行为不变。 + +### 5.8 待处理 + +- **`/apps/*` 退役**:涉及 `BusinessAppPage.vue`、`businessApps` 配置、`workbench` store 持久化的 `openTabs`(默认值仍为 `/home`)。 +- **配置与路由不一致(既有缺陷)**:`businessApps` 有 10 项,路由仅定义 7 条 `/apps/*`。 + `logistics-fulfillment`、`hr-email-sorter`、`resume-processor` 三项**无路由**,且旧左栏(`getBusinessAppsByTier('industry')`,5 项中 3 项无路由)本就在渲染死链。 + 当前已在渲染层过滤;配置层清理随 `/apps/*` 退役一并处理。 +- `guards.js` 非管理员回退仍指向 `/home`(`5.3` 阶段 4 一并处理)。 diff --git a/docs/08_Design_Rules/README.md b/docs/08_Design_Rules/README.md index 4215c77..d64a442 100644 --- a/docs/08_Design_Rules/README.md +++ b/docs/08_Design_Rules/README.md @@ -13,3 +13,4 @@ | `DR01_Theme_System.md` | 主题系统(Element Plus 变量覆盖) | | `DR02_Navigation_Rules.md` | 导航规则(菜单/权限显示/路由守卫) | | `DR03_Interaction_Rules.md` | 交互规范(按钮状态/反馈/弹窗) | +| `DR04_ChatFirst_Redesign.md` | 全局 Chat-First(WorkBuddy 风格)改造方案 | diff --git a/eai_agentplatform/CLAUDE.md b/eai_agentplatform/CLAUDE.md index 7f90652..812e37b 100644 --- a/eai_agentplatform/CLAUDE.md +++ b/eai_agentplatform/CLAUDE.md @@ -1,8 +1,8 @@ -# eai_agentplatform_app 博昇内部培训平台 +# eai_agentplatform_app EAI 数字员工平台(AI Agent Platform) -纯内网本地化、内部专属员工培训系统。 -用于新人入职培训、公司认知、产品知识学习、销售能力培训、统一考试验收。 -配套全局 AI 助教 PathCoach,提供答疑、产品查询、销售情景演练。 +纯内网本地化的企业 AI 数字员工平台。 +围绕数字员工(专员)、知识库底座、自动化工坊、考试评估与系统管理组织业务能力。 +配套全局 AI 助手,提供答疑、知识查询、任务拆解与业务工具。 ## 技术栈 diff --git a/eai_agentplatform/PROJECT_STATE.md b/eai_agentplatform/PROJECT_STATE.md index d0b356a..860863a 100644 --- a/eai_agentplatform/PROJECT_STATE.md +++ b/eai_agentplatform/PROJECT_STATE.md @@ -5,9 +5,9 @@ ## 1. 项目是什么 -**eai_agentplatform_app** — 博昇内部培训平台。 -纯内网本地化、内部专属员工培训系统,用于新人入职培训、公司认知、产品知识学习、 -销售能力培训、统一考试验收。配套全局 AI 助教 PathCoach。 +**eai_agentplatform_app** — EAI 数字员工平台(AI Agent Platform)。 +纯内网本地化的企业 AI 数字员工平台,围绕数字员工(专员)、知识库底座、自动化工坊、 +考试评估与系统管理组织业务能力。配套全局 AI 助手。 ## 2. 当前状态 diff --git a/eai_agentplatform/backend-go/internal/api/ai_chat.go b/eai_agentplatform/backend-go/internal/api/ai_chat.go index 0463c0a..172f1ac 100644 --- a/eai_agentplatform/backend-go/internal/api/ai_chat.go +++ b/eai_agentplatform/backend-go/internal/api/ai_chat.go @@ -197,7 +197,7 @@ func ChatMessage(c *gin.Context) { func buildSystemPrompt(ctx map[string]any, knowledge []string) string { ctxJSON, _ := json.Marshal(ctx) kc := strings.Join(knowledge, "\n\n") - return fmt.Sprintf(`你是博昇内部培训平台的 AI 助教 PathCoach。 + return fmt.Sprintf(`你是 EAI 数字员工平台的 AI 助手。 职责: 1. 解答公司介绍、产品知识、佣金规则、销售话术、业务规则相关问题 diff --git a/eai_agentplatform/backend-go/internal/api/essay_grade.go b/eai_agentplatform/backend-go/internal/api/essay_grade.go index 92a72cf..b24bef4 100644 --- a/eai_agentplatform/backend-go/internal/api/essay_grade.go +++ b/eai_agentplatform/backend-go/internal/api/essay_grade.go @@ -17,7 +17,7 @@ func gradeEssay(userID uint, stem, rubric, userAnswer string) (float64, string, if err != nil { return 0, "", err } - systemPrompt := "你是培训平台阅卷老师。请严格依据「评分标准」对学员的简答题答案打分。" + + systemPrompt := "你是数字员工平台的阅卷助手。请严格依据「评分标准」对学员的简答题答案打分。" + "只输出一个 JSON 对象,格式:{\"score\": <0到1之间的得分率数字>, \"comment\": \"<一句中文评语>\"}。" + "不要输出任何其他内容。" userPrompt := "题目:" + stem + "\n评分标准:" + rubric + "\n学员答案:" + userAnswer diff --git a/eai_agentplatform/backend-go/internal/api/report_gen.go b/eai_agentplatform/backend-go/internal/api/report_gen.go index da929c8..15e7ca0 100644 --- a/eai_agentplatform/backend-go/internal/api/report_gen.go +++ b/eai_agentplatform/backend-go/internal/api/report_gen.go @@ -118,7 +118,7 @@ func retrieveReportKnowledge(topic string, spaceKey string) string { // promptReportWithSections 使用用户指定章节生成报告 func promptReportWithSections(req ReportGenRequest, knowledge string) []reportChapter { sectionsStr := strings.Join(req.Sections, "、") - systemPrompt := `你是博昇内部培训平台的报告生成引擎。你的任务是输出一份结构化的正式报告,语言为中文。` + systemPrompt := `你是 EAI 数字员工平台的报告生成引擎。你的任务是输出一份结构化的正式报告,语言为中文。` userPrompt := fmt.Sprintf(`请围绕以下主题撰写一份正式报告。 主题:%s @@ -154,7 +154,7 @@ func promptReportWithSections(req ReportGenRequest, knowledge string) []reportCh // promptReportAutoChapters 让 LLM 自动规划报告章节 func promptReportAutoChapters(req ReportGenRequest, knowledge string) []reportChapter { - systemPrompt := `你是博昇内部培训平台的报告生成引擎。先规划报告章节,再撰写内容。输出必须严格为 JSON 数组,不要输出其他内容。` + systemPrompt := `你是 EAI 数字员工平台的报告生成引擎。先规划报告章节,再撰写内容。输出必须严格为 JSON 数组,不要输出其他内容。` userPrompt := fmt.Sprintf(`请围绕以下主题撰写一份正式报告。 主题:%s diff --git a/eai_agentplatform/frontend/index.html b/eai_agentplatform/frontend/index.html index 84362f5..6da5bbd 100644 --- a/eai_agentplatform/frontend/index.html +++ b/eai_agentplatform/frontend/index.html @@ -3,7 +3,7 @@ - 博昇内部培训平台 + 数字员工平台 · EAI Agent Platform
diff --git a/eai_agentplatform/frontend/src/components/LibraryTabs.vue b/eai_agentplatform/frontend/src/components/LibraryTabs.vue new file mode 100644 index 0000000..c489d17 --- /dev/null +++ b/eai_agentplatform/frontend/src/components/LibraryTabs.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/eai_agentplatform/frontend/src/components/chat/ChatLayout.vue b/eai_agentplatform/frontend/src/components/chat/ChatLayout.vue index 5fd1edb..3ce95cd 100644 --- a/eai_agentplatform/frontend/src/components/chat/ChatLayout.vue +++ b/eai_agentplatform/frontend/src/components/chat/ChatLayout.vue @@ -1,7 +1,9 @@