# 百智个人知识库 2.0 PRD（产品需求文档）

> 版本：v2.0 | 更新日期：2025-02-13 | 状态：评审中

---

## 一、项目背景

### 1.1 产品定位

百智个人知识库是百融百智 AI 平台的核心模块之一，为用户提供文件存储、智能检索、AI 内容创作的一站式知识管理能力。1.0 版本已实现基础的文件上传、分类管理和简单预览功能。

### 1.2 迭代背景

随着用户在知识库中沉淀的文件日益增多，以下诉求愈发强烈：

- 用户希望基于已有知识库文件**快速生成 PPT 演示文稿**，减少重复劳动；
- 用户希望对任务报告等文档进行**AI 辅助在线编辑**（续写、润色、摘要等），而非仅能预览；
- 用户希望能以**自然语言对话**的方式向知识库提问（Ask 知识库），获得带引用来源的精准回答。

本次 2.0 迭代围绕以上三大核心能力进行功能设计与交互升级。

### 1.3 目标用户

| 用户角色 | 典型场景 |
|---------|---------|
| 销售/客户经理 | 基于客户调研报告快速生成汇报 PPT |
| 产品/运营 | 对周报、竞品分析等文档进行 AI 润色后分享 |
| 研究/分析师 | 向知识库提问，快速定位多份报告中的关键结论 |
| 管理层 | 通过 Ask 知识库快速了解项目进展、数据指标 |

---

## 二、用户痛点

| # | 痛点描述 | 当前现状 | 期望体验 |
|---|---------|---------|---------|
| P1 | 制作 PPT 耗时长，需手动从多份文件中提取内容 | 需下载文件 → 打开 Office → 手动编排 | 选择文件 + 描述需求 → AI 自动生成大纲 → 一键生成 PPT |
| P2 | 报告文件只能预览，无法在线修改 | 预览为只读，修改需下载到本地 | 在线打开 → AI 辅助续写/润色/摘要 → 直接保存新版本 |
| P3 | 知识库文件多但检索效率低 | 仅支持文件名关键词搜索 | 自然语言提问 → AI 跨文件检索 → 带引用来源的结构化回答 |
| P4 | 文件版本管理混乱 | 无版本概念，覆盖即丢失 | 自动版本记录，支持版本对比与回溯 |

---

## 三、核心目标

### 3.1 业务目标

- 提升用户内容创作效率，PPT 生成场景下减少 **70%** 手动操作时间
- 提升知识库活跃度，日均 Ask 知识库对话量达到 **人均 3 次以上**
- 提升文件编辑留存率，在线编辑功能使文件更新频率提升 **50%**

### 3.2 体验目标

- AIPPT 从选择文件到生成完成 ≤ 60 秒
- Ask 知识库首次回答响应 ≤ 3 秒（流式输出）
- AI 在线编辑操作路径 ≤ 3 步（选中 → 选择 AI 能力 → 确认）

---

## 四、能力概览

```
┌─────────────────────────────────────────────────────────┐
│                   百智个人知识库 2.0                       │
├──────────┬──────────────┬──────────────┬────────────────┤
│ 基础能力  │  AIPPT 创作   │  AI 在线编辑  │  Ask 知识库    │
│ (1.0已有) │  (2.0 新增)   │  (2.0 新增)   │  (2.0 新增)   │
├──────────┼──────────────┼──────────────┼────────────────┤
│·文件上传  │·选择参考文件  │·文档在线预览  │·自然语言提问   │
│·添加网址  │·输入创作描述  │·AI 续写      │·跨文件检索     │
│·粘贴文字  │·AI 生成大纲   │·AI 润色      │·引用来源定位   │
│·分类管理  │·大纲编辑调整  │·AI 摘要提取  │·多轮对话追问   │
│·文件预览  │·一键生成PPT   │·AI 扩写      │·联网搜索增强   │
│·文件搜索  │·大纲历史管理  │·版本自动保存  │·结构化回答     │
│·批量操作  │·模板风格选择  │·版本对比回溯  │·引用原文高亮   │
└──────────┴──────────────┴──────────────┴────────────────┘
```

---

## 五、业务流程图

### 5.1 AIPPT 创作流程

