稼働日・容量計画
稼働日・依存制約・リソース容量の計画
Section titled “稼働日・依存制約・リソース容量の計画”@alneas/task-graph/planningのplanGanttTasksは表示に依存しない日単位の計画処理です。
入力はid・created_atと任意のstart_date/due_date・parent_id・durationDays・担当/リソースです。
UIのタイトル・状態・色・アイコンは要求せず、追加情報は返却時に維持します。返却日付はDateを許容する型です。
既存の時間単位CPMとは別モデルで、FS/SS/FF/SF・整数の正負ラグに対応します。
日付は有効なローカル午前0時のDate/ISO日時、または厳密なYYYY-MM-DDです。 日付のみの文字列はUTCにせずローカル日付として読みます。不正な日付・時刻付きの途中時刻は例外です。 DSTをまたぐ日付計算に対応し、date-fnsなどの実行時依存はありません。 結果は実行環境のタイムゾーンに依存するため、処理する環境でタイムゾーンを揃えてください。 scheduleGanttTasksの2引数呼び出しは従来のカレンダー日・時刻保持を維持し、3番目のoptions指定で日単位計画を選択します。
calendar省略は週7日、calendar:{}は月〜金です。workingDatesは休日・曜日指定に優先します。 国別祝日や個人別勤務表は自動適用しません。日程は開始を含み終了を含まない区間で、終了は次の稼働日境界です。 durationDaysが推定日数に優先し、0はマイルストーンです。休日だけの正の期間は1稼働日として扱います。 終了省略は1暦日の期間を推定します。元の開始日より早く移動しません。 子を持つsummary行は計画対象外で元のまま返し、UI側が集計します。 依存はleaf間だけに指定し、ID重複・存在しない端点・循環・不正入力は元データを変えずに例外にします。
resourceLeveling.enabledで容量制約を有効にします。容量・需要は既定1、正の有限小数も指定でき、比較許容誤差は相対1e-9です。 同一タスクの重複割当は加算し、すべての資源を期間中同時に使用します。 割当省略はassignee_id、空配列は資源不要です。resources明示時は未定義資源を拒否します。 タスク分割・最短工程の最適化・実績や凍結状態の考慮は行わず、安定したトポロジカル順・入力順で順番を決めます。
criticalPathは容量調整前の依存関係だけのCPMです。すべての余裕0の枝を含み、元の開始制約を考慮します。
容量による直接・後続への遅延はresourceDelays、調整後の終了はprojectFinishで返します。
analyzeGanttCriticalPathは容量を無視した解析です。leafがない場合の終了はnullです。
探索範囲maxCalendarDaysは既定3660・1〜36600、容量探索は5,000,000操作が上限で、超過は例外です。
疎な容量インデックスにより資源数×全日程分の配列を作りません。
/planning/capacity-index・/planning/graphは詳細な補助入口です。容量インデックスの直接利用では、
範囲が軸内の整数・半開区間であることを呼び出し側で検証してください。