정글에서 온 개발자
[연차 촉진 시스템] 기획과 문제 해결을 위한 DB설계 본문
연차 촉진의 개요
- 휴가가 남으면 휴가를 쓰도록 촉진. 촉진시 미사용 휴가 수당이 면제됨
- 1차 촉진, 2차 촉진, 노무 거부로 이루어짐
- 모든 과정은 근로자가 인지할 수 있어야 함.
필요한 이유
연차 촉진
구성원의 자유로운 휴가 사용 장려.
회사의 미사용 연차 수당 지급 부담 경감
번거로운 절차 해소
회사 : 구성원 별 연차 계산, 1차 촉진, 2차 촉진, 노무 수령 거부 등의 프로세스
구성원 : 연차 일수 관리, 변경 시 재결재, 팀원과 일정 조율 등
연차 촉진을 하긴 하고 싶은데, 과정이 너무 복잡해서 필요하다.
해결해야 할 문제들
- 법령대로라면 사람마다 연차가 발생하는 시기가 다르고, 촉진해야하는 시기가 다르다.
- 개별 관리가 어려워 회계일 기준 관리를 허용해줬다.
- 이 과정에서 휴가가 발생하는 기준이 회사마다 다르다. (휴가 선지급 여부, 1년 이하 사원의 회계일 기준 발생 연차 계산법 등)
- 중간에 정책이나 법령이 바뀌는 것을 대비해야 한다. (입사일 기준 지급 강제화 등)
- 제대로 된 연차 촉진은 '서면'으로 해야한다. 전산으로 하려면 근로자가 확실히 인식해야 한다.
문제 해결 방법
- 단순 스케줄러로 '7월1일 1차 촉진, 11월1일 2차촉진' 이런식으로 하면 확장성이 떨어진다. 당장은 일괄적으로 관리하는 것'처럼' 보이더라도 실제로는 DB에서 각 사원의 발생 연차를 따로 관리해야 한다.
- [연차 발생 테이블]과 [연차 소모 테이블]을 따로 만들고 연차가 소모할 때마다 연차 소모를 기록하고, 연차 발생에는 큐처럼 앞에 있는 순서부터(FIFO) '소모 시간' 과 '남은 시간'을 기록한다.
- [연차 소모 테이블]에 사용 유형 (연가, 공가 , 병가 등) 에 '촉진' 을 추가하여 촉진된 휴가임을 알 수 있게 한다.연가의 하위 클래스 개념이고, 이후 날짜 변경 불가 등의 기능을 사용할 수 있다.
- 중간에 기준이 바뀌었을 때 '근로자에게 불리하지 않게 해야 한다.'는 단서가 있다.
- 입사일 기준 1년 단위든, 회계일이든, 연차 발생시 연차 발생의 기준을 DB에 같이 적어놓고 회사의 정책이 바뀌더라도 해당 휴가는 원래 발생했을 때의 소모일까지 쓸 수 있도록 한다.
- 기준이 바뀌면서 휴가가 더 필요하면 추가로 발생시키고 휴가 발생 기준을 '조정용' 으로 기입한다.
- 기준이 바뀌면서 휴가가 초과돼서 발생한 경우더라도 기존의 휴가를 소멸시키지 않는다. (조정용 휴가는 삭제 가능)
- 회사와 근로자가 촉진 사실을 확실히 인지했음을 기록할 수 있도록 '알림' 과 알림 '승인'을 통해 연차 촉진을 기록한다.
UI 설계
- 크게 6개의 화면으로 구성된다.
- 로그인
- 프로필
- 달력
- 대쉬보드
- 알림
- 회사 관리
DB 설계
주요 테이블의 속성은 다음과 같다.
발생 휴가
- id
- member_id - 외래키
- generate_type_id - 발생 타입
- duration_year - 몇년차인지
- given_days - 총 휴가일수
- generate_date - 발생 일수
- expire_date - 휴가 소멸일
- total_hours - 총 시간 . 시간 단위로 쓸 수 있는 시스템을 염두
- used_hours - 사용 시간
- reserved_hours - 신청 시간 : 신청만 해놓고, 아직 승인되지 않은 휴가의 시간
- remaining_hours - 남은 시간
- is_expired - 소멸 여부 : 모든 시간이 사용되었거나, 소멸일을 지난 경우 True
소모휴가
- id
- member_id - 외래키
- vacation_type_id - 연차 타입
- vacation_process_type_id - 연차 처리 상태
- start_datetime - 시작시간
- end_datetime - 종료시간
- [start_date] - 시작일 : 달력에 표시하는 등 계산 편의를 위함.
- [end_date] - 종료일
'정리' 카테고리의 다른 글
DB로 트리구조 만들기 (조직도) (0) | 2024.07.01 |
---|---|
[연차 촉진 시스템]휴가 신청서로 휴가 다루기, 문제와 해결방법 고찰 (0) | 2024.06.20 |
Spring 데이터 관리 라이브러리 변화와 비교 (1) | 2024.01.05 |
Spring 게시판 Skeleton 코드 (1) | 2024.01.05 |
Spring 큰 그림 그려보기 (1) | 2024.01.05 |