```
用户进入知识库
      │
      ▼
┌─────────────┐    ┌──────────────┐
│ 方式A:       │    │ 方式B:        │
│ AIPPT输入区  │    │ 文件列表勾选  │
│ 描述PPT需求  │    │ → 点击生成PPT │
└──────┬──────┘    └──────┬───────┘
       │                   │
       ▼                   ▼
  ┌────────────────────────────┐
  │   选择参考素材（可选）       │
  │  ·从知识库选择已有文件       │
  │  ·上传本地文件              │
  │  ·拖拽文件到输入区          │
  └────────────┬───────────────┘
               │
               ▼
  ┌────────────────────────────┐
  │   点击「开始创作PPT」        │
  │   Toast: 进入大纲+PPT创作流程│
  └────────────┬───────────────┘
               │
               ▼
  ┌────────────────────────────┐
  │   AI 分析文档 → 生成大纲     │
  │  （进度：分析→提取→生成大纲） │
  └────────────┬───────────────┘
               │
               ▼
  ┌────────────────────────────┐
  │   用户查看/编辑大纲          │
  │  ·调整章节顺序              │
  │  ·修改标题内容              │
  │  ·大纲保存至「我创作的大纲」  │
  └────────────┬───────────────┘
               │
               ▼
  ┌────────────────────────────┐
  │   选择 PPT 模板风格          │
  │  ·商务简约 / 清新自然        │
  │  ·深色专业 / 活力橙黄        │
  └────────────┬───────────────┘
               │
               ▼
  ┌────────────────────────────┐
  │   AI 生成 PPT               │
  │  （进度：布局→排版→美化）    │
  └────────────┬───────────────┘
               │
               ▼
  ┌────────────────────────────┐
  │   PPT 生成完成               │
  │  ·自动存入知识库 PPT 分类    │
  │  ·支持预览 / 下载            │
  └────────────────────────────┘
```

### 5.2 AI 在线编辑流程

```
用户在文件列表点击文件名
          │
          ▼
  ┌────────────────────────┐
  │  打开文件预览面板        │
  │  （右侧 Agent 面板区域） │
  └────────────┬───────────┘
               │
               ▼
  ┌────────────────────────┐
  │  点击「AI 编辑」按钮     │
  │  进入在线编辑模式        │
  └────────────┬───────────┘
               │
               ▼
  ┌────────────────────────┐
  │  选中需要处理的文本段落   │
  │  弹出 AI 工具栏          │
  ├────────────────────────┤
  │  · 续写：基于上下文延续  │
  │  · 润色：优化表达质量    │
  │  · 摘要：提炼核心要点    │
  │  · 扩写：丰富内容细节    │
  │  · 自定义指令           │
  └────────────┬───────────┘
               │
               ▼
  ┌────────────────────────┐
  │  AI 流式生成编辑结果     │
  │  ·实时预览修改内容       │
  │  ·Diff 对比原文与修改    │
  └────────────┬───────────┘
               │
          ┌────┴────┐
          ▼         ▼
     ┌────────┐ ┌────────┐
     │ 接受修改│ │ 放弃修改│
     └───┬────┘ └────────┘
         │
         ▼
  ┌────────────────────────┐
  │  自动保存为新版本        │
  │  ·版本号自动递增         │
  │  ·记录编辑者/编辑时间    │
  │  ·支持回溯到任意历史版本  │
  └────────────────────────┘
```

### 5.3 Ask 知识库流程

```
用户打开 Agent 面板（右侧）
          │
          ▼
  ┌────────────────────────┐
  │  在对话输入框提问         │
  │  如："Q3营收增长原因？"   │
  └────────────┬───────────┘
               │
               ▼
  ┌────────────────────────┐
  │  AI 意图识别             │
  ├────────────────────────┤
  │  ·知识库检索类 → RAG    │
  │  ·联网搜索类 → Web      │
  │  ·文件操作类 → 工具调用  │
  └────────────┬───────────┘
               │
               ▼
  ┌────────────────────────┐
  │  RAG 检索流程            │
  │  ·对问题进行向量化       │
  │  ·在知识库中语义检索     │
  │  ·召回 Top-K 相关片段    │
  │  ·Rerank 精排           │
  └────────────┬───────────┘
               │
               ▼
  ┌────────────────────────┐
  │  AI 生成回答（流式输出）  │
  │  ·结构化组织答案         │
  │  ·标注引用来源 [1][2]    │
  │  ·附带原文引用块         │
  └────────────┬───────────┘
               │
               ▼
  ┌────────────────────────┐
  │  用户交互                │
  │  ·点击引用跳转源文件     │
  │  ·继续追问深入了解       │
  │  ·快捷操作按钮           │
  │    - 复制回答            │
  │    - 重新生成            │
  └────────────────────────┘
```

---

## 六、功能模块详细设计

---

### 6.1 模块一：AIPPT 智能创作

#### 6.1.1 功能概述

用户可基于知识库已有文件或自由描述，通过 AI 自动生成 PPT 大纲并一键生成演示文稿。支持多文件混合参考、大纲编辑、模板风格选择，生成结果自动存入知识库。

#### 6.1.2 入口设计

| 入口 | 位置 | 触发方式 | 说明 |
|------|------|---------|------|
| AIPPT 输入区 | 页面 Hero Zone 区域 | 直接可见，无需点击展开 | 主入口，支持输入描述 + 附加文件 |
| 文件列表批量操作 | 文件列表上方工具栏 | 勾选文件后出现「生成PPT」按钮 | 快捷入口，已选文件自动带入 |
| 文件右键菜单 | 单个文件操作区 | 点击文件行的更多操作 | 单文件快速生成 |

