粗排引擎 (Rough-Cut Scheduler) Functional Spec
來源:rough-cut-scheduler(含 2026-06-03 素材 #4、2026-06-04 收斂) 下游:OOA 共用物件:domain-model(VSM/投產單/可用產能/Freeze 的定義在此;本 spec 僅就粗排所需投影、不重述定義) 狀態:已簽核 驗證:
rough-cut-scheduler.fp.validate.py(I/O 範例自洽性檢核,已通過;.py不上站)→ 執行結果 rough-cut-scheduler.fp.validate-output.md
概述
提供一個快速、純試算的粗排引擎:給定一批投產單與既有 VSM/可用產能,為每個 VSM 節點算出 LSD(最晚開工日)、LeanPlay 交期與投產順序,作為細排引擎的 input 之一。顆粒度到「天」,不寫回/不鎖定產能。
兩個方向、各算一個輸出(2026-06-03 收斂;2026-06-04 修正上游 JIT 拉動):
-
LeanPlay 交期=以節拍點為節奏點求「最早可完工」:
- 自起排日(參數,預設今天+1)正推,求節拍點的最早可開工日(這步只為定出「第一個日期」);
- 套節拍點有限產能堆疊、不足往後一天,定下節拍點的當日;
- 由節拍點當日往前拉動上游 N-x(JIT、緊鄰節拍點、不留閒置)、往後推動下游 N+y;末站完工=產品 LeanPlay 交期。
為什麼要先正推?因為一開始沒有任何錨點,得先用「自前站往後推」算出節拍點最早能落在哪天;錨點一旦定下,上游就改由節拍點往前拉、下游往後推。節拍點若被排擠往後(§RCS-FS-2),其上游前製程隨之整段往後(§RCS-FS-15),不會停在原地空等。
兩者一前一後夾出餘裕:LeanPlay 告訴你「最早何時能完工」、LSD 告訴你「最晚何時得開工,否則必逾期」。
本次範圍=核心粗排引擎(細排 input)。產銷協調互動入口(確認時間/確認影響)明確不做、留下一期(見 §requirement 覆蓋對照)。 Freeze 看板產能在引擎外就已決定,引擎只把它當「可用產能」的一部分讀入,不在引擎內設定。 多單搶節拍點產能時,處理先後依投產單的
prioritySeq(進入順序)、非交期(#15)。注意prioritySeq(輸入處理順序)與「投產順序」(輸出、依 LeanPlay 完工日排序)是兩個不同概念。 節拍點多機台(棋盤)+ eligibility(2026-06-09 新增,對應 #17):一個節拍點(製程-工作站)對應多台機台,每台帶工作能力與每日可用;某 VSMNode 只能用工作能力涵蓋其製程-工作站的 eligible 機台(如 LASR-L2 只有 LA02 能做)。粗排不安排實際機台與時間,僅為尊重能力限制而在內部以「機台×日」記產能扣減;輸出仍只有 {LSD, LeanPlay, 投產順序}、不含機台。多 eligible 機台分配本期用固定機台序(§RCS-FS-18)、最佳化與純機台硬綁延後(見 §待裁定)。原「節拍點一次只做一張單」為此模型 N=1 的退化。
Use Cases
UC A1: 觸發粗排排單
- Actor:生管
- 前置條件:VSM(節拍點 VSMNode 帶製程-工作站)、可用產能(下沉到「機台×日」、各機台帶工作能力;已含外部決定的 Freeze)、投產單(含交期與
prioritySeq)、x-y 設定檔(本期固定 CT×數量+CO)、起排日參數(預設今天+1)皆已備妥。 (Freeze 的時間範圍、x-y 的最終策略選定、機台分配最佳化、純機台硬綁:本期保留、不在此設計。) - 觸發條件:一批投產單就緒,生管要產出粗排結果
- 行為:
- 預期結果:每個 VSM 節點 = {LSD, LeanPlay 交期, 投產順序};純試算、不寫回/鎖定產能;顆粒度到天;輸出不含機台指派(機台×日僅為內部 eligibility 記帳)
- 例外路徑:無節拍點 §RCS-FS-1、節拍點 eligible 機台全滿 §RCS-FS-2/§RCS-FS-16、交期早於當日 §RCS-FS-3、空批次 §RCS-FS-8、eligibility 限制可用機台子集 §RCS-FS-17、多 eligible 機台分配 §RCS-FS-18、eligible 空集拋例外 §RCS-FS-19(除 §RCS-FS-19 中止外,皆在黑箱內發生,對生管表現為結果中的標註)
UC A2: 細排引擎取用粗排結果
- Actor:細排引擎(程式消費方)
- 觸發條件:一次粗排完成、結果已產出
- 行為:
- 讀取整包粗排結果(每個 VSM 節點的 LSD/LeanPlay 交期/投產順序)
- 當作細排自身排程的 input 之一
- 預期結果:細排取得粗排輸出作為輸入;介面輪廓為「整包 VSM 節點標記」(欄位細節留 Stage 3)
- 例外路徑:空粗排結果 §RCS-FS-8
流程圖 / 資料結構
圖 1:UC A1 系統處理流程(黑箱內部)
生管只見 啟動 → loading → 取得結果;下圖為中間黑箱的系統處理。決策節點各對應一條 §邊界條件。
LeanPlay 以節拍點為節奏點:先正推求節拍點最早可開工日(定錨)→ 有限產能堆疊定下節拍點當日 → 由節拍點往前拉動上游(N-x,JIT)、往後推動下游(N+y);LSD 另以交期反推、不看產能。
引擎只產出日期(LSD/LeanPlay/投產順序),不比對 LeanPlay 交期 vs 投產單交期、不判 overdue;逾期與否屬下游前端/應用的事(§RCS-FS-7)。
flowchart TD Start([生管啟動粗排]) --> Load[載入投產單批次 / VSM / 可用產能(已含外部決定的 Freeze)] Load --> Empty{投產單批次為空?} Empty -- 是 --> EmptyOut([回傳空粗排結果 ・§RCS-FS-8]) Empty -- 否 --> Sort[依 prioritySeq 進入順序排序投產單 ・§RCS-FS-12] Sort --> Pick[取下一張投產單] Pick --> Takt{該 VSM 有節拍點?} Takt -- 否 --> Last[以最後一站為節拍點 ・§RCS-FS-1] Takt -- 是 --> Use[採用指定節拍點] Last --> Anchor Use --> Anchor["定錨:前站自起排日(預設今天+1・§RCS-FS-11)正推,求節拍點『最早可開工日』"] Anchor --> Elig{節拍點有 eligible 機台?(工作能力 match 製程-工作站)} Elig -- 否(空集)--> Throw([拋『無可用資源』例外、中止 ・§RCS-FS-19]) Elig -- 是 --> Cap{eligible 機台中有一台 連續可用日足夠? ・§RCS-FS-17} Cap -- 否(全滿)--> NextDay[所有 eligible 機台皆不足 → 往後一天 ・§RCS-FS-2/§RCS-FS-16] NextDay --> Cap Cap -- 是 --> Stack["佔用該 eligible 機台 L 連續日(固定機台序・§RCS-FS-18;內部記帳、不輸出機台)"] Stack --> Pull["往前拉動上游 N-x:由節拍點當日反推,緊鄰節拍點、JIT 不留閒置(節拍點後移則上游隨之後移 ・§RCS-FS-15)"] Pull --> Down[往後推動下游 N+y 至末站(隔天開工)] Down --> Lean[末站完工 = 該單 LeanPlay 交期;逐節點記 LeanPlay 完工] Lean --> LSD[另由交期反推各節點 LSD:純 leadtime、不看產能 ・§RCS-FS-13] LSD --> More{還有投產單?} More -- 是 --> Pick More -- 否 --> Seq[全單混排:所有節點依 LeanPlay 完工日排序 → 投產順序 ・§RCS-FS-12] Seq --> Assemble[彙整每節點 = LSD / LeanPlay 交期 / 投產順序] Assemble --> Out([回傳整包粗排結果])
圖 2:VSM 製程樹結構(toy 示意,9 站)
實際 VSM 為製程樹(多上游匯流)。下列 toy 以兩條不等長上游分支匯流到節拍點 A、A 後接三道下游,I/O 範例與驗證 script 皆以此為準。
flowchart LR B1[B1 下料] --> B2[B2 折床] C1[C1 下料] --> C2[C2 沖孔] --> C3[C3 去毛邊] B2 --> A["A 組裝 ★節拍點 N"] C3 --> A A --> D1[D1 焊接] --> D2[D2 噴漆] --> D3[D3 包裝出貨]
拉動/推動 = 節拍點前後兩個「區域」的命名(x、y 為其位移參數=各站 leadtime):節拍點前為上游拉動區
N-x(B1、B2、C1、C2、C3),節拍點後為下游推動區N+y(D1、D2、D3)。 方向說明:在 LeanPlay 中,節拍點是節奏點,上游拉動區由節拍點當日往前拉(JIT),故各上游分支都緊鄰節拍點完工、不留閒置:例如 B 分支(短分支)被拉到 B2 06-05 完工(緊接 A 06-06 開工),而非停在 06-04 空等;C 分支(長分支=關鍵路徑)C3 06-05 完工,兩分支在 A 前對齊。下游推動區則由節拍點當日往後推。節拍點若被排擠後移,整個上游拉動區隨之後移(§RCS-FS-15)。LSD(反推)則另以交期為錨把各站「拉到最晚」,與 LeanPlay 的差即餘裕。選 A(B、C 分支匯流處)為節拍點,可同時示範「對分支拉動」與「對下游推動」。
圖 3:粗排輸出結構(對外觀察,非內部類別)
flowchart TD Order["投產單 #5001・產品 P・數量 100・交期 2026-06-15・prioritySeq 1"] --> VSM[VSM 製程樹 9 節點] VSM --> UB["上游 B 分支:B1 下料 / B2 折床"] VSM --> UC["上游 C 分支:C1 下料 / C2 沖孔 / C3 去毛邊"] VSM --> NA["★節拍點 A 組裝"] VSM --> DN["下游 D:D1 焊接 / D2 噴漆 / D3 包裝出貨"] UB --> Mark["每節點掛:LSD / LeanPlay 交期 / 投產順序"] UC --> Mark NA --> Mark DN --> Mark
I/O 範例
共用物件投影:本節 input 的
投產單 / VSM / 可用產能 / Freeze為跨 feature 共用物件,定義見 domain-model,此處不重述,僅給粗排所需投影 + 具體情境值。粗排投影:投產單用{poNo, product, qty, dueDate, prioritySeq}、VSM 用製程樹拓樸 + 各節點 CT/CO、可用產能用各節點每日可用(含 Freeze 預佔日)。
Toy 參數(一次定死,所有數字由此推導)。約定:工作日=480 分;Leadtime =
ceil((CT×數量+CO)/480);節點佔 L 連續日、完工日=最後一日;下游隔天開工;節拍點 A 一次只做一張單、需 L 連續可用日,最早可開工日被佔→往後一天(§RCS-FS-2);今天=2026-06-02;起排日(正推起點)=今天+1=2026-06-03;toy 忽略週末(行事曆屬可用產能輸入)。
| 站 | 角色 | CT(分/件) | CO(分) | Leadtime(qty=100) |
|---|---|---|---|---|
| §RCS-FS-1 下料 | 上游(拉動 N-x) | 2 | 40 | 1 天 |
| §RCS-FS-2 折床 | 上游(拉動 N-x) | 4 | 80 | 1 天 |
| C1 下料 | 上游(拉動 N-x) | 2 | 40 | 1 天 |
| C2 沖孔 | 上游(拉動 N-x) | 2 | 60 | 1 天 |
| C3 去毛邊 | 上游(拉動 N-x) | 1 | 40 | 1 天 |
| A 組裝 | ★節拍點 N | 6 | 120 | 2 天 |
| D1 焊接 | 下游(推動 N+y) | 3 | 60 | 1 天 |
| D2 噴漆 | 下游(推動 N+y) | 2 | 80 | 1 天 |
| D3 包裝出貨 | 下游(推動 N+y) | 1 | 0 | 1 天 |
LSD vs LeanPlay:兩者各有錨點,LeanPlay 以節拍點為錨(正推求節拍點最早日 → 上游往前拉、下游往後推,得最早可完工)、LSD 以交期為錨(純反推,得最晚可開工)。兩者之差即各節點餘裕。完整逐節點表與甘特圖見 §驗證執行結果(由 script 自動產出)。
UC A1
正常值(單張、產能充足)
- input:
投產單 = [ { poNo: 5001, product: P, qty: 100, dueDate: 2026-06-15, prioritySeq: 1 } ] 可用產能 = 節拍點 A 全部日皆空(外部 Freeze 未佔用) 起排日 = 2026-06-03(今天+1);x/y設定檔 = CT×數量+CO - output:(節拍點 A 最早可開工日 06-06、占 06-06~06-07;上游由 A 往前 JIT 拉動,下游往後推動)
節點 LSD(交期反推) LeanPlay完工(節拍點錨定) 序 C1 下料 2026-06-08 2026-06-03 1 B1 下料 2026-06-09 2026-06-04 2 C2 沖孔 2026-06-09 2026-06-04 3 B2 折床 2026-06-10 2026-06-05 4 C3 去毛邊 2026-06-10 2026-06-05 5 A 組裝 ★N 2026-06-11 2026-06-07 6 D1 焊接 2026-06-13 2026-06-08 7 D2 噴漆 2026-06-14 2026-06-09 8 D3 包裝出貨 2026-06-15 2026-06-10 9 產品LeanPlay交期 = 2026-06-10(最早可完工日,早於交期 06-15;引擎不判 overdue,比對由下游做)上游 JIT 拉動:B 分支(短)被拉到緊鄰節拍點完工(B2 06-05、B1 06-04),不停在 06-04/06-03 空等;C 分支(長=關鍵路徑)C3 06-05,兩分支在 A 06-06 開工前對齊。 「序」的定義:投產順序=該節點 LeanPlay 完工日在整批(全單混排)中的名次,連續編號 1..N。單張單即 1..9;多張單時所有單所有節點混成單一排序(見邊界值,1..18)。同一完工日的節點先後不具意義(如 B1、C2 同為 06-04,序 2/3 可互換)。
[邊界值(早交期但 prioritySeq 在後 → 被排擠、LeanPlay 晚於交期,§RCS-FS-2 + §RCS-FS-12 + §RCS-FS-15)](rough-cut-scheduler.fp.validate-output.md#邊界值早交期但-priorityseq-在後—被排擠leanplay-晚於交期rcs-fs-2—rcs-fs-12—rcs-fs-15)
- input:
投產單 = [ { poNo: 5001, product: P, qty: 100, dueDate: 2026-06-20, prioritySeq: 1 }, { poNo: 5002, product: P, qty: 100, dueDate: 2026-06-11, prioritySeq: 2 } ] 處理先後:依 prioritySeq(5001 先於 5002)——注意 5002 交期較早卻排在後 - output:
5001(prioritySeq 1,A 占 06-06~06-07): 產品LeanPlay交期=2026-06-10(早於交期 06-20) 5002(prioritySeq 2,被排擠): 節拍點最早可開工 06-06 被 5001 佔 → §RCS-FS-2 A 推到 06-08~06-09 §RCS-FS-15 上游隨節拍點整段往後:5002 上游由 06-03~05 改排到 06-05~07(JIT、不空等) 產品LeanPlay交期=2026-06-12(較交期 06-11 晚 1 天;引擎只給日期、不判 overdue) 全單混排序(18 節點依 LeanPlay 完工日連續編號 1..18): 5001 取 {1,2,3,4,5,9,12,13,15}、5002 取 {6,7,8,10,11,14,16,17,18};節拍點 A:5001=序 9、5002=序 14這就是 prioritySeq 決策的後果:5002 交期較早,但因 prioritySeq 在後而被排擠,使其 LeanPlay 交期晚於交期。若改用「交期排序」則 5002 會先佔產能、LeanPlay 早於交期;引擎只忠實輸出日期(§RCS-FS-7),是否算逾期、是否調整 prioritySeq 都由下游/人決定。 上游隨節拍點後移(§RCS-FS-15):5002 的節拍點被推到 06-08,其前製程不停在原地空等,而是整段往後到 06-05~07 緊鄰節拍點;甘特圖可見 5002 的上游條整段右移。逐節點表 + 甘特圖見 §驗證執行結果。
異常值
- [(a) 空批次(§RCS-FS-8)](rough-cut-scheduler.fp.validate-output.md#異常值-a空批次rcs-fs-8):
input: 投產單 = [] output: 粗排結果 = [] (不報錯,合法空輸入) - [(b) 投產單交期早於今日(§RCS-FS-3、未解 #10)](rough-cut-scheduler.fp.validate-output.md#異常值-b投產單交期早於今日rcs-fs-3未解-10):
input: 投產單 = [ { poNo: 5005, product: P, qty: 100, dueDate: 2026-06-01, prioritySeq: 1 } ] // < 今日 06-02 output: LeanPlay 排程仍落在未來(06-03~06-10)——節拍點由起排日正推定錨、永不夾到過去; 只有 LSD 反推落於過去(05-25 等、視為無意義);產品 LeanPlay 06-10 晚於交期 06-01 引擎照樣產出日期、不判 overdue、不擋下(是否逾期由下游比對,容忍)正推定錨的副產品:節拍點當日由起排日正推求得(§RCS-FS-11),上游再由節拍點往前拉、但關鍵路徑葉站不早於起排日,故交期早於今日的投產單其 LeanPlay 排程不會落在過去;落在過去的只有 LSD 反推值。引擎不對此下逾期判定;若日後要對「交期早於今日」做別的處理,屬 §RCS-FS-3 規則變更,需另開討論。
UC A1 — eligibility 場景(節拍點多機台「棋盤」)
專用 toy(聚焦節拍點一站,與上方 9 站 toy 獨立):工作站 L 兩台機台,LA01 工作能力
{LASR-L}、LA02 工作能力{LASR-L, LASR-L2}。各單在節拍點 L=1 天、最早可開工日皆 2026-06-03、06-03 起兩台全空、分配用固定機台序(§RCS-FS-18,id 小先)。機台僅內部記帳、輸出不含機台。
正常值(棋盤並行)
- input:
投產單 = [ {poNo:5201, 節拍點製程-工作站:LASR-L, prioritySeq:1}, {poNo:5202, 節拍點製程-工作站:LASR-L, prioritySeq:2} ] // 兩單 eligible = {LA01, LA02} - output:
5201 節拍點 = 2026-06-03(內部佔 LA01) 5202 節拍點 = 2026-06-03(內部佔 LA02,與 5201 並行)對照木桶(N=1):5202 會被擠到 06-04;棋盤兩台並行、同日完工。
邊界值(eligibility 排擠 ── 對照「總產能」高估)
- input:
投產單 = [ {poNo:5301, 節拍點製程-工作站:LASR-L2, prioritySeq:1}, {poNo:5302, 節拍點製程-工作站:LASR-L2, prioritySeq:2} ] // 兩單 eligible = {LA02} only - output:
5301 節拍點 = 2026-06-03(內部佔 LA02) 5302 節拍點 = 2026-06-04(LA02 於 06-03 已滿、LA01 不可用 → §RCS-FS-16 推一天);LA01 於 06-03 整天空著這就是 #17 的核心:「總產能」視角=06-03 有 2 台空位 → 誤判兩單都能 06-03 完工;eligibility 實況=LASR-L2 只有 LA02 能做 → 第二單必擠到 06-04。總產能高估了受限零件的可用量。
異常值(eligible 空集 → 拋例外)
- input:
投產單 = [ {poNo:5401, 節拍點製程-工作站:LASR-L9, prioritySeq:1} ] // 無任何機台有 LASR-L9 能力 - output:
拋「無可用資源」例外、中止該次粗排(§RCS-FS-19;視為資料/設定錯誤,fail-fast)
UC A2
- input:
整包粗排結果(UC A1 的 output:每節點 LSD / LeanPlay 交期 / 投產順序) - output:
細排引擎將其納為自身排程的 input 之一(本層只定介面輪廓,欄位細節留 Stage 3)
邊界條件 / 異常情境
- §RCS-FS-1
- §RCS-FS-2
- 條件:節拍點自最早可開工日起連續可用日不足
- 結果:往後推一天再找連續可用日堆疊;可能使 LeanPlay 交期晚於投產單交期(排擠)
- §RCS-FS-3
- §RCS-FS-4
- 條件:節拍點站別含多製程(生管認知模糊)
- 結果:初期僅支援單一「工作站-製程」;多製程節拍點超出本期範圍(對應 #8)。註:此為對 domain-model VSM identity「工單-料號-工作站-製程-工序」的階段範圍收斂、非定義衝突
- §RCS-FS-5
- 條件:物料到料時點未知
- 結果:初期不考慮到料功能,僅保留「需要哪些料」(對應 #4)
- §RCS-FS-6
- 條件:x-y 參數來源
- 結果:本期固定
CT×數量+CO(ERP);方案 2「CT×數量」、方案 3「生管固定天數」為保留切換策略(計算前讀當前策略),本期不展開(對應 #9)
- §RCS-FS-7
- 條件:LeanPlay 交期 vs 投產單交期/生管期待
- 結果:引擎只輸出 LeanPlay 日期、不做比對、不判 overdue;是否逾期、如何反應、如何呈現皆屬下游前端/應用(對應 #11,已釐清)
- §RCS-FS-8
- §RCS-FS-9
§RCS-FS-10- 條件:
節拍點起排日=JIT 目標開工日(= 交期 − 節拍點到成品前置時間) - 結果:
保留為可替換的計算介面→ 廢棄(2026-06-04):2026-06-03 收斂改為 LeanPlay 自起排日正推(ASAP),節拍點不再以交期反推錨定。改見 §RCS-FS-11。LSD 的反推則由 §RCS-FS-13 承接。
- 條件:
- §RCS-FS-11
- 條件:起排日(LeanPlay 正推起點)
- 結果:參數,預設=今天+1;葉站自起排日開工往後排(對應 #14)
- §RCS-FS-12
- §RCS-FS-13
- §RCS-FS-14
- §RCS-FS-15
- §RCS-FS-16
- §RCS-FS-17
- §RCS-FS-18
- 條件:多 eligible 機台的分配
- 結果:抽象為
ResourceAllocationStrategy介面(OCP、與既有LeadTimeStrategy同模式)。本期 default=IdAscendingStrategy(machine id 小者先佔,=現行行為、悲觀下界);MostConstrainedFirstStrategy(通用機台留給受限零件、減少不必要排擠)為已登記、Stage 3 才實作的策略;純機台硬綁(能力全同仍綁特定台)延後(對應 #17,見 §待裁定)
- §RCS-FS-19
編號為 append-only。新條件加新編號,廢棄條件用
刪除線+ 廢棄原因,不重編號。
驗證 Script
路徑:rough-cut-scheduler.fp.validate.py(.py 不上站;結果見下方 validate-output)
- 用途:以 day 顆粒度、一般化樹狀拓樸模型化 §流程圖 圖 1 的核心(LeanPlay 以節拍點為錨:正推定錨求節拍點最早日 → 有限產能堆疊 → 上游 JIT 拉動/下游推動;LSD 自交期反推不看產能;依 prioritySeq 逐張處理;投產順序全域排序),餵入上方 §I/O 範例的 toy 輸入,
assert輸出與 spec 一致。 - 跑法:
python rough-cut-scheduler.fp.validate.py→ 已通過全部 assertion(正常/邊界排擠/空批次/交期早於今日)。 - 輸出:執行時另存一份人類可讀結果 →
rough-cut-scheduler.fp.validate-output.md(自動產生、deterministic、請勿手改;spec 由此連結過去看實算結果)。 - 定位:只驗證 I/O 範例自洽,非實作雛形(Stage 5 的 code 不照抄);跑得通 ≠ 設計正確。
requirement 覆蓋對照
| requirement 需求點 | 對應 Use Case / 邊界條件 | 狀態 |
|---|---|---|
| 需求一(產銷協調:確認時間 / 確認影響) | — | 明確不做(下一期;引擎入口) |
| 需求二(細排 input:每節點 LSD / LeanPlay / 投產順序) | UC A1 + UC A2 | 已涵蓋 |
| 素材 #4(三輸出計算方向:LeanPlay 節拍點錨定 / LSD 反推 / 投產順序依 LeanPlay) | UC A1 行為 + 圖 1 + B11~B13、B15 | 已涵蓋 |
| #5(評估是否寫回 / 鎖定產能) | 引擎語意=純試算不落地 | 已釐清(記錄於 UC A1 預期結果) |
| #6(同引擎、不同入口 / 參數) | UC A1(生管)/ UC A2(細排)共用引擎 | 已涵蓋 |
| #8(節拍點站別模糊) | B4(初期單一工作站-製程) | 已涵蓋(初期範圍) |
| #9(x-y 參數三策略) | B6(鎖 CT×數量+CO,2/3 保留切換策略) | 已涵蓋(本期鎖方案1,最終選定待裁定) |
| #10(交期早於當日) | B3(容忍、不判 overdue,引擎只給日期) | 已涵蓋 |
| #11(LeanPlay 交期 vs 生管期待交期落差) | B7(引擎只給日期、不判逾期;比對與反應屬下游) | 已釐清 |
| #13(LSD 反推是否看產能) | B13(反推、不看產能) | 已涵蓋 |
| #14(起排日定義與 +1) | B11(參數,預設今天+1) | 已涵蓋 |
| #15(處理順序 vs 投產順序) | B12(prioritySeq 處理;投產順序另算) | 已涵蓋 |
| #16(集批控制) | B14(不支援、LSD 單一日期) | 已涵蓋 |
| #17(節拍點多機台 + eligibility) | UC A1 + 圖 1 + B16~B19 + eligibility I/O 場景 | 已涵蓋(棋盤、固定機台序;最佳化/硬綁延後) |
| #12(Freeze 時間範圍規則) | B9(引擎外輸入);I/O 約定 | 部分(範圍規則由生管決定,待裁定) |
| #7(引擎拆解方法論) | — | 暫緩(聚焦本引擎 I/O/Process) |
待裁定 / 未解問題
- Q1(= 未解 #7):多引擎拆解方法論/拆解準則 → 狀態:暫緩,關係人表示先聚焦粗排模組 Input/Output/Process,本 spec 不展開。
- Q2(= 未解 #12):排單前 Freeze 的「時間範圍」長度與決定方式(方向:由生管決定,引擎外)→ 狀態:部分釐清,規則待裁定。
- Q3(= 未解 #9 殘留):x-y 三策略最終採用哪一個、方案 3「固定天數如何給」→ 狀態:本期鎖方案 1(CT×數量+CO)、三策略並存可切換,最終選定與方案 3 輸入待補。
- Q4(= 未解 #5 殘留):評估是否真實寫回/鎖定產能 → 狀態:本期語意=純試算不落地;是否落地待裁定。
- Q5(= 未解 #4 殘留):輸入清單是否齊全(行事曆/班別已併可用產能、BOM 已併 VSM、到料初期不納入)→ 狀態:大致收斂,完整盤點待 Stage 2 定稿前確認。
- Q6(= 未解 #17 殘留):多 eligible 機台的分配最佳化(把通用機台留給受限零件,減少不必要排擠)→ 狀態:§RCS-FS-18 已抽為
ResourceAllocationStrategy介面;本期 defaultIdAscendingStrategy(悲觀下界),最佳化策略MostConstrainedFirstStrategy介面已就位、實作延後 Stage 3。 - Q7(= 未解 #17 殘留):純機台硬綁(兩台工作能力全同、仍要綁特定台,matching 之外那層)→ 狀態:本期不做、延後。
簽核
- 編輯者:Alan / 日期:2026/06/05
- Reviewer:Alan / 日期:2026/06/05
- 修訂(eligibility/棋盤,2026-06-09):編輯者 Alan / 日期 2026/06/09;Reviewer Alan / 日期 2026/06/09
- 簽核完成後,請把上方「狀態」欄改為「已簽核」。