EspoCRMで勤怠管理を自作してみた
EspoCRMで勤怠管理を自作してみた(設計・運用・現場で壊れない仕組み) はじめに 「ちょっとした勤怠管理をしたい」 でも既存の勤怠システムは重すぎる… そんな背景から、EspoCRM上で勤怠管理を自作しました。 本記事では、 実際に運用している設計と思想 をまとめます。 全体設計の考え方(ここが一番重要) まず最初に決めたこと👇 ログ(事実)と集計(結果)を分ける 不整合は許容するが、嘘は作らない 完璧より「壊れない」を優先 👉 この3つでほぼすべて決まります データ構造(図解) [AttendanceLog](打刻履歴) ├ 出勤 ├ 休憩入 ├ 休憩戻 └ 退勤 ↓ 集計 [AttendanceRecord](日次集計) ├ 出勤時間 ├ 退勤時間 ├ 合計休憩時間 └ ステータス +補助 [UserAttendance](現在状態) [HolidayEvent](祝日・会社行事) 打刻フロー(図解) graph TD A[出勤] --> B[在席] B --> C[休憩入] C --> D[休憩戻] D --> B B --> E[退勤] 👉 シンプルですが、これを厳密に守るのが重要 実装のポイント ■ 1イベント = 1レコード 出勤 → 1レコード 休憩入 → 1レコード 👉 ログを絶対に歪めない ■ 日次はその場で更新 休憩戻り → 休憩時間を加算 退勤 → 日計に反映 👉 再計算ではなく「確定型」 イレギュラ対応(現場仕様) ■ 打刻忘れ → 次の操作から復帰 (例:退勤からスタート) ■ 休憩中に退勤 休憩入 → 退勤 ↓ 休憩未終了 ↓ 日計で休憩扱い or 後で修正 👉 安全側に倒す ■ 日跨ぎ 翌日まで修正OK それ以上は制限 👉 労務リスク回避 なぜ自動補完しないのか よくある実装👇 打刻なし → 勝手に出勤扱い 👉 これはNG 今回の設計👇 打刻した事実のみ記録 不整合は人が直す 👉 証跡として強い UI設計 PC版(管理用) 一覧形式 1日ごとに更新 ヘfdfdfdfdンク 👉 複数日をまとめて確認 スマホ版(現場用) 👉 1日単位モーダル 運用を安...