#### 6.1.3 AIPPT 输入区详细设计

**区域结构：**

```
┌─ AIPPT 输入区 ──────────────────────────────────────┐
│ [AI图标] AIPPT [NEW]   从知识库文件一键生成演示文稿    │
│                                                      │
│ ┌─ 输入框 ────────────────────────────────────────┐  │
│ │ [文件标签1 ✕] [文件标签2 ✕] [+ 添加更多]         │  │
│ │                                                  │  │
│ │ 描述你想生成的PPT内容，如：生成一份关于AI产品的    │  │
│ │ 介绍PPT，风格简洁商务...                          │  │
│ │ 也可以拖拽下方文件到此处作为参考素材               │  │
│ │                                                  │  │
│ │ [📎本地文件] [📚知识库]          [⚡开始创作PPT]  │  │
│ └──────────────────────────────────────────────────┘  │
│                                                      │
│ 我创作的大纲  [大纲A] [大纲B] [大纲C]    查看全部 >   │
└──────────────────────────────────────────────────────┘
```

**交互规则：**

| # | 交互行为 | 规则描述 |
|---|---------|---------|
| 1 | 输入框聚焦 | 边框变为主题色，背景变白，出现外发光效果 |
| 2 | 拖拽文件到输入框 | 输入框边框高亮 + 脉冲动画，松手后文件以标签形式显示在输入框顶部 |
| 3 | 从文件列表拖拽 | 支持从下方文件列表直接拖拽文件到 AIPPT 输入区 |
| 4 | 文件标签删除 | 点击标签上的 ✕ 移除该文件，实时更新 |
| 5 | 「本地文件」按钮 | 唤起系统文件选择器，支持多选，格式限制：pdf/doc/docx/txt/md/pptx |
| 6 | 「知识库」按钮 | 打开知识库文件选择弹窗（KB Picker），支持搜索、多选 |
| 7 | 「开始创作PPT」按钮 | 默认置灰不可点击；当输入框有文字或已附加文件时激活 |
| 8 | 点击「开始创作PPT」 | 触发 Toast 提醒："进入大纲+PPT创作流程" |
| 9 | 重复添加同名文件 | Toast 提醒："该文件已添加"，不重复添加 |
| 10 | textarea 自适应高度 | 输入内容时自动扩展高度，最大 80px |

#### 6.1.4 知识库文件选择器（KB Picker）

**弹窗结构：**

```
┌─ 从知识库选择文件 ──────────────── ✕ ─┐
│ [🔍 搜索文件名...]                     │
│                                        │
│ ☐ 📄 Q3季度营收分析报告.docx    2.3MB  │
│ ☐ 📄 竞品分析-2024H2.pdf       4.1MB  │
│ ☐ 🎙️ 客户访谈录音-张总.mp3     15MB   │
│ ☐ 📄 产品路线图2025.pptx       8.7MB  │
│ ...                                    │
│                                        │
│ 已选 2 个文件              [确认选择]   │
└────────────────────────────────────────┘
```

**交互规则：**

| # | 规则 |
|---|------|
| 1 | 文件列表排除图片类型文件（type !== 'img'） |
| 2 | 搜索为实时过滤，按文件名模糊匹配 |
| 3 | 勾选文件后底部实时更新已选数量 |
| 4 | 点击「确认选择」将选中文件添加到 AIPPT 输入区的文件标签中 |
| 5 | 点击遮罩层或 ✕ 关闭弹窗，不保存选择 |

#### 6.1.5 大纲历史管理

**行内展示：**
- 位于 AIPPT 输入区底部，横向展示最近 3 条大纲
- 每条大纲以 Chip 标签形式展示，显示名称（超长截断 160px）
- 点击 Chip 可快速选用该大纲
- 右侧「查看全部」打开大纲历史弹窗

**大纲历史弹窗：**

```
┌─ 我创作的大纲 ──────────────────── ✕ ─┐
│                                        │
│ [📊] AI产品介绍PPT大纲                 │
│      2025-01-15 14:30    [选择] [删除]  │
│                                        │
│ [📊] Q3季度汇报大纲                    │
│      2025-01-14 10:20    [选择] [删除]  │
│                                        │
│ [📊] 竞品分析报告大纲                   │
│      2025-01-13 16:45    [选择] [删除]  │
│ ...                                    │
└────────────────────────────────────────┘
```

**交互规则：**

| # | 规则 |
|---|------|
| 1 | 点击「选择」将大纲名称填入 AIPPT 输入框，并激活生成按钮 |
| 2 | 点击「删除」移除该大纲记录，列表实时更新 |
| 3 | Hover 时行背景高亮 |
| 4 | 弹窗最大高度 480px，超出滚动 |

#### 6.1.6 PPT 生成流程

**生成进度状态机：**

