Notion 휴가 관리 시스템 설계: 4대 핵심 데이터베이스와 자동화 워크플로우 분석

개요

이 영상은 서울눈치과를 위해 구축된 Notion 및 자동화 기반의 휴가 관리 시스템을 심층적으로 설명하는 기술 가이드입니다. 복잡한 연차 발생 기준(1년 차 미만, 2년 차 이상), 국경일 자동 반영, 휴가 신청 및 취소 프로세스 등 인사 관리의 주요 과제를 해결하기 위해 설계된 시스템의 구조와 작동 원리를 상세히 다룹니다. 영상의 목적은 시스템의 복잡한 로직을 기록하여, 향후 담당자나 개발자가 시스템을 유지보수하고 이해하는 데 필요한 지식 자료로 활용하는 것입니다.
시스템은 멤버, 연차 발생(Annual Leave), 스케줄, 취소(Cancel) 등 4개의 핵심 데이터베이스를 중심으로 유기적으로 연동되며, Make(구 Integromat)와 같은 자동화 도구를 통해 각 프로세스가 자동으로 실행됩니다. 본 설명서는 각 데이터베이스의 역할, 자동화 시나리오의 단계별 흐름, 실제 데이터 처리 예시를 통해 실무자가 시스템을 정확히 이해하고 활용할 수 있도록 돕습니다.

주요 학습 포인트

데이터베이스 설계: 연차, 멤버, 스케줄, 취소 등 기능별로 분리된 4개의 데이터베이스를 연동하여 휴가 관리 시스템을 구축하는 방법
연차 발생 자동화: 근속 연수(1년 차 미만 월별 발생, 2년 차 이상 연초 일괄 발생)에 따라 연차를 차등 생성하는 복합적인 자동화 로직 구현
휴가 신청 및 승인 워크플로우: 직원이 휴가를 신청하면 관리자에게 슬랙 알림이 가고, 관리자가 승인/반려 처리를 통해 캘린더에 반영하는 프로세스
휴가 취소 프로세스: 직원이 취소 요청 시, 기존 신청 건을 '보류' 상태로 변경하고 관리자 최종 승인 후 '취소' 처리 및 연차를 복원하는 자동화 흐름
실시간 연차 현황 관리: 신청, 사용, 잔여 연차 및 반차 사용 횟수 등을 실시간으로 계산하여 직원별 연차 현황을 정확하게 추적 및 관리하는 방법

요약

1. 휴가 관리 시스템의 전체 구조

휴가 관리 시스템은 총 4개의 핵심 데이터베이스(DB)로 구성되어 상호 연동됩니다.
멤버 DB: 직원 정보를 관리합니다.
애뉴얼 리브(Annual Leave) DB: 직원별로 매년 발생하는 연차를 누적 기록하는 DB입니다. 직원이 10년 근속 시 10개의 연차 기록이 쌓입니다.
스케줄 DB: 국경일, 직원의 연차/반차 신청 등 모든 일정을 기록하는 DB입니다. 휴가 신청의 창구 역할을 합니다.
캔슬(Cancel) DB: 직원이 제출한 휴가 '취소' 요청을 별도로 기록하고 처리하기 위한 DB입니다. 스케줄 DB와 매칭하여 취소 로직을 실행하기 위해 독립적으로 구성되었습니다.

2. 국경일 자동 등록 자동화

1년에 한 번, 매년 1월 1일 오전 9시에 국경일 등록 자동화 시나리오가 실행됩니다.
프로세스:
1.
연동된 구글 캘린더('대한민국 휴일' 캘린더)에서 해당 연도의 모든 공휴일 정보를 가져옵니다.
2.
가져온 공휴일(설날, 광복절, 대체 공휴일 등)을 스케줄 DB에 '공휴일' 태그와 함께 자동으로 생성합니다.
3.
모든 공휴일 생성이 완료되면, 인사팀 전용 비공개 슬랙 채널로 "공휴일 생성이 완료되었습니다"라는 알림을 전송하여 작업 완료를 알립니다.
중요 참고사항:
이 자동화는 연 1회 실행되므로, 연중에 발생하는 임시 공휴일은 수동으로 추가해야 합니다.
구글 캘린더의 '대한민국 휴일' 구독을 해제하면 자동화가 작동하지 않으므로 주의해야 합니다.

3. 근속 연수별 연차 생성 자동화

