FSTS Stored Procedure 與批次作業規格書(Stage 6 Final)

本文件定義新一代複委託系統之資料庫 Stored Procedure、批次作業、日切控制、重跑機制與監控原則1

重點不是只列程序名稱,而是將每一批次作業的輸入、處理邏輯、輸出、相依、失敗處置、重跑策略與驗收口徑制度化,確保交易、清算、帳務、公司行動與資料移轉在兩年內可穩定上線。1

平台前提:MSSQL + .NET Core / ASP.NET Core + UNIX / Linux 主機。1 文件定位:呈核/設計/開發/測試共同基線文件,供 SA / DBA / Batch / SIT / UAT / 維運共同使用。1

回到 Planning 總覽

1. 文件適用與日切原則

1

項目內容
涵蓋範圍主資料、交易、成交、費率、入出金、清算、庫存損益、公司行動、報表、監控、資料移轉
主要對象SA、DBA、後端開發、批次開發、SRE/維運、QA、業務驗收窗口
日切原則以「先收單、後成交、再清算、最後帳務與報表」為主軸,所有批次均須可追溯、可補跑、可比對
程序設計原則嚴禁將業務規則散落於前端或單一背景程式;核心帳務、狀態轉換、交割計算與公司行動分派須集中於可版控之 DB Procedure / Batch Service

2. 規格設計原則

2

  • 程序分層:依 Schema 區分 master / trade / risk / settlement / corpaction / interface / audit / batch
  • 冪等性:所有批次與程序皆須支援重複執行而不產生重覆扣帳或重覆分派
  • 可重跑:批次須分為 整批重跑/區間重跑/客戶別重跑/市場別重跑 四種粒度
  • 效能基線:高頻交易收單與成交入帳採即時/準即時,清算與報表採批次
  • 可稽核:每次執行均需寫入 batch.BATCH_JOB_LOGaudit.AUDIT_EVENT_LOG

3. Schema 與程序命名慣例

3

Schema用途代表物件範例備註
master主資料與參數usp_SyncSecurityMasterusp_LoadHolidayCalendar僅維護基礎主檔,不得直接寫帳
trade委託、成交、狀態轉換usp_SubmitOrderusp_ApplyExecutionReport須支援高併發與狀態鎖定
risk可買可賣、額度、圈存usp_CalcBuyingPowerusp_FreezeCash前台預檢與日終重算
settlement應收應付、交割、入出金usp_GenSettlementObligationusp_PostCashMovement所有會計來源均由此域產出
corpaction除權息與公司行動usp_AllocateDividendusp_ProcessMandatoryAction須保留權利基準日快照
interfaceFIX/API/FTP/銀行等對外映射usp_MarkOutboundFileusp_ImportBankStatement對外欄位不得污染核心表
batch批次控制與排程usp_StartBatchJobusp_FinishBatchJob保存 RunId、重跑關聯與錯誤摘要
audit稽核與追蹤usp_WriteAuditEvent參數異動與敏感交易追溯

4. 核心 Stored Procedure 清單(12 支)

4

編號Procedure功能主要輸入主要輸出執行型態
P-001master.usp_SyncSecurityMaster同步商品主檔與交易屬性商品介接/行情主檔SECURITY_MASTER / SECURITY_MARKET_MAP每日盤前+手動
P-002trade.usp_SubmitOrder建立委託並做前置檢核委託 API/FIX 收單ORDER_HDR / ORDER_AUDIT即時
P-003risk.usp_CalcBuyingPower計算可買額度與圈存需求客戶、商品、匯率、費率前置檢核結果即時
P-004risk.usp_FreezeCash建立現金圈存委託單CASH_LEDGER / CASH_FREEZE即時
P-005trade.usp_ApplyExecutionReport處理 FIX 成交/拒單/撤單回報Execution ReportORDER_HDR / TRADE_EXECUTION即時
P-006settlement.usp_GenSettlementObligation產生客戶/公司/上手應收應付成交資料SETTLEMENT_OBLIGATION日內多次+日終
P-007settlement.usp_PostCashMovement入出金與交割扣款入帳銀行檔/交割指令CASH_LEDGER日內+日終
P-008settlement.usp_RebuildPosition重算庫存、成本與損益成交/公司行動POSITION_LOT / POSITION_SUMMARY日終
P-009corpaction.usp_AllocateDividend現金股利/利息分派公司行動主檔+權利快照CA_ENTITLEMENT / CASH_LEDGER事件驅動+日終
P-010interface.usp_ImportBankStatement匯入銀行對帳與入金檔SFTP 檔案BANK_STMT / CASH_LEDGER日內排程
P-011batch.usp_StartBatchJob批次啟動登記與鎖控JobName / BusinessDateBATCH_JOB_LOG批次前
P-012batch.usp_FinishBatchJob批次完成與摘要寫回RunId / 結果/錯誤數BATCH_JOB_LOG / BATCH_STEP_LOG批次後