```
分析文档内容中... (15%)
    → 提取关键信息... (35%)
        → 生成PPT大纲... (55%)
            → 设计版面布局... (75%)
                → 美化排版... (90%)
                    → ✅ PPT 生成完成！(100%)
```

**模板风格选项：**

| 风格 | 色系 | 适用场景 |
|------|------|---------|
| 商务简约 | 蓝灰 | 工作汇报、商务提案 |
| 清新自然 | 绿白 | 培训分享、知识科普 |
| 深色专业 | 深蓝黑 | 技术演讲、数据报告 |
| 活力橙黄 | 橙黄 | 营销方案、创意展示 |

#### 6.1.7 业务逻辑

| # | 逻辑规则 |
|---|---------|
| 1 | 未输入描述且未选择文件时，点击生成按钮 Toast 提醒"请选择文件或输入提示词" |
| 2 | 生成完成后自动将 PPT 文件存入知识库「PPT文件」分类 |
| 3 | 生成完成后清空 AIPPT 输入区的文件标签和输入内容 |
| 4 | 大纲自动保存至「我创作的大纲」历史列表 |
| 5 | 支持从文件列表批量勾选文件后点击工具栏「生成PPT」按钮，直接进入生成流程 |

---

### 6.2 模块二：报告文件 AI 在线编辑

#### 6.2.1 功能概述

用户可在知识库中直接打开文档进行在线编辑，AI 提供续写、润色、摘要、扩写等辅助能力。编辑结果自动保存为新版本，支持版本历史回溯。

#### 6.2.2 入口设计

| 入口 | 位置 | 触发方式 | 说明 |
|------|------|---------|------|
| 文件名点击 | 文件列表中的文件名 | 点击文件名 | 打开文件预览/编辑面板 |
| 文件操作菜单 | 文件行右侧操作区 | 点击操作按钮 | 包含预览、编辑、下载、删除等 |

#### 6.2.3 文件预览面板

**面板位置：** 复用右侧 Agent 面板区域，切换为文件预览模式

**面板结构：**

```
┌─ 文件预览面板 ─────────────────────────┐
│ [← 返回]  文件名.docx  [AI编辑] [下载] │
│─────────────────────────────────────────│
│                                         │
│  文档内容渲染区域                        │
│                                         │
│  第一段落文本内容...                     │
│  第二段落文本内容...                     │
│                                         │
│  ┌─ AI 工具栏（选中文本后浮现）──┐       │
│  │ [续写] [润色] [摘要] [扩写]   │       │
│  └───────────────────────────────┘       │
│                                         │
│  第三段落文本内容...                     │
│                                         │
└─────────────────────────────────────────┘
```

#### 6.2.4 AI 编辑能力矩阵

| AI 能力 | 功能描述 | 输入 | 输出 | 适用场景 |
|---------|---------|------|------|---------|
| 续写 | 基于上下文语义延续内容 | 选中段落 / 光标位置 | 生成后续 1-3 段内容 | 报告未写完，需要补充后续内容 |
| 润色 | 优化文字表达，提升专业度 | 选中文本段落 | 优化后的替换文本 | 初稿质量不高，需要提升表达 |
| 摘要 | 提炼核心要点，生成精简版 | 选中长段落 / 全文 | 结构化摘要（要点列表） | 长文档需要提取关键信息 |
| 扩写 | 丰富内容细节，增加论据 | 选中简短段落 | 扩展后的详细内容 | 内容过于简略，需要充实 |
| 自定义指令 | 用户自由输入编辑指令 | 选中文本 + 自然语言指令 | 按指令处理后的文本 | 特殊编辑需求 |

#### 6.2.5 交互规则

| # | 交互行为 | 规则描述 |
|---|---------|---------|
| 1 | 选中文本 | 鼠标选中文本后，在选区上方浮现 AI 工具栏 |
| 2 | 点击 AI 能力按钮 | AI 流式生成结果，以 Diff 形式展示修改对比 |
| 3 | 接受修改 | 点击「接受」将 AI 结果替换原文，自动保存新版本 |
| 4 | 放弃修改 | 点击「放弃」恢复原文，不产生新版本 |
| 5 | 自定义指令 | 点击后弹出输入框，用户输入指令后 AI 执行 |
| 6 | 编辑模式退出 | 点击「返回」或切换到其他文件时退出编辑模式 |

#### 6.2.6 版本管理

**版本数据结构：**

| 字段 | 类型 | 说明 |
|------|------|------|
| ver | string | 版本号，如 "v2.1" |
| time | string | 保存时间 |
| size | string | 文件大小 |
| editor | string | 编辑者（用户名 / "AI助手"） |
| note | string | 版本备注（AI 自动生成，如"AI润色优化"） |
| current | boolean | 是否为当前版本 |

**版本交互：**

