# Bug Report: ASR Timeout 後 pre_chunks 遺失

**發現者**：M4  
**日期**：2026-05-07  

---

## 現象

ASR 執行 timeout 後（~30min），輸出寫入 `.json.err` 而非 `.json`。即使事後標記 ASR 為 completed，**pre_chunks 從未被插入**，導致 Rule 1 ingest 抓不到 ASR 資料 → 0 sentence chunks。

## 影響鏈

```
ASR timeout → .json.tmp → .json.err（executor.rs: mark_failed）
                                      ↓
                            pre_chunks 從未被寫入 DB
                                      ↓
                    Rule 1 ingest 查 pre_chunks → 0 筆
                                      ↓
                            0 sentence chunks → 5W1H 無法執行
```

## 目前的修復（M5 executor.rs）

M5 已在 `executor.rs` 中修復：timeout 時若 `.tmp` 為有效 JSON，保留為 `.json` 而非改名 `.err`。

**但這只解決了「輸出檔案存在」的問題，沒有解決「pre_chunks 如何補寫」的問題。**

## 剩餘問題

即使 `.tmp → .json` 被保留，`pre_chunks` 的插入是在 processor 執行過程中完成的（`processor.rs` 中的 `store_*` 函數）。當 processor 被 timeout 中止時，這些寫入可能尚未發生或只寫入一部分。

## 建議

1. 驗證 `executor.rs` 修復後，pre_chunks 是否確實被寫入（在 timeout 前來得及寫入的部分）
2. 或改為 streaming 模式：ASR 每完成一個 segment 就 flush 一次 pre_chunks
3. 或在 `mark_failed` 時一併補寫已完成的 pre_chunks
