Skip to content

定時任務與監控

本頁說明

講什麼:完整定時任務清單(任務名/頻率/職責/依賴)和監控告警規則與閾值 適合誰:需要查閱系統自動化任務和告警規則的產品經理和運營人員 前置閱讀架構與數據流預計閱讀:4 分鐘 負責人:技術運維主管

核心要點:出入金系統依賴大量定時任務驅動異步流程,監控告警覆蓋流水採集、匹配引擎、銀行回調、餘額熔斷四大類——任務掛起是最常見的異常根因。


定時任務總覽

出入金系統依賴大量定時任務驅動異步流程。按業務域分為四大類:

業務域任務數量核心職責
BST 銀證~7 個入金/出金指令發送、結果輪詢、狀態同步
入金匹配~3 個流水匹配、異常檢測、超時處理
eDDA/eDDI~4 個授權輪詢、入金代扣指令結果查詢
對帳~2 個每日對帳、差異檢測

BST 銀證定時任務

天星 BST 任務

Job 名稱職責觸發方式重試說明
AsbBstCreateJob創建入金指令用戶入金觸發調用天星 API 發送入金請求
AsbBstCreateResultJob輪詢入金結果定時輪詢最多 60 次查詢天星 API 獲取入金狀態
AsbBstDepositJob入金到帳處理輪詢返回 SUCCESS執行 SBA 入帳編排
AsbBstTransfer出金轉帳 + 輪詢審批通過觸發最多 10 次發送出金請求並輪詢結果
SyncAsbBstWithdraw出金兜底同步定時2 小時窗口AsbBstTransfer 超時後的兜底

天星入金鏈路AsbBstCreateJobAsbBstCreateResultJob(60 次輪詢)→ AsbBstDepositJob

天星出金鏈路AsbBstTransfer(10 次輪詢)→ SyncAsbBstWithdraw(2h 兜底)

招行 / 民生 BST 任務

服務名銀行職責說明
cmb_stock_trans招行銀證轉帳SM2 加密 Socket,實時雙向推送
ms_stock_bank_transaction民生銀證轉帳SM2 加密 Socket,實時雙向推送

招行/民生通過 Socket 雙向鏈路實時獲取結果,不需要輪詢任務。結果通過同一連接直接推送。

詳細的 BST 任務鏈路和銀行對比 → 內銀系 BST 總覽 § 定時任務


入金匹配定時任務

任務頻率職責說明
自動匹配輪次每 3 分鐘執行流水-申請匹配對新到的 Flow 和待匹配的 Apply 進行 5 維度匹配
AbnormalDepositJob定時異常入金檢測檢測長時間未匹配的 Flow,觸發通知
超時自動駁回定時超期申請處理超過配置天數的未匹配申請自動駁回

各銀行流水到達頻率

銀行流水方式到達頻率
匯豐MT910 實時推送秒級
花旗/廣發FPS API秒級
中銀B2E 批量拉取每日 3 次
其他銀行網銀轉帳通知分鐘~小時不等

詳細匹配邏輯 → 匹配與自動入帳

自動匹配運行時間

自動匹配並非 7×24 運行。HKD/CNH 自動匹配窗口為週一 07:00~週六 10:00;USD 為每日 09:00~16:00。窗口外的流水僅進入智能提醒(7×24),不自動入帳。詳見 人工匹配指引 § 自動匹配 vs 智能提醒


工銀流水監控專題

工銀(ICBC)流水系統採用雙 AZ 容災架構,有獨特的監控需求。

雙 AZ 架構

部署組專線說明
正式組專線 1主要流水拉取(拉取頻率高)
灰度組(備份)專線 2備份流水拉取(拉取頻率低)

容災限制

兩條專線不可互切——正式組只能通過專線 1,灰度組只能通過專線 2。任一專線故障時,對應部署組無法切換到另一條線路。系統通過流水管理服務自動路由緩解此問題。

五類線上問題與處理

類別表現原因處理方式
① 客戶退款正式組和灰度組均告警客戶轉帳後申請退款,銀行刪除該流水最常見;按告警處理腳本執行(有自動生成 SQL 腳本)
② 退款腳本失敗告警但一鍵處理腳本執行失敗灰度組拉取較慢,退款流水後無後續流水,腳本卡住人工排查灰度組流水狀態
③ 多筆相同流水僅正式組告警,灰度組正常兩筆流水的時間、金額、remarks 完全一致,系統無法區分修改 close_balance,將其中一條流水緊急入金
④ 銀行推送異常流水僅正式組告警,灰度組正常銀行側先推送錯誤流水(餘額與上一筆一致),後刪除確認方法:逐筆對比正式/灰度組流水 + 對比結單;刪除未使用流水後重啟
⑤ 跨日流水推送過晚正式組和灰度組均告警銀行在 0 點後才推送 T-1 日流水修改前一日 close_balance,將遺漏流水緊急入金

