chore: 知识库冷启动收尾 + CCA 大洋时间戳规则 + 依赖/文档同步

- CLAUDE.md 状态更新:知识库冷启动完成,下一步语义搜索
- backend/requirements.txt 增加 python-docx(doco 导入脚本依赖)
- CCA srt_writer 增加大洋"单下单上"40ms 间隔后处理
- Doco 寄存条状态更新为"已交付"

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
simonkoson
2026-07-08 09:43:08 +08:00
parent 1578163602
commit ce84616b78
5 changed files with 32 additions and 6 deletions
+6 -5
View File
@@ -13,8 +13,8 @@
## 🔖 状态栏(每次结束 session 前必须更新这三行) ## 🔖 状态栏(每次结束 session 前必须更新这三行)
- **最后更新**Claude Fable(顾问)| 2026-07-07 - **最后更新**Claude Opus(顾问)| 2026-07-07
- **当前状态一句话****期次一条龙录入子项目立项**(收视分析持续运行入口,落点责编录入页)——PRD v1.0 完成、制片人三项拍板已定、寄存条已建,**暂不开发**。看板 L1-L4 + 仪表盘均已就绪 - **当前状态一句话****知识库冷启动完成**——doco 22 期融合A稿已全部导入知识库(含 embedding),下一步做语义搜索界面(Phase 4a)
- **下一个动手的人从这里开始**:见下方「⏩ 交接备注」 - **下一个动手的人从这里开始**:见下方「⏩ 交接备注」
--- ---
@@ -76,15 +76,16 @@
## 3. 当前进度(动态,核心交接区 — 以最新快照为准) ## 3. 当前进度(动态,核心交接区 — 以最新快照为准)
- **已完成至**:收视分析看板 L1-L4 全部完成,含 L4 AI 诊断报告(DeepSeek V4 Pro 生成、摘要块三档自适应+详情页 Markdown 渲染、22期内容摘要卡入库)。 - **已完成至**:收视分析看板 L1-L4 + 知识库冷启动(doco 22 期融合A稿批量导入,含 embedding)。
- **正在做** - **正在做**语义搜索界面(Phase 4a
- **卡点/待解**:无硬卡点。下一刀候选见待办。 - **卡点/待解**:无硬卡点。
- **Schema 状态**episodes 表已通过 003+7 AI 标签列)和 004+content_digest JSONB)迁移。知识库两表不再改。 - **Schema 状态**episodes 表已通过 003+7 AI 标签列)和 004+content_digest JSONB)迁移。知识库两表不再改。
--- ---
## 4. 已完成(只追加,最新在上) ## 4. 已完成(只追加,最新在上)
- [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-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** - [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**
- [2026-07-03] **L4 AI 诊断报告**:① Prompt 4(内容摘要卡,MiMo 生成)+ Prompt 5(诊断报告,DeepSeek V4 Pro)撰写完成;② 22 期文稿摘要卡批量生成并导入 episodes.content_digest004 迁移);③ 后端 POST /api/analytics/diagnosis-report 端点(组装数据+调 DeepSeek+内存缓存);④ 前端摘要块 DiagnosisSummary(左右两块、三档自适应色调、可滚动、粗体渲染)+ 详情页 DiagnosisReportreact-markdown 渲染+重新生成+免责声明);⑤ 话题性(社交货币)三维框架设计(大众认知度/降维切口/惊奇密度)。模型选型:DeepSeek V4 Pro 胜出(vs Qwen-Max 对比测试)。 - [2026-07-03] **L4 AI 诊断报告**:① Prompt 4(内容摘要卡,MiMo 生成)+ Prompt 5(诊断报告,DeepSeek V4 Pro)撰写完成;② 22 期文稿摘要卡批量生成并导入 episodes.content_digest004 迁移);③ 后端 POST /api/analytics/diagnosis-report 端点(组装数据+调 DeepSeek+内存缓存);④ 前端摘要块 DiagnosisSummary(左右两块、三档自适应色调、可滚动、粗体渲染)+ 详情页 DiagnosisReportreact-markdown 渲染+重新生成+免责声明);⑤ 话题性(社交货币)三维框架设计(大众认知度/降维切口/惊奇密度)。模型选型:DeepSeek V4 Pro 胜出(vs Qwen-Max 对比测试)。
+1
View File
@@ -13,3 +13,4 @@ python-frontmatter==1.1.0
pandas>=2.0.0 pandas>=2.0.0
openpyxl>=3.1.0 openpyxl>=3.1.0
openai>=1.0.0,<1.55.0 openai>=1.0.0,<1.55.0
python-docx>=1.1.0
+1
View File
@@ -102,6 +102,7 @@
- [2026-07-04] **编导审稿台是必要环节**:AI 拿不准的差异必须过编导确认,不能全自动。尊重编导创作主权(继承主项目设计哲学)。 - [2026-07-04] **编导审稿台是必要环节**:AI 拿不准的差异必须过编导确认,不能全自动。尊重编导创作主权(继承主项目设计哲学)。
- [2026-07-04] **先独立部署再吸收**:先在 lanhao 配音 2.0 上跑通测试,成熟后并入 TPS 主项目。不等主项目进度。 - [2026-07-04] **先独立部署再吸收**:先在 lanhao 配音 2.0 上跑通测试,成熟后并入 TPS 主项目。不等主项目进度。
- [2026-07-04] **SRT 格式有样本**data/ 下 3 个 SRT 是人工拍词导出的真实样本,作为格式参照。 - [2026-07-04] **SRT 格式有样本**data/ 下 3 个 SRT 是人工拍词导出的真实样本,作为格式参照。
- [2026-07-07] **大洋"单下单上"时间戳规则**:每条字幕的结束时间 = 下一条开始时间 - 40ms(如第一条结束 08,840、第二条开始 08,880)。不论有无空白行,所有相邻字幕条目都遵守此规则。实现在 `srt_writer.py``_apply_dayang_timing()` 后处理函数。
- [2026-07-04] **折行(拍词)规则** - [2026-07-04] **折行(拍词)规则**
- A. 每行 ≤ 14 字 - A. 每行 ≤ 14 字
- B. ASR 中 >2 秒空白 → 插入空白行(屏幕清字幕) - B. ASR 中 >2 秒空白 → 插入空白行(屏幕清字幕)
+23
View File
@@ -24,6 +24,27 @@ def ms_to_srt_time(ms: int) -> str:
return f"{hours:02d}:{minutes:02d}:{seconds:02d},{millis:03d}" return f"{hours:02d}:{minutes:02d}:{seconds:02d},{millis:03d}"
def _apply_dayang_timing(
subtitle_lines: List[Tuple[int, int, str]],
) -> List[Tuple[int, int, str]]:
"""
大洋"单下单上":每条字幕的结束时间 = 下一条开始时间 - 40ms。
"""
if len(subtitle_lines) <= 1:
return subtitle_lines
GAP_MS = 40
adjusted = []
for i, (start_ms, end_ms, text) in enumerate(subtitle_lines):
if i < len(subtitle_lines) - 1:
next_start = subtitle_lines[i + 1][0]
end_ms = next_start - GAP_MS
if end_ms < start_ms:
end_ms = start_ms
adjusted.append((start_ms, end_ms, text))
return adjusted
def write_srt( def write_srt(
subtitle_lines: List[Tuple[int, int, str]], subtitle_lines: List[Tuple[int, int, str]],
output_path: str, output_path: str,
@@ -36,6 +57,8 @@ def write_srt(
output_path: 输出文件路径 output_path: 输出文件路径
time_offset: 时间偏移(用于正片拆分后各段从0开始计时的情况,这里不用,保持绝对时间) time_offset: 时间偏移(用于正片拆分后各段从0开始计时的情况,这里不用,保持绝对时间)
""" """
subtitle_lines = _apply_dayang_timing(subtitle_lines)
with open(output_path, "w", encoding="utf-8") as f: with open(output_path, "w", encoding="utf-8") as f:
for idx, (start_ms, end_ms, text) in enumerate(subtitle_lines, 1): for idx, (start_ms, end_ms, text) in enumerate(subtitle_lines, 1):
start = ms_to_srt_time(start_ms - time_offset) start = ms_to_srt_time(start_ms - time_offset)
@@ -103,5 +103,5 @@ Doco 子项目交付物的接口约定,见**子项目主 Brief §六**(交付什
| 子项目 | 外迁日期 | 寄存条文件 | 状态 | | 子项目 | 外迁日期 | 寄存条文件 | 状态 |
| ---------------- | ---------- | -------------------------- | ------------------------- | | ---------------- | ---------- | -------------------------- | ------------------------- |
| TPS 看板分析升级 | 2026-06-12 | `寄存条_看板升级已外迁.md` | 原型阶段收工(2026-07-03 | | TPS 看板分析升级 | 2026-06-12 | `寄存条_看板升级已外迁.md` | 原型阶段收工(2026-07-03 |
| Doco 文稿整理 | 2026-06-12 | 本文件 | **开发收尾2026-07-03**22 期融合A稿已产出,成品在 `doco/deliverables/`,待批量导入主项目知识库 | | Doco 文稿整理 | 2026-06-12 | 本文件 | **已交付2026-07-07**:22 期融合A稿已批量导入主项目知识库(含 embedding),转常态运行 |
| CCA 唱词助手 | 2026-07-04 | `寄存条CCA唱词助手子项目已外迁.md` | **立项,待开发** | | CCA 唱词助手 | 2026-07-04 | `寄存条CCA唱词助手子项目已外迁.md` | **立项,待开发** |