單號流水號規則(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 = 0101、XXX = 001 - 同秒多單:DB 唯一索引擋第二單,retry 取下一個序號
- 手動補單:可繞過自動編號(IT 權限),但會在 歷史異動日誌 留紀錄
相關概念
強連結(原文明確提及)
深入閱讀
← 回到 wiki