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ンク 
    スクリーンショット 2026-04-24 160552

👉 複数日をまとめて確認


スマホ版(現場用)

スクリーンショット 2026-04-17 103906

👉 1日単位モーダル


運用を安定させる工夫

■ 操作制限

  • 出勤中は出勤できない

  • 状態遷移を固定


■ 不整合フラグ

  • 休憩未終了

  • 出勤なし退勤

👉 後でチェックできる


■ 再計算バッチ

  • ログから日計を再構築

👉 最後の保険


実際の運用感

  • 大きく壊れない

  • ユーザーが迷わない

  • 修正前提でストレスが少ない

👉 「ちょうどいい勤怠」


まとめ

この設計の本質👇

  • ログと集計を分離

  • 嘘を作らない

  • 人間のミスを前提にする


おわりに

勤怠システムは「完璧」を目指すと失敗します。

大事なのは👇

👉 壊れないこと
👉 後から直せること

この設計が、同じように悩んでいる方の参考になれば嬉しいです。

こちら にここに至るまでのあれこれをアップしています
どこかでGit-Hubにソースも上げよかともおもってるのだけど、どうなるかな

コメント

人気の投稿