Skip to content

年次有給休暇の比例付与(労基法39条3項)

対象: packages/leave/src/statutory.ts / packages/db/src/schema/users.ts / apps/api/src/routes/{leave,members}.ts / apps/api/src/leave-grant-proposals.ts / apps/web/src/components/MembersView.tsx

実装: 2026-08-24(v0.7 の付与フローの上に載せる形で追加)

何を実装したか

週の所定労働日数が少ない労働者には、通常(フルタイム)の付与日数表ではなく 比例付与の日数表が適用される(労働基準法39条3項、労働基準法施行規則24条の3)。 KIZAMI はメンバーごとに「有給付与の区分」を持ち、区分に応じた日数表で

  • 法定付与の自動計算(POST /leave/grants/auto)
  • 付与の予告スキャン(runLeaveGrantProposalScan)

の両方を計算する。付与日(基準日)と時効(付与日+2年)は区分に依らず同じで、 変わるのは日数だけ

日数表

付与の発生順(6ヶ月 → 1年6ヶ月 → … → 6年6ヶ月)で引く。7回目以降は最後の値で頭打ち。

区分週所定労働日数6ヶ月1年6ヶ月2年6ヶ月3年6ヶ月4年6ヶ月5年6ヶ月6年6ヶ月以降
full5日以上10111214161820
days44日78910121315
days33日566891011
days22日3445667
days11日1222333

値の定義は packages/leave/src/statutory.ts の1箇所(LEAVE_GRANT_CLASS_DAYS_TABLE)。

判断点: 週所定を保存して導出するのではなく、区分そのものを持つ

users.leave_grant_class TEXT NOT NULL DEFAULT 'full' という就業規則ベースの区分を 1列で持つ。「週所定労働日数」「週所定労働時間」を保存して条件判定する形は採らない。

理由:

  1. 法的条件が連言である。比例付与の対象は「週所定労働時間が30時間未満」かつ 「週所定労働日数が4日以下」(週以外の期間で定める場合は年間所定労働日数216日以下)。 両方を正確に持っていなければ判定できない。
  2. KIZAMI は週所定を持っていない。シフト制では実際の勤務日数が週ごとに変動し、 実績から推定すると閑散期に区分が下がる。固定時間制でも「週の所定休日」を テナント設定として持っていない(tenant_setting_versions は法定休日の曜日しか持たない)。
  3. 誤判定の向きが致命的。導出を誤ると法定より少ない日数しか付与しない方向の事故に なり、これは労基法39条違反そのものである。一方、区分は雇用契約を結んだ管理者が すでに知っている事実であり、選ばせるコストは低い。

したがって区分は管理者が明示的に選ぶ値とし、既定は最も日数の多い full。 DB に想定外の文字列が入っていた場合も full へ倒す(isLeaveGrantClass で検証し、 偽なら full)— 不明なときに少なく付与しないための一貫した方針。

年5日取得義務との関係

年5日取得義務(労基法39条7項)の対象は「10日以上付与された年休」であり、 比例付与かどうかは条件ではない。checkMandatoryFiveDaysgrants[].days >= 10 で 判定しているため、比例付与でも自動的に正しく扱われる:

  • days4 の 3年6ヶ月 = 10日 → 義務の対象
  • days4 の 2年6ヶ月 = 9日 → 対象外
  • days3 以下は 6年6ヶ月以降でも 11日 / 7日 / 3日 なので、days3 のみ 3年6ヶ月(8日)より 後で10日を超える回がある

区分を変えたときの扱い

区分の変更は PATCH /members/:id { leaveGrantClass }(権限 member.profile.edit)。 監査ログ member.update に変更前(leaveGrantClassFrom)と変更後の両方を残す。

既に作られた leave_grants の日数は遡って直さない。 付与済みの日数は 「その基準日にその区分だった」という事実の記録であり、後から区分を変えて過去の付与を 書き換えるのは実務上も監査上も誤り(是正が必要なら手動付与で差分を足す)。 区分変更が効くのは以後の自動付与・予告から。

UI

  • メンバー管理(/settings/members)の詳細行に「有給付与の区分」セレクトを置く。 補足文言: 「週所定労働時間30時間未満かつ週所定労働日数が4日以下の場合のみ 比例付与(週4日以下)を選びます(労基法39条3項)」
  • 誤って比例付与に落とすと法定より少なく付与されるため、選択と同時にはコミットせず 明示的な保存ボタンで確定する(入社日と同じ流儀)
  • 付与の予告一覧では、区分が full 以外の行に「比例付与(週3日)」のチップを出す。 フルタイムの表と日数が違う理由を、承認する管理者がその場で読み取れるようにするため