FSTS DB Schema(PDM_FSTS)
Model:PDM_FSTS Report:FB-複委託 作者:Tony 最新版本:v1.1(2026-04-14) 首版:v1.0(2026-04-13)
本頁是 FSTS 主業務資料庫的結構總覽。逐欄位細節請回讀 raw:db-schema.md(curated 版)或 PDM Report(原始 PowerDesigner 版)。12
資料表清單
14 個主要資料表,依業務分類如下。3
系統與代碼
基本資料主檔
交易回報(唯讀,由 COBOL FD 轉檔寫入)
交易費率
ChangeLog|異動紀錄
模組:S-CHG 異動紀錄查詢 建立時間:2026-04-16(Feature: S-CHG)
- 主鍵:
Id bigint IDENTITY(1,1) - 必填索引欄位:
ModuleName、TableName、RecordId、OperationType、OperatedBy、BrokerNo、BrokerName、OperatedAt(SYSUTCDATETIME()) - 欄位異動內容:
Changes nvarchar(MAX)—FieldChange[]序列化 JSON,含{prop, label, old, oldText, new, newText} - 索引:
IX_ChangeLog_ModuleName、IX_ChangeLog_OperatedAt DESC、IX_ChangeLog_OperatedBy - 寫入規則:一般 CRUD 由
ChangeLogInterceptor自動;批次由 Handler 呼叫IWriteChangeLogService.WriteAsync()(見 BR-010)
AllCode|系統代碼檔
- 複合主鍵:
CodeCode + Code + SubCode - 用途:系統通用代碼表,統一管理下拉選單
- 特殊語意:
CodeCode='0'的列表為該代碼的欄位說明資訊 - 欄位含:
SortNo、DisplayName、CodeContent、SysMark(0 非系統 / 1 系統內使用不允許更動)、UsedMark(0 N / 1 Y) - 稽核欄位:
CreatedUserId、Created_at、UpdatedUserId、Update_at(所有表共通)
CountryMarketBaseInfo|交易所基本資料檔(CTRY)
- 主鍵:
CountryCode varchar(8)← COBOLCOUNTRY - 關鍵欄位:
SimpleName/FullNameTradingDate(T Day) /PreviousTradingDate(T-1 Day) — 民國年 → 西元年TDCCCountryCode(集保國別代碼)OrderCutoffTime(收單時間 HHMMSS)MarketAreaCode:1=亞股 / 2=美加 / 3=歐股 / 9=其他AllowedInvestorType(國家評等):1=全部 / 2=專業投資人以上 / 3=專業投資機構以上 / 4=基金戶IsoCountryCode:ISO-3166 Alpha-2(US / TW / JP)RecurringOrderTime(定期定額送單時間)
CurrencyBaseInfo|貨幣代號設定檔(UNIT)
- 主鍵:
Currency char(3)← COBOLUNIT - 關鍵欄位:
CurrencyName、CountryCode、MinimumInterestAmount、InterestRate、Decimal(小數位數)、HNCBCurrencyNo(華南銀行)、CUBKCurrencyNo(國泰世華)
CustomerAccountBaseInfo|客戶開戶資料主檔(FUMB)
- 複合主鍵:
BrokerNo char(4) + AccountNo numeric(6)← COBOLBHNO + CSEQ - 帳號組成:
BHNO + CSEQ + CKNO = Account - 日期:
AccountOpenDate/AccountCloseDate/LastTradeDate等皆民國年 → 西元年 - 銀行類型列舉:
DepositBankType/WithdrawalBankType:1=台外幣 / 2=台幣 / 3=外幣 - 帳單寄送:
MonthlyStatementFlag(Y/N)、StatementDeliveryFlag(Y=是 / N=否 / X=月寄日不寄)、StatementAddressType(空白=通訊優先 / 1=通訊 / 2=戶籍 / 3=電子 / 4=自取) - 成年註記:
IsMinor:N=未成年
CustomerBaseInfo|客戶基本資料主檔(CUST)
- 複合主鍵:
BrokerNo + AccountNo← COBOLBHNO + CSEQ - 身份與證號:
IDNO char(11)(身分證號,末位為錯號註記)、PassportNo、StockIDNO(證券戶統編) - 姓名:
SimpleName、FullName(公司法人戶用)、EnglishName - 法人相關:
ResponsibleIDNO/ResponsibleName、AgentName/AgentPhone/AgentIDNO - 聯絡資訊:
Telephone、FAX、Email、ContactName/ContactPhone/ContactFAX - 地址:
RegisteredAddress/RegisteredZipCode、MailingAddress/MailingZipCode - 身份別
IdentityType char(2):01=本國自然人 / 02=本國法人 / 03=境內自然人 / 04=境內法人 / 05=法人分戶 / 06=團體 / 07=境外自然人 / 08=境外法人 - 商業規則:複合主鍵唯一,見 BR-011
CustomerKYC|客戶基本資料主檔2(CUS2)
- 複合主鍵:
BrokerNo + AccountNo← COBOLBHNO + CSEQ - 風險承受度
RiskToleranceLevel char(1):1=C1 保守 / 2=C2 保守偏穩健 / 3=C3 穩健 / 4=C4 穩健偏積極 / 5=C5 積極 - 交易額度:
TradingLimit、TradingLimitCreateDate - 開戶交易目的
AccountPurpose:1=投資/避險 / 2=其他 - 職業類別:
OccupationCategory char(1)AZ、f(詳原文件)NewOccupationCategory char(2)A - ⚠ 民國年日期:
UpdatedDate char(8)以 7 碼民國年字串儲存(yyyMMdd,例1140420= 民國 114 年 04 月 20 日);前端顯示透過formatRocDateToDisplay()轉YYYY/MM/DD;UpdatedDate/UpdatedTime由後端 Handler commit 時自動填入。見 BR-012
ExchangeBaseInfo|交易所基本資料檔(EXMB)
- 主鍵:
ExchangeCode char(4)← COBOLEXNO(市場代碼) - 名稱:
SimpleName、FullName、CountryCode - 保證金交割天數:
- 客戶:
CustBuyMarginSettlementDays/CustSellMarginSettlementDays - 上手:
UpBuyMarginSettlementDays/UpSellMarginSettlementDays - 市場:
MarketSettlementDays
- 客戶:
- 預設上手:
DefaultBuyBrokerNo/DefaultSellBrokerNo - 市場時間:
MarketOpenTime/MarketCloseTime+ 第二段MarketOpenTime2/MarketCloseTime2 - 旗標:
OrderSelectionFlag(勾單 Y/N)、CrossDayFlag(跨日 Y/N) - 股票編碼
SecurityIdType:1=CUSIP / 2=SEDOL / 3=QUIK / 4=ISIN / 5=RIC - 其他:
FixReferenceNo(FIX 代碼)、Currency、MarketCode
ExchangeRate|匯率主檔(EXRT)
- 複合主鍵:
ExchangeRateDate + SourceCurrency + TargetCurrency(YYYYMMDD 西元年) - 欄位:
ExecutionExchangeRate(成交匯率)、ClosingExchangeRate(收盤匯率) - 異動時間:
UpdatedDate(民國年 → 西元年)、UpdatedTime
ExecutingBrokerBaseInfo|上手券商基本資料檔(UPMB)
- 主鍵:
UpstreamBrokerNo char(4)← COBOLUPNO - 聯絡:
ContactName、Telephone、FAX、Address、Remark - 收/付款資訊:
Beneficiary/BeneficiaryAccountNo/BeneficiaryAddress/BeneficiaryBank/SWIFT(8 碼總行或 11 碼含分行)/BeneficiaryBankAddress/Remitter/RemitterAccountNo - 下單路徑
OrderRouting char(1):1=人工 / 2=FIX / 3=HKFIX / 4=US / 5=FIX 新版(等) - 連線狀態
ConnectionStatus:C=連線 / D=斷線 - 其他:
SettlementCurrency(交割幣別)、CountryCode、CustodianBank(保管銀行)
ForeignSecurityBaseInfo|外國股票基本資料主檔(FSMB)
- 複合主鍵:
ExchangeCode + StockSymbol← COBOLEXNO + STOCK - 商品類別
SecurityType char(1):1=一般股票 / 2=公司債 / 3=認股權證 / 4=股票 ETF / 5=ADR / 6=GDR / 7=存託憑證 / 8=選擇權 / 9=受益證券 / A=其他 / B=特別股 / C=ETN / D=CEF - 交易型態
TragingType:0=倍數交易 / 1=大於交易 - 股票分類
SecurityCategory char(1):0=一般股票 / 1=B 股 / 2=紅籌股 / 3=國企股 / 4=ETF / 5=特別股 / 6=滬港通 / 7=黃金 ETF / 8=ETN / 9=正 2 反 1 ETF / A=商品 ETF / B=創業板 / C=封閉型 CEF / D=比特幣 ETF - 停止註記
StopFlag:0=正常 / 1=停止 / 2=停網路 / 3=停人工 / 4=停買進 - 發行人類別
IssuerType:0=非居民 / 1=居民 - 控管註記
ControlFlag:0=上手取自 EXMB / 1=上手取自 FSMB - 其他:
Currency、MinTradingUnit(最低交易股數)、ClosingPrice、MarginPercentage、UpstreamBrokerNo、SEDOLCode
OrderDetail|委託明細(FSIO)
唯讀表。資料來源:COBOL FD 轉檔(FSIO),本系統不寫入此表。25
- 複合主鍵:
OrderDate + BrokerNo + OrderNoOrderDate char(8)YYYYMMDD 西元年BrokerNo char(4)←BHNOOrderNo char(5)←SHEET(TERM + DSEQ,例X0001)
- 委託類別
OrderType:0=現股 / 1=融資 / 2=融券 - 買賣別
BSCode:B=買 / S=賣 - 下單方式
TradingType char(3):1=價格限制 / 2=時間限制 / 3=交易指示 - 下單註記
OrderFlag:1=下單 / 2=刪單 - 處理狀態
ProcessFlag char(1):空白/0=未處理 / 1=已傳出 / S=已完成 / E=錯誤 / P=人工 / R=拒絕空白與 ‘0’ 語意相同,查詢時同時比對兩者。見 BR-011
- 委託來源
OrderSource:0=一般單 / 1=網路單 - 股數欄位:
OrderShare(委託)、CancelShare(取消)、MatchShare(成交)remainShare = Max(0, OrderShare - CancelShare - MatchShare);負值強制截為 0 - 金額:
OrderPrice numeric(14,6)、ReservedAmount numeric(18,6)(圈存)、ExchangeRate numeric(12,6) - 其他:
AccountNo、UpstreamBrokerNo、ExchangeCode、StockSymbol、Currency、RejectReason varchar(12)
MatchDetail|成交回報(FHIO)
唯讀表。資料來源:COBOL FD 轉檔(FHIO-F),本系統不寫入此表。27
- 複合主鍵:
MatchDate + OrderNo + ExecAllocSeqNoMatchDate char(8)YYYYMMDD 西元年OrderNo char(5)←SHEETExecAllocSeqNo numeric(2)←DNO(分單號)
- 關聯 OrderDetail:
MatchDetail.OrderNo + BrokerNo → OrderDetail.OrderNo + BrokerNo - 委託日期 / 交割日期:
OrderDate、MarginSettlementDate(保證金)、EquitySettlementDate(股票)— 皆民國年 → 西元年 - 成交資訊:
OrderShare(委託股數)、OrderPrice、MatchAmount(成交價金)、NetAmount(淨收付)、ReservedAmount(圈存)、MatchTime char(8)HHMMSS00、ExchangeRate - 手續費(FEE OCCURS1~8):
CommissionFee、ProcessingFee、ExchangeFee、ClearingFee、RemittanceFee、TransactionTax、StampDuty、PTPTransactionTax - 上手費用(UPFEE OCCURS1~12):
UpstreamCommissionFee、UpstreamProcessingFee、UpstreamExchangeFee、UpstreamClearingFee、UpstreamRemittanceFee、UpstreamTransactionTax、UpstreamStampDuty、UpstreamStockServiceFee、UpstreamBusinessTax、UpstreamCustodyFee、UpstreamOperatingCost、UpstreamSettlementFeeOCCURS 展開規則見 核心流程 §OCCURS 展開
TradingFeeCFG|交易所別公用參數設定檔(UPPM)
- 複合主鍵:
UpstreamBrokerNo + Currency - 欄位:
MarginPercentage(保證金成數,預設 100)、BankCommissionPercentage(銀行佣金成數) - 明細資料在
TradingFeeCFGDetail(原 COBOL FD 為一個,正規化後拆出)
TradingFeeCFGDetail|交易所別公用參數設定檔明細(UPPM)
- 複合主鍵:
UpstreamBrokerNo + Currency + FeeType - 費用類別
FeeType char(2):1=手續費 / 2=處理費 / 3=交易所費 / 4=結算費 / 5=匯款手續費 / 6=交易稅 / 7=印花稅 / 8=股票服務費 / 9=營業稅 / 10=保管費 / 11=營業成本 / 12=交割費用 / 13=單股手續費 / 14=基金戶手續費 - 費用欄位:
Fee numeric(18,6)、FeeUnit char(1)(0=百分比 / 1=元)、MinimumFee、MaximumFee - 買賣雙向費用:
BuyFee/BuyFeeUnit、SellFee/SellFeeUnit(兩者單位別同FeeUnit) - 備註:原 COBOL FD 為單一檔案,正規化後拆出;同類問題也存在於成交檔(待考慮是否拆出);代碼類資料應寫入代碼檔
跨表共通約定
稽核欄位(所有表必備)
| 欄位 | 型別 | 預設值 | 說明 |
|---|---|---|---|
CreatedUserId | varchar(20) | '' | 建檔人員 |
Created_at | DATETIME2 | sysutcdatetime() | 建檔時間(UTC) |
UpdatedUserId | varchar(20) | '' | 更新人員 |
Update_at | DATETIME2 | sysutcdatetime() | 更新時間(UTC) |
日期欄位格式慣例
- 字串型日期欄位
char(8):儲存格式皆為YYYYMMDD;若源頭為民國年(COBOL 慣例),寫入 DB 前需轉為西元年 - 例外:
CustomerKYC.UpdatedDate是 7 碼民國年字串yyyMMdd(不轉換),前端顯示時才做格式轉換(見 BR-012)
COBOL FD 欄位對應慣例
- 每個欄位的
COBOL欄位對應來源是 FD 檔的原始欄位名稱(例BHNO、CSEQ、TMMDD、SHEET) - 型別轉換規則依各 INI Layout 定義
- OCCURS 欄位(如
FEE OCCURS1~8、UPFEE OCCURS1~12)在 MatchDetail 中已正規化為獨立欄位(而非明細表)
複合主鍵的 ChangeLog 表示
複合主鍵的 ChangeLog.RecordId 以 JSON 物件字串格式記錄:
{"BrokerNo":"9699","AccountNo":"100001"}
單一主鍵則直接記錄 PK 字串值。見 BR-010。
版本差異(v1.0 vs v1.1)
| 版本 | 日期 | 變更 |
|---|---|---|
| v1.0 | 2026-04-13 | 初版 PDM 報告,含 TOC |
| v1.1 | 2026-04-14 | 移除 TOC,表格 header row 位置調整(欄位內容結構一致) |
兩版的資料表結構與欄位定義完全相同,差異僅在報告格式。目前
db-schema.md(curated)以 v1.1 為準。
補充資訊
(未來 ingest 新來源會在此追加段落)