| # | 规则 |
|---|------|
| 1 | 文件列表中带版本的文件显示版本展开按钮（▶） |
| 2 | 点击展开按钮显示版本历史列表，缩进展示 |
| 3 | 当前版本标记绿色「当前」标签 |
| 4 | 每个历史版本支持「查看」和「回溯」操作 |
| 5 | AI 编辑产生的版本，editor 字段标记为"AI助手" |
| 6 | 版本号自动递增，格式为 v{major}.{minor} |

---

---

### 6.3 模块三：Ask 知识库（Agent 智能对话）

#### 6.3.1 功能概述

用户通过右侧 Agent 面板以自然语言向知识库提问，AI 基于 RAG（检索增强生成）技术跨文件检索相关内容，生成带引用来源的结构化回答。支持多轮对话追问、联网搜索增强、快捷操作等。

#### 6.3.2 入口设计

| 入口 | 位置 | 触发方式 | 说明 |
|------|------|---------|------|
| Agent 面板 | 页面右侧可收起面板 | 点击顶部「Agent」按钮切换显隐 | 主入口，常驻右侧 |
| 快捷提问 | Agent 面板底部预设问题 | 点击预设问题标签 | 快速发起常见提问 |

#### 6.3.3 Agent 面板结构

```
┌─ Agent 面板 ──────────────────────────────┐
│ ┌─ 顶部栏 ─────────────────────────────┐  │
│ │ [🤖] 百智 Agent                      │  │
│ │ 基于您的知识库提供智能问答             │  │
│ └──────────────────────────────────────┘  │
│                                           │
│ ┌─ 对话区域（可滚动）─────────────────┐   │
│ │                                      │  │
│ │ 👤 用户提问                          │  │
│ │ "Q3季度营收同比增长了多少？"          │  │
│ │                                      │  │
│ │ 🤖 Agent 回答                        │  │
│ │ 根据知识库中的数据，Q3季度营收...     │  │
│ │                                      │  │
│ │ 📎 引用来源                          │  │
│ │ ┌──────────────────────────────┐     │  │
│ │ │ [1] Q3季度营收分析报告.docx   │     │  │
│ │ │ "Q3季度总营收达到2.8亿元，   │     │  │
│ │ │  同比增长23.5%..."           │     │  │
│ │ └──────────────────────────────┘     │  │
│ │                                      │  │
│ │ [👍] [👎] [📋复制] [🔄重新生成]     │  │
│ │                                      │  │
│ └──────────────────────────────────────┘  │
│                                           │
│ ┌─ 快捷提问标签 ──────────────────────┐   │
│ │ [总结核心观点] [对比分析] [提取数据]  │  │
│ └──────────────────────────────────────┘  │
│                                           │
│ ┌─ 输入区 ────────────────────────────┐   │
│ │ [📎] 输入你的问题...        [发送➤] │   │
│ └──────────────────────────────────────┘  │
└───────────────────────────────────────────┘
```

#### 6.3.4 对话消息类型

| 消息类型 | 发送方 | 内容结构 | 说明 |
|---------|--------|---------|------|
| 用户提问 | 用户 | 纯文本 | 右对齐，主题色背景 |
| AI 回答 | Agent | 结构化文本 + 引用块 | 左对齐，白色背景，流式输出 |
| 引用来源 | Agent | 文件名 + 原文片段 | 附在回答下方，可点击跳转 |
| 系统提示 | 系统 | 提示文本 | 居中灰色文字 |

#### 6.3.5 AI 回答结构

每条 AI 回答包含以下组成部分：

```
┌─ AI 回答 ─────────────────────────────────┐
│                                            │
│  [正文内容]                                │
│  结构化的回答文本，支持 Markdown 渲染       │
│  包含段落、列表、加粗等格式                 │
│                                            │
│  [引用标注]                                │
│  正文中以 [1] [2] 形式标注引用来源          │
│                                            │
│  [引用来源块]                              │
│  ┌─ 来源 ────────────────────────────┐    │
│  │ 📄 文件名.docx                     │    │
│  │ "原文引用片段，高亮显示关键词..."    │    │
│  └────────────────────────────────────┘    │
│                                            │
│  [操作按钮]                                │
│  [👍 有帮助] [👎 无帮助] [📋 复制] [🔄]  │
│                                            │
└────────────────────────────────────────────┘
```

#### 6.3.6 交互规则

| # | 交互行为 | 规则描述 |
|---|---------|---------|
| 1 | 发送消息 | 点击发送按钮或按 Enter 键发送；Shift+Enter 换行 |
| 2 | 流式输出 | AI 回答以打字机效果逐字输出，输出过程中显示光标动画 |
| 3 | 引用跳转 | 点击引用来源中的文件名，打开对应文件的预览面板 |
| 4 | 复制回答 | 点击复制按钮，将回答正文复制到剪贴板，Toast 提示"已复制" |
| 5 | 重新生成 | 点击重新生成按钮，AI 重新回答同一问题 |
| 6 | 快捷提问 | 点击底部预设标签，自动填入输入框并发送 |
| 7 | 面板收起/展开 | 点击顶部 Agent 按钮切换，面板宽度 420px |
| 8 | 面板拖拽调整 | 支持拖拽左侧边缘调整面板宽度，最小 320px，最大 600px |
| 9 | 对话历史 | 对话记录在当前会话内保持，刷新页面后清空 |
| 10 | 空状态 | 无对话时显示欢迎语 + 功能介绍 + 预设问题引导 |

