Skip to content

手当対象時間の算出

特定日や時間帯に勤務した場合に手当が発生する会社制度(年末年始手当・早朝手当・ 特定日出勤手当など)を KIZAMI がどう扱うかの設計です(2026-08-23 決定)。

原則: 金額は計算しない

KIZAMI の集計の出口は時間区分の算出までです(要件 §1)。割増率や手当額を掛けた 金額計算は給与システム側の責任であり、手当も同じ線を守ります。

KIZAMI が算出するのは「この手当の対象になる勤務が何分あったか」まで。 手当単価・支給条件の最終判断・支給額は給与側で行います。

手当定義(テナント設定・effective-dated)

会社ごとに手当区分を定義します。定義は他の制度設定と同じく適用開始日付きの版で持ち、 過去に遡って影響しません(原則6)。

allowance_definitions          — 識別子(名前は版が持つ)
allowance_definition_versions  — 版: name, 適用条件, effectiveFrom

適用条件は次のAND の組み合わせ:

条件省略時
dates(特定日のリスト)12/29〜1/3(毎年 or 固定日付)全日
weekdays(曜日)土曜のみ全曜日
timeBand(時間帯、日跨ぎ可)6:00〜8:00 / 22:00〜翌6:00終日
  • 「毎年の月日」(--12-31 形式)と「固定日付」(2027-01-01)の両方を許容する。 年末年始手当は毎年、開業記念日の臨時手当は固定日付、という使い分け
  • 条件を組み合わせた例: 「特定日(12/31〜1/3)の 22:00〜翌5:00」= 年末年始の深夜手当

エンジンでの算出

  • 実労働セグメント(休憩・自動控除の控除後)と各定義の条件との重なりを分単位で算出
  • 帰属は勤怠日(深夜帯の日別配賦と同じ流儀)。時間帯の日跨ぎも同様に扱う
  • DailyBreakdown.allowances: Array<{ definitionId, minutes }>、月合計も出力
  • 法定区分とは独立。深夜(22〜5時)の法定割増と会社の早朝手当(6〜8時)は別物であり、 同じ1分が法定深夜かつ手当対象になることも普通にある(重複を排除しない)
  • 有給日は対象外。手当は実労働に対して発生する(有給の枠算入は労働時間の擬制であって 実際にその時間帯に働いた事実ではない)
  • 法定休日の労働も実労働として手当対象になる(法定休日割増とは独立の会社制度のため)

締めとの関係

手当対象時間は賃金に直結するため、締めスナップショットに定義IDごとの月合計を保存します (closing_snapshots の key-value 形式に allowance:<definitionId> 区分を追加 — マイグレーション不要)。締め済み月は定義変更の遡及から二重に保護されます。

CSV エクスポートには定義ごとの列を出します。列名は allowance_<name> の形で、 定義の追加・削除で列構成が変わることは避けられないため、取り込み側はヘッダ名で 参照することを明記します。

UI

  • 設定に「手当」画面: 定義の一覧・版の追加(勤怠設定と同じ effective-dated の作法)
  • 月次: 手当対象時間がある日は勤務列の近くに小さく表示(手当名+分数)。 月合計は区分別合計チップの下に手当ごとの行
  • 権限: 定義の管理はテナント設定系の既存権限に合わせる

スコープ外(将来)

  • 回数ベースの手当(出勤1回ごとの固定額)— 時間ではなく回数の算出。必要になったら countPerDay のような出力を検討
  • 祝日カレンダー連動(「祝日は手当」)— 祝日マスタの導入が前提