盤前檔投遞與轉檔(preopen)¶
每天開盤前 broker 會把投資人 / 餘額 / 部位 / 手續費資料投遞到一個約定目錄。
tapioctl preopen 把這些 *.TXT 轉檔載入 Tapio。
流程¶
flowchart TD
A[broker] -->|SFTP / 約定機制| B["[preopen].source_dir/*.TXT"]
B -->|preopen: cp -a| C["/opt/Tapio/data/preopen/$today/*.TXT"]
C -->|preopen: 各 Load 工具| D["/opt/Tapio/storage/$today/pre_open_*.jsonl"]
預期投檔內容¶
[preopen].source_dir/ 下會看到投資人、餘額、部位、手續費相關的 *.TXT 檔。
具體檔名與欄位格式由各 broker 與對應的 tapio-load-* 工具決定。
tapioctl preopen 完整流程¶
- 驗證 binary 齊全:
tapio-load-investor-setting、tapio-load-balance、tapio-load-position、tapio-load-fee都要存在 - 驗證來源目錄有檔:
[preopen].source_dir/*.TXT至少有一個(避免 broker 還沒投檔就 cp) - 清空
/opt/Tapio/data/preopen/$today/(避免昨天殘留) cp -a [preopen].source_dir/*.TXT /opt/Tapio/data/preopen/$today/- 依序執行:
tapio-load-investor-setting→ 寫storage/$today/pre_open_investor.jsonltapio-load-balance→ 寫pre_open_balance.jsonltapio-load-position→ 寫pre_open_position.jsonltapio-load-fee→ 寫fee.jsonl
任何一步失敗即 abort(fail fast;盤前帶錯資料開盤是禁忌)。
投檔延誤怎麼辦¶
cron 排程的 preopen 時間因 broker 而異。若執行時 [preopen].source_dir/*.TXT 還沒到位,preopen 會 fail(找不到 *.TXT)。
處理流程請參閱 故障排除 → 臨時操作 → 手動補跑盤前檔轉檔。
長期方案:若 broker 慣性延誤,可把 cron 時間往後調,或寫 wrapper script retry,但要注意盤前時間有限,重試次數不宜無限。
排錯¶
-
preopen fail:
找不到 *.TXT→ broker 投檔延誤。聯絡 broker -
preopen fail:
tapio-load-balance 失敗 (exit N)→ 對應 Load 工具自己印的錯誤。看log/$today/tapio-load-balance.HHMMSS.txt→ 常見:檔案格式變更(broker 改格式)、檔案編碼不對、欄位錯位 -
preopen 跑了但 storage/$today/ 內缺檔 → 只有「成功的步驟」會寫 storage 檔;中途 fail 後續步驟不會跑。看哪個 Load 工具的 log → 重跑前先確認問題已解,不然會無限循環