單號流水號規則(NMMDDXXX)

CallIT 需求單號採 NMMDDXXX 格式,動態生成,不依賴排程,避免排程故障導致無法開單。

格式

N M M D D X X X
│ │ │ │ │ └─┴─┴─ 當日序號(001 起跳,每日歸零)
│ │ │ │ │
│ │ │ └─┴─────── 日(DD,01-31)
│ │ │
│ └─┴─────────── 月(MM,01-12)
│
└─────────────── 民國年尾數(N,0-9,每 10 年循環)

例子(民國 115 年 4 月 27 日第 3 單):

5  04  27  003   →  50427003

為什麼動態產生

舊系統用 PyService 排程在 00:00 變更起始流水號 — 一旦排程沒跑(service 掛、機器重開),整天就開不了單

新設計把生成邏輯寫進 五層式架構repository/ 層,每次建單時依當下時間 + DB 查詢當日已開的最大序號 + 1,產生單號。

舊(排程式)新(動態式)
觸發排程 00:00 改起始號建單時即時計算
故障容忍排程掛 = 整天無法開單隨時可開
DB 操作預先寫入序號表查當日 max + 1

邊界情境

  • 跨年第 1 天N 變動(民國年尾數推進),MMDD = 0101XXX = 001
  • 同秒多單:DB 唯一索引擋第二單,retry 取下一個序號
  • 手動補單:可繞過自動編號(IT 權限),但會在 歷史異動日誌 留紀錄

相關概念

強連結(原文明確提及)

深入閱讀

← 回到 wiki