---
document_type: "report"
service: "MOMENTRY_CORE"
title: "Momentry Core V1.0.0 Production (3002) 驗證報告"
date: "2026-05-01"
version: "V1.0"
status: "completed"
owner: "Warren"
created_by: "OpenCode"
tags:
  - "production"
  - "verification"
  - "v1.0.0"
  - "api-test"
  - "end-to-end"
  - "e2e-test"
  - "deployment"
ai_query_hints:
  - "Production Port 3002 驗證結果"
  - "V1.0.0 端對端測試紀錄"
  - "API 回應格式驗證"
  - "所有 core API 是否在 production 環境正常運作"
  - "search API 的端對端測試結果"
  - "identity bind API 的資料庫驗證"
  - "deprecation verification 測試結果"
related_documents:
  - "API_V1.0.0/MOMENTRY_CORE_API_V1.0.0.md"
  - "API_V1.0.0/RELEASE_TEST_REPORT_v1.0.0.md"
  - "API_V1.0.0/RELEASE_VERIFICATION_V1.0.0.md"
  - "API_V1.0.0/API_DICTIONARY_V1.0.0.md"
  - "API_V1.0.0/MOMENTRY_CORE_API_V1.0.0.md"
---

# Momentry Core V1.0.0 Production (3002) 驗證報告

| 項目 | 內容 |
|------|------|
| 建立者 | OpenCode |
| 建立時間 | 2026-05-01 |
| 文件版本 | V1.0 |
| 測試環境 | Production Port 3002 |
| 測試帳號 | `demo` / `demo` (API Key: `muser_test_001`) |

---

## 版本歷史

| 版本 | 日期 | 目的 | 操作人 | 工具/模型 |
|------|------|------|--------|-----------|
| V1.0 | 2026-05-01 | 基於 Clean API 藍圖，完成 3002 端對端驗證 | OpenCode | OpenCode |

---

## 關鍵術語定義

| 術語 | 定義 |
|------|------|
| Production | 正式環境 (Port 3002)，提供外部服務 |
| end-to-end test | 端對端測試，驗證完整 API 流程 |
| Schema Migration | 資料庫結構升級，確保與程式碼版本一致 |
| deprecation verification | 確認舊版端點已移除的測試 |
| file_uuid | 32 碼 SHA256 檔案識別碼 |
| identity_bindings | 身份綁定資料表，記錄 face/speaker 與 identity 的關聯 |

## 1. 概述

本報告以 `MOMENTRY_CORE_API_V1.0.0.md` 為測試藍圖，對 **Production 環境 (Port 3002)** 進行全面端對端驗證。
所有端點均已通過實測，並記錄實際 HTTP 狀態碼與回應結構。

---

## 2. 核心驗證結果 (端對端測試)

### 2.1 系統與認證 (System & Auth)
| API Endpoint | Method | 測試參數 | HTTP 狀態 | 回應摘要 | 結果 |
| :--- | :--- | :--- | :--- | :--- | :--- |
| `/health` | GET | - | `200 OK` | `{"status": "ok", "version": "1.0.0"}` | ✅ **PASS** |

### 2.2 檔案管理 (File Management)
| API Endpoint | Method | 測試參數 | HTTP 狀態 | 回應摘要 | 結果 |
| :--- | :--- | :--- | :--- | :--- | :--- |
| `/api/v1/files` | GET | `page=1&page_size=1` | `200 OK` | `{"success": true, "data": [{"file_uuid":"232b98...", ...}]}` | ✅ **PASS** |
| `/api/v1/files/:uuid` | GET | `uuid: 232b98ecd4e8f338` | `200 OK` | `{"success": true, "file_uuid": "...", "metadata": {"format": {...}}}` | ✅ **PASS** |
| `/api/v1/videos/:uuid` | DELETE | `uuid: non-existent` | `404 Not Found` | 預期行為 (資源不存在) | ✅ **PASS** |

### 2.3 搜尋與檢索 (Search & Retrieval)
| API Endpoint | Method | 測試參數 | HTTP 狀態 | 回應摘要 | 結果 |
| :--- | :--- | :--- | :--- | :--- | :--- |
| `/api/v1/search` | POST | `{"query":"test", "limit":3}` | `200 OK` | `{"results": [], "query": "test"}` | ✅ **PASS** |
| `/api/v1/search/hybrid` | POST | `{"query":"test", "limit":3}` | `200 OK` | `{"results": [], "query": "test"}` | ✅ **PASS** |
| `/api/v1/search/visual/class`| POST | `{"uuid":"...", "object_class":"person"}`| `200 OK` | `{"chunks": [], "total": 0}` | ✅ **PASS** |

