오프온 · 전사 업무 관리 시스템
기간 — 현재
루쿠쿠의 사내 제품으로, 설계부터 구현과 운영까지 맡았습니다.
근태부터 CRM까지 슬랙 안에서 다루고,
AI 에이전트의 MCP 창구도 맡는 시스템
- 슬랙 명령으로 출퇴근·휴식 기록, 정정 요청과 승인
- 자정을 넘긴 근무, 휴일 제외, 연차 부여와 이월 자동 계산
- 표·칸반·캘린더·간트로 보는 업무와 담당자별 상태
- 넘긴 업무의 다음 확인일에 담당자에게 묻는 알림
- 회의실 예약과 회의 10분 전 알림
- 슬랙 대화 약 39만 줄을 근거로 찾는 에이전트용 검색
다시 옮겨 적던 요청
- 문제
- 슬랙과 메일로 온 요청을 PM과 개발자가 업무 도구에 다시 옮겨 적었습니다. 확인이 필요한 요청은 대부분 메일이었고, 절반은 알림 메일이었습니다.
- 해결
- 요청을 원문·첨부와 함께 업무로 바꾸거나 기존 업무에 잇는 수신함을 만들었습니다. 같은 스레드는 이미 만든 업무에 붙고, 자동 발신 메일은 빠집니다. 규칙을 처음 적용했을 때 대기 메일 59건이 사람 손 없이 정리됐습니다. 사람이 다른 스레드에서 두 번 이상 버린 주소는 다음부터 걸러집니다.
에이전트에게 권한을 어디까지 줄 것인가
- 문제
- 에이전트마다 DB와 슬랙 권한을 따로 주면 관리가 흩어집니다. 요청자를 헤더 값으로 받으면 위조할 수도 있었습니다.
- 해결
- 오프온이 OAuth 2.1 인가 서버를 겸하고, 신원은 토큰 안에서만 받습니다. 로그인은 기존 슬랙 로그인을 쓰고, 쓰기는 요청한 사람의 권한 안에서만 됩니다. 직원은 설치나 API 키 없이 로그인 한 번으로 도구 21개를 씁니다.
동시에 들어온 연차 요청
- 문제
- 에이전트가 슬랙에서 연차를 대신 처리하면서 같은 요청이 겹칠 수 있었습니다. 같은 휴가를 동시에 두 번 취소하면 둘 다 성공해 연차 사용량이 1에서 −1이 됐습니다.
- 해결
- 연차가 하루 남았을 때 같은 날 신청 두 건이 모두 통과하는 것도 재현했습니다. 겹친 요청은 하나만 처리하고 나머지는 충돌로 거절하게 고쳤습니다. 실제 PostgreSQL에 붙여 API 경로를 지나는 검사 9건을 더했습니다. 같은 재현에서 두 번째 요청은 409로 거절됐습니다.
화면에서 찾을 수 없던 기능
- 문제
- 업무 배정 규칙을 서버에만 넣어, 사용자는 화면에서 기능을 찾지 못하고 오류만 봤습니다.
- 해결
- 규칙을 화면에도 반영했습니다. 찾을 수 없는 기능은 없는 기능으로 본다는 원칙을 남겼습니다. 제보받은 날 고쳤습니다.