diff --git a/docs_v1.0/M4_workspace/2026-05-08_bug_parent_chunks_missing_columns.md b/docs_v1.0/M4_workspace/2026-05-08_bug_parent_chunks_missing_columns.md new file mode 100644 index 0000000..9c575f6 --- /dev/null +++ b/docs_v1.0/M4_workspace/2026-05-08_bug_parent_chunks_missing_columns.md @@ -0,0 +1,66 @@ +# Bug: `parent_chunks` 缺少 `summary_vector` / `scene_order` 欄位 + +## 症狀 + +`POST /api/v1/search/smart` 回傳 500 error: + +``` +DB search failed: column "scene_order" does not exist +``` + +同時 `summary_vector` 欄位也不存在。 + +## 根因 + +`src/core/db/postgres_db.rs` 中的 `search_parent_chunks_semantic()` 使用了 DB 中不存在的欄位: + +```sql +SELECT id, scene_order, start_time, end_time, summary_text as summary, + metadata, + (1 - (summary_vector <=> $1::vector)) as similarity +FROM parent_chunks +WHERE uuid = $2 +ORDER BY summary_vector <=> $1::vector +``` + +但 `dev.parent_chunks` table 實際欄位: + +| 欄位 | 類型 | 在 code 中使用? | +|------|------|-----------------| +| `id` | integer | ✅ | +| `uuid` | varchar | ✅ | +| `chunk_id` | varchar | ❌ 未使用 | +| `summary_text` | text | ✅ | +| `summary_tsvector` | tsvector | ❌ 未使用 | +| `metadata` | jsonb | ✅ | +| `scene_order` | ❌ 不存在 | ❌ code 使用但 DB 無 | +| `summary_vector` | ❌ 不存在 | ❌ code 使用但 DB 無 | + +## 建議修正 + +**選項 A**:修改 `search_parent_chunks_semantic()` 中的 SQL 查詢,移除不存在的欄位 + +```diff +- SELECT id, scene_order, start_time, end_time, summary_text as summary, metadata, +- (1 - (summary_vector <=> $1::vector)) as similarity +- FROM parent_chunks +- WHERE uuid = $2 +- ORDER BY summary_vector <=> $1::vector ++ SELECT id, summary_text as summary, metadata ++ FROM parent_chunks ++ WHERE uuid = $1 +``` + +**選項 B**:新增 migration 建立缺少的欄位 + +```sql +ALTER TABLE dev.parent_chunks ADD COLUMN scene_order integer; +ALTER TABLE dev.parent_chunks ADD COLUMN summary_vector vector(768); +``` + +## 相關檔案 + +| 檔案 | 說明 | +|------|------| +| `src/core/db/postgres_db.rs` | `search_parent_chunks_semantic()` 使用不存在的欄位 | +| `src/api/search.rs` | `smart_search()` 呼叫 semantic search |