Appearance
手当対象時間の算出
特定日や時間帯に勤務した場合に手当が発生する会社制度(年末年始手当・早朝手当・ 特定日出勤手当など)を 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のような出力を検討 - 祝日カレンダー連動(「祝日は手当」)— 祝日マスタの導入が前提