關鍵概念

概念說明
餘額校驗每筆流水入庫時校驗:上一筆 balance + 本筆 credit - 本筆 debit = 本筆 balance。退款導致流水被刪除時,餘額鏈斷裂觸發告警
is_used 字段標識流水是否已被匹配使用。重新全量拉取後,is_used=0 的流水為未被匹配的流水
正式組 vs 灰度組差異正式組拉取更頻繁(可能逐筆拉取),灰度組拉取較慢(可能同時拉到多筆)。在退款和重複流水場景下兩者行為不同

工銀告警處理 Runbook

第 1 分鐘 — 判斷告警類別:

告警來源大概率類別下一步
正式組 + 灰度組同時告警①客戶退款(最常見)執行自動處理腳本
正式組告警③重複流水 或 ④銀行異常流水逐筆對比兩組流水
自動腳本執行失敗② 退款腳本卡住人工排查灰度組狀態

第 2~5 分鐘 — 執行處理:

  • 類別①(客戶退款)

    1. 確認告警中的 flow_id
    2. 執行自動處理腳本(腳本會自動生成修正 SQL 並執行)
    3. 驗證:餘額鏈恢復連續,告警自動消失
  • 類別③/④(僅正式組)

    1. 數據庫中按 created_at 對比同日正式組/灰度組流水
    2. 找到差異流水 → 判斷是重複(③)還是幽靈流水(④)
    3. 類別③:修改其中一條的 close_balance,緊急入金
    4. 類別④:對比銀行結單確認 → 刪除 is_used=0 的異常流水

超過 10 分鐘未恢復 → 升級到技術運維值班人員

診斷命令與日誌關鍵字

收到工銀告警後,用以下關鍵字定位問題:

場景服務日誌關鍵字說明
餘額鏈斷裂icbc_be_relaybalance mismatch / close_balance流水刪除導致餘額不連續
流水重複icbc_be_relayduplicate flow / same remarks金額+時間+remarks 完全一致
拉取超時icbc_be_relaytimeout / connection refused專線連接中斷
灰度組延遲icbc_be_relaycanary lag / sync delay灰度組流水到達慢於正式組
跨日遺漏icbc_be_relaymissing T-1 / late push0 點後拉取未包含 T-1 日流水

快速驗證

正式組和灰度組流水對比:在數據庫中按 created_at 排序同日流水,如果某條流水僅在正式組出現 → 可能是銀行推送異常(類別④)。如果灰度組比正式組少 → 可能是灰度組拉取延遲(類別②)。


中銀雙路流水監控

中銀(BOCHK)的流水來自兩個獨立數據源,需要關聯監控。

雙路架構

數據源類型延遲包含信息
銀企服務實時 API秒級交易金額、幣種、時間;部分有客戶姓名
FTP 報表 S16定時拉取約 30 分鐘補充客戶姓名 + 匯款人帳號

為什麼需要雙路

銀企服務獲取的流水信息大多數沒有客戶姓名,而姓名是自動匹配的核心條件。FTP 報表 S16 的作用就是補充這些關鍵信息。

FTP 報表運行時間

維度時間
銀行側服務時間週一~週六 8:00~20:00
Futu 側服務時間7×24(全天候拉取)

報表文件識別

版本文件名格式說明
S16(當前)AGSA/CNo+UC01.TXT, UC02.TXT, UC03.TXT...每個時段一個文件
S14(舊版)AGSA/CNo+AC1.TXT, AC2.TXT, AC3.TXT...已停用,僅供回退參考

流水關聯規則

S16 報表中的流水與銀企實時流水的關聯方法:

  1. 取 S16 中的「交易流水號」
  2. 去除前 5 位
  3. 將剩餘部分去掉前導零 → 得到 seq_no_s16
  4. 取銀企實時流水中的 seq_no去掉前導零
  5. seq_no_s16 == seq_no → 同一條流水,可關聯更新

更新邏輯:

