Skip to main content

✅ 任務追蹤

已完成任務

Flight API Response Documentation (2026-02-06) ✅

任務描述:
更新 flight-spec.yml,為機票下訂端點添加完整的 Response 欄位文件

執行內容:

  1. 從 GitLab clone B2C Project
  2. 讀取 docs/flight/07-Complete-API-Fields.md 第 6 節
  3. 更新 /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 專案中實作完整的雙向同步機制:

  1. 上游同步: 從 SERP API 匯入旅遊產品資料
  2. 下游同步: 推送產品到各區域站點 (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
  • 區域同步服務 RegionSyncService
    • SyncToAllRegions()
    • 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_total
    • globalhub_region_sync_total
    • globalhub_sync_duration_seconds
    • globalhub_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 名開發者

相關文件:

備註:

  • SERP = 外部旅遊產品供應商 API
  • GlobalHub = 中央 B2C 前台
  • ProductBackend = 區域 CMS 管理後台
  • ProductsAPI 已有 Elasticsearch 8.11,不需重複建立


待辦任務

(目前無待辦任務)


已取消/擱置任務

(無)