### 2.4 身份與人物管理 (Identity Management)
| API Endpoint | Method | 測試參數 | HTTP 狀態 | 回應摘要 | 結果 |
| :--- | :--- | :--- | :--- | :--- | :--- |
| `/api/v1/identities` | GET | `page=1&page_size=2` | `200 OK` | `{"identities": [{"id": 2, "name": "Audrey Hepburn"}], "count": 2}` | ✅ **PASS** |
| `/api/v1/identities/:uuid`| GET | `uuid: a9a90105...` | `200 OK` | `{"success": true, "uuid": "...", "name": "Trace 2 Fixed Format"}` | ✅ **PASS** |
| `/api/v1/identities/bind` | POST | `{"identity_id": 2, ...}` | `200 OK` | `{"success": true, "message": "Bound face 'release_test_final' to Identity..."}` | ✅ **PASS** |

### 2.5 臉部與快照 (Face & Snapshots)
| API Endpoint | Method | 測試參數 | HTTP 狀態 | 回應摘要 | 結果 |
| :--- | :--- | :--- | :--- | :--- | :--- |
| `/api/v1/files/:uuid/snapshots` | GET | `uuid: 232b98...` | `200 OK` | `{"success": true, "file_uuid": "...", "tier": "cold", "types": [...]}` | ✅ **PASS** |
| `POST /api/v1/files/:uuid/snapshots/migrate` | POST | `{"parent_uuid":"..."}` | `200 OK` | `{"success": true, "message": "Migrated 4 snapshot types"}` | ✅ **PASS** |

### 2.6 任務與代理人 (Jobs & Agents)
| API Endpoint | Method | 測試參數 | HTTP 狀態 | 回應摘要 | 結果 |
| :--- | :--- | :--- | :--- | :--- | :--- |
| `/api/v1/progress/:uuid` | GET | `uuid: 232b98...` | `200 OK` | `{"uuid": "...", "overall_progress": 0, "processors": [...]}` | ✅ **PASS** |
| `/api/v1/assets/:uuid/process`| POST | `uuid: 232b98...` | `400 Bad Request` | `{"message": "Total frames unknown. Run probe first."}` (預期邏輯檢查) | ✅ **PASS** |

---

## 3. 棄用端點驗證 (Deprecation Verification)

確保舊版端點已正確從路由中移除，不會干擾新開發。

| 舊版端點 | 預期行為 | 實際回應 (Port 3002) | 狀態 |
| :--- | :--- | :--- | :--- |
| `GET /api/v1/videos` (列表) | `404 Not Found` | `404 Not Found` | ✅ **已移除** |
| `POST /api/v1/register` (Legacy) | `404 Not Found` | `404 Not Found` | ✅ **已移除** |
| `POST /api/v1/probe` | `404 Not Found` | `404 Not Found` | ✅ **已移除** |
| `GET /api/v1/n8n/search` | `404 Not Found` | `404 Not Found` | ✅ **已移除** |

---

## 4. 關鍵修復驗證紀錄

### 4.1 `probe_json` JSONB 映射修復
*   **測試**: `POST /api/v1/files/register`
*   **結果**: ✅ 成功寫入 32 碼 UUID，`probe_json` 欄位正確序列化存入 PostgreSQL `jsonb` 型別欄位。

### 4.2 `identity_bindings` Schema 升級
*   **測試**: `POST /api/v1/identities/bind`
*   **結果**: ✅ 成功綁定。資料庫 `identity_bindings` 表格已成功從舊版 `uuid/binding_type` 升級至 V1.0.0 的 `identity_type/identity_value` 結構，並建立對應 Unique Index。

---

## 5. 結論

**Momentry Core V1.0.0 已成功部署至 Production (Port 3002)。**
所有 API 端點均已通過端對端測試，回應格式符合 `MOMENTRY_CORE_API_V1.0.0.md` 藍圖規範。
資料庫結構已同步至 V1.0.0 標準，舊版 API 已清理完畢。系統狀態穩定，可供 Marcom 團隊進行 GUI 整合開發。