4.1 核心 SP 的優先級與失敗處置

5

SP重要性優先序失敗處置
P-002 usp_SubmitOrder核心P0寫入批次/介接錯誤佇列,保留原始訊息與 Replay Key;不得直接丟棄
P-003 usp_CalcBuyingPowerP0同上
P-005 usp_ApplyExecutionReport核心P0同上
P-006 usp_GenSettlementObligation核心P0同上
P-001 usp_SyncSecurityMasterP1同上
P-004 usp_FreezeCashP1同上
P-007 usp_PostCashMovementP1同上
P-008 usp_RebuildPosition核心P1同上

5. 批次作業架構與日切 Runbook

6

Job ID作業名稱功能摘要建議時段交付結果
B-01主檔/基礎資料載入載入假日、商品、匯率、費率、上手路由04:30–06:00當日基礎資料齊備
B-02盤前風控重算重算額度、庫存快照、前日未交割款06:00–07:00可交易基線建立
B-03交易中對外介接監控FIX Session、銀行/FTP 到檔、API 健康檢交易時段持續異常即時告警
B-04日內成交與交割暫算依市場分批計算應收應付與資金需求每 30–60 分降低日終壓力
B-05收盤後清算彙整成交、費率、稅費、換匯與交割資料依市場收盤後結算主檔產生
B-06庫存與損益重建重算 lot、平均成本、已實現/未實現損益21:00–23:00對帳與查詢基線
B-07公司行動處理事件分派、通知、稅額、追補計算日終/事件日權益分派完成
B-08會計/報表拋送總帳介接、公會/內控/營運報表23:00–01:00外部系統/管理報表完成
B-09備援與備份資料庫備份、批次摘要封存、查核點建立日終最後可復原與可稽核

6. 程序設計模板(所有 SP 必備規格)

7

項目內容
輸入參數BusinessDateRunIdOperatorIdMarketCodeAccountNoIsRerunReplayFrom
輸出參數ReturnCodeErrorCodeAffectedCountWarningCountSummaryMessage
交易控管明確定義 transaction scope跨多表帳務必須使用顯性交易與例外回滾
鎖控策略高頻收單採 row-level + optimistic check;日終批次以 partition / business date 範圍鎖控
冪等鍵BusinessDate + Account + Market + TradeNo / EventNo 作為自然唯一識別
錯誤回傳嚴禁只回傳 SQL 例外字串,必須映射為標準錯誤碼與分類

6.1 共通驗收重點

5

  1. 相同輸入重跑時不得造成重複入帳或重複分派
  2. 回傳碼、錯誤碼與影響筆數需完整落表
  3. 資料異常時須可依 RunId / BusinessDate / AccountNo 追溯

6.2 關鍵 SP 處理步驟範例

P-002 trade.usp_SubmitOrder5

  1. 建立收單追蹤碼與原始訊息封存
  2. 驗證客戶資格、商品可交易屬性、市場狀態、交易時段與幣別
  3. 呼叫 risk.usp_CalcBuyingPower 試算可買可賣與圈存需求
  4. 寫入 ORDER_HDR / ORDER_AUDIT,狀態標示為 NEW_PENDING
  5. 送入對外路由佇列,等待 FIX / API 實際送單結果

P-005 trade.usp_ApplyExecutionReport5

  1. SenderComp / TargetComp / MsgSeqNum / ClOrdID / ExecID 還原來源
  2. OrdStatus / ExecType 決定狀態轉換規則
  3. 新成交通知時建立 TRADE_EXECUTION,並更新累計成交量價
  4. 若撤單成功則釋放剩餘圈存或額度
  5. 寫入 audit 與對外通知佇列

