from datetime import date, timedelta
def working_day_shift(start, days, holidays):
if type(start) is not date or type(days) is not int or not -366 <= days <= 366:
raise ValueError("days.input")
if type(holidays) is not set or len(holidays) > 1000 or any(type(d) is not date for d in holidays):
raise ValueError("days.holidays")
remaining, step = abs(days), 1 if days >= 0 else -1
for _ in range(7*(remaining+len(holidays))+7):
if remaining == 0:
return start
try:
start += timedelta(days=step)
except OverflowError as error:
raise ValueError("days.range") from error
if start.weekday() < 5 and start not in holidays:
remaining -= 1
raise RuntimeError("days.steps")- プロジェクト
- ゼロ、逆方向、暦の境界を試し、祝日集合を変えず不正な日付型を拒否してください。
- 適用前に確認
- 実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。
- モデル
- OpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。
from datetime import date, timedelta
def working_day_shift(start, days, holidays):
if type(start) is not date or type(days) is not int or not -366 <= days <= 366:
raise ValueError("days.input")
if type(holidays) is not set or len(holidays) > 1000 or any(type(d) is not date for d in holidays):
raise ValueError("days.holidays")
remaining, step = abs(days), 1 if days >= 0 else -1
for _ in range(7*(remaining+len(holidays))+7):
if remaining == 0:
return start
try:
start += timedelta(days=step)
except OverflowError as error:
raise ValueError("days.range") from error
if start.weekday() < 5 and start not in holidays:
remaining -= 1
raise RuntimeError("days.steps")日付コードを編集する前にスケジュールの規則を明示する
スケジュールのコードには、業務方針と通常の暦の計算が混在しがちです。DayThistleはプロジェクトをレビューしながらその問いを分けるWindows向けAIコーディング環境です。アプリケーションが出す日付、期待する日付、その根拠となる規則から始めてください。修正を提案する前に関連コードを接続モデルに確認させます。
例えば、週末と指定した休日集合を飛ばす期限の補助関数のレビューを依頼できます。開始日を数えるか、負の移動がどう動くか、休日データを誰が提供するかを説明してください。営業日の普遍的な定義を仮定せず、補助関数と呼び出し側の両方でその判断を保つ提案を求めます。
その規則に基づくテストデータで変更案を検証します。週末越え、週末に隣接する休日、移動ゼロ、過去方向への移動を含めてください。プロジェクトのテストを実行し、非対応の日付の境界動作を確認します。1つの例で期限が正しく見えても、すべての呼び出し側が同じ方針を使うことは確立されません。
DayThistleは対応するOpenAI互換またはAnthropicのエンドポイントに接続します。サービスが提供する無検閲AIモデルを選べますが、利用可能なツールとコンテキストはサーバーに依存します。組織の業務予定をモデルが黙って決めずに実装を支援できるよう、方針を作業の中に記述してください。
営業日の変更で確認する質問
DayThistleは祝日カレンダーを提供しますか?
この作業例はアプリケーションが提供する休日データを使います。依頼にその出所と想定する範囲を記載してください。環境を開けば最新の地域の休日が提供されたり、どの記念日が期限に影響するか決まったりすると考えないでください。
開始日を移動日数に数えるべきですか?
その規則を明示し、開始日が営業日のテストデータを含めます。方針が異なれば答えも変わります。未来方向と過去方向の両方で、選んだ規約を維持するようアシスタントに依頼してください。
不正な休日データとコードの欠陥をどう区別しますか?
失敗するテストデータと一緒に正確な休日集合を保存し、計算を変える前に内容を確認します。結果を文書化した方針と比較してください。休日の登録漏れと誤ったスキップ条件では、必要な修正が異なります。
提案されたループに明確な停止条件がない場合は?
対応する移動量をどう制限し、暦の範囲超過をどう扱うか尋ねます。採用前にその動作を確認してください。1つの期限の修正で無制限な計算を導入しないよう、通常の日付と併せて境界テストを実行します。
DayThistle · 更新日 2026-10-25