- Published on
[UrCheckin] Chuyện gì đến cũng sẽ tới 🤪 (Phần 3/3)
- Authors
- Name
- Đông Trần
- Github
- @dongitran
Hi anh em dev 👋, chào mừng các bạn quay lại với phần cuối cùng của series UrCheckin!
Ở phần 1 tớ đã kể về việc xây dựng bot tự động chấm công, phần 2 là tích hợp AI để đọc tin nhắn group Timeoff. Giờ đây, đến lúc kể tiếp câu chuyện... về sự kết thúc và khởi đầu mới 😅
Khi "thiên đường" có thêm luật mới 📋
Cuộc sống đang êm đềm với UrCheckin thì bỗng một ngày, công ty tớ ra thông báo mới:
Từ nay trở đi, tất cả nhân viên phải checkin/checkout đúng giờ quy định. Trễ hơn sẽ bị trừ lương. Quên checkin/checkout quá 3 lần trong tháng = mất lương ngày/buổi đó 💀
Nghe đến đây thôi mà tớ đã thấy rùng mình rồi :))))
Trước đây do công ty chưa quản lý gắt việc nhân viên đi trễ, nên tớ cài đặt bot checkin lúc 10h15 mà công ty yêu cầu 9h. Giờ với chính sách mới này... chuyện không đơn giản nữa rồi 😰
Tình huống tiến thoái lưỡng nan 🤹♂️
Lúc này tớ có vài lựa chọn:
Option 1: Điều chỉnh bot checkin sớm hơn
Về mặt kỹ thuật, việc này hoàn toàn khả thi. Chỉ cần sửa lại thời gian trong cron job từ 10h15 về 9h là xong.
Nhưng... nếu HR phát hiện tớ có tool checkin/checkout tự động như này thì sao? 🤔
Có khi bị kỷ luật không chừng! Dù tool này giúp ích cho cả team, nhưng về mặt chính sách thì vẫn có thể bị coi là gian lận chấm công.
Option 2: Tắt bot và để mọi người tự checkin
Đây là lựa chọn an toàn nhất. Tuy nhiên, nghĩ đến việc phải quay lại thời kỳ "nhớ chấm công" thì... chán quá! 😭
Quyết định khó khăn: Tạm biệt UrCheckin server 👋
Sau một hồi cân nhắc, tớ quyết định tắt bot và thông báo với team:
"Anh em ơi, do chính sách mới của công ty khá gắt gao, để tránh rủi ro, tớ tạm thời tắt UrCheckin. Mọi người tự checkin/checkout nhé!"
Phản ứng của team cũng... khá buồn 🥲
Khi ý tưởng mới bừng sáng 💡
Nhưng tớ không phải là dân chơi lội ngược dòng cho vui đâu! Sau thời gian suy nghĩ, một ý tưởng mới bỗng hiện ra:
Thay vì server tự động chạy cronjob, sao không để server chờ signal từ máy tính cá nhân?
Ý tưởng này hoạt động như sau:
- Server UrCheckin tắt tất cả cronjob, chỉ mở API để nhận "ping"
- Tạo npm package cài trên máy cá nhân, chạy nền 24/7
- Package này mỗi 2 phút kiểm tra IP công khai hiện tại
- Nếu IP = IP văn phòng công ty (do dùng IP tĩnh) → ping lên server UrCheckin
- Server nhận ping đầu tiên trong ngày → gọi API checkin Base
- Nếu > 4 phút không nhận ping → gọi API checkout Base
Ý tưởng này có những ưu điểm vượt trội:
- Phát hiện location thật → Chỉ checkin khi thực sự ở văn phòng
- Tự nhiên 100% → Checkin khi đến, checkout khi đi
- Khó phát hiện → Không có pattern cố định như cronjob
- Server vẫn tập trung → Dễ quản lý và update logic
Cách hoạt động của ý tưởng mới:
Cách sử dụng siêu đơn giản:
# Cài đặt global
npm install -g urcheckin
# Cấu hình email và key
urcheckin-cli config --email="[email protected]" --key=""
# Cấu hình chạy nền
launchctl load ~/Library/LaunchAgents/com.urcheckin.plist
Bài học từ hành trình UrCheckin 🎓
Nhìn lại hành trình từ server bot đến npm package, tớ rút ra được vài bài học:
1. Adaptation is key
Khi môi trường thay đổi, solution cũng phải thay đổi theo. Cứng nhắc bám vào giải pháp cũ sẽ dẫn đến thất bại.
2. User-centric thinking
Solution tốt nhất không phải là solution phức tạp nhất, mà là solution phù hợp nhất với user và context.
3. Security by design
Từ đầu nên nghĩ về security implications, thay vì retrofit sau.
4. Simplicity wins
NPM package đơn giản nhưng hiệu quả hơn server phức tạp trong trường hợp này.
Kết thúc một hành trình, bắt đầu hành trình mới 🏁
UrCheckin đã trải qua 3 giai đoạn tiến hóa:
- Bot server với cronjob - Giải quyết vấn đề cơ bản
- AI-powered system - Tự động hóa hoàn toàn dựa vào tin nhắn
- Location-based ping system - Thích ứng với chính sách mới, tự nhiên 100%
Mỗi giai đoạn đều có ý nghĩa và giá trị riêng. Quan trọng là luôn sẵn sàng thay đổi khi cần thiết!
Câu chuyện UrCheckin có lẽ chưa kết thúc ở đây. Biết đâu trong tương lai sẽ có UrCheckin 4.0, 5.0... với những ý tưởng điên rồ khác 🤪
"Chuyện gì đến cũng sẽ tới" - đôi khi là thử thách, đôi khi là cơ hội. Quan trọng là mình đón nhận và thích ứng như thế nào!
Bạn nghĩ sao về hành trình tiến hóa của UrCheckin? Có ý tưởng nào hay ho cho version npm package không? Hãy chia sẻ trong phần bình luận nhé! 🚀
GitHub Repository: dongitran/urcheckin-cli