# InsightFlow Phase 3 功能说明

## 概述

Phase 3 实现了 InsightFlow 的"记忆与生长"能力，支持多文件知识融合、文档导入和项目级知识库管理。

## 功能清单

### 1. 多文件图谱融合 ✅

#### 功能描述
- 支持向同一项目上传多个音频文件
- 系统自动对齐新文件中的实体与已有实体
- 合并知识图谱，保持实体一致性
- 跨文件追踪实体提及

#### 使用方式
1. 在工作台点击"+ 上传文件"
2. 选择音频文件（MP3/WAV/M4A）
3. 系统自动转录并提取实体
4. 新实体与已有实体自动对齐
5. 使用"📁 选择文件"切换不同转录内容

#### API
```
POST /api/v1/projects/{project_id}/upload
Content-Type: multipart/form-data
file: <音频文件>
```

### 2. 实体对齐算法优化 ✅

#### 功能描述
- 使用 Kimi API 的 embedding 服务计算语义相似度
- 余弦相似度匹配算法
- 支持阈值调整（默认 0.85）
- 自动别名建议
- 失败时回退到字符串匹配

#### 实现模块
- `backend/entity_aligner.py`

#### 核心算法
```python
# 余弦相似度计算
def compute_similarity(embedding1, embedding2):
    vec1 = np.array(embedding1)
    vec2 = np.array(embedding2)
    dot_product = np.dot(vec1, vec2)
    norm1 = np.linalg.norm(vec1)
    norm2 = np.linalg.norm(vec2)
    return dot_product / (norm1 * norm2)
```

#### API
```
POST /api/v1/projects/{project_id}/align-entities?threshold=0.85
```

### 3. PDF/DOCX 文档导入 ✅

#### 功能描述
- 支持 PDF、DOCX、DOC、TXT、MD 格式
- 自动提取文档文本
- 文本参与实体提取和关系构建
- 文档类型标记和区分

#### 使用方式
1. 在工作台点击"+ 上传文件"
2. 切换到"📄 文档"标签
3. 选择文档文件
4. 系统自动解析并提取知识

#### 实现模块
- `backend/document_processor.py`

#### API
```
POST /api/v1/projects/{project_id}/upload-document
Content-Type: multipart/form-data
file: <文档文件>
```

### 4. 项目知识库面板 ✅

#### 功能描述
- 项目级全域知识库视图
- 统计面板（实体数、关系数、文件数、术语数）
- 实体网格展示（带提及统计）
- 关系列表展示
- 术语表管理
- 文件列表（区分音频/文档）

#### 使用方式
1. 在工作台点击左侧"📚"图标
2. 查看项目统计概览
3. 切换侧边栏标签浏览不同内容
4. 点击实体可跳转回工作台查看详情

#### API
```
GET /api/v1/projects/{project_id}/knowledge-base
```

### 5. 术语表管理 ✅

#### 功能描述
- 项目级术语表
- 支持添加术语和发音提示
- 频率统计
- 用于 ASR 热词优化

#### 使用方式
1. 在知识库面板切换到"📖 术语表"
2. 点击"+ 添加术语"
3. 输入术语和发音提示
4. 可删除不需要的术语

#### API
```
POST /api/v1/projects/{project_id}/glossary
GET /api/v1/projects/{project_id}/glossary
DELETE /api/v1/glossary/{term_id}
```

## 数据库 Schema 更新

### transcripts 表
```sql
ALTER TABLE transcripts ADD COLUMN type TEXT DEFAULT 'audio';
-- 'audio' 或 'document'
```

### entities 表
```sql
ALTER TABLE entities ADD COLUMN embedding TEXT;
-- JSON 数组存储 embedding 向量
```

### glossary 表（新增）
```sql
CREATE TABLE glossary (
    id TEXT PRIMARY KEY,
    project_id TEXT NOT NULL,
    term TEXT NOT NULL,
    pronunciation TEXT,
    frequency INTEGER DEFAULT 1
);
```

## 前端更新

### 新增组件
1. **侧边栏导航** - 切换工作台/知识库视图
2. **文件选择器** - 切换不同转录文件
3. **上传标签页** - 区分音频/文档上传
4. **知识库面板** - 统计卡片、实体网格、关系列表、术语表

### 更新文件
- `frontend/workbench.html` - 新增知识库 UI
- `frontend/app.js` - 新增知识库逻辑、多文件支持

## 部署说明

### 环境变量
```bash
KIMI_API_KEY=your_kimi_api_key
KIMI_BASE_URL=https://api.kimi.com/coding
ALIYUN_ACCESS_KEY_ID=your_aliyun_key
ALIYUN_ACCESS_KEY_SECRET=your_aliyun_secret
```

### 部署命令
```bash
# 使用部署脚本
./deploy.sh

# 或手动部署
docker build -t insightflow:phase3 .
docker run -d \
  -p 18000:8000 \
  -v /opt/data:/app/data \
  -e KIMI_API_KEY=$KIMI_API_KEY \
  insightflow:phase3
```

## 测试检查清单

- [ ] 上传多个音频文件到同一项目
- [ ] 检查实体是否正确对齐
- [ ] 上传 PDF 文档
- [ ] 上传 DOCX 文档
- [ ] 切换不同转录文件
- [ ] 查看知识库面板统计
- [ ] 添加术语到术语表
- [ ] 删除术语
- [ ] 实体合并功能
- [ ] 关系创建/删除
