feat: Obsidian 知识库批量导入 + 语义搜索体验升级

- 新增 import_obsidian_kb.py 批量导入脚本(164篇入库,知识库186条)
- parse_md_file 补强:来源fallback、相关装备/应用领域实体提取、
  Obsidian双链去括号、原始类别/源文件路径存metadata、TYPE_MAP扩充
- search_similar 改进:智能摘要(中文2-gram拆词+加权段落匹配)、
  min_similarity=0.3过滤、top_k 5→10、返回完整content_md
- 前端搜索卡片升级:展开全文、关键词加粗渲染、相关度分档样式
- CLAUDE.md 状态更新

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
simonkoson
2026-07-08 15:26:17 +08:00
parent c21bc7d093
commit db9d10a795
6 changed files with 426 additions and 69 deletions
+11 -8
View File
@@ -13,8 +13,8 @@
## 🔖 状态栏(每次结束 session 前必须更新这三行)
- **最后更新**Claude Opus(顾问)| 2026-07-07
- **当前状态一句话****知识库冷启动完成**——doco 22 期融合A稿已全部导入知识库(含 embedding),下一步做语义搜索界面(Phase 4a)
- **最后更新**Claude Opus(顾问)| 2026-07-08
- **当前状态一句话****知识库语义搜索基本可用**——Obsidian 知识库 164 篇批量导入完成(总计 186 条含 doco 22 篇),搜索体验三项改进已落地(智能摘要/相关度阈值/展开全文),中文分词 snippet bug 已修。下一步:搜索体验微调 + 进入 Phase 4a 对话式 TPS
- **下一个动手的人从这里开始**:见下方「⏩ 交接备注」
---
@@ -76,8 +76,8 @@
## 3. 当前进度(动态,核心交接区 — 以最新快照为准)
- **已完成至**:收视分析看板 L1-L4 + 知识库冷启动(doco 22 期融合A稿批量导入,含 embedding)。
- **正在做**:语义搜索界面(Phase 4a
- **已完成至**:收视分析看板 L1-L4 + 知识库语义搜索(Obsidian 164 篇 + doco 22 篇批量导入,搜索体验三项改进)。
- **正在做**:语义搜索体验微调(中文 snippet 已修,待制片人复测),准备进入 Phase 4a 对话式 TPS
- **卡点/待解**:无硬卡点。
- **Schema 状态**episodes 表已通过 003+7 AI 标签列)和 004+content_digest JSONB)迁移。知识库两表不再改。
@@ -85,6 +85,7 @@
## 4. 已完成(只追加,最新在上)
- [2026-07-08] **Obsidian 知识库批量导入 + 语义搜索体验升级**:① `parse_md_file` 补强 6 项("来源"→source_detail fallback、"相关装备/应用领域"实体提取、Obsidian 双链 `[[]]` 去括号、原始类别存 metadata、源文件路径预埋、SOURCE_TYPE_MAP 扩充含"军报文章/装备/技术/动态/术语/厂商/索引");② 脚本 `backend/scripts/import_obsidian_kb.py`(递归遍历、跳过 .obsidian+原始素材+空文件+无 frontmatter、按相对路径查重、支持 --limit/--dry-run/--dir),成功导入 164 篇(7+157),知识库从 22 → 186 条;③ 搜索体验三项改进:`search_similar` 返回完整 content_md + 智能摘要 `_extract_smart_snippet`(中文 2-gram 拆词+加权段落匹配+关键词加粗)+ min_similarity=0.3 过滤 + top_k 5→10;④ 前端搜索卡片升级(展开全文 Set 状态管理、`renderSnippet` 加粗渲染、相关度分档样式:≥70%蓝左边框/<50%半透明灰底)。
- [2026-07-07] **知识库冷启动:doco 22 期融合A稿批量导入**:脚本 `backend/scripts/import_doco_transcripts.py`,docx → 提取纯文本 → 包 YAML frontmatter → 调 `store_md_file()` 入库(自动算 MiniMax embo-01 embedding)。22 篇全部成功(第02期~第23期,缺第01期无A稿),source_type=manuscript,知识库从 0 → 22 条节目文稿。
- [2026-07-07] **期次一条龙录入子项目立项(只立项不开发)**:① PRD v1.0 写入 `episode-intake/PRD_期次一条龙录入_v1.md`(每期任务清单模式、4 状态点、抽屉四区块、6 个新 API、005 迁移只加 transcript_item_id 一列、看板只用 reviewed 期次、四刀分期+七条验收);② 制片人三项拍板:文稿口径=doco 融合A稿(CCA 是播出前工具不算终稿,doco 转常态运行)、22 期批量导入时回联期次、责编可触发 AI 处理;③ 子项目 CLAUDE.md + 寄存条建立,CCA 寄存条清单表同步更新。
- [2026-07-06] **三处 Bug 修复 + 全局宽度调优**:① AI 诊断摘要块 `extractSection` 从硬编码 `indexOf` 改为正则模糊匹配,解决 DeepSeek 返回标题格式不一致导致干条不显示的问题;② 仪表盘近 12 期柱状图加 `.reverse()` 改为从左到右按播出时间升序;③ 全局内容区宽度:定位到 `.app-content``AppLayout.css`)的 `max-width` 是唯一有效参数(必须搭配 `width: 100%`,否则 Ant Design flex 布局下 `margin: 0 auto` 会触发 shrink-to-fit),最终定为 **1190px**
@@ -103,10 +104,11 @@
## 5. 待办(下一刀候选,开局前定先做哪件)
- [x] ~~L4 AI 诊断报告~~ → 已完成(2026-07-03
- [ ] **下一刀三选一**:① 语义搜索界面(不依赖任何材料,随时能开,是 Phase 4a 硬门槛);② PDF 原文关联 + 大文件存储架构(需 Opus 审方案,优先级较高);③ 界面像素级打磨+视觉规范统一。
- [ ] **期次一条龙录入开发**(子项目已立项 2026-07-07PRD 就绪在 `episode-intake/`,等制片人排期;四刀分期,第二刀含 doco 22 期导入回联,与既有待办「200+ md 批量录入」相互独立)。
- [ ] PDF 大文件存储:**大文件不入库,单独文件仓库,DB 只存地址指针**(md 正文+向量留库参与检索;pdf 仅按需调阅)。地基一次定对,避免上云返工
- [ ] 200+ Obsidian md 批量录入(**建议在 PDF 存储方案定后做**;先试 10 篇验证解析/落位再全量,每篇都真调 MiniMax 耗额度)。
- [x] ~~语义搜索界面~~ → 已完成(2026-07-08),Phase 4a 硬门槛已过
- [x] ~~200+ Obsidian md 批量录入~~ → 已完成(2026-07-08),164 篇导入成功,知识库 186 条
- [ ] **下一刀**Phase 4a 对话式 TPS 选题策划助手(左对话右报告、脚注式引用、知识库检索底座已就绪)
- [ ] **期次一条龙录入开发**(子项目已立项 2026-07-07PRD 就绪在 `episode-intake/`,等制片人排期;四刀分期,第二刀含 doco 22 期导入回联)。
- [ ] PDF 大文件存储:**大文件不入库,单独文件仓库,DB 只存地址指针**(md 正文+向量留库参与检索;pdf 仅按需调阅)。地基一次定对,避免上云返工。Obsidian 导入时已把源文件路径存入 `metadata["source_files"]` 预埋。
- [ ] 「按编导看稿」独立筛选视图(路线 A 重构时一并处理,从来源树里迁出来)。
- [ ] 操作留痕 schemaepisodes 等加 created_by/updated_by/updated_at;涉 schema 须 Opus 审)。
- [ ] 界面像素级打磨(连同全栏目视觉规范统一弄,参考「色调字体倒角」图)。
@@ -142,6 +144,7 @@
## 7. ⏩ 交接备注(换人/换账号 0 摩擦续上)
- **知识库语义搜索已可用**2026-07-08):186 条知识库条目(doco 22 篇 + Obsidian 164 篇),搜索链路完整(MiniMax embo-01 query embedding → pgvector 余弦检索 → 智能摘要 + 关键词加粗 + 展开全文)。新增文件:`backend/scripts/import_obsidian_kb.py`(批量导入脚本)。`knowledge_service.py``parse_md_file` 已补强支持全部 Obsidian frontmatter 字段。搜索结果返回 `content_md` 完整正文供展开查看。Obsidian 源文件路径已存入 `metadata["source_files"]` 预埋 PDF 关联。
- **收视分析看板 L1-L4 全部完成**。页面布局:指标卡 → 走势图 → AI 诊断报告(摘要块) → 双引擎象限图 → 双列对比(左:季度+编导, 右:题材)。
- **L4 AI 诊断报告新增文件**:后端 `backend/app/api/analytics.py`POST 端点);前端 `DiagnosisSummary.jsx`(摘要块)+ `DiagnosisReport.jsx/.css`(详情页);Prompt 文件 `ai-labeling/prompts/prompt4_content_digest.md` + `prompt5_diagnosis_report.md`;批量脚本 `ai-labeling/scripts/gen_content_digest.py` + `scripts/import_content_digests.py`
- **L4 依赖**`backend/.env` 需配 `DEEPSEEK_API_KEY`;前端需 `react-markdown` 包(已装);后端需 `openai` 包(已装)。