銀企流水狀態S16 更新內容
已有姓名(en_name)更新餘額和銀行帳戶號碼
無姓名(en_name 為空)更新姓名、餘額和銀行帳戶號碼

監控要點

監控項觸發條件處理方式
S16 報表延遲超過 1 小時未收到新報表檢查 FTP 連接狀態;確認是否在銀行服務時間內
流水關聯失敗S16 流水號無法匹配到銀企流水檢查流水號解析邏輯;可能是銀行側新增了未知格式
姓名未更新銀企流水長時間無姓名檢查 S16 是否正常拉取;確認報表中是否包含該流水

eDDA / eDDI 定時任務

eDDA(授權)和 eDDI(扣款指令)都用於入金代扣,不是出金協議。

任務銀行職責說明
eDDA 授權輪詢匯豐/恒生查詢 eDDA 授權狀態用戶發起授權後輪詢銀行確認結果
eDDI 入金指令查詢匯豐/恒生查詢 eDDI 代扣結果代扣指令發出後查詢是否成功入帳
eDDI 入金結果處理匯豐/恒生入金到帳確認代扣成功後執行入帳
eDDA 狀態同步匯豐/恒生定期同步授權狀態檢測銀行端是否有授權變更

eDDA/eDDI 和 BST 的輪詢區別

eDDA/eDDI 輪詢的是銀行確認動作(授權是否成功、代扣是否完成),BST 天星輪詢的是交易執行結果(入金/出金是否完成)。eDDA/eDDI 輪詢頻率較低,BST 天星輪詢頻率較高且有明確的重試上限。


並發告警分診

值班運營同時收到多條告警時,按以下優先級排序處理:

優先級判斷標準典型告警為什麼優先
P0資金已動但狀態未更新凍結未釋放、出金同步超時(2h 用盡)資金狀態不一致,可能導致重複出金或用戶資金被鎖
P1通道完全中斷Socket 斷開(招行/民生)、API 連通性異常(天星)影響所有後續交易,每分鐘擴大影響面
P2單筆交易異常入金/出金輪詢超時、入金退款 REFUNDED影響單個客戶,系統兜底機制通常在運行
P3趨勢性預警每日熔斷觸發、累計報警、審批積壓當前無即時影響,但不處理會惡化

可安全延後的告警

  • 非交易日的 BST 告警 → 確認是偽觸發(BST 週末不處理交易)
  • 灰度組延遲 < 5 分鐘(工銀)→ 已知行為,灰度組拉取頻率本身較低
  • bank_端發起量突增 → 先觀察是否為正常業務高峰(如月初/發薪日)

監控告警規則

Runbook 格式說明

以下告警規則按 Runbook 格式組織。收到告警後按「嚴重度 → 首響人 → 處理步驟 → 升級條件」流程執行。詳見告警升級矩陣

BST 銀證告警

天星 BST:

#告警項觸發條件嚴重度處理
1授權創建超時Mandate PROCESSING 超過閾值檢查天星 API 連通性
2授權失敗率突增單位時間 FAIL 數超限排查銀行側異常
3入金創建失敗AsbBstCreateJob 連續失敗檢查請求參數和 API
4入金輪詢超時60 次輪詢用盡人工查詢銀行側
5入金退款收到 REFUNDED沖正 + 通知用戶
6出金輪詢超時10 次輪詢用盡進入 SyncAsbBstWithdraw
7出金同步超時2h 窗口結束嚴重人工確認銀行側狀態
8凍結未釋放出金失敗但凍結未回滾嚴重手動釋放凍結
9每日熔斷觸發累計達 stop 閾值評估是否恢復
10累計報警觸發累計達 alarm 閾值運營關注
11重複交易檢測ID 重複檢查去重邏輯
12API 連通性異常響應超時/錯誤率升高嚴重聯繫天星技術支持
13銀行端發起量異常source=2 量突增排查業務波動

招行/民生 BST:

告警項觸發條件嚴重度處理
Socket 連接斷開與銀行 exit_server 連接中斷嚴重自動切換備用 server,同時告警
超時率升高-5 回調碼佔比超閾值檢查網路和銀行側狀態
拒絕率升高-6 回調碼佔比超閾值聯繫銀行確認拒絕原因

入金告警

告警項觸發條件嚴重度處理
流水堆積未匹配 Flow 數量超閾值檢查匹配任務是否正常運行
異常入金AbnormalDepositJob 檢出異常運營審核異常入金
自動入帳失敗匹配成功但入帳失敗檢查 SBA 編排狀態