#### 6.3.7 Agent 能力标签

Agent 面板顶部展示能力标签，帮助用户理解 AI 可以做什么：

| 能力标签 | 图标 | 说明 |
|---------|------|------|
| 知识问答 | 📚 | 基于知识库文件回答问题 |
| 文档分析 | 📊 | 分析文档内容，提取关键信息 |
| 联网搜索 | 🌐 | 结合互联网信息增强回答 |

#### 6.3.8 业务逻辑

| # | 逻辑规则 |
|---|---------|
| 1 | 用户提问后，AI 优先在知识库中进行语义检索 |
| 2 | 若知识库中无相关内容，AI 提示"知识库中未找到相关信息"并建议联网搜索 |
| 3 | 引用来源最多展示 3 个最相关的文件片段 |
| 4 | 每条引用包含：文件名、原文片段（限 200 字以内） |
| 5 | 流式输出过程中，发送按钮变为不可用状态 |
| 6 | 支持多轮对话，AI 具备上下文记忆能力（当前会话内） |
| 7 | 对话输入框支持附加文件，指定 AI 针对特定文件回答 |

---

## 七、基础功能模块

### 7.1 文件管理

#### 7.1.1 文件添加入口

页面顶部标题栏右侧提供三个文件添加入口按钮：

| 入口 | 按钮样式 | 功能 | 弹窗内容 |
|------|---------|------|---------|
| 上传文件 | 主色调实心按钮（Primary） | 上传本地文件到知识库 | 拖拽上传区 + 格式说明（Word/Excel/PPT/PDF/TXT/MD/JPG/PNG，≤100MB） |
| 添加网址 | 幽灵按钮（Ghost） | 通过 URL 导入网页内容 | URL 输入框 + 备注名称 |
| 粘贴文字 | 幽灵按钮（Ghost） | 粘贴文本内容保存为文件 | 标题输入 + 文本域 |

三个按钮与 Agent 按钮之间以竖线分隔，区分"文件操作"与"AI 功能"两组操作。

#### 7.1.2 文件列表

**Tab 分类：**

| Tab | 筛选条件 | 说明 |
|-----|---------|------|
| 全部 | 无筛选 | 展示所有文件 |
| 自行上传 | category === 'upload' | 用户主动上传的文件 |
| 任务报告 | category === 'task' | 系统任务生成的报告 |
| 录音文件 | category === 'audio' | 录音及转写文件 |
| PPT文件 | category === 'ppt' | AIPPT 生成的演示文稿 |

**文件列表字段：**

| 列 | 字段 | 说明 |
|----|------|------|
| 勾选框 | checkbox | 支持全选/单选 |
| 文件图标 | type | 根据文件类型显示不同颜色图标 |
| 文件名 | name | 可点击打开预览，超长截断 |
| 来源 | source | 显示文件来源标签（本地上传/网页导入/AI生成等） |
| 时长 | duration | 仅录音文件显示 |
| 状态 | status | 已完成(绿色)/处理中(蓝色动画)/转写中(橙色) |
| 录入时间 | recordTime | 文件创建时间 |
| 更新时间 | updateTime | 最后修改时间 |
| 大小 | size | 文件体积 |
| 操作 | actions | 预览/下载/删除按钮 |

**文件类型图标色系：**

| 类型 | 背景色 | 图标 |
|------|--------|------|
| img | #FEF3C7 (黄) | 图片图标 |
| audio | #DBEAFE (蓝) | 音频图标 |
| doc | #E0E7FF (靛蓝) | 文档图标 |
| ppt | #F0EDFF (紫) | 演示文稿图标 |

#### 7.1.3 批量操作

勾选文件后，工具栏显示批量操作按钮：

| 操作 | 按钮 | 说明 |
|------|------|------|
| 生成PPT | 「生成PPT」 | 将选中文件作为素材进入 AIPPT 流程 |
| 批量下载 | 「下载」 | 打包下载选中文件 |
| 批量删除 | 「删除」 | 删除选中文件（需确认） |

#### 7.1.4 文件搜索

- 位置：Tab 栏右侧搜索框
- 方式：实时过滤，按文件名模糊匹配
- 无结果时显示空状态提示

#### 7.1.5 视图切换

支持列表视图和网格视图两种展示模式，通过 Tab 栏右侧图标切换。

---

## 八、AI 能力技术设计

### 8.1 AI 能力总览

