定時実行は成功。それでも日報の日付がずれるのはなぜか

起動時刻、データ元の日付、報告の業務日を分けて定義する。

Buda Team
← ブログに戻る
定時実行は成功。それでも日報の日付がずれるのはなぜか

上海の月曜朝9時、日報が予定どおりに届く。見出しは「昨日の実績」。しかし数字の元は、まだ終わっていないロサンゼルスの日曜日だ。丸一日同士を比べたつもりが、完成した一日と途中の一日を比較している。

定時に起動したことと、データがそろったことは別である。 AI自動化のタイムゾーンは実行時刻を決める。データ元がどこで一日を区切るか、報告をどの業務日に帰属させるかまでは決めない。

BudaではSkillが方法、Automationが実行時点を定める。日付判断を方法に含めてから、時刻を考えたい。

三つの時計に名前を付ける

  • 起動の時計: Asia/Shanghai の月曜09:00など、IANAタイムゾーンと実行時刻。
  • データ元の暦: America/Los_Angeles の午前0時から翌日0時など、元データの日付境界。
  • 報告の業務日: チームが報告を保存する日付と、その報告で比較したい実際の範囲。

業務日は取得日時ではなく、元データの日付の別名でもない。上海の月曜報告でロサンゼルス土曜の確定データを使うことはできる。ただし締め日を明示する。見出しを変えても日曜実績にはならない。

朝9時には、元データの日曜日が終わっていない

以下は架空の社内日報で、時刻換算には実際のIANA規則を使う。実際のBuda実行記録や、提供元の固定的な公開遅延を示すものではない。

2026年10月19日月曜、上海09:00は、ロサンゼルス10月18日日曜18:00に相当する。日曜日はあと6時間ある。終了は上海月曜15:00だ。

上海ロサンゼルス日曜データの判断
10月19日09:0010月18日18:00 PDT暦日が未終了
10月19日15:0010月19日00:00 PDT暦日は終了。ただし入庫完了とは限らない
提供元が完了を確認後実際の状態を確認根拠がある場合に完全性を受け入れる

元の範囲は America/Los_Angeles の [2026-10-18 00:00, 2026-10-19 00:00) とする。上海では [10月18日15:00, 10月19日15:00)。終端を含まない半開区間なら、23:59:59以降の端数の扱いで迷わない。

上海の「暦の昨日」は18日00:00から19日00:00。月曜09:00から過去24時間なら18日09:00から19日09:00である。この三つは異なる。単に「昨日」とせず、範囲と時区を表示する。

上海の起動からロサンゼルスの日曜終了まで6時間ある

実行ごとに日付の契約を渡す

「毎朝9時に昨日を分析」では判断材料が足りない。入力やSkillに次を記録する。提案する契約であって、Buda標準のロックや完全性保証ではない。

報告業務日:2026-10-19、Asia/Shanghai
起動予定:09:00、Asia/Shanghai
データ元:許可済みロサンゼルス運用データ
元の日付:2026-10-18、America/Los_Angeles
範囲:[10-18 00:00, 10-19 00:00)
比較:同じ定義の一つ前の完全な元データ日
data-through:提供元が実際に返した最新日付
完全性:提供元で確認。不明ならnullであり0ではない
最早時点:上海15:00以降。入庫遅延は別途確認
業務キー:データ元ID+元の日付+報告種別+版
要確認:遅延、修正方針、待機/partialを決める責任者

キーは既存成果を探す手掛かりであり、厳密に一度だけ動くロックではない。修正版を作るなら旧版と置換関係を残す。提供元の更新、対象期間の締め、報告生成の日時を一つのupdatedAtにまとめない。

イベント時刻と取込時刻のどちらで抽出するかも確認する。時差換算では遅着や後日の補正は解消できない。暦日が終わっても数値が修正される場合がある。

未終了の日を完全な日報にしない

架空の月曜09:00では責任者が二つの出力を選べる。

  1. 対象日の完了を待つ。 「ロサンゼルス18日は上海15:00まで未終了。入庫完了時刻は要確認」と明示する。これは状態報告であり、完成した日曜実績ではない。
  2. partialで渡す。 土曜までの完全データを本当に確認できた場合だけ、報告業務日19日、元データ締め17日ロサンゼルス、日曜未完と書く。異なる長さの窓で日次増減を計算しない。確認済みの完全日がなければ数字を補わない。

待機という判断は、自動停止、再試行、再予約が行われるという意味ではない。追加実行には別の権限と方法の確認が必要である。

完全・遅延・重複実行では出力の扱いを分ける

夏時間では、固定時差ではなく地域名を使う

2026年11月2日月曜の上海09:00は、ロサンゼルス日曜17:00、PSTになる。日曜日の終了は上海16:00で、10月の15:00とは違う。

America/Los_Angeles を保持し、日付ごとに換算する。「上海から15時間引く」を永久ルールにしない。10月例は15時間、11月例は16時間差。上海09:00の起動自体は変わらない。

夏時間地域の早朝には存在しない、または二度現れる時刻もある。調度器の具体的な扱いを日付付きで確認するまで、毎回一度だけ起動すると約束しない。

予約せず、三つの入力で方法を確認する

推奨確認状態期待する出力
正常暦日終了かつ提供元が完全性を確認業務日、対象範囲、締め日、比較可能な前窓
遅延終了したが未確定、または欠損待機/partialと具体的不足。不明を0にしない
重複同キーの成果あり、または前回送信が不明既存版と状態を調べ、再送前に判断を求める

未実行の検収案であり、成功済みのテストではない。実入力、出力、責任者の判断を残す。ファイルの存在だけでは送信済みと証明できない。

日付で迷いやすい点

データ元に時区がなければ推測できる?

できない。どのイベントを含むかが変わる。責任者に時区と完全性の定義を確認し、不明の間は跨日比較を止める。操作者やブラウザーの時区を勝手に使わない。

一日が終わっても完全とは言えない?

暦の終了と入庫完了は別条件。data-through、実際の範囲、遅着ルールを確認する。終了だけが分かるなら完全性は不明のままにする。

翌日に再実行したら帰属日を変える?

元の業務日と対象範囲を維持し、再実行日時と修正版を別に残す。送信状態が不明なら、生成成功を理由に再送しない。

まず一つの見本で日付を説明させる

確認済みの三つの時計と停止条件をBuda Agentに渡し、日付説明と要確認一覧を作らせる。予約や送信はさせない。Agent tabで入力と実ファイルを確認する。

反復するならBuda AIのMarketplaceで適切なSkillを検索してインストールし、日付入力を受け取れるか確認する。一文での日報依頼は入口を簡単にしても、「昨日」の定義までは決めてくれない。