アーキテクチャ¶
Web アプリの計算エンジンは、UI 状態(AppState)に依存しない純粋関数群として src/lib/payroll/ に配置されます。各モジュールは単一責務を持ち、上位の calculate.ts がそれらを合成して月次計算を実行します。
モジュール依存¶
モジュールの責務¶
モジュール |
責務 |
|---|---|
|
ドメイン型( |
|
効力発生日順での共通検索(料率・報酬どちらの履歴検索でも利用) |
|
|
|
|
|
介護該当の月単位判定(40〜64 歳の境界処理) |
|
50 銭超切上げ + 残額方式の端数処理 |
|
月次保険料の合成計算(各保険料の全額・社員側・事業主側) |
|
年次集計・履歴ビュー用の派生計算 |
設計原則¶
AppState 非依存: 計算モジュールは UI 状態に触れず、必要なドメインデータを引数で受け取る。UI ストア層が
AppStateから抽出して呼び出す整数演算: 料率は 1/100,000 単位の整数として保持。浮動小数点誤差を排除し、Excel 版と bit-perfect 一致させる
明示的エラー伝播: 履歴に該当エントリがない等の異常はエラー型を返し、
silent failure(既定値での処理続行)はしない
計算の数学的根拠は 計算リファレンス を参照してください。