8be51ebbde
- 知识库笔记工坊子项目立项:PRD v1.0 + 寄存条 + CLAUDE.md 登记 - 后端:知识库上传记录 contributor、新增 /contributors 接口 - 前端:知识库列表支持按贡献人筛选 - 新增 Fable5 视角模式库/案例集/建议文档 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
247 lines
9.5 KiB
Markdown
247 lines
9.5 KiB
Markdown
# PRD:知识库笔记工坊(new_notemd)v1.0
|
||
|
||
> 制片人刘通 × Claude Opus 顾问 | 2026-07-09 立项
|
||
|
||
---
|
||
|
||
## §1 背景与目标
|
||
|
||
### 现状
|
||
|
||
知识库已有 189 条(doco 22 篇 + Obsidian 164 篇 + 零散上传),但存在三个问题:
|
||
|
||
1. **只能看标题列表,不能点开看内容**——编导无法阅读和修改已入库的笔记
|
||
2. **入库门槛高**——需要手写 yaml frontmatter + md 格式,只有制片人跑脚本才能批量导入
|
||
3. **只有制片人能操作**——6 名编导各有专长领域的素材,无法自助贡献
|
||
|
||
### 目标
|
||
|
||
把知识库从"制片人单人维护的静态仓库"升级为"全组 8 人共建的活知识库":
|
||
|
||
- 编导能**浏览、编辑**已有笔记
|
||
- 编导能**自助提交**新素材(多种输入格式),AI 加工成规范笔记
|
||
- 制片人/责编**审核把关**,防止质量污染
|
||
- 知识库持续生长,为 Phase 4a 对话式选题策划提供更丰富的检索底座
|
||
|
||
---
|
||
|
||
## §2 用户角色与权限
|
||
|
||
| 操作 | 制片人 (zhipianren) | 责编 (zebian) | 编导 (biandao) |
|
||
|------|:---:|:---:|:---:|
|
||
| 浏览笔记(点标题看全文) | ✅ | ✅ | ✅ |
|
||
| 编辑已有笔记 | ✅ | ✅ | ✅(仅自己提交的,或制片人授权的) |
|
||
| 新建笔记(AI 加工流程) | ✅ | ✅ | ✅ |
|
||
| 审核(通过/驳回) | ✅ | ✅ | ❌ |
|
||
| 删除 | ✅ | ❌ | ❌ |
|
||
|
||
---
|
||
|
||
## §3 功能模块
|
||
|
||
### 3.1 笔记查看与编辑(在现有知识库列表页增强)
|
||
|
||
**交互方式**:点击标题 → 打开右侧抽屉(Drawer)
|
||
|
||
抽屉内容:
|
||
- **上半部分**:渲染后的 md 预览(react-markdown,与诊断报告详情页复用渲染器)
|
||
- **下半部分**:元信息卡片(作者、来源、类型、入库时间、审核状态)
|
||
- **操作按钮**:「编辑」→ 切换为编辑模式(左编辑右预览双栏);「保存」→ 写回数据库 + 自动重算 embedding 向量
|
||
|
||
编辑模式:
|
||
- 左栏:md 文本编辑区(textarea,等宽字体)
|
||
- 右栏:实时预览
|
||
- 元信息字段用表单编辑(标题、作者、来源等)
|
||
- 保存时后端自动调 MiniMax embo-01 重算向量
|
||
|
||
### 3.2 新建笔记(AI 加工流程)——核心新功能
|
||
|
||
**入口**:知识库页面新增「新建笔记」按钮(与「上传 md 文件入库」并列)
|
||
|
||
#### 步骤一:选择输入方式 + 提交素材
|
||
|
||
支持五种输入类型:
|
||
|
||
| 输入类型 | 操作方式 | 后端处理 |
|
||
|---------|---------|---------|
|
||
| 粘贴文本 | 文本框粘贴文章内容 | 直接传给 LLM |
|
||
| PDF 上传 | 上传 .pdf 文件 | OCR 提取文字(PyMuPDF/pdfplumber) |
|
||
| Word 上传 | 上传 .docx 文件 | python-docx 提取正文 |
|
||
| 网页链接 | 输入 URL | 后端抓取正文(requests + BeautifulSoup) |
|
||
| md 文件 | 上传 .md 文件 | 直接读取(现有功能增强) |
|
||
|
||
编导还需填写:
|
||
- **素材类型**(下拉选择:杂志文章 / 军报文章 / 装备资料 / 技术文献 / 节目文稿 / 动态消息 / 其他)
|
||
- **来源说明**(如"航空知识 2026 年第 3 期")——选填,有则 AI 会参考
|
||
|
||
#### 步骤二:AI 加工
|
||
|
||
后端调用 LLM(MiMo,复用现有 MST_knowledge_base 规则),自动:
|
||
- 生成规范的 yaml frontmatter(title / author / date / source_type / source_detail / tags / related_entities)
|
||
- 整理正文格式(分段、去噪、提取关键信息)
|
||
- 生成内容摘要
|
||
|
||
加工过程显示 loading 状态("AI 正在整理笔记..."),预计 10-30 秒。
|
||
|
||
#### 步骤三:编导预览 & 修改
|
||
|
||
AI 加工完成后展示结果:
|
||
- 上方:表单形式展示 frontmatter 字段(可改)
|
||
- 下方:左编辑右预览双栏(可改正文)
|
||
- 底部:「提交审核」按钮
|
||
|
||
编导可以:
|
||
- 修改 AI 生成的标题、标签、摘要
|
||
- 修改正文内容
|
||
- 觉得 AI 加工不好可以点「重新加工」
|
||
|
||
#### 步骤四:提交审核
|
||
|
||
编导点「提交审核」→ 笔记以 `pending` 状态入库(算向量,但不参与正式搜索)
|
||
|
||
#### 步骤五:审核(制片人/责编)
|
||
|
||
审核入口:知识库页面新增「待审核」标签页(或筛选项),显示待审核笔记列表
|
||
|
||
审核操作:
|
||
- **通过**:状态改为 `approved`,进入正式搜索池
|
||
- **驳回 + 理由**:状态改为 `rejected`,退回编导修改(编导在"我的笔记"里能看到驳回理由)
|
||
- **通过并编辑**:审核人可以直接改完再通过
|
||
|
||
---
|
||
|
||
## §4 数据模型变更
|
||
|
||
### knowledge_items 表新增字段(006 迁移)
|
||
|
||
```sql
|
||
ALTER TABLE knowledge_items
|
||
ADD COLUMN status VARCHAR(20) DEFAULT 'approved' NOT NULL,
|
||
ADD COLUMN submitted_by INTEGER REFERENCES users(id),
|
||
ADD COLUMN reviewed_by INTEGER REFERENCES users(id),
|
||
ADD COLUMN reviewed_at TIMESTAMP,
|
||
ADD COLUMN review_note TEXT;
|
||
|
||
-- 存量数据全部标记为 approved(制片人历史导入,已审核)
|
||
UPDATE knowledge_items SET status = 'approved' WHERE status = 'approved';
|
||
|
||
-- status 枚举:draft / pending / approved / rejected
|
||
-- draft: 编导编辑中未提交
|
||
-- pending: 已提交待审核
|
||
-- approved: 审核通过,参与搜索
|
||
-- rejected: 驳回,需修改
|
||
```
|
||
|
||
### 搜索过滤
|
||
|
||
现有 `search_similar()` 和列表查询增加 `WHERE status = 'approved'` 过滤(编导查看自己的笔记不受此限制)。
|
||
|
||
---
|
||
|
||
## §5 新增 API
|
||
|
||
| 方法 | 路径 | 说明 | 权限 |
|
||
|------|------|------|------|
|
||
| GET | `/api/knowledge/{id}` | 获取笔记详情(含 content_md) | 全角色 |
|
||
| PATCH | `/api/knowledge/{id}` | 编辑笔记(保存后重算向量) | 见 §2 权限表 |
|
||
| POST | `/api/knowledge/extract-text` | 上传文件/链接 → 提取纯文本 | 全角色 |
|
||
| POST | `/api/knowledge/ai-process` | 纯文本 → AI 加工成规范笔记 | 全角色 |
|
||
| POST | `/api/knowledge/submit-review` | 提交审核(status → pending) | 全角色 |
|
||
| PATCH | `/api/knowledge/{id}/review` | 审核操作(通过/驳回) | zhipianren + zebian |
|
||
| GET | `/api/knowledge/pending` | 获取待审核列表 | zhipianren + zebian |
|
||
| GET | `/api/knowledge/my-notes` | 获取"我的笔记"列表 | 全角色 |
|
||
|
||
---
|
||
|
||
## §6 前端页面结构
|
||
|
||
### 知识库页面改动(KnowledgePage.jsx)
|
||
|
||
```
|
||
知识库
|
||
├── 搜索栏(不变)
|
||
├── 操作栏
|
||
│ ├── [上传 md 文件入库](现有)
|
||
│ ├── [新建笔记](新增,打开新建流程)
|
||
│ └── [待审核 (N)](新增,仅制片人/责编可见,显示待审数量角标)
|
||
├── 左侧树形视图(不变)
|
||
├── 右侧列表
|
||
│ ├── 标题可点击 → 打开查看抽屉
|
||
│ ├── 状态列(新增:已审核/待审核/已驳回)
|
||
│ └── 操作列:查看 | 编辑 | 删除(按权限显示)
|
||
└── 查看/编辑抽屉(新增)
|
||
├── 查看模式:md 渲染 + 元信息
|
||
└── 编辑模式:左编辑右预览 + 元信息表单
|
||
```
|
||
|
||
### 新建笔记流程页(NoteWorkshop.jsx 或 Modal)
|
||
|
||
```
|
||
新建笔记
|
||
├── Step 1:输入方式选择 + 素材提交
|
||
│ ├── Tab 切换:粘贴文本 | PDF | Word | 网页链接 | md 文件
|
||
│ ├── 素材类型下拉
|
||
│ └── [开始加工] 按钮
|
||
├── Step 2:AI 加工中(loading)
|
||
├── Step 3:预览 & 修改
|
||
│ ├── frontmatter 表单(标题/作者/来源/标签等)
|
||
│ ├── 正文编辑(左编辑右预览)
|
||
│ └── [提交审核] / [重新加工] 按钮
|
||
└── 完成提示:"已提交审核,等待制片人/责编审批"
|
||
```
|
||
|
||
---
|
||
|
||
## §7 验收标准
|
||
|
||
1. **能看**:点击任意笔记标题,抽屉打开显示完整 md 渲染内容和元信息
|
||
2. **能改**:编辑模式下修改内容并保存,搜索结果反映修改后的内容(向量已更新)
|
||
3. **能建**:通过粘贴文本创建笔记,AI 加工后 frontmatter 字段完整、正文格式规范
|
||
4. **能传**:PDF / Word / 网页链接均能成功提取文字并进入 AI 加工流程
|
||
5. **能审**:编导提交后制片人能看到待审核列表,通过后笔记出现在搜索结果中,驳回后编导能看到理由
|
||
6. **不污染**:未审核的笔记不出现在语义搜索结果中
|
||
7. **权限正确**:编导不能审核、不能删除、不能编辑他人笔记(除非被授权)
|
||
|
||
---
|
||
|
||
## §8 分刀实施计划
|
||
|
||
### 第一刀:查看 + 编辑(纯前端 + 1 个 PATCH 接口)
|
||
|
||
- 列表标题可点击 → 打开查看抽屉(GET `/api/knowledge/{id}`)
|
||
- 抽屉内 md 渲染 + 编辑模式切换
|
||
- PATCH 接口保存 + 重算向量
|
||
- 不涉及 schema 变更
|
||
|
||
### 第二刀:新建笔记 AI 加工流程
|
||
|
||
- 006 迁移(加 status / submitted_by / reviewed_by 等字段,先 pg_dump)
|
||
- 文本提取接口(PDF / Word / 链接)
|
||
- AI 加工接口(调 LLM)
|
||
- 前端新建笔记流程页
|
||
|
||
### 第三刀:审核流程 + 权限
|
||
|
||
- 提交审核 / 审核操作接口
|
||
- 前端待审核列表 + 审核操作
|
||
- 搜索过滤 `status = 'approved'`
|
||
- 权限校验(编导不能审核/删除)
|
||
|
||
### 第四刀:打磨 + 边界
|
||
|
||
- "我的笔记"视图
|
||
- 驳回理由展示 + 退回修改流程
|
||
- 网页链接抓取的健壮性(超时/编码/反爬)
|
||
- 编辑权限细化(编导仅编辑自己的笔记)
|
||
|
||
每刀独立验收,制片人真实点页面逐条验。
|
||
|
||
---
|
||
|
||
## §9 制片人拍板记录
|
||
|
||
1. [2026-07-09] **不做独立软件**:笔记生成功能做在网页端,编导打开浏览器就能用,不增加安装成本。
|
||
2. [2026-07-09] **五种输入类型**:粘贴文本 / PDF / Word / 网页链接 / md 文件。
|
||
3. [2026-07-09] **审核制**:编导提交 → 制片人/责编审核 → 通过才进搜索池。AI 设计哲学红线的延伸。
|
||
4. [2026-07-09] **AI 加工复用 MST 规则**:沿用现有 MiMo + MST_knowledge_base prompt 规则,不另起炉灶。
|