매일 오전 9시에 실행되며, 각 직원의 근속 연수에 따라 연차를 생성하는 핵심 자동화입니다.
1. 1년 차 미만 직원의 연차 생성
개념: 입사 후 만 1개월이 지날 때마다 연차 1개가 생성됩니다.
프로세스:
1.
자동화가 매일 실행되며, 입사 후 정확히 한 달이 되는 날짜('연차 생성일')를 체크합니다.
2.
해당 직원의 '애뉴얼 리브' DB에 기존 기록이 있는지 확인합니다.
3.
첫 연차 발생 시(입사 후 1개월), 해당 직원의 1년 차 연차 기록을 새로 생성하고 '총 연차'를 1로 설정합니다.
4.
다음 달부터는 기존에 생성된 1년 차 연차 기록을 찾아 '총 연차'에 1을 더하는 방식으로 업데이트합니다. (예: 1개 -> 2개 -> 3개)
2. 2년 차 이상 직원의 연차 생성
개념: 근속 연수가 2년 차가 되는 해의 연차 발생일에 연간 연차(기본 15개)가 일괄적으로 생성됩니다.
프로세스:
1.
자동화가 매일 실행되며, 직원의 '연차 생성일'(입사일 기준)을 체크합니다.
2.
해당 직원의 근속 연수가 2년 차 이상이 되는 것을 확인하면, '애뉴얼 리브' DB에 해당 연도의 연차 기록을 새로 생성합니다.
3.
이때, 근로기준법에 따른 연차(예: 15개)가 '총 연차'로 한 번에 부여됩니다.
중요 참고사항:
'애뉴얼 리브' DB에는 직원별, 연차별 기록이 모두 누적되지만, 멤버 DB에서는 항상 가장 최신 연차 기록만 가져와 보여주므로 과거 기록이 현재 상태에 영향을 주지 않습니다.
재계약 시 지급되는 '보너스 연차'를 '애뉴얼 리브' DB에 직접 입력하면, 총 연차에 자동으로 합산되어 반영됩니다.

4. 휴가 신청 및 승인 프로세스 자동화

직원이 휴가 신청서를 제출하면 시작되는 자동화 워크플로우입니다.
1. 프로세스
1.
직원이 이름, 휴가 종류(연차/반차), 희망 날짜를 입력하여 신청서를 제출합니다.
2.
자동화가 실행되어 스케줄 DB에 해당 요청이 기록됩니다.
3.
시스템은 멤버 DB를 조회하여 신청자가 '재직' 상태인지 확인합니다. (퇴사자의 신청 방지)
4.
신청자의 스케줄 DB 항목을 '애뉴얼 리브' DB의 최신 연차 기록과 관계형으로 연결하여 연차 카운트가 가능하도록 설정합니다.
5.
인사팀 슬랙 채널로 "[직원 이름]님이 [날짜]에 휴가를 신청했습니다"라는 알림을 보냅니다.
6.
관리자는 스케줄 DB 또는 캘린더 뷰에서 해당 신청 건의 상태를 '대기'에서 **'승인'**으로 변경합니다. 승인된 휴가만 전체 캘린더에 노출됩니다.
2. 연차 계산 로직
시스템은 신청과 실제 사용을 구분하여 연차를 계산합니다.
신청 연차/반차: 관리자가 '승인'한 휴가 건수입니다.
사용 연차/반차: 날짜가 '오늘' 이전인, 즉 과거의 승인된 휴가 건수입니다.
잔여 신청 연차: 총 연차 - 신청 연차
잔여 사용 연차: 총 연차 - 사용 연차
이 구분을 통해 미래에 신청한 휴가와 실제 사용한 휴가를 명확히 구분하여 관리할 수 있습니다.

5. 휴가 취소 및 연차 복원 프로세스 자동화

직원이 이미 승인된 휴가를 취소하고자 할 때 사용하는 프로세스입니다.
1. 프로세스
1.
직원이 '휴가 취소 신청서'에 본인 이름과 취소할 휴가 날짜를 입력하고 제출합니다.
2.
자동화가 실행되어 캔슬 DB에 취소 요청이 기록됩니다.
3.
시스템은 스케줄 DB에서 해당 직원의 해당 날짜 휴가 신청 건을 찾아 상태를 **'보류(Pending)'**로 자동 변경합니다.
4.
인사팀 슬랙 채널로 "[직원 이름]님이 휴가 취소를 요청했습니다"라는 알림을 보냅니다.
5.
관리자가 '보류' 상태의 요청을 확인하고, 스케줄 DB에서 최종적으로 상태를 **'취소(Canceled)'**로 변경합니다.
6.
상태가 '취소'로 변경되면, 해당 건은 더 이상 '신청 연차'로 계산되지 않으며, 직원의 잔여 연차가 자동으로 복원됩니다.
2. 중요 참고사항
취소 요청 시 바로 삭제하지 않고 '보류' 단계를 거치는 이유는, 관리자가 내용을 확인하고 최종 처리할 수 있는 시간을 확보하고 기록을 남기기 위함입니다.
모든 과정은 데이터베이스에 기록으로 남아 누가, 언제, 어떤 휴가를 신청하고 취소했는지 추적할 수 있습니다.

6. 연차 보상 및 최종 정산

연말이나 퇴사 시 남은 연차를 수당으로 지급할 때 사용하는 기능입니다.
프로세스:
1.
관리자는 직원의 '애뉴얼 리브' DB에서 '연차 보상' 버튼을 클릭합니다.
2.
보상해야 할 잔여 연차(예: 3.5개)가 자동으로 계산되어 표시됩니다.
3.
관리자가 '입력 완료'를 클릭하면, 해당 개수만큼 연차가 지급 처리되었음이 기록되고 잔여 연차는 0으로 정리됩니다.
이 과정을 통해 연차 사용, 취소, 보상에 이르는 모든 라이프사이클을 시스템 내에서 체계적으로 관리하고 기록할 수 있습니다.