M4: bug report - parent_chunks missing summary_vector/scene_order

This commit is contained in:
Warren
2026-05-08 01:26:43 +08:00
parent 736b14be15
commit 3e70f1b590

View File

@@ -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 |