feat: Initial v0.9 release with API Key authentication
## v0.9.20260325_144654 ### Features - API Key Authentication System - Job Worker System - V2 Backup Versioning ### Bug Fixes - get_processor_results_by_job column mapping Co-authored-by: OpenCode
This commit is contained in:
341
docs/N8N_DEMO_EXECUTION_LOG.md
Normal file
341
docs/N8N_DEMO_EXECUTION_LOG.md
Normal file
@@ -0,0 +1,341 @@
|
||||
# n8n Video RAG Demo - API 執行記錄
|
||||
|
||||
> 建立時間: 2026-03-22
|
||||
> 目標: 完整執行 n8n Video RAG Workflow 並記錄所有 API 呼叫
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: SFTPGo 準備
|
||||
|
||||
### Step 1.1: 取得 Demo User Token
|
||||
|
||||
**API 呼叫:**
|
||||
```bash
|
||||
curl -X GET "http://localhost:8080/api/v2/user/token" \
|
||||
-u "demo:demopassword123"
|
||||
```
|
||||
|
||||
**Request:**
|
||||
```
|
||||
GET /api/v2/user/token
|
||||
Authorization: Basic ZG9tbzpkZW1vcGFzc3dvcmQxMjM=
|
||||
```
|
||||
|
||||
**Response (200 OK):**
|
||||
```json
|
||||
{
|
||||
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
||||
"expires_at": "2026-03-22T07:05:57Z"
|
||||
}
|
||||
```
|
||||
|
||||
**Token 有效期限:** 20 分鐘
|
||||
|
||||
**Session Token (Demo User):**
|
||||
```
|
||||
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiQVBJVXNlciIsIjo6MSJdLCJleHAiOjE3NzQxNjMxNTcsImlhdCI6MTc3NDE2MTk1NywianRpIjoiZDZ2cDA5YWcyZnIwMnY3aTlybDAiLCJuYmYiOjE3NzQxNjE5NDcsInN1YiI6IjE3NzQxNjE5NTM0OTMiLCJ1c2VybmFtZSI6ImRlbW8ifQ.yw0UCv8sQXXCkOr7qmK2ejLzuoA8IDrmC9bpgFE4R_Q
|
||||
```
|
||||
|
||||
**結果:** ✅ 成功
|
||||
|
||||
---
|
||||
|
||||
### Step 1.2: 上傳測試影片到 SFTPGo
|
||||
|
||||
**影片選擇:** `Old_Time_Movie_Show_-_Charade_1963.HD.mov` (2.3 GB)
|
||||
- 路徑: `/Users/accusys/test_video/Old_Time_Movie_Show_-_Charade_1963.HD.mov`
|
||||
- ASR Segments: 1,917 (已預處理)
|
||||
|
||||
**API 呼叫:**
|
||||
```bash
|
||||
TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
|
||||
curl -X POST "http://localhost:8080/api/v2/user/files" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-F "path=/demo" \
|
||||
-F "mkdir_parents=true" \
|
||||
-F "filenames=@/Users/accusys/test_video/Old_Time_Movie_Show_-_Charade_1963.HD.mov"
|
||||
```
|
||||
|
||||
**Request:**
|
||||
```
|
||||
POST /api/v2/user/files
|
||||
Authorization: Bearer <token>
|
||||
Content-Type: multipart/form-data
|
||||
|
||||
path: /demo
|
||||
mkdir_parents: true
|
||||
filenames: @/path/to/Old_Time_Movie_Show_-_Charade_1963.HD.mov
|
||||
```
|
||||
|
||||
**Response (201 Created):**
|
||||
```json
|
||||
{"message":"Upload completed"}
|
||||
```
|
||||
|
||||
**上傳統計:**
|
||||
- 檔案大小: 2,361,629,896 bytes (2.3 GB)
|
||||
- 上傳時間: 7 秒
|
||||
- 平均速度: ~337 MB/s
|
||||
|
||||
**結果:** ✅ 成功
|
||||
|
||||
---
|
||||
|
||||
### Step 1.3: 建立分享連結
|
||||
|
||||
**API 呼叫:**
|
||||
```bash
|
||||
curl -X POST "http://localhost:8080/api/v2/user/shares" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"name": "Charade_1963_Demo",
|
||||
"paths": ["/Old_Time_Movie_Show_-_Charade_1963.HD.mov"],
|
||||
"scope": 1,
|
||||
"expires_at": 0
|
||||
}'
|
||||
```
|
||||
|
||||
**Request:**
|
||||
```json
|
||||
POST /api/v2/user/shares
|
||||
Authorization: Bearer <token>
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"name": "Charade_1963_Demo",
|
||||
"paths": ["/Old_Time_Movie_Show_-_Charade_1963.HD.mov"],
|
||||
"scope": 1,
|
||||
"expires_at": 0
|
||||
}
|
||||
```
|
||||
|
||||
**Response (200 OK):**
|
||||
```json
|
||||
{"message":"Share created"}
|
||||
```
|
||||
|
||||
**結果:** ✅ 成功
|
||||
|
||||
---
|
||||
|
||||
### Step 1.4: 驗證上傳結果
|
||||
|
||||
**API 呼叫 - 列出分享:**
|
||||
```bash
|
||||
curl -X GET "http://localhost:8080/api/v2/user/shares" \
|
||||
-H "Authorization: Bearer $TOKEN"
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id": "CjmQfrkXY5qDtC46WVZY2S",
|
||||
"name": "Charade_1963_Demo",
|
||||
"scope": 1,
|
||||
"paths": [
|
||||
"/Old_Time_Movie_Show_-_Charade_1963.HD.mov"
|
||||
],
|
||||
"username": "demo",
|
||||
"created_at": 1774162072853,
|
||||
"updated_at": 1774162072853,
|
||||
"password": ""
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
**分享連結:**
|
||||
- Share ID: `CjmQfrkXY5qDtC46WVZY2S`
|
||||
- Browse URL: `http://localhost:8080/web/client/pubshares/CjmQfrkXY5qDtC46WVZY2S/browse`
|
||||
|
||||
**本地目錄驗證:**
|
||||
```
|
||||
/Users/accusys/sftpgo_test/demo/
|
||||
└── Old_Time_Movie_Show_-_Charade_1963.HD.mov (2,361,629,896 bytes)
|
||||
```
|
||||
|
||||
**結果:** ✅ 成功
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: Momentry 註冊
|
||||
|
||||
### Step 2.1: 健康檢查
|
||||
|
||||
**API 呼叫:**
|
||||
```bash
|
||||
curl -X GET "http://localhost:3002/health"
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```
|
||||
(待填寫)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Step 2.2: 註冊影片
|
||||
|
||||
**API 呼叫:**
|
||||
```bash
|
||||
curl -X POST "http://localhost:3002/api/v1/register" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"path": "/Users/accusys/sftpgo_test/demo/Old_Time_Movie_Show_-_Charade_1963.HD.mov"
|
||||
}'
|
||||
```
|
||||
|
||||
**Request:**
|
||||
```json
|
||||
POST /api/v1/register
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"path": "/Users/accusys/sftpgo_test/demo/Old_Time_Movie_Show_-_Charade_1963.HD.mov"
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```
|
||||
(待填寫)
|
||||
{
|
||||
"uuid": "...",
|
||||
"video_id": ...,
|
||||
"file_name": "...",
|
||||
"duration": ...,
|
||||
"width": ...,
|
||||
"height": ...
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 3: 處理進度追蹤
|
||||
|
||||
### Step 3.1: 查詢處理進度 (新版 API)
|
||||
|
||||
**API 呼叫:**
|
||||
```bash
|
||||
curl -X GET "http://localhost:3002/api/v1/progress/{uuid}"
|
||||
```
|
||||
|
||||
**Response (新版 - 包含影片資訊與系統資源):**
|
||||
```json
|
||||
{
|
||||
"uuid": "a1b10138a6bbb0cd",
|
||||
"user": null,
|
||||
"group": null,
|
||||
"file_name": "Old_Time_Movie_Show_-_Charade_1963.HD.mov",
|
||||
"duration": 6879.33,
|
||||
"overall_progress": 28,
|
||||
"cpu_percent": 3.7,
|
||||
"gpu_percent": null,
|
||||
"memory_percent": 0.1,
|
||||
"memory_mb": 19328,
|
||||
"processors": [
|
||||
{"name": "asr", "status": "complete", "current": 1867, "total": 0, "progress": 100, "message": "1867 segments"},
|
||||
{"name": "cut", "status": "complete", "current": 1331, "total": 1331, "progress": 100, "message": "1331 scenes"},
|
||||
{"name": "asrx", "status": "error", "current": 0, "total": 0, "progress": 0, "message": "0 segments"},
|
||||
{"name": "yolo", "status": "progress", "current": 69400, "total": 412343, "progress": 16, "message": "frame 69400"},
|
||||
{"name": "ocr", "status": "pending", "current": 0, "total": 0, "progress": 0, "message": ""},
|
||||
{"name": "face", "status": "pending", "current": 0, "total": 0, "progress": 0, "message": ""},
|
||||
{"name": "pose", "status": "pending", "current": 0, "total": 0, "progress": 0, "message": ""}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**欄位說明:**
|
||||
| 欄位 | 說明 |
|
||||
|------|------|
|
||||
| uuid | 影片唯一識別碼 |
|
||||
| user | 處理所屬用戶 (如已設定) |
|
||||
| group | 處理所屬群組 (如已設定) |
|
||||
| file_name | 影片檔案名稱 |
|
||||
| duration | 影片時長 (秒) |
|
||||
| overall_progress | 整體進度 (百分比) |
|
||||
| cpu_percent | CPU 使用率 (%) |
|
||||
| gpu_percent | GPU 使用率 (%),無 GPU 則為 null |
|
||||
| memory_percent | 記憶體使用率 (%) |
|
||||
| memory_mb | 記憶體使用量 (MB) |
|
||||
| processors | 各處理器狀態陣列 |
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 4: 自然語言檢索
|
||||
|
||||
### Step 4.1: RAG 搜尋
|
||||
|
||||
**API 呼叫:**
|
||||
```bash
|
||||
curl -X POST "http://localhost:3002/api/v1/search" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"query": "What is the movie about?",
|
||||
"limit": 10,
|
||||
"uuid": "..."
|
||||
}'
|
||||
```
|
||||
|
||||
**Request:**
|
||||
```json
|
||||
POST /api/v1/search
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"query": "What is the movie about?",
|
||||
"limit": 10,
|
||||
"uuid": "<uuid from registration>"
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```
|
||||
(待填寫)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Step 4.2: n8n 搜尋 (含 media_url)
|
||||
|
||||
**API 呼叫:**
|
||||
```bash
|
||||
curl -X POST "http://localhost:3002/api/v1/n8n/search" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"query": "What is the movie about?",
|
||||
"limit": 10,
|
||||
"uuid": "..."
|
||||
}'
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```
|
||||
(待填寫)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 憑證彙整
|
||||
|
||||
| 服務 | 項目 | 值 |
|
||||
|------|------|------|
|
||||
| SFTPGo | API Base | `http://localhost:8080/api/v2` |
|
||||
| SFTPGo | Demo User | `demo` |
|
||||
| SFTPGo | Demo Password | `demopassword123` (已重設) |
|
||||
| SFTPGo | Demo Home | `/Users/accusys/sftpgo_test/demo` |
|
||||
| SFTPGo | Token Endpoint | `/api/v2/user/token` |
|
||||
| SFTPGo | Share ID | `CjmQfrkXY5qDtC46WVZY2S` |
|
||||
| Momentry | Server | `http://localhost:3002` |
|
||||
| Momentry | MEDIA_BASE_URL | `https://wp.momentry.ddns.net` |
|
||||
|
||||
---
|
||||
|
||||
## 版本歷史
|
||||
|
||||
| 日期 | 版本 | 變更 |
|
||||
|------|------|------|
|
||||
| 2026-03-22 | v1.0 | 初始建立文件 |
|
||||
| 2026-03-22 | v1.1 | 成功取得 Demo Token |
|
||||
| 2026-03-22 | v1.2 | Phase 1 完成 (上傳 Charade 2.3GB) |
|
||||
Reference in New Issue
Block a user