fix(排程): 拒絕重複的工作包 index
同一個 index 出現兩次時,相依看的是後者、標題與人天卻取到前者,算出來的時程是 兩份定義混出來的東西,而且回傳 ok:true 完全不報錯。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -66,7 +66,15 @@ function readPlan(planFile) {
|
|||||||
throw new ScriptError('BAD_PLAN', 'workPackages 需為非空陣列');
|
throw new ScriptError('BAD_PLAN', 'workPackages 需為非空陣列');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const seen = new Set();
|
||||||
for (const wp of plan.workPackages) {
|
for (const wp of plan.workPackages) {
|
||||||
|
// 同一個 index 出現兩次時,相依看的是後者、標題與人天卻取到前者,
|
||||||
|
// 算出來的時程會是兩份定義混出來的東西,而且完全不會報錯
|
||||||
|
if (seen.has(wp.index)) {
|
||||||
|
throw new ScriptError('BAD_PLAN', `工作包 #${wp.index} 在計畫裡出現了不只一次`);
|
||||||
|
}
|
||||||
|
seen.add(wp.index);
|
||||||
|
|
||||||
if (!Number.isInteger(wp.index) || wp.index <= 0) {
|
if (!Number.isInteger(wp.index) || wp.index <= 0) {
|
||||||
throw new ScriptError('BAD_PLAN', `工作包的 index 需為正整數,收到的是 ${wp.index}`);
|
throw new ScriptError('BAD_PLAN', `工作包的 index 需為正整數,收到的是 ${wp.index}`);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user