出金告警

告警項觸發條件嚴重度處理
審批積壓待處理任務數超閾值增加運營處理力量
大額出金單筆金額超監控線運營關注並確認
沖正操作有出金被沖正確認沖正原因

每日運營時間線

BST 和其他銀行通道有各自的處理窗口,以下是典型交易日的時間線:

時段事件說明
07:00招行/民生 BST 處理窗口開啟
08:00天星 BST 處理窗口開啟
07:00eDDI(匯豐/恒生)處理窗口開啟
09:00~10:00中銀 B2E 第一批流水到達
11:00出金批次切割11:00 後新提交的出金進入次日批次
11:00 後出金文件導出按方式導出轉帳文件上傳網銀
13:00~14:00中銀 B2E 第二批流水到達
下午支票存入工作人員到各分行存入支票
16:00eDDI 處理窗口關閉
17:00~18:00中銀 B2E 第三批流水到達
22:00天星 BST 處理窗口關閉
次日 04:00招行/民生 BST 處理窗口關閉
次日凌晨每日對帳任務運行

非交易日

週末和公眾假期(以港交所日曆為準)BST 不處理交易。eDDI 僅工作日。FPS 理論上 7×24 但實際運營審批僅工作日。


告警升級矩陣

當告警觸發後,按以下流程升級:

嚴重度響應時效首響人升級條件升級對象
嚴重15 分鐘值班運營15 分鐘內無法恢復→ 技術運維 + 對應銀行服務開發者
30 分鐘值班運營30 分鐘內無法定位原因→ 入金/出金產品經理
2 小時值班運營工作日內無法處理→ 運營主管

嚴重級告警(需 15 分鐘內響應)

  • Socket 連接斷開(招行/民生 BST)
  • API 連通性異常(天星)
  • 出金同步超時(2h 窗口用盡)
  • 凍結未釋放(出金失敗但資金仍被凍結)

高級告警(需 30 分鐘內響應)

  • 流水堆積(待處理流水數超閾值)
  • 入金/出金輪詢超時
  • BST 超時率/拒絕率突增
  • 自動入帳失敗
  • 沖正操作
  • 入金退款(REFUNDED)

中級告警(需 2 小時內響應)

  • 異常入金檢出
  • 審批積壓
  • 大額出金
  • 累計報警/每日熔斷觸發
如果需求變更:調整監控告警配置

代碼位置

  • 入金監控任務:deposit/doc/crontab.sh(所有 Cron 定義)
  • 流水堆積監控:deposit/src/app/Console/Commands/Monitor/FlowMonitor.php
  • BST 審批監控:withdraw/src/app/Console/Commands/Monitor/AutoBsApprovalMonitor.php
  • auto_settings 告警:withdraw/src/app/Business/AutoSetting.phpautoOut() 方法(餘額不足時自動告警)
  • 告警發送:通過飛書消息(sendFeishu() 方法),告警接收人配置在 auto_settings.alarm_staff_name

常見變更場景

  • 修改流水堆積閾值 → 修改 FlowMonitor.php 中的閾值常量
  • 修改告警接收人 → 通過 CRM 自動出金設置頁面修改 alarm_staff_name,或用 AutoSetting::setAlarmStaff() API
  • 新增監控維度 → 創建新的 Monitor Command 類,註冊到 crontab.sh
  • 修改告警間隔 → 修改 AUTO_SETTING_ALARM_INTERVAL(當前 1 小時,避免重複告警)

文檔維護提醒

以下信息容易過時,建議每季度核對一次:

檢查項核對方式負責人
銀行維護窗口時間向銀行對接人確認是否有變更銀行對接人
eDDA 支持銀行列表與匯豐/恒生通道實際配置比對入金產品經理
出金通道費用與銀行最新費率表比對出金運營主管
告警閾值FlowMonitor.php / auto_settings 實際值比對技術運維
FPS ID 和收款人名稱與銀行確認是否有更新銀行對接人

讀完之後

我想...去看
了解 BST 任務的銀行級詳情內銀系 BST 總覽
了解入金匹配邏輯匹配與自動入帳
看告警觸發後的操作指南人工匹配指引
查錯誤碼和狀態碼統一錯誤碼中心
了解 CRM 各模組操作CRM 操作地圖
了解 eDDA 排障流程eDDA 排障指引
這個頁面有幫助嗎?

内部业务文档 · 仅限 moomoo 团队使用