DOCUMENTATION

自社の仕組みに、組み込む。

shift-schedulaは、担当配置と勤務計画を計算・検証するPythonライブラリです。まずはデモで挙動を確認し、入力条件と結果の扱いを確認してください。

1. はじめて使う

配布名は shift-schedula、import名は shift_schedula。Python 3.14以上が必要です。独自コード・文書・デモはMITライセンスで、商用利用も可能です。依存ライブラリはそれぞれのライセンスに従います。

現在はリポジトリが非公開で、PyPI公開は未実施です。ソースの入手は メールでお問い合わせください。以下はソースを入手した後、リポジトリ直下で実行する手順です。

uv python install
uv sync --locked
uv run --locked python -m shift_schedula solve examples/assignment.json
uv run --locked python demo/server.py

2. Python APIから使う

JSONを厳密に読み取り、入力の検証と計画の計算を呼び出します。APIはdict/listで入出力し、呼び出し元の入力を書き換えません。

from pathlib import Path
from shift_schedula import load_json, solve, validate

request = load_json(
    Path("examples/assignment.json").read_text(encoding="utf-8")
)
checked = validate(request)
if checked["status"] == "VALID":
    response = solve(request)
    print(response["status"])
else:
    print(checked["diagnostics"])

本番の組み込みでは、求解後の状態・不足・検証結果を確認して採用を判断します。入力不備、未確定、内部障害も別の状態で返されます。

3. 条件と結果を理解する

  1. 入力する:技能、役割、従業員、勤務可能時間、需要、勤務候補、ルールなどを指定します。現在の通常入口は schema_version: "0.15" です。
  2. 計算する:担当配置は人・時間帯・役割を、勤務計画は出退勤・休憩も含めて扱います。
  3. 結果を読む:OPTIMAL は指定条件と候補集合で最適性が証明された結果、FEASIBLE は最適性未証明の実行可能な結果です。PARTIAL は不足を伴う有効な計画です。
  4. 不成立・未確定を分ける:INFEASIBLE は解が存在しないと証明された状態、UNKNOWN は未確定です。入力不備や内部障害とも区別します。
  5. 手修正後も検証する:verify(request, solution) で元の条件への適合を確認できます。この検証は最適性や不足最小性を認定しません。

独立検証の成功は、完全な需要充足や法令・就業規則への適合を保証しません。不足の有無は状態と不足集計から確認します。

自社の業務への適用を相談する

勤務ルールの整理、データ連携、入力・比較・承認画面など、組み込みに必要な範囲から相談できます。対応可否と進め方は要件を確認して決めます。