P-006 settlement.usp_GenSettlementObligation5

  1. 市場、帳戶、交割日彙總當日成交
  2. 套用客戶費率、上手費率、交易所費、稅費與匯率
  3. 分別產生客戶、公司、上手三層 obligation
  4. 建立可重跑快照與差異摘要
  5. 供交割、對帳、會計與報表共用

P-008 settlement.usp_RebuildPosition5

  1. 依成交與公司行動時間序重新展開 lot
  2. 計算平均成本、已實現與未實現損益
  3. 寫入 POSITION_LOTPOSITION_SUMMARY
  4. 產出與前版快照差異,用於平行測試比對

7. 批次失敗處置與重跑策略矩陣

8

場景允許重跑粒度前置條件風險控制最終確認
商品主檔同步失敗整批/市場別來源檔重新驗證完成以 hash 比對避免重覆更新同步摘要一致
FIX 成交回報漏接訊息級 Replay取得 SeqNum 區間ExecID 冪等檢查成交總量一致
清算計算異常整批/帳戶別/市場別前次結果可回滾先封鎖會計與報表下游obligation 差異為 0
公司行動分派錯誤事件別/帳戶別權利快照鎖定補正分錄與追補通知權益數與現金分派一致
資料移轉對帳差異批次/資料域差異原因分類完成不得直接人工改核心表對帳報表簽認

8. 效能與營運門檻

9

  • 日內高頻程序需提供平均耗時、95/99 百分位耗時與錯誤率監控
  • 所有日終批次需提供開始時間、結束時間、影響筆數、重跑次數與失敗原因分類
  • 關鍵程序需預留分區鍵、覆蓋索引與批次日期條件,以避免全表掃描
  • 批次服務與資料庫程序版本需雙向對應嚴禁『程式版與 DB 版不同步』

9. Review 結論

10

本文件已將批次與 Stored Procedure 從「只列作業名單」提升為「可設計、可分工、可驗收、可維運」的規格基線。

若要真正上線成功,後續必須以此文件對齊三件事

  1. 批次順序不得被畫面需求打亂
  2. 核心帳務與公司行動不得繞過標準程序直接改表
  3. 所有重跑都必須保留 RunId 與前後差異快照

相關頁面

補充資訊

2026-04-23 呈核版確認(不帶編號前綴)

  • 本頁內容與呈核版_raw/projects/fsts/docs/project/planning/富邦證券_新一代複委託系統_StoredProcedure與批次作業規格書.md,不帶編號前綴)同步對齊11
  • 呈核版為相同來源的精簡呈核格式,正文排版更乾淨但結構、Schema 分工、核心 12 支 SP、9 個日切批次、重跑矩陣、效能門檻完全一致121314
  • 呈核版 §六 明列所有 SP 必備規格欄位(BusinessDate / RunId / OperatorId / MarketCode / AccountNo / IsRerun / ReplayFrom 等),與 19 版一致15
  • 呈核版 §九 Review 結論亦同「批次順序不得被畫面需求打亂;核心帳務不得繞過標準程序直接改表;重跑必須保留 RunId 與前後差異快照」三要件16

參考資料

呈核版(不帶編號前綴)

Footnotes

  1. 19 SP 批次規格書 §一 文件目的 2 3 4 5

  2. 19 SP 批次規格書 §二 設計原則

  3. 19 SP 批次規格書 §三 Schema 分工

  4. 19 SP 批次規格書 §四 核心 SP 清單

  5. 19 SP 批次規格書 §四 核心 SP 規格摘要 2 3 4 5 6

  6. 19 SP 批次規格書 §五 日切 Runbook

  7. 19 SP 批次規格書 §六 程序設計模板

  8. 19 SP 批次規格書 §七 重跑策略矩陣

  9. 19 SP 批次規格書 §八 效能與營運門檻

  10. 19 SP 批次規格書 §九 Review 結論

  11. SP 批次規格書 呈核版 §一 文件目的

  12. SP 批次規格書 呈核版 §三 Schema 分工

  13. SP 批次規格書 呈核版 §四 12 支 SP

  14. SP 批次規格書 呈核版 §七 重跑策略矩陣

  15. SP 批次規格書 呈核版 §六 程序設計模板

  16. SP 批次規格書 呈核版 §九 Review 結論