| AI 能力 | 应用模块 | 技术方案 | 模型要求 |
|---------|---------|---------|---------|
| PPT 大纲生成 | AIPPT | LLM + 文档解析 | 支持长文本输入（≥32K tokens） |
| PPT 内容填充 | AIPPT | LLM + 模板引擎 | 结构化输出能力 |
| 文档续写 | AI 在线编辑 | LLM + 上下文注入 | 流式输出 |
| 文档润色 | AI 在线编辑 | LLM + 风格迁移 | 高质量文本生成 |
| 文档摘要 | AI 在线编辑 | LLM + 信息压缩 | 长文本理解 |
| 文档扩写 | AI 在线编辑 | LLM + 知识增强 | 事实性保障 |
| 知识库问答 | Ask 知识库 | RAG（检索增强生成） | 向量检索 + LLM |
| 联网搜索 | Ask 知识库 | Web Search + LLM | 实时信息获取 |
| 意图识别 | Ask 知识库 | LLM 分类 | 多意图识别 |

### 8.2 RAG 检索架构

```
用户提问
   │
   ▼
┌──────────────┐
│  Query 理解   │  ← 意图识别 + 关键词提取 + Query 改写
└──────┬───────┘
       │
       ▼
┌──────────────┐     ┌──────────────────┐
│  向量检索     │ ──→ │  向量数据库        │
│  (Embedding)  │     │  (文档切片向量化)   │
└──────┬───────┘     └──────────────────┘
       │
       ▼
┌──────────────┐
│  Rerank 精排  │  ← 语义相关性重排序
└──────┬───────┘
       │
       ▼
┌──────────────┐
│  Prompt 组装  │  ← System Prompt + 检索结果 + 用户问题
└──────┬───────┘
       │
       ▼
┌──────────────┐
│  LLM 生成     │  ← 流式输出 + 引用标注
└──────┬───────┘
       │
       ▼
┌──────────────┐
│  后处理       │  ← 引用来源映射 + 格式化输出
└──────────────┘
```

### 8.3 文档处理 Pipeline

```
文件上传/导入
      │
      ▼
┌─────────────┐
│  格式解析     │  ← PDF/Word/PPT/TXT/MD 解析为纯文本
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  文本切片     │  ← 按段落/语义切分，Chunk Size: 512 tokens
└──────┬──────┘    Overlap: 64 tokens
       │
       ▼
┌─────────────┐
│  向量化       │  ← Embedding 模型将切片转为向量
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  索引存储     │  ← 向量 + 元数据存入向量数据库
└─────────────┘
```

### 8.4 AIPPT 生成 Pipeline

```
用户输入（描述 + 参考文件）
          │
          ▼
┌──────────────────┐
│  文档内容提取      │  ← 解析参考文件，提取核心内容
└────────┬─────────┘
         │
         ▼
┌──────────────────┐
│  大纲生成          │  ← LLM 根据描述 + 文档内容生成结构化大纲
└────────┬─────────┘    输出：JSON 格式（章节标题 + 要点）
         │
         ▼
┌──────────────────┐
│  用户编辑大纲      │  ← 可选步骤，用户调整大纲结构
└────────┬─────────┘
         │
         ▼
┌──────────────────┐
│  逐页内容生成      │  ← LLM 根据大纲逐页生成 PPT 内容
└────────┬─────────┘    包含：标题、正文、要点列表
         │
         ▼
┌──────────────────┐
│  模板渲染          │  ← 将内容填充到选定风格模板
└────────┬─────────┘
         │
         ▼
┌──────────────────┐
│  文件生成 & 存储   │  ← 输出 .pptx 文件，存入知识库
└──────────────────┘
```

---

## 九、页面布局与交互规范

### 9.1 整体布局

```
┌──────┬──────────────────────────┬──┬─────────────┐
│      │                          │  │             │
│ 侧边栏│       主内容区            │拖│  Agent面板   │
│ 220px│       flex: 1             │拽│   420px     │
│      │                          │柄│  (可收起)    │
│      │                          │  │             │
└──────┴──────────────────────────┴──┴─────────────┘
```

### 9.2 设计规范

**色彩体系：**

| 变量 | 色值 | 用途 |
|------|------|------|
| --primary | #6C5CE7 | 主色调，按钮/链接/高亮 |
| --primary-light | #A29BFE | 浅主色，hover/背景 |
| --primary-bg | #F0EDFF | 主色背景，选中态 |
| --accent | #00D2A0 | 强调色，成功状态 |
| --text-primary | #1A1A2E | 主文本色 |
| --text-secondary | #6B7280 | 次要文本 |
| --text-muted | #9CA3AF | 辅助文本 |
| --border | #E5E7EB | 边框色 |
| --bg | #F7F8FC | 页面背景 |

**圆角体系：**

| 变量 | 值 | 用途 |
|------|-----|------|
| --radius-sm | 6px | 按钮、输入框 |
| --radius-md | 10px | 卡片、弹窗内元素 |
| --radius-lg | 16px | 弹窗、面板 |
| --radius-xl | 20px | 大型容器 |

