diff --git a/CLAUDE.md b/CLAUDE.md index 8c43bcd..f06661c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -36,7 +36,7 @@ 主干保持稳定,复杂功能拆成独立子项目(独立 chat / 独立 PRD)。**以下话题已外迁,主项目里聊到要先反问「这是子项目的事还是主干的事」,是子项目的就提醒制片人切到对应 chat,不在主干默默施工。** - **看板分析升级**(`寄存条_看板升级已外迁.md`):关键词——看板升级 / 双引擎象限图 / 题材热度 / AI 打标 / Prompt 1·2·3 / ground-truth / episodes 加字段 / 23 期回填 / 能力地图 / 置信度三档 / 本期诊断小结。 - - **Doco 文稿整理**(`寄存条_doco子项目已外迁.md`):关键词——doco / 文稿整理 / 三方融合 / 视频双路拆分 / A·B 稿 / ASR / 讯飞 / DeepSeek Vision / 终版文稿 / 差异报告 / 段落对齐。 + - **Doco 文稿整理**(`寄存条_doco子项目已外迁.md`):关键词——doco / 文稿整理 / 三方融合 / 视频双路拆分 / A·B 稿 / ASR / 讯飞 / DeepSeek Vision / 终版文稿 / 差异报告 / 段落对齐。**⚡ 2026-06-26 已交付:22 期融合A稿成品在 `doco/deliverables/`(按播出顺序命名),缺第01期(无A稿)。下一步:批量导入知识库(走 Phase 3 上传/embedding 链路)。** **主干仍管**:Phase 0–3 主干代码、全部 backend schema/API/迁移、全部前端 React 实施、主干 bug/性能/新需求、Cline 的全部 Plan+Act。 diff --git a/doco/CLAUDE.md b/doco/CLAUDE.md index aafc50c..d02c88a 100644 --- a/doco/CLAUDE.md +++ b/doco/CLAUDE.md @@ -16,8 +16,8 @@ ## 🔖 状态栏 (STATUS — 每次结束 session 前必须更新这三行) -- **最后更新**:Claude Code | 2026-06-24 -- **当前状态一句话**:**20 期全部出稿完成(16/16 批量跑零失败)。** doco 流水线验证通过。下一步:通哥逐期核验分段 → doco 收工 → 带 20 期成品回 TPS 主项目知识库。 +- **最后更新**:Claude Code | 2026-06-26 +- **当前状态一句话**:**doco 子项目开发收尾。** 22 期融合A稿全部产出(含说话人区分重跑),已归拢至 `doco/deliverables/`。第01期(武器装备里的形状规律)缺A稿暂跳过。下一步:带 22 期成品回 TPS 主项目知识库批量导入。 - **下一个动手的人从这里开始**:见下方「⏩ 交接备注」 --- @@ -81,14 +81,15 @@ ## 3. 当前进度(核心交接区,以最新快照为准) -- **已完成至**:ep001-004 四期全流程出稿。一键脚本 `doco run` + 批量脚本 `_batch_run.py` 已就绪。16 期骨架全部生成并通过核验。C3 prompt 已收紧(专名铁律)。C4 batch_size 已降至 25。 -- **正在做**:无(等通哥逐期核验分段标签)。 -- **卡点 / 待解**:20 期出稿已全部产出,通哥核验分段后 doco 收工,带成品回 TPS 主项目。 +- **已完成至**:**doco 子项目开发收尾。** 22 期融合A稿全部产出(ep001-022,含说话人区分 C4 重跑),已归拢至 `doco/deliverables/`(按播出顺序命名,22 份)。第01期(武器装备里的形状规律)缺A稿暂跳过。排播对照表 `doco/data/2026episode_list.xlsx` 已就位。 +- **正在做**:无。doco 开发完成,等待回归 TPS 主项目。 +- **卡点 / 待解**:下一步把 22 期融合A稿批量导入 TPS 主项目知识库(走 Phase 3 上传/embedding 链路)。 --- ## 4. 已完成(只追加,最新在最上) +- [2026-06-26 |Claude Code] **doco 子项目收尾:ep021/022 补稿 + 说话人重跑 + 成品归拢。** 本 session 完成:① **ep021(海战颠覆者)、ep022(硬核脑洞)两期新补 A 稿全流程 P1→C4 跑通**——ep021 骨架 LLM 自动生成失败(`extract_a_paragraphs()` 过滤空段后重编号,LLM 用了 raw docx 下标),手写骨架 JSON(32 段=26 normal+6 ignore 粗体章节标题)通过校验;ep022 骨架 LLM 自动通过(38 段全 normal,inline header);ep021 C3 review 13 条(均 OCR 修正,专名零替换)、C4 punct_ok 25/26;ep022 C3 review 5 条、C4 punct_ok 全过;② **cli.py 路径 bug 修复**:`episode_dir = Path("programs")/episode_id` 相对路径在子进程中二次解析导致路径翻倍(`programs/ep021/programs/ep021/...`),加 `.resolve()` 修复——此 bug 从未触发因 ep004 用 `--skip-p1` 且 `_batch_run.py` 用绝对路径;③ **ep007、ep010 C4 说话人区分重跑**(06-24 批量重跑时这两期被遗漏,融合A稿时间戳仍为 06-23),重跑完成、产物已更新;④ **排播对照表** `doco/data/2026episode_list.xlsx`(25 期播出日期/期次/节目名/编导/收视)导入,建立 ep→播出顺序完整映射;⑤ **成品归拢** `doco/deliverables/` 文件夹:22 份融合A稿按播出顺序统一命名(`第XX期_YYYYMMDD_节目名_编导_融合A稿.docx`),缺第01期(武器装备里的形状规律,无A稿);⑥ 通哥人工核验 ep021/022 质量高,仅两处小毛刺(ep021 一段话归错段落、ep022 一个标签应为三维动画),确认技术路径有效。 - [2026-06-23 |Claude Code] **批量化基础设施完工 + ep004 全流程通过 + 16 期批量跑启动**。本 session 完成:① ep004(枪王对决,最难·小剧场密·58段)全流程 P1→C4 一次通过,C4 punct_ok 58/58 全过、confidence 全 ≥0.80(batch_size=25 效果显著,无批次回退);② 新增 `doco run` 一键全流程命令(Cline 实现,Opus 审核),参数 `--episode-id / --a-script / --input-video / --batch-size / --skip-p1`,ep004 `--skip-p1` 验证通过;③ C3 SYSTEM_PROMPT 收紧专名铁律(防 ASR 同音字替换权威 B稿专名);④ Ollama 并发提至 16 路(`OLLAMA_NUM_PARALLEL=16`,8 路实测 GPU 96%、显存充裕);⑤ 16 期新目录建立 + 文件拷贝 + 骨架批量生成并集中核验(真名零泄露、隔断/ignore 正确);⑥ `_batch_run.py` 批量脚本启动跑 ep005-ep020。**doco PRD 完成标准已与通哥确定**:20 期全出稿 → 带成品回 TPS 主项目知识库批量导入。 - [2026-06-22 晚|Claude Code] **ep002 C4 审核完毕,全流程收工**。Cline 跑完 C4 compose 出稿 `20260127潜艇的仿生之路_穆佩弦_融合A稿.docx`。Opus 审核核验:硬校验(汉字零改)全过、733 行全覆盖、标点回退 0 段。**但发现两个问题**:① Cline 自报空段名称错了两个(报"解说3/解说6",实际是"三维动画解说3/解说8")、隔断数也报错(报 3 个,实际 4 个)——再次印证不信 Cline 自检;② **9/19 批次(47%)LLM 对齐失败走回退**(全 confidence=0.30),本次因失败批次恰在大段中间未翻车,但属黄色预警。**分段偏差根因**:A 稿是拍摄前剧本,专家采访段与实际播出内容差异巨大(A 稿一句话提纲 vs 专家自由发挥两分钟),LLM 无法正确匹配——这是信息不对应,非算法问题。通哥手动批改分段(~10 处高亮标签),内容本身正确。**结论(通哥拍板)**:治本靠编导给贴近播出版的稿子,现阶段接受"程序保证文字零改 + 编导手调分段"的模式。 - [2026-06-22 |Claude Code] **ep002 C3 融合通过**。融合B稿 733行(零偏移),review 10条(5 minor_edit 全是 OCR 错字修正,专名无同音替换)。C4 compose 交 Cline 跑中。 @@ -119,8 +120,8 @@ - [ ] **【产品 backlog】原稿缺【专家N】/【三维动画N】标签**:ep003 复查发现编导原稿里就没有专家、后续三维动画的分段标注,骨架如实反映=融合A稿里也没有(通哥手工补了高亮)。不赖程序(原稿零信号,LLM 与人一样猜不准),**不让程序猜**。治本=提醒编导/责编原稿把【专家N】等段头标全;50 期前在导入须知里写清。 - [x] **【已完成】C3 prompt 收紧**:`fusion_review.py` SYSTEM_PROMPT 新增专名铁律——厂名/型号/番号/国名/人名/机构名遇 B稿与 ASR 同音异写,一律以 B稿为准,零容忍采 ASR。 - [x] **【已完成】串一键脚本**:`doco run` 命令(P1→P2→C1→C2→C3→C4 六阶段串联),ep004 验证通过。模板脚本放 `src/doco/templates/`。 -- [x] **批量跑 20 期(完成)**:ep001-004 + ep005-ep020 共 20 期全部出稿,16 期批量跑零失败(847 分钟),B稿行数 699-874,融合B稿行数全部零偏移。 -- [ ] **doco 收工后回 TPS 主项目**:20 期融合A稿批量导入知识库(走 Phase 3 已有的上传/embedding 链路),为 Phase 4a 语义搜索提供冷启动数据。 +- [x] **批量跑 22 期(完成)**:ep001-020 共 20 期 + ep021/022 新补 2 期,全部出稿。说话人区分 C4 重跑覆盖全部 22 期。成品归拢至 `doco/deliverables/`(22 份,按播出顺序命名)。 +- [ ] **doco 收工后回 TPS 主项目**:22 期融合A稿批量导入知识库(走 Phase 3 已有的上传/embedding 链路),为 Phase 4a 语义搜索提供冷启动数据。成品位于 `doco/deliverables/`。 - [x] **【已修复】`fusion_align.py` align_batch 崩溃 bug**:`_parse_align_json` 调用在 `try/except` 之外,LLM 返回空字符串时进程崩溃。Cline 已修,移入 try/except 内,错误时优雅回退。 - [ ] **骨架小瑕疵 backlog(不拦路,后期顺手或跳过)**:ep002 演播室主持人 vs 主持人 是否统一;ep004 小剧场角色编号乱(斯9/斯通纳10、卡8跨场)直接改 JSON 即可,不必重调 LLM;ep003 行内`【固摇轨】`留在参照正文(无害,不进输出)。 - [x] **C2** 讯飞 ASR 适配层(密钥外置 + asr_adapter 并入 + `doco asr` 命令 + 真转写310句) @@ -168,25 +169,27 @@ ## 7. ⏩ 交接备注(写给下一个接手的 session) -> 下次开工读完这段应能 0 摩擦续上。接手后可清空重写。**(2026-06-23 重写)** +> 下次开工读完这段应能 0 摩擦续上。接手后可清空重写。**(2026-06-26 重写)** -- **大局**:doco 子项目进入收尾阶段。ep001-004 四期全流程已出稿验证通过。16 期新节目(ep005-ep020)正在 `_batch_run.py` 批量跑中。20 期全部出稿后,doco 收工,融合A稿作为知识库资源带回 TPS 主项目。 -- **批量跑状态**:`python _batch_run.py` 在独立终端跑中。脚本有断点续跑能力(B稿v2 存在则跳过 P1+P2,ASR 已有则跳过转写,融合B稿已有则跳过 C3,融合A稿已有则跳过 C4)。中断后直接重跑即可。 -- **第一句话该干的**:看 `_batch_run.py` 跑完没有。跑完看汇总表,有失败的排查原因重跑。全部成功后,逐期打开融合A稿 docx 核验分段标签,分段偏差的地方手调。 +- **大局**:**doco 子项目开发已完成。** 22 期融合A稿全部产出(含说话人区分重跑),成品归拢至 `doco/deliverables/`(22 份,按播出顺序 `第XX期_YYYYMMDD_节目名_编导_融合A稿.docx` 命名)。缺第01期(武器装备里的形状规律,无A稿)。下一步是把成品带回 TPS 主项目知识库。 +- **第一句话该干的**:切回 TPS 主项目,把 `doco/deliverables/` 里 22 份融合A稿批量导入知识库(走 Phase 3 上传/embedding 链路),为 Phase 4a 语义搜索提供冷启动数据。 +- **排播对照表**:`doco/data/2026episode_list.xlsx`(25 期完整播出日期/期次/节目名/编导/收视),内部 ep ID → 播出顺序的映射已建立。 - **LLM**:小米 MiMo 2.5 Pro,环境变量 `LLM_API_KEY` / `LLM_BASE_URL` / `LLM_MODEL`。 - **Ollama**:16 路并发(`OLLAMA_NUM_PARALLEL=16`),4090D 24GB 充裕。 -- **关键参数**:C4 batch_size=25(`_batch_run.py` 硬编码),C3 batch_size=35。 -- **量产坑(务必记住)**: +- **关键参数**:C4 batch_size=25,C3 batch_size=35。 +- **量产经验(若后续加期)**: 1. **C3 fuse 后必扫 `fusion_review.csv`**:专名被 ASR 同音字替换要打回。C3 prompt 已收紧专名铁律,但仍需人工复核。 2. **C4 空段 = 播出剪了那段**,不是 bug。 3. **C4 分段偏差是常态**(A 稿≠播出版),编导手调分段标签即可。 4. **OCR 漏字不补**(通哥拍板),LLM 补词=破红线。 5. Cline 自报结果一律对源数据核验,不轻信。 6. thinking 分任务用:骨架/对齐开,标点/抽取/融合关。 -- **出稿命名**:`{原始A稿stem}_融合A稿.docx`。 + 7. **骨架注意**:`extract_a_paragraphs()` 会过滤空段并重编号,LLM 生成骨架时必须基于过滤后的下标(ep021 踩过此坑,需手写骨架)。 + 8. **cli.py 路径**:`episode_dir` 已改为 `.resolve()` 绝对路径,修复了子进程路径翻倍 bug。 +- **出稿命名**:episode 目录内为 `{原始A稿stem}_融合A稿.docx`;deliverables 文件夹统一为 `第XX期_YYYYMMDD_节目名_编导_融合A稿.docx`。 - **字体坑**:大标题方正小标宋_GBK(商业字体),出稿前确认已装。 -- **doco 收工后的路**:20 期成品 → TPS 主项目知识库批量导入(走 Phase 3 上传/embedding 链路)→ Phase 4a 语义搜索提供冷启动数据。主项目待办三选一中的"200+ Obsidian md 批量录入"正好是接收口。 - **工具脚本清单**(一次性,跑完可删):`_setup_episodes.py`(建目录+拷文件)、`_batch_skeleton.py`(批量生成骨架)、`_batch_run.py`(批量全流程)。 +- **doco 收工后的路**:22 期成品 → TPS 主项目知识库批量导入(走 Phase 3 上传/embedding 链路)→ Phase 4a 语义搜索提供冷启动数据。 --- diff --git a/doco/data/2026episode_list.xlsx b/doco/data/2026episode_list.xlsx new file mode 100644 index 0000000..c29c206 Binary files /dev/null and b/doco/data/2026episode_list.xlsx differ diff --git a/doco/data/term_dict.json b/doco/data/term_dict.json index 400f52c..b176c16 100644 --- a/doco/data/term_dict.json +++ b/doco/data/term_dict.json @@ -7,9 +7,10 @@ "ep002_20260127_qianting_fangsheng", "ep011_20260317_kongzhan_yanjin", "ep012_20260324_nixi_jicheng", - "ep018_20260519_jiqiang_shuangxiong" + "ep018_20260519_jiqiang_shuangxiong", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 5 + "frequency": 6 }, "铁穹": { "term": "铁穹", @@ -145,9 +146,10 @@ "ep015_20260428_jianpao_meixue", "ep016_20260505_wuren_jianting", "ep019_20260602_wanju_weizhuang", - "ep020_20260609_yanzhi_wadi" + "ep020_20260609_yanzhi_wadi", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 12 + "frequency": 13 }, "反导": { "term": "反导", @@ -155,9 +157,10 @@ "episodes": [ "ep001_20260612_fangkong_fandao", "ep015_20260428_jianpao_meixue", - "ep020_20260609_yanzhi_wadi" + "ep020_20260609_yanzhi_wadi", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 3 + "frequency": 4 }, "高超音速武器": { "term": "高超音速武器", @@ -171,9 +174,10 @@ "term": "弹道导弹", "domain": "weapon", "episodes": [ - "ep001_20260612_fangkong_fandao" + "ep001_20260612_fangkong_fandao", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 1 + "frequency": 2 }, "巡航导弹": { "term": "巡航导弹", @@ -220,9 +224,10 @@ "ep012_20260324_nixi_jicheng", "ep013_20260407_x76_feiji", "ep015_20260428_jianpao_meixue", - "ep018_20260519_jiqiang_shuangxiong" + "ep018_20260519_jiqiang_shuangxiong", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 6 + "frequency": 7 }, "相控阵预警雷达": { "term": "相控阵预警雷达", @@ -496,9 +501,11 @@ "ep017_20260512_nixi_yayi", "ep018_20260519_jiqiang_shuangxiong", "ep019_20260602_wanju_weizhuang", - "ep020_20260609_yanzhi_wadi" + "ep020_20260609_yanzhi_wadi", + "ep021_20260113_haizhan_dianfu", + "ep022_20260303_yinghe_naodong" ], - "frequency": 15 + "frequency": 17 }, "以色列": { "term": "以色列", @@ -527,9 +534,10 @@ "ep008_20260217_manian_tujian", "ep011_20260317_kongzhan_yanjin", "ep012_20260324_nixi_jicheng", - "ep019_20260602_wanju_weizhuang" + "ep019_20260602_wanju_weizhuang", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 5 + "frequency": 6 }, "黎巴嫩": { "term": "黎巴嫩", @@ -602,9 +610,11 @@ "ep016_20260505_wuren_jianting", "ep017_20260512_nixi_yayi", "ep018_20260519_jiqiang_shuangxiong", - "ep020_20260609_yanzhi_wadi" + "ep020_20260609_yanzhi_wadi", + "ep021_20260113_haizhan_dianfu", + "ep022_20260303_yinghe_naodong" ], - "frequency": 15 + "frequency": 17 }, "专家1": { "term": "专家1", @@ -642,9 +652,10 @@ "ep016_20260505_wuren_jianting", "ep017_20260512_nixi_yayi", "ep018_20260519_jiqiang_shuangxiong", - "ep020_20260609_yanzhi_wadi" + "ep020_20260609_yanzhi_wadi", + "ep022_20260303_yinghe_naodong" ], - "frequency": 13 + "frequency": 14 }, "专家3": { "term": "专家3", @@ -682,9 +693,10 @@ "ep016_20260505_wuren_jianting", "ep017_20260512_nixi_yayi", "ep018_20260519_jiqiang_shuangxiong", - "ep020_20260609_yanzhi_wadi" + "ep020_20260609_yanzhi_wadi", + "ep022_20260303_yinghe_naodong" ], - "frequency": 13 + "frequency": 14 }, "专家5": { "term": "专家5", @@ -710,9 +722,10 @@ "term": "主持人 4", "domain": "person", "episodes": [ - "ep001_20260612_fangkong_fandao" + "ep001_20260612_fangkong_fandao", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 1 + "frequency": 2 }, "专家7": { "term": "专家7", @@ -736,21 +749,23 @@ "term": "主持人 5", "domain": "person", "episodes": [ - "ep001_20260612_fangkong_fandao" + "ep001_20260612_fangkong_fandao", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 1 + "frequency": 2 }, "爱国者-3防空反导系统": { "term": "爱国者-3防空反导系统", - "domain": "model", + "domain": "weapon", "episodes": [ "ep001_20260612_fangkong_fandao", "ep002_20260127_qianting_fangsheng", "ep011_20260317_kongzhan_yanjin", "ep012_20260324_nixi_jicheng", - "ep018_20260519_jiqiang_shuangxiong" + "ep018_20260519_jiqiang_shuangxiong", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 5 + "frequency": 6 }, "萨德防御系统": { "term": "萨德防御系统", @@ -912,9 +927,11 @@ "ep015_20260428_jianpao_meixue", "ep016_20260505_wuren_jianting", "ep018_20260519_jiqiang_shuangxiong", - "ep019_20260602_wanju_weizhuang" + "ep019_20260602_wanju_weizhuang", + "ep021_20260113_haizhan_dianfu", + "ep022_20260303_yinghe_naodong" ], - "frequency": 13 + "frequency": 15 }, "饱和攻击": { "term": "饱和攻击", @@ -925,9 +942,10 @@ "ep012_20260324_nixi_jicheng", "ep013_20260407_x76_feiji", "ep015_20260428_jianpao_meixue", - "ep018_20260519_jiqiang_shuangxiong" + "ep018_20260519_jiqiang_shuangxiong", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 6 + "frequency": 7 }, "机动变轨": { "term": "机动变轨", @@ -1055,9 +1073,10 @@ "episodes": [ "ep003_20260331_qiangxie_chicun", "ep004_20260526_qiangwang_duijue", - "ep015_20260428_jianpao_meixue" + "ep015_20260428_jianpao_meixue", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 3 + "frequency": 4 }, "日本": { "term": "日本", @@ -1067,9 +1086,10 @@ "ep004_20260526_qiangwang_duijue", "ep005_20260120_guiji_danao", "ep015_20260428_jianpao_meixue", - "ep020_20260609_yanzhi_wadi" + "ep020_20260609_yanzhi_wadi", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 5 + "frequency": 6 }, "俄罗斯": { "term": "俄罗斯", @@ -1119,9 +1139,10 @@ "ep016_20260505_wuren_jianting", "ep017_20260512_nixi_yayi", "ep018_20260519_jiqiang_shuangxiong", - "ep020_20260609_yanzhi_wadi" + "ep020_20260609_yanzhi_wadi", + "ep022_20260303_yinghe_naodong" ], - "frequency": 11 + "frequency": 12 }, "主持人5": { "term": "主持人5", @@ -1136,9 +1157,10 @@ "ep013_20260407_x76_feiji", "ep017_20260512_nixi_yayi", "ep018_20260519_jiqiang_shuangxiong", - "ep020_20260609_yanzhi_wadi" + "ep020_20260609_yanzhi_wadi", + "ep022_20260303_yinghe_naodong" ], - "frequency": 10 + "frequency": 11 }, "主持人6": { "term": "主持人6", @@ -1465,11 +1487,12 @@ }, "二战": { "term": "二战", - "domain": "tech_concept", + "domain": "org", "episodes": [ - "ep003_20260331_qiangxie_chicun" + "ep003_20260331_qiangxie_chicun", + "ep022_20260303_yinghe_naodong" ], - "frequency": 1 + "frequency": 2 }, "无托结构": { "term": "无托结构", @@ -1592,17 +1615,20 @@ "ep015_20260428_jianpao_meixue", "ep016_20260505_wuren_jianting", "ep019_20260602_wanju_weizhuang", - "ep020_20260609_yanzhi_wadi" + "ep020_20260609_yanzhi_wadi", + "ep021_20260113_haizhan_dianfu", + "ep022_20260303_yinghe_naodong" ], - "frequency": 13 + "frequency": 15 }, "潜艇": { "term": "潜艇", "domain": "weapon", "episodes": [ - "ep002_20260127_qianting_fangsheng" + "ep002_20260127_qianting_fangsheng", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 1 + "frequency": 2 }, "鲨鱼皮": { "term": "鲨鱼皮", @@ -1734,11 +1760,12 @@ }, "U型潜艇": { "term": "U型潜艇", - "domain": "weapon", + "domain": "model", "episodes": [ - "ep002_20260127_qianting_fangsheng" + "ep002_20260127_qianting_fangsheng", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 1 + "frequency": 2 }, "水听器": { "term": "水听器", @@ -1888,9 +1915,10 @@ "term": "核潜艇", "domain": "weapon", "episodes": [ - "ep002_20260127_qianting_fangsheng" + "ep002_20260127_qianting_fangsheng", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 1 + "frequency": 2 }, "攻击核潜艇": { "term": "攻击核潜艇", @@ -1908,9 +1936,10 @@ "ep009_20260224_shenqi_baishe", "ep011_20260317_kongzhan_yanjin", "ep012_20260324_nixi_jicheng", - "ep018_20260519_jiqiang_shuangxiong" + "ep018_20260519_jiqiang_shuangxiong", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 5 + "frequency": 6 }, "歼-10": { "term": "歼-10", @@ -1919,9 +1948,10 @@ "ep002_20260127_qianting_fangsheng", "ep011_20260317_kongzhan_yanjin", "ep012_20260324_nixi_jicheng", - "ep018_20260519_jiqiang_shuangxiong" + "ep018_20260519_jiqiang_shuangxiong", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 4 + "frequency": 5 }, "SM-3": { "term": "SM-3", @@ -1930,9 +1960,10 @@ "ep002_20260127_qianting_fangsheng", "ep011_20260317_kongzhan_yanjin", "ep012_20260324_nixi_jicheng", - "ep018_20260519_jiqiang_shuangxiong" + "ep018_20260519_jiqiang_shuangxiong", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 4 + "frequency": 5 }, "英国海军": { "term": "英国海军", @@ -1967,9 +1998,11 @@ "ep002_20260127_qianting_fangsheng", "ep009_20260224_shenqi_baishe", "ep016_20260505_wuren_jianting", - "ep019_20260602_wanju_weizhuang" + "ep019_20260602_wanju_weizhuang", + "ep021_20260113_haizhan_dianfu", + "ep022_20260303_yinghe_naodong" ], - "frequency": 4 + "frequency": 6 }, "埃兹拉·李": { "term": "埃兹拉·李", @@ -1986,9 +2019,11 @@ "ep002_20260127_qianting_fangsheng", "ep006_20260203_jian_bufan", "ep009_20260224_shenqi_baishe", - "ep011_20260317_kongzhan_yanjin" + "ep011_20260317_kongzhan_yanjin", + "ep021_20260113_haizhan_dianfu", + "ep022_20260303_yinghe_naodong" ], - "frequency": 4 + "frequency": 6 }, "英国": { "term": "英国", @@ -1998,9 +2033,10 @@ "ep005_20260120_guiji_danao", "ep012_20260324_nixi_jicheng", "ep015_20260428_jianpao_meixue", - "ep018_20260519_jiqiang_shuangxiong" + "ep018_20260519_jiqiang_shuangxiong", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 5 + "frequency": 6 }, "德国": { "term": "德国", @@ -2010,9 +2046,10 @@ "ep005_20260120_guiji_danao", "ep011_20260317_kongzhan_yanjin", "ep012_20260324_nixi_jicheng", - "ep019_20260602_wanju_weizhuang" + "ep019_20260602_wanju_weizhuang", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 5 + "frequency": 6 }, "隐蔽色": { "term": "隐蔽色", @@ -2264,18 +2301,20 @@ "ep004_20260526_qiangwang_duijue", "ep008_20260217_manian_tujian", "ep017_20260512_nixi_yayi", - "ep020_20260609_yanzhi_wadi" + "ep020_20260609_yanzhi_wadi", + "ep022_20260303_yinghe_naodong" ], - "frequency": 4 + "frequency": 5 }, "纳粹德国": { "term": "纳粹德国", "domain": "org", "episodes": [ "ep004_20260526_qiangwang_duijue", - "ep019_20260602_wanju_weizhuang" + "ep019_20260602_wanju_weizhuang", + "ep022_20260303_yinghe_naodong" ], - "frequency": 2 + "frequency": 3 }, "维加飞行公司": { "term": "维加飞行公司", @@ -2414,9 +2453,10 @@ "ep004_20260526_qiangwang_duijue", "ep011_20260317_kongzhan_yanjin", "ep012_20260324_nixi_jicheng", - "ep019_20260602_wanju_weizhuang" + "ep019_20260602_wanju_weizhuang", + "ep022_20260303_yinghe_naodong" ], - "frequency": 4 + "frequency": 5 }, "气吹式导气自动原理": { "term": "气吹式导气自动原理", @@ -2467,9 +2507,10 @@ "ep012_20260324_nixi_jicheng", "ep013_20260407_x76_feiji", "ep016_20260505_wuren_jianting", - "ep017_20260512_nixi_yayi" + "ep017_20260512_nixi_yayi", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 5 + "frequency": 6 }, "空军": { "term": "空军", @@ -2489,9 +2530,10 @@ "term": "主持人 3", "domain": "person", "episodes": [ - "ep005_20260120_guiji_danao" + "ep005_20260120_guiji_danao", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 1 + "frequency": 2 }, "F-16 Block70": { "term": "F-16 Block70", @@ -2839,9 +2881,10 @@ "ep005_20260120_guiji_danao", "ep015_20260428_jianpao_meixue", "ep017_20260512_nixi_yayi", - "ep020_20260609_yanzhi_wadi" + "ep020_20260609_yanzhi_wadi", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 4 + "frequency": 5 }, "欧洲": { "term": "欧洲", @@ -3566,9 +3609,10 @@ "domain": "org", "episodes": [ "ep006_20260203_jian_bufan", - "ep011_20260317_kongzhan_yanjin" + "ep011_20260317_kongzhan_yanjin", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 2 + "frequency": 3 }, "隐身设计": { "term": "隐身设计", @@ -4365,9 +4409,10 @@ "domain": "tech_concept", "episodes": [ "ep008_20260217_manian_tujian", - "ep017_20260512_nixi_yayi" + "ep017_20260512_nixi_yayi", + "ep022_20260303_yinghe_naodong" ], - "frequency": 2 + "frequency": 3 }, "全时四驱系统": { "term": "全时四驱系统", @@ -5443,9 +5488,10 @@ "domain": "org", "episodes": [ "ep011_20260317_kongzhan_yanjin", - "ep018_20260519_jiqiang_shuangxiong" + "ep018_20260519_jiqiang_shuangxiong", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 2 + "frequency": 3 }, "美国远东空军": { "term": "美国远东空军", @@ -5475,9 +5521,10 @@ "term": "制空权", "domain": "tech_concept", "episodes": [ - "ep011_20260317_kongzhan_yanjin" + "ep011_20260317_kongzhan_yanjin", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 1 + "frequency": 2 }, "近距离缠斗": { "term": "近距离缠斗", @@ -5739,9 +5786,10 @@ "term": "非对称作战", "domain": "tech_concept", "episodes": [ - "ep011_20260317_kongzhan_yanjin" + "ep011_20260317_kongzhan_yanjin", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 1 + "frequency": 2 }, "AC-47": { "term": "AC-47", @@ -6320,9 +6368,10 @@ "domain": "tech_concept", "episodes": [ "ep012_20260324_nixi_jicheng", - "ep015_20260428_jianpao_meixue" + "ep015_20260428_jianpao_meixue", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 2 + "frequency": 3 }, "核生化环境": { "term": "核生化环境", @@ -6525,17 +6574,19 @@ "term": "V-22“鱼鹰”", "domain": "model", "episodes": [ - "ep013_20260407_x76_feiji" + "ep013_20260407_x76_feiji", + "ep022_20260303_yinghe_naodong" ], - "frequency": 1 + "frequency": 2 }, "倾转旋翼机": { "term": "倾转旋翼机", - "domain": "weapon", + "domain": "tech_concept", "episodes": [ - "ep013_20260407_x76_feiji" + "ep013_20260407_x76_feiji", + "ep022_20260303_yinghe_naodong" ], - "frequency": 1 + "frequency": 2 }, "C-130": { "term": "C-130", @@ -6613,9 +6664,10 @@ "term": "卡莫夫设计局", "domain": "org", "episodes": [ - "ep013_20260407_x76_feiji" + "ep013_20260407_x76_feiji", + "ep022_20260303_yinghe_naodong" ], - "frequency": 1 + "frequency": 2 }, "KA-35": { "term": "KA-35", @@ -6686,17 +6738,19 @@ "domain": "tech_concept", "episodes": [ "ep013_20260407_x76_feiji", - "ep020_20260609_yanzhi_wadi" + "ep020_20260609_yanzhi_wadi", + "ep022_20260303_yinghe_naodong" ], - "frequency": 2 + "frequency": 3 }, "倾转旋翼": { "term": "倾转旋翼", "domain": "tech_concept", "episodes": [ - "ep013_20260407_x76_feiji" + "ep013_20260407_x76_feiji", + "ep022_20260303_yinghe_naodong" ], - "frequency": 1 + "frequency": 2 }, "电磁干扰": { "term": "电磁干扰", @@ -7494,9 +7548,10 @@ "term": "西班牙", "domain": "org", "episodes": [ - "ep015_20260428_jianpao_meixue" + "ep015_20260428_jianpao_meixue", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 1 + "frequency": 2 }, "自动装填": { "term": "自动装填", @@ -7605,11 +7660,12 @@ }, "测距仪": { "term": "测距仪", - "domain": "tech_concept", + "domain": "weapon", "episodes": [ - "ep015_20260428_jianpao_meixue" + "ep015_20260428_jianpao_meixue", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 1 + "frequency": 2 }, "射击指挥装置": { "term": "射击指挥装置", @@ -7637,11 +7693,12 @@ }, "弹道计算机": { "term": "弹道计算机", - "domain": "tech_concept", + "domain": "weapon", "episodes": [ - "ep015_20260428_jianpao_meixue" + "ep015_20260428_jianpao_meixue", + "ep021_20260113_haizhan_dianfu" ], - "frequency": 1 + "frequency": 2 }, "炮塔联动系统": { "term": "炮塔联动系统", @@ -8623,9 +8680,10 @@ "term": "翼身融合", "domain": "tech_concept", "episodes": [ - "ep017_20260512_nixi_yayi" + "ep017_20260512_nixi_yayi", + "ep022_20260303_yinghe_naodong" ], - "frequency": 1 + "frequency": 2 }, "红旗军演": { "term": "红旗军演", @@ -9527,9 +9585,10 @@ "term": "F-35B", "domain": "model", "episodes": [ - "ep020_20260609_yanzhi_wadi" + "ep020_20260609_yanzhi_wadi", + "ep022_20260303_yinghe_naodong" ], - "frequency": 1 + "frequency": 2 }, "X-35": { "term": "X-35", @@ -9746,5 +9805,797 @@ "ep020_20260609_yanzhi_wadi" ], "frequency": 1 + }, + "专家 1": { + "term": "专家 1", + "domain": "person", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "主持人 2": { + "term": "主持人 2", + "domain": "person", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "专家 2": { + "term": "专家 2", + "domain": "person", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "专家 3": { + "term": "专家 3", + "domain": "person", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "专家 4": { + "term": "专家 4", + "domain": "person", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "专家 5": { + "term": "专家 5", + "domain": "person", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "主持人 6": { + "term": "主持人 6", + "domain": "person", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "专家 6": { + "term": "专家 6", + "domain": "person", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "主持人 7": { + "term": "主持人 7", + "domain": "person", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "风帆战列舰": { + "term": "风帆战列舰", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "蒸汽铁甲舰": { + "term": "蒸汽铁甲舰", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "无畏舰": { + "term": "无畏舰", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "战列舰": { + "term": "战列舰", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "航空母舰": { + "term": "航空母舰", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "航母战斗群": { + "term": "航母战斗群", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "舰载机": { + "term": "舰载机", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "超音速反舰导弹": { + "term": "超音速反舰导弹", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "反舰弹道导弹": { + "term": "反舰弹道导弹", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "智能无人作战平台": { + "term": "智能无人作战平台", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "无人作战船": { + "term": "无人作战船", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "侦察卫星": { + "term": "侦察卫星", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "预警卫星": { + "term": "预警卫星", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "导航与定位卫星": { + "term": "导航与定位卫星", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "远程轰炸机": { + "term": "远程轰炸机", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "预警机": { + "term": "预警机", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "反潜机": { + "term": "反潜机", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "驱逐舰": { + "term": "驱逐舰", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "舷炮": { + "term": "舷炮", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "火炮": { + "term": "火炮", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "线膛炮": { + "term": "线膛炮", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "主炮": { + "term": "主炮", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "副炮": { + "term": "副炮", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "鱼雷": { + "term": "鱼雷", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "水雷": { + "term": "水雷", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "炮弹": { + "term": "炮弹", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "装甲板": { + "term": "装甲板", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "高速数据链": { + "term": "高速数据链", + "domain": "weapon", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "依阿华级战列舰": { + "term": "依阿华级战列舰", + "domain": "model", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "大和级战列舰": { + "term": "大和级战列舰", + "domain": "model", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "“无畏”号战列舰": { + "term": "“无畏”号战列舰", + "domain": "model", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "英国皇家海军": { + "term": "英国皇家海军", + "domain": "unit_designation", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "德国海军": { + "term": "德国海军", + "domain": "unit_designation", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "日本海军": { + "term": "日本海军", + "domain": "unit_designation", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "奥地利海军": { + "term": "奥地利海军", + "domain": "unit_designation", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "普鲁士海军": { + "term": "普鲁士海军", + "domain": "unit_designation", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "普鲁士": { + "term": "普鲁士", + "domain": "org", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "奥地利": { + "term": "奥地利", + "domain": "org", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "舷炮对决": { + "term": "舷炮对决", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "接舷肉搏": { + "term": "接舷肉搏", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "战列线战术": { + "term": "战列线战术", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "舷炮齐射": { + "term": "舷炮齐射", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "火力决胜": { + "term": "火力决胜", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "机动突击": { + "term": "机动突击", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "集中火力": { + "term": "集中火力", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "舰队决战": { + "term": "舰队决战", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "全重炮设计": { + "term": "全重炮设计", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "饱和打击": { + "term": "饱和打击", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "大舰巨炮主义": { + "term": "大舰巨炮主义", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "隐蔽突击": { + "term": "隐蔽突击", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "无限制潜艇战": { + "term": "无限制潜艇战", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "海空协同": { + "term": "海空协同", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "制海权": { + "term": "制海权", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "体系化作战": { + "term": "体系化作战", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "信息化海战": { + "term": "信息化海战", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "全域协同": { + "term": "全域协同", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "体系化区域拒止战术": { + "term": "体系化区域拒止战术", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "四维一体": { + "term": "四维一体", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "平台对抗": { + "term": "平台对抗", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "体系博弈": { + "term": "体系博弈", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "远洋投射": { + "term": "远洋投射", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "近岸防御": { + "term": "近岸防御", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "远洋制衡": { + "term": "远洋制衡", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "双轨打击": { + "term": "双轨打击", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "立体封锁": { + "term": "立体封锁", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "发现即摧毁": { + "term": "发现即摧毁", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "无接触": { + "term": "无接触", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "超视距": { + "term": "超视距", + "domain": "tech_concept", + "episodes": [ + "ep021_20260113_haizhan_dianfu" + ], + "frequency": 1 + }, + "V173": { + "term": "V173", + "domain": "model", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "飞行薄饼": { + "term": "飞行薄饼", + "domain": "weapon", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "沃特公司": { + "term": "沃特公司", + "domain": "org", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "查尔斯·齐默尔曼": { + "term": "查尔斯·齐默尔曼", + "domain": "person", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "XF5U-1": { + "term": "XF5U-1", + "domain": "model", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "康维尔XFY-1": { + "term": "康维尔XFY-1", + "domain": "model", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "POGO": { + "term": "POGO", + "domain": "weapon", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "雅克-38": { + "term": "雅克-38", + "domain": "model", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "海鹞": { + "term": "海鹞", + "domain": "model", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "卡-22": { + "term": "卡-22", + "domain": "model", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "A-40": { + "term": "A-40", + "domain": "model", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "坦克飞翼": { + "term": "坦克飞翼", + "domain": "weapon", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "安东诺夫": { + "term": "安东诺夫", + "domain": "org", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "T-60轻型坦克": { + "term": "T-60轻型坦克", + "domain": "model", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "太平洋战争": { + "term": "太平洋战争", + "domain": "org", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "冷战": { + "term": "冷战", + "domain": "org", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "苏军": { + "term": "苏军", + "domain": "org", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "圆盘翼": { + "term": "圆盘翼", + "domain": "tech_concept", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "复合式飞行器": { + "term": "复合式飞行器", + "domain": "tech_concept", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "飞行坦克": { + "term": "飞行坦克", + "domain": "tech_concept", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "滑翔机": { + "term": "滑翔机", + "domain": "tech_concept", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 + }, + "闪电战": { + "term": "闪电战", + "domain": "tech_concept", + "episodes": [ + "ep022_20260303_yinghe_naodong" + ], + "frequency": 1 } } \ No newline at end of file diff --git a/doco/deliverables/第02期_20260113_武器进化论:海战颠覆者_付天雨_融合A稿.docx b/doco/deliverables/第02期_20260113_武器进化论:海战颠覆者_付天雨_融合A稿.docx new file mode 100644 index 0000000..edfe8c5 Binary files /dev/null and b/doco/deliverables/第02期_20260113_武器进化论:海战颠覆者_付天雨_融合A稿.docx differ diff --git a/doco/deliverables/第03期_20260120_当武器装备长出硅基大脑_孙逸昊_融合A稿.docx b/doco/deliverables/第03期_20260120_当武器装备长出硅基大脑_孙逸昊_融合A稿.docx new file mode 100644 index 0000000..447c62c Binary files /dev/null and b/doco/deliverables/第03期_20260120_当武器装备长出硅基大脑_孙逸昊_融合A稿.docx differ diff --git a/doco/deliverables/第04期_20260127_潜艇的仿生之路_穆佩弦_融合A稿.docx b/doco/deliverables/第04期_20260127_潜艇的仿生之路_穆佩弦_融合A稿.docx new file mode 100644 index 0000000..816419c Binary files /dev/null and b/doco/deliverables/第04期_20260127_潜艇的仿生之路_穆佩弦_融合A稿.docx differ diff --git a/doco/deliverables/第05期_20260203_舰证不凡_左鑫_融合A稿.docx b/doco/deliverables/第05期_20260203_舰证不凡_左鑫_融合A稿.docx new file mode 100644 index 0000000..b91fe9d Binary files /dev/null and b/doco/deliverables/第05期_20260203_舰证不凡_左鑫_融合A稿.docx differ diff --git a/doco/deliverables/第06期_20260210_大国巨舰上的奇妙反差_左鑫_融合A稿.docx b/doco/deliverables/第06期_20260210_大国巨舰上的奇妙反差_左鑫_融合A稿.docx new file mode 100644 index 0000000..8c3efd5 Binary files /dev/null and b/doco/deliverables/第06期_20260210_大国巨舰上的奇妙反差_左鑫_融合A稿.docx differ diff --git a/doco/deliverables/第07期_20260217_马年装备图鉴_张彤枫_融合A稿.docx b/doco/deliverables/第07期_20260217_马年装备图鉴_张彤枫_融合A稿.docx new file mode 100644 index 0000000..a8465dd Binary files /dev/null and b/doco/deliverables/第07期_20260217_马年装备图鉴_张彤枫_融合A稿.docx differ diff --git a/doco/deliverables/第08期_20260224_重金造神器还是造摆设_付天雨_融合A稿.docx b/doco/deliverables/第08期_20260224_重金造神器还是造摆设_付天雨_融合A稿.docx new file mode 100644 index 0000000..d5ca539 Binary files /dev/null and b/doco/deliverables/第08期_20260224_重金造神器还是造摆设_付天雨_融合A稿.docx differ diff --git a/doco/deliverables/第09期_20260303_硬核脑洞:那些不走寻常路的飞行器_左鑫_融合A稿.docx b/doco/deliverables/第09期_20260303_硬核脑洞:那些不走寻常路的飞行器_左鑫_融合A稿.docx new file mode 100644 index 0000000..eeb2f22 Binary files /dev/null and b/doco/deliverables/第09期_20260303_硬核脑洞:那些不走寻常路的飞行器_左鑫_融合A稿.docx differ diff --git a/doco/deliverables/第10期_20260310_枪械射速决定论_张彤枫_融合A稿.docx b/doco/deliverables/第10期_20260310_枪械射速决定论_张彤枫_融合A稿.docx new file mode 100644 index 0000000..130d6da Binary files /dev/null and b/doco/deliverables/第10期_20260310_枪械射速决定论_张彤枫_融合A稿.docx differ diff --git a/doco/deliverables/第11期_20260317_武器进化论:空战格局的演进之路_付天雨_融合A稿.docx b/doco/deliverables/第11期_20260317_武器进化论:空战格局的演进之路_付天雨_融合A稿.docx new file mode 100644 index 0000000..c7afaec Binary files /dev/null and b/doco/deliverables/第11期_20260317_武器进化论:空战格局的演进之路_付天雨_融合A稿.docx differ diff --git a/doco/deliverables/第12期_20260324_逆袭战局的集成武器_穆佩弦_融合A稿.docx b/doco/deliverables/第12期_20260324_逆袭战局的集成武器_穆佩弦_融合A稿.docx new file mode 100644 index 0000000..d86a5fa Binary files /dev/null and b/doco/deliverables/第12期_20260324_逆袭战局的集成武器_穆佩弦_融合A稿.docx differ diff --git a/doco/deliverables/第13期_20260331_枪械设计中的小尺寸大讲究_孙逸昊_融合A稿.docx b/doco/deliverables/第13期_20260331_枪械设计中的小尺寸大讲究_孙逸昊_融合A稿.docx new file mode 100644 index 0000000..a21ee13 Binary files /dev/null and b/doco/deliverables/第13期_20260331_枪械设计中的小尺寸大讲究_孙逸昊_融合A稿.docx differ diff --git a/doco/deliverables/第14期_20260407_X系列新成员X-76飞机_左鑫_融合A稿.docx b/doco/deliverables/第14期_20260407_X系列新成员X-76飞机_左鑫_融合A稿.docx new file mode 100644 index 0000000..92dd65e Binary files /dev/null and b/doco/deliverables/第14期_20260407_X系列新成员X-76飞机_左鑫_融合A稿.docx differ diff --git a/doco/deliverables/第15期_20260414_现代防空反导大对决_付天雨_融合A稿.docx b/doco/deliverables/第15期_20260414_现代防空反导大对决_付天雨_融合A稿.docx new file mode 100644 index 0000000..a2f8bde Binary files /dev/null and b/doco/deliverables/第15期_20260414_现代防空反导大对决_付天雨_融合A稿.docx differ diff --git a/doco/deliverables/第16期_20260421_启程远航_张彤枫_融合A稿.docx b/doco/deliverables/第16期_20260421_启程远航_张彤枫_融合A稿.docx new file mode 100644 index 0000000..f41a3b8 Binary files /dev/null and b/doco/deliverables/第16期_20260421_启程远航_张彤枫_融合A稿.docx differ diff --git a/doco/deliverables/第17期_20260428_舰炮的暴力美学_穆佩弦_融合A稿.docx b/doco/deliverables/第17期_20260428_舰炮的暴力美学_穆佩弦_融合A稿.docx new file mode 100644 index 0000000..b15a266 Binary files /dev/null and b/doco/deliverables/第17期_20260428_舰炮的暴力美学_穆佩弦_融合A稿.docx differ diff --git a/doco/deliverables/第18期_20260505_海上先锋:无人舰艇的实战与未来_左鑫_融合A稿.docx b/doco/deliverables/第18期_20260505_海上先锋:无人舰艇的实战与未来_左鑫_融合A稿.docx new file mode 100644 index 0000000..6318f1c Binary files /dev/null and b/doco/deliverables/第18期_20260505_海上先锋:无人舰艇的实战与未来_左鑫_融合A稿.docx differ diff --git a/doco/deliverables/第19期_20260512_逆袭的鸭翼_张彤枫_融合A稿.docx b/doco/deliverables/第19期_20260512_逆袭的鸭翼_张彤枫_融合A稿.docx new file mode 100644 index 0000000..a7f9746 Binary files /dev/null and b/doco/deliverables/第19期_20260512_逆袭的鸭翼_张彤枫_融合A稿.docx differ diff --git a/doco/deliverables/第20期_20260519_机枪双雄_付天雨_融合A稿.docx b/doco/deliverables/第20期_20260519_机枪双雄_付天雨_融合A稿.docx new file mode 100644 index 0000000..6b0a7d6 Binary files /dev/null and b/doco/deliverables/第20期_20260519_机枪双雄_付天雨_融合A稿.docx differ diff --git a/doco/deliverables/第21期_20260526_枪王对决_左鑫_融合A稿.docx b/doco/deliverables/第21期_20260526_枪王对决_左鑫_融合A稿.docx new file mode 100644 index 0000000..98db2ee Binary files /dev/null and b/doco/deliverables/第21期_20260526_枪王对决_左鑫_融合A稿.docx differ diff --git a/doco/deliverables/第22期_20260602_玩具总动员_穆佩弦_融合A稿.docx b/doco/deliverables/第22期_20260602_玩具总动员_穆佩弦_融合A稿.docx new file mode 100644 index 0000000..d779608 Binary files /dev/null and b/doco/deliverables/第22期_20260602_玩具总动员_穆佩弦_融合A稿.docx differ diff --git a/doco/deliverables/第23期_20260609_武器装备的颜值洼地_张彤枫_融合A稿.docx b/doco/deliverables/第23期_20260609_武器装备的颜值洼地_张彤枫_融合A稿.docx new file mode 100644 index 0000000..ad0a121 Binary files /dev/null and b/doco/deliverables/第23期_20260609_武器装备的颜值洼地_张彤枫_融合A稿.docx differ diff --git a/doco/src/doco/cli.py b/doco/src/doco/cli.py index 57252fb..478e937 100644 --- a/doco/src/doco/cli.py +++ b/doco/src/doco/cli.py @@ -576,7 +576,7 @@ def run( """ from .asr_adapter import get_audio_duration_ms as _wav_duration - episode_dir = Path("programs") / episode_id + episode_dir = (Path("programs") / episode_id).resolve() episode_dir.mkdir(parents=True, exist_ok=True) video_path = Path(input_video)