跳轉到

盤前檔投遞與轉檔(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 完整流程

  1. 驗證 binary 齊全tapio-load-investor-settingtapio-load-balancetapio-load-positiontapio-load-fee 都要存在
  2. 驗證來源目錄有檔[preopen].source_dir/*.TXT 至少有一個(避免 broker 還沒投檔就 cp)
  3. 清空 /opt/Tapio/data/preopen/$today/(避免昨天殘留)
  4. cp -a [preopen].source_dir/*.TXT /opt/Tapio/data/preopen/$today/
  5. 依序執行
    1. tapio-load-investor-setting → 寫 storage/$today/pre_open_investor.jsonl
    2. tapio-load-balance → 寫 pre_open_balance.jsonl
    3. tapio-load-position → 寫 pre_open_position.jsonl
    4. tapio-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 → 重跑前先確認問題已解,不然會無限循環