**阴影体系：**

| 变量 | 用途 |
|------|------|
| --shadow-sm | 卡片默认态 |
| --shadow-md | 卡片 hover 态 |
| --shadow-lg | 弹窗、浮层 |
| --shadow-xl | 模态框 |

**动效规范：**

| 场景 | 动效 | 时长 |
|------|------|------|
| 通用过渡 | cubic-bezier(0.4, 0, 0.2, 1) | 250ms |
| 按钮 hover | translateY(-1px) + box-shadow | 250ms |
| 弹窗出现 | translateY(10px→0) + opacity(0→1) | 250ms |
| Toast 出现 | translateY(20px→0) + opacity(0→1) | 300ms |
| 拖拽脉冲 | box-shadow 脉冲动画 | 1200ms 循环 |
| 流式打字 | 光标闪烁动画 | 800ms 循环 |

### 9.3 Toast 提醒规范

| 触发场景 | Toast 内容 | 类型 |
|---------|-----------|------|
| 点击「开始创作PPT」 | "进入大纲+PPT创作流程" | 信息 |
| PPT 生成完成 | "🎉 PPT已生成完毕，共使用 N 个文件" | 成功 |
| 未选择文件/未输入 | "⚠️ 请选择文件或输入提示词" | 警告 |
| 重复添加文件 | "⚠️ 该文件已添加" | 警告 |
| 复制成功 | "已复制到剪贴板" | 成功 |
| 文件上传成功 | "文件上传成功" | 成功 |
| 文件删除 | "已删除" | 信息 |

---

## 十、数据模型

### 10.1 文件数据结构

```json
{
  "id": "number",
  "name": "string",
  "size": "string",
  "source": "string (本地上传 | 网页导入 | 录音转写 | AI生成 | 任务生成)",
  "duration": "string | null",
  "status": "string (已完成 | 处理中 | 转写中)",
  "recordTime": "string (datetime)",
  "updateTime": "string (datetime)",
  "type": "string (img | audio | doc | ppt)",
  "category": "string (upload | audio | task | ppt)",
  "versions": [
    {
      "ver": "string",
      "time": "string (datetime)",
      "size": "string",
      "editor": "string",
      "note": "string",
      "current": "boolean"
    }
  ]
}
```

### 10.2 大纲数据结构

```json
{
  "id": "number",
  "name": "string",
  "time": "string (datetime)"
}
```

### 10.3 Agent 对话数据结构

```json
{
  "role": "string (user | assistant | system)",
  "content": "string (Markdown)",
  "sources": [
    {
      "file": "string (文件名)",
      "quote": "string (引用原文)"
    }
  ],
  "timestamp": "string (datetime)"
}
```

---

## 十一、非功能性需求

| 维度 | 要求 |
|------|------|
| 性能 | 文件列表渲染 ≤ 200ms（100 个文件以内） |
| 性能 | Agent 首 token 响应 ≤ 3 秒 |
| 性能 | AIPPT 大纲生成 ≤ 15 秒 |
| 性能 | PPT 完整生成 ≤ 60 秒 |
| 兼容性 | 支持 Chrome 90+、Edge 90+、Safari 15+ |
| 存储 | 单用户知识库容量上限 50GB |
| 文件 | 单文件上传上限 100MB |
| 文件格式 | 支持：Word(.doc/.docx)、Excel(.xls/.xlsx)、PPT(.ppt/.pptx)、PDF、TXT、Markdown、JPG、PNG |
| 安全 | 文件传输全程 HTTPS 加密 |
| 安全 | 知识库数据用户隔离，不可跨用户访问 |

---

## 十二、里程碑规划

| 阶段 | 内容 | 交付物 |
|------|------|--------|
| M1 | Ask 知识库（Agent 对话） | RAG 检索 + 流式对话 + 引用来源 |
| M2 | AIPPT 智能创作 | 大纲生成 + 模板选择 + PPT 生成 |
| M3 | AI 在线编辑 | 文档预览 + AI 编辑工具栏 + 版本管理 |
| M4 | 体验优化 & 联调 | 拖拽交互 + 面板调整 + 性能优化 |

---

## 附录

### 附录 A：术语表

| 术语 | 说明 |
|------|------|
| RAG | Retrieval-Augmented Generation，检索增强生成 |
| Embedding | 将文本转化为高维向量表示 |
| Rerank | 对检索结果进行语义相关性重排序 |
| Chunk | 文档切片，将长文档分割为适合检索的小段落 |
| Token | 语言模型的最小处理单元 |
| 流式输出 | 模型生成内容时逐步返回，实现打字机效果 |

### 附录 B：原型文件索引

| 文件 | 说明 |
|------|------|
| baizhi-knowledge-base.html | V1 布局方案：文件操作入口在顶部标题栏 |
| baizhi-knowledge-base-v2.html | V2 布局方案：文件操作入口与 AIPPT 并排 |
