✅ 任務追蹤
已完成任務
Flight API Response Documentation (2026-02-06) ✅
任務描述:
更新 flight-spec.yml,為機票下訂端點添加完整的 Response 欄位文件
執行內容:
- 從 GitLab clone B2C Project
- 讀取
docs/flight/07-Complete-API-Fields.md第 6 節 - 更新
/flight/booking端點的 Response schema
位置:
/home/chiu/.openclaw/workspace/b2cproject/apispec/flight-spec.yml
新增欄位:
- IsSucceeded(是否成功)
- AlertMessage(警告訊息)
- FailCode(失敗代碼)
- FailMessage(失敗訊息)
- OrderNo(訂單編號)
- OrderYear(訂單年份)
- PnrCode(PNR 代碼)
- TransactionKey(交易識別碼)
- UniqueTransactionKey(唯一交易識別碼)
- TicketSupplier(供應商)
- PccCode(PCC 代碼)
- TFBookingAmount(TF 訂單總金額)
- TFBookingCurrency(TF 訂單幣別)
- TFBookingReference(TF 訂位參考號)
- TFBookingRoutingId(TF 訂位 RoutingId)
- Wtorm00_Cxldesc(訂位狀態)
- OrderDetailType(訂單明細)
- PnrSegmentType(PNR 航段資訊)
- Wtorm10_Cost(成本明細)
Git 提交:
- Commit:
695ee8a - 訊息: "docs: add complete response schema for flight booking endpoint"
- 新增: 62 行
- 狀態: ✅ 已推送到
origin/main
GitLab 連結:
https://gitlab.com/liongroup/liontech/lionglobal/b2c/b2cproject/-/commit/695ee8a
進行中任務
GlobalHub API - 完整同步機制開發 (2026-02-07) 🔄
任務描述:
在 GlobalHub API 專案中實作完整的雙向同步機制:
- 上游同步: 從 SERP API 匯入旅遊產品資料
- 下游同步: 推送產品到各區域站點 (TW, US, JP) 的 ProductsAPI
正確架構理解:
SERP API (外部供應商)
↓ 上游同步
GlobalHub API (中央匯入與分發服務)
↓ 展示
GlobalHub (中央 B2C 前台)
↓ 下游同步
ProductsAPI (各區域: TW/US/JP)
↓ 管理
ProductBackend (各區域 CMS)
↓ 展示
區域 B2C 前台
專案位置:
- GitLab:
liongroup/liontech/lionglobal/b2c/globalhubapi - 本地路徑:
/home/chiu/.openclaw/workspace/gitlab-projects/globalhubapi - 架構文件: 完整同步機制設計
核心職責:
A. 上游同步 (SERP → GlobalHub)
- 從 SERP API 取得旅遊產品資料
- 資料驗證與轉換
- AI 資料豐富化(多語言翻譯、描述優化)
- 儲存到中央資料庫
B. 下游同步 (GlobalHub → 各區域)
- 推送產品到 ProductsAPI (TW/US/JP)
- 區域化資料轉換(幣別、語言)
- 批次同步與錯誤處理
詳細設計文件: 📄 GlobalHub 同步架構完整設計
關鍵特性:
- ✅ Webhook 即時同步
- ✅ 定時輪詢(全量/增量)
- ✅ 手動觸發
- ✅ 冪等性設計
- ✅ 重試機制(Polly + Hangfire)
- ✅ 死信佇列
- ✅ Prometheus 監控
- ✅ 健康檢查端點
實作階段 (預估 10 週):
Phase 1: 基礎架構 (Week 1-2)
- 資料庫 Schema 設計
- Products, ProductTranslations, ProductPrices, ProductImages
- ImportJobs, RegionSyncLogs, DeadLetterQueue
- Domain 層實體定義
- Infrastructure 層設定 (EF Core, Hangfire, PostgreSQL)
Phase 2: 上游同步 - SERP Integration (Week 3-4)
- SERP API Client 實作
GetProducts(page, updatedSince)GetProductById(id)- Webhook 簽章驗證
- 資料轉換
SerpProductMapper - AI 資料豐富化服務(可選)
- 描述優化
- 多語言翻譯 (en-US, zh-TW, ja-JP)
- 標籤生成
- 匯入任務處理
ImportProductsJob- 批次處理
- 錯誤處理與重試
- 進度追蹤
觸發機制:
// 1. Webhook (即時)
POST /api/webhooks/serp
- product.created
- product.updated
- product.deleted
- product.price_changed
// 2. 定時輪詢
RecurringJob: "serp-full-sync" // 每天 02:00 AM
RecurringJob: "serp-incremental-sync" // 每小時
RecurringJob: "serp-price-sync" // 每 15 分鐘
// 3. 手動觸發
POST /api/import/manual
Phase 3: 下游同步 - Region Distribution (Week 5-6)
- 區域配置管理
- RegionConfig (TW, US, JP)
- API URL, API Key, Schedule
- 區域同步服務
RegionSyncServiceSyncToAllRegions()SyncToRegion(regionCode)SyncProductToRegion(regionCode, productId)
- ProductsAPI 接收端點
POST /api/products/sync-from-globalhub- API Key 驗證
- 冪等性處理
區域設定範例:
{
"Regions": {
"TW": {
"ApiUrl": "https://tw.productsapi.liontravel.com",
"SyncSchedule": "*/30 * * * *", // 每 30 分鐘
"SupportedCurrencies": ["TWD", "USD"],
"DefaultLanguage": "zh-TW"
},
"US": { ... },
"JP": { ... }
}
}
Phase 4: 錯誤處理與監控 (Week 7)
- Polly 重試策略
- Exponential Backoff (2, 4, 8 秒)
- Circuit Breaker (5 次失敗後斷路 1 分鐘)
- Hangfire 自動重試
- 最多 3 次,間隔 1分/5分/15分
- 死信佇列 (Dead Letter Queue)
- 失敗項目自動進入 DLQ
- 定期重試機制
- Prometheus Metrics
globalhub_serp_sync_totalglobalhub_region_sync_totalglobalhub_sync_duration_secondsglobalhub_last_sync_timestamp
- 告警規則
- SERP 同步失敗率 > 10%
- SERP 同步超過 1 小時未執行
- 區域同步失敗
- 同步時間 P95 > 5 分鐘
- 健康檢查端點
GET /health/sync
Phase 5: 測試與優化 (Week 8)
- 單元測試 (覆蓋率 > 80%)
- 整合測試
- 效能測試
- 壓力測試
- 批次大小調優
- 並行度調優
- 資料庫查詢優化
Phase 6: 部署與上線 (Week 9-10)
- 測試環境部署
- 預生產環境驗證
- 灰度發布 (Canary Deployment)
- 生產環境上線
- 監控與調整
技術棧:
- .NET 10
- PostgreSQL
- Hangfire (背景任務)
- Polly (重試與斷路器)
- Prometheus + Grafana (監控)
- Serilog + Seq (日誌)
資料模型:
// 中央資料庫
Product
- ExternalProductId (SERP ID)
- SupplierId ("SERP")
- ProductTranslations (多語言)
- ProductPrices (多幣別)
- ProductImages
ImportJob
- Status (Pending/Running/Completed/Failed)
- TotalProcessed, SuccessCount, FailedCount
RegionSyncLog
- RegionCode (TW/US/JP)
- ProductCount, SuccessCount, FailedCount
- Status, Duration
同步策略:
| 類型 | 頻率 | 用途 |
|---|---|---|
| 全量同步 | 每天凌晨 2-4 AM | 確保資料完整性 |
| 增量同步 | 每小時 | 保持資料新鮮度 |
| 即時同步 | Webhook 觸發 | 重要變更立即生效 |
預計完成時間: 10 週
團隊規模: 2-3 名開發者
相關文件:
- 📄 完整同步機制設計
- 📄 GlobalHub API 架構
- 📄 ProductsAPI 整合
- 📄 系統總覽
備註:
- SERP = 外部旅遊產品供應商 API
- GlobalHub = 中央 B2C 前台
- ProductBackend = 區域 CMS 管理後台
- ProductsAPI 已有 Elasticsearch 8.11,不需重複建立
待辦任務
(目前無待辦任務)
已取消/擱置任務
(無)