직원 관리 화면
상단
- 전체 직원, 재직, 비활성, 휴직, 퇴직, 팀, 역할 수를 보여준다.
테이블
- 테이블과 필터가 있는 곳까지가 테이블 뷰로 정의한다.
필터 & 검색
- 직원목록 문구 삭제
새로 등록된 직원이 가장 상단에 보이도록 한다
- 필터
- 상태
- default : 상태 선택
- 옵션 : 재직, 비활성, 휴직, 퇴직
- 복수 선택 가능
- 팀
- default : 팀 선택
- 옵션 : 활성화 상태의 팀
- 복수 선택 가능
- 역할
- default : 역할 선택
- 옵션 : 활성화 상태의 역할
- 복수 선택 가능
- 입사일
- default : 입사일
- 선택 시, 아래 패널을 통해 기간 선택
- 패널
- 시작일 또는 종료일 중 1개만 입력해도 필터링 적용이 가능
- 시작일만 입력한 경우 : 시작일로부의 내역 필터링
- 종료일만 입력한 경우 : 종료일까지만 내역 필터링
- 패널 외의 영역 클릭 또는 esc버튼으로 닫기 가능
- 이때 입력된 내용은 적용되지 않는다.
- [초기화] 버튼 : 시작일, 종료일 입력된 값을 초기화함
- [적용] 버튼 : 입력된 시작일/종료일이 필터로 적용되고 해당 패널 닫힘
- 시작일 또는 종료일 중 1개만 입력해도 필터링 적용이 가능
- [새로고침] 버튼
- 해당 버튼 누르면 필터링 옵션만 초기화됨
- 검색으로 인한 필터는 초기화되지 않음
- 상태
- 검색
- placeholder : 이름 / 이메일 / 사번
- [직원 명부 다운로드] 버튼
- 필터 및 검색 조건이 없는 경우: 전체 직원 목록을 Excel 파일로 다운로드한다.
- 검색 결과가 표시된 경우: 검색 결과에 해당하는 직원 목록만 Excel 파일로 다운로드한다.
- 필터가 적용된 경우: 필터 조건에 해당하는 직원 목록만 Excel 파일로 다운로드한다.
- [직원 추가] 버튼 : 해당 버튼을 누르면 직원 추가 모달이 나온다. 직원 추가 모달에 대한 내용은 아래에서 다룬다.
- 일괄 변경
- 체크박스로 직원을 선택한 경우, 왼쪽의 필터링 영역에 필터링은 사라지고 상태 변경하기 위한 기능이 보인다.
- 일괄 변경 배치 순서(왼쪽부터)
- {n}명 선택
- 상태
- 팀
- 역할
- [변경]버튼
- [변경] 버튼 클릭 시 팝업이 제공됨
- title: 일괄 변경
- message: 선택한 {n}명을 일괄 변경할까요?
- (고른 항목만 표시)
- 상태:
- 팀: {팀명} (기존 소속 유지, 해당 팀에 추가 배정)
- 역할: {역할명} (모든 활성 팀 멤버십에 적용)
- [확인] 버튼 : 변경 내역 저장되고 해당 팝업 닫힘
- [취소], X 버튼 : 팝업 닫힘
- 헤더
- 체크 박스
- 헤더의 체크 박스를 선택하면 현제 패이지의 전체 리스트가 선택된다.
- 정렬 공통 정책
- 해당 컬럼 첫 클릭하면 오름차순으로 정렬(↑아이콘으로 표시)
- 동일한 컬럼 한번더 클릭하면 내림차순으로 정렬(↓아이콘으로 표시)
- 다른 컬럼 클릭 -> 그 컬럼으로 정렬 변경
- 사번
- 정렬 기능 제공
- 이름
- 성 기준으로 정렬 기능 제공
- 이메일
- 정렬 기능 제공
- 소속 · 역할
- 정렬 기능 제공
- 상태
- 정렬 기능 제공
- 관리
- 직원 관리를 위한 기능을 제공하는 열
- 각 기능의 자세한 내용은 아래에서 다룬다.
- [근태] 버튼
- 툴팁 : 근태 관리
- 버튼을 클릭하면 근태 관리 팝업이 제공된다.
- [수정] 버튼
- 툴팁 : 직원 정보 수정
- 버튼을 클릭하면 직원 정보 수정 팝업이 제공된다.
- [삭제] 버튼
- 툴팁 : 직원 삭제
- 비활성 또는 퇴직 상태일 때에만 삭제 가능하다.
- 비활성 또는 퇴직 상태일 때
- [삭제] 버튼 클릭하면 팝업 발생
- title : 삭제
- message : {직원이름}님을 삭제하시겠어요?
- [취소], x 버튼 : 해당 팝업 닫힘
- [확인] 버튼 : 직원 삭제되고 해당 팝업 닫힘
- [삭제] 버튼 클릭하면 팝업 발생
- 재직 또는 휴직 상태일때
- [삭제] 버튼 클릭하면 팝업 발생
- title : 삭제
- message : 직원을 삭제할 수 없어요. 비활성 또는 퇴직 상태인 직원만 삭제할 수 있어요.
- [확인], X 버튼 : 해당 팝업 닫힘
- [삭제] 버튼 클릭하면 팝업 발생
- 체크 박스
- 퇴직의 경우 해당 열의 색상을 다르게 처리하여 퇴직 상태임을 바로 알아볼 수 있도록 한다.
근태 관리 팝업
- 근태의 경우 예외적으로 시간을 24시간으로 표시한다.
- title : 근태 관리
- 월별 구분
- 출퇴근 시간을 기반으로 연장 근무로 잡히지만 보고서결재가 되지 않아 계산이 되지 않은 경우 안내 문구로 안내
- 문구 : 연장 근무 보고서가 작성되지 않은 내역이 {n}건 있어요. 보고서가 없으면 출퇴근 시간이 찍혀 있어도 연장 시간이 계산되지 않으니 주의해 주세요! 다만, 근태 수정을 이용하시면 언제든 직접 입력하실 수 있어요.
- 출퇴근 기록
| 날짜[툴팁] | 근무 | 출근 | 퇴근 | 일반 | 연장 | 야간 | 야간연장 | 휴일일반근무 | 휴일연장 | 휴일야간 | 휴일야간연장 | 합계[툴팁] | 휴게 | 관리 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026.06.03.(수) | 스케줄 근무 | 16:00 | 24:00 | 0 | 0 | 0 | 0 | 6 | 0 | 2 | 0 | 8 | 0 | [수정]버튼 |
| 2026.06.22.(월) | 스케줄 근무 | 08:00 | 20:00 | 8 | 2.5 | 0 | 0 | 0 | 0 | 0 | 0 | 10.5 | 1.5 | [수정]버튼 |
| 합계 | 8 | 2.5 | 0 | 0 | 6 | 0 | 2 | 0 | 1.5 |
- 1️⃣ 날짜 : 출퇴근 기록이 있는 날짜
- 표시 : YYYY.MM.DD.
- 대한민국을 기준으로 공휴일인 경우 빨간색으로 표시
- 토요일 포함
- 툴팁
- 날짜 영역 내 툴팁 아이콘 배치
- 툴팁 문구: 대한민국을 기준으로 휴일과 공휴일은 빨간색으로 표시돼요.
- 날짜에 툴팁 표시
- 위치 : YYYY.MM.DD. [icon]
- 조건 : 근무 형태로 설정된 근무시간을 초과한 근무 시간이 있는 경우 + 연장근무보고서 승인 내역이 없는 경우에 날짜에 '주의 아이콘'으로 안내
- '주의아이콘'의 툴팁으로 아래 문구로 안내 제공
- 문구 : 연장근무보고서가 없으면 연장시간 계산되지 않아요. 연장보고서를 작성 또는 직접 수정을 통해 직접입력할 수 있어요.
- 연장근무 보고서 승인 없이 연장근무 계산을 원한다면 '수정'에서 가능함
- 2️⃣ 근무
- 근무 : 설정된 근무 형태를 보여줌
- 근무 형태를 기반으로 일반, 연장, 야간 연장을 계산함
- 날짜가 대한민국 공휴일인 경우에는 휴일일반근무, 휴일연장, 휴일야간, 휴일야간연장으로 계산함
- 교대 근무로 인해 공휴일이 아니지만 휴가인 날짜에 출근한 경우, 근무에 표시함
- '수정'에서 휴일일반근무로 변경할 수 있음
- 근무 : 설정된 근무 형태를 보여줌
- 3️⃣ 출근
- Works에서 출근 버튼을 클릭한 시간 표시
- 출퇴근 방식에 따른 표시 방식
- Works에서 출근 버튼을 클릭한 시간 표시
| 출근 기록 방식 | 툴팁 |
|---|---|
| 앱 | 제공하지 않음 |
| 지문 단말기 | 지문 기록 제공 시스템에 기록된 출퇴근 시간과 실제 지문 인식 시간의 차이가 5분 이하( $\le 5$분)인 기록만 제공 ① 5분 이하의 유효한 지문 기록이 존재하는 경우 - 동작: 해당 출퇴근 시간에 마우스 호버(Hover) 시, 툴팁으로 상세 기록 제공 - 예시 : 2026-06-24 16:25 ② 5분 이내의 기록이 없고, 5분을 초과한 기록만 있거나 아예 없는 경우 - UI 동작: 해당 행에 알림 아이콘( !)을 표시합니다.- 호버 인터랙션: 알림 아이콘( !)에 마우스 호버 시 아래 툴팁 문구 제공- 문구 : 일치하는 지문 기록이 없어요. |
| 관리자 수동 | 제공하지 않음 |
- 4️⃣ 퇴근
- Works에서 퇴근 버튼을 누른시간 표시
- 퇴근 버튼을 당일에 누르지 않은 경우, '미입력' 으로 표시
- 미입력 이지만 지문 기록이 있는 경우
- 정해진 근무 종료 시간과의 차이가 5분 이하( $\le 5$분) 지문 기록이 있을 때, 툴팁+ 아이콘으로 제공
- 단 안내문구에 정확하지 않음을 안내
- 문구 : 지문 인식 기반의 퇴근 기록이 있어요.(다만, 실제 퇴근 시간과 완전히 일치하지 않을 수 있으니 확인해 주세요.)
- Works에서 퇴근 버튼을 누른시간 표시
- 5️⃣ 근무 시간 구분
- 공통
- 소수점 둘째자리까지 보여준다.
- 소수점 셋째자리에서 반올림한다.
- 공통
| UI | 정의 |
|---|---|
| 일반 | 설정된 근무 형태의 시간 내에서 한 근무 근무 형태가 정해지지 않은 경우 09:00 ~ 18:00(휴게 1시간 포함)을 기본으로 설정한다. |
| 연장 | 설정된 근무 형태의 시간을 초과한 근무(야간 시간대 제외) |
| 야간 | 설정된 근무 형태의 시간 이내에 야간 시간(22:00~이일 06:00)한 근무 |
| 야간연장 | 설정된 근무 형태의 시간을 초과한 근무이면서 그 시간대가 야간(22:00~이일 06:00)일 때 한 근무 |
| 휴일일반근무 | 대한민국 공휴일에 근무한 시간 중, 기본 설정 근무 시간(또는 1일 8시간) 이내로 수행한 근무 |
| 휴일연장 | 대한민국 공휴일에 근무한 시간 중, 기본 설정 근무 시간(또는 1일 8시간)을 초과하여 수행한 근무 |
| 휴일야간 | 휴일 근무 시간 이내의 근무 중, 야간 시간대(22:00 ~ 익일 06:00)에 수행한 근무 |
| 휴일야간연장 | 휴일 근무 시간을 초과한 근무이면서, 그 시간대가 야간 시간대(22:00 ~ 익일 06:00)에 해당하는 근무 |
- 합계
- 휴게 시간을 제외한 근무 시간만 보여준다.
- 소수점 둘째자리까지 보여주며 소수점 셋째자리에서 반올림한다.
- 합계 툴팁
- 위치 : 합계 오른쪽 아이콘으로 제공
- 문구 : 휴게 시간을 제외하고, 실제 일한 시간만 계산한 값이에요.
- 휴게
- 근무 형태에서 정한 휴게시간
- 근무 형태에서 일반 근무와 연장일때 각각 쉬는 시간을 설정한다. 그리고 그 설정을 바탕으로 계산한다.
근태 수정 팝업
- title : 근태 수정
- 탭으로 근태 수정, 수정 내역 제공 1️⃣ 근태 수정
- 출근 시간
- 형식 : time
- default
- 기존에 있는 값을 가져옴
- 기존에 값이 없을 경우,
-- --:--으로 제공
- 퇴근 시간
- 출근시간과 동일
- 근무 시간 계산
- [아이콘]으로 툴팁 제공
- 문구 : 출퇴근 시간으로 자동 계산돼요. 직접 수정할 수 있어요.
- 표로 제공
- 시간 단위
- 합계
- {n} 시간
- 근무 시간만 총 계산해서 보여 준다
- 근태 관리 팝업의 합계와 동일
- 출퇴근 시간과 맞지 않을 때 빨간색 문구로 안내
- 문구 : 합계가 출퇴근 시간과 맞지 않아요.
- 위치 : 표 아래에 제공
- {n} 시간
- [아이콘]으로 툴팁 제공
| 일반 | 연장 | 야간 | 야간연장 | 휴일일반근무 | 휴일연장 | 휴일야간 | 휴일야간연장 | 휴게 | 합계[툴팁] |
|---|---|---|---|---|---|---|---|---|---|
| {n} h | {n} h | {n} h | {n} h | {n} h | {n} h | {n} h | {n} h | {n} h | {n} h |
수정 사유
- 필수값 표시
- placeholder : 수정 사유를 입력해 주세요. 2️⃣ 수정 내역
수정 일시
- 예시 : 2026.06.24. 00:00
- 시간은 24시간으로 표시
수정자
- 수정한 사람의 이름
변경 내용
- 아래의 내용 중 변경된 내용이 보임
- 출근시간, 퇴근시간, 일반, 연장, 야간, 야간연장, 휴일일반근무, 휴일연장, 휴일야간, 휴일야간연장, 휴게
- 예시) 퇴근 시간을 1시간 미룬 경우
- 퇴근 : 18:00 → 20:00
- 연장 : 0h → 2h
수정 사유
푸터
- [닫기] 버튼 : 수정사항 저장되지 않고 해당 팝업(근태 수정)팝업만 닫힘
- [저장] 버튼 : 수정사항 저장되고 해당 팝업(근태 수정)팝업만 닫힘
- [저장] 버튼 활성 조건
- 아래 조건을 모두 충족할 때 [저장] 버튼이 활성화 된다
- 출근,퇴근 시간 모두 입력
- 출퇴근 시간과 맞지 않을 때 빨간색 문구로 안내 문구 없음
- 수정 사유 입력
- 아래 조건을 모두 충족할 때 [저장] 버튼이 활성화 된다
- [저장] 버튼 활성 조건
직원 정보 수정 팝업
1️⃣기본정보
성, 이름 : 직원 추가와 동일
이메일 : 직원 추가와 동일
- [저장] 버튼 클릭 시, 중복 확인
전화번호 : 직원 추가와 동일
- [저장] 버튼 클릭 시, 중복 확인
사번 : 직원 추가와 동일
- [저장] 버튼 클릭 시, 중복 확인 2️⃣ 인사정보
입사일 : 직원 추가와 동일
- 기본값은 오늘날짜가 아닌 저장된 값
생년월일 : 직원 추가와 동일 + 저장된 값이 있는 경우 보여줌
근무형태 : 직원 추가와 동일 + 저장된 값이 있는 경우 보여줌
상태
- 형식 : 드롭다운
- default : 현재 직원 상태
- 옵션 : 재직, 비활성, 휴직, 퇴직
- 복직
- 현재 상태가 휴직일 때만 옵션에 노출
- 재직·비활성·퇴직 직원이 휴직 또는 퇴직을 선택하면 아래 인라인 영역이 펼쳐진다
- 이미 휴직·퇴직 상태인 직원은 전환 영역 없이 현재 상태만 표시
- 휴직 처리
- 노출 조건 : 현재 상태가 휴직이 아니고, 드롭다운에서 휴직을 선택했을 때
- 휴직 사유
- 필수값 표시
- 형식 : 드롭다운
- 옵션 : 육아휴직, 병가, 가족돌봄휴직, 학업휴직, 병역휴직, 개인사유, 기타
- 기타 사유
- 휴직 사유가 기타일 때만 노출
- 형식 : text
- 휴직 시작일
- 필수값 표시
- 형식 : date
- default : 오늘 날짜
- 복직 예정일
- 형식 : date
- 선택 입력
- 메모
- 형식 : textarea
- 선택 입력
- [저장] 버튼 클릭 시
- 휴직 기록 생성 후 직원 상태를 휴직으로 변경
- 안내 팝업
- title : 휴직
- message
- {성이름}님이 휴직처리 되었어요. 사유 : {휴직 사유} 기간 : {휴직 시작일} ~
- 직원 정보 수정 팝업 닫힘
- 직원 목록 갱신
- [저장] 버튼 활성 조건
- 아래 조건을 모두 충족할 때 [저장] 버튼이 활성화 된다
- 휴직 사유 입력
- 휴직 시작일 입력
- 아래 조건을 모두 충족할 때 [저장] 버튼이 활성화 된다
- 처리 후
- 직원 상태 : 휴직
- 로그인 : 불가
- 휴직·퇴직 이력 영역에 휴직 중으로 표시
퇴직 처리
- 노출 조건 : 드롭다운에서 퇴직을 선택했을 때
- 퇴직 사유
- 필수값 표시
- 형식 : 드롭다운
- 옵션 : 자진 퇴사, 권고 사직, 이직, 계약 만료, 정년 퇴직, 해고(징계), 기타
- 기타 사유
- 퇴직 사유가 기타일 때만 노출
- 형식 : text
- 퇴직일
- 필수값 표시
- 형식 : date
- default : 오늘 날짜
- 메모
- 형식 : textarea
- 선택 입력
- 동의
- 필수값 표시
- 형식 : 체크박스
- 문구 : 퇴직 처리에 동의합니다
- [저장] 버튼 클릭 시
- 퇴직 기록 생성 후 직원 상태를 퇴직으로 변경
- 안내 팝업
- title : 퇴직
- message - {성이름}님이 퇴직처리 되었어요. 사유 : {퇴직 사유} 퇴직일 :
- 직원 정보 수정 팝업 닫힘
- 직원 목록 갱신
- [저장] 버튼 활성 조건
- 아래 조건을 모두 충족할 때 [저장] 버튼이 활성화 된다
- 퇴직 사유 입력
- 동의 체크
- 아래 조건을 모두 충족할 때 [저장] 버튼이 활성화 된다
- 처리 후
- 직원 상태 : 퇴직
- 로그인 : 불가
- 직원 삭제 가능 (비활성·퇴직만 삭제 가능 정책과 동일)
- 휴직·퇴직 이력 영역에 퇴직 기록·처리 상태 표시
복직 처리
- 노출 조건 : 현재 상태가 휴직이고, 드롭다운에서 복직을 선택했을 때
- UI : 초록색 안내 문구
- 문구 : 복직 처리하면 휴직 기록이 종료되고 상태가 재직으로 변경됩니다.
- 추가 입력 필드 : 없음
- [저장] 버튼 클릭 시
- 활성 휴직 기록 종료 후 직원 상태를 재직으로 변경
- 안내 팝업 : 복직 처리 완료
- 직원 정보 수정 팝업 닫힘
- 직원 목록 갱신
- [저장] 버튼 활성 조건
- 상태를 복직으로 변경한 것
휴직·퇴직 이력
- 휴직·퇴직 기록이 있을 때만 노출
- 읽기 전용
- 휴직 이력
- 배지 : 휴직 중, 복직, 휴직 취소
- 사유
- 기간 : 시작일 ~ 실제 복직일 (없으면 예정 복직일)
- 퇴직 이력
- 배지 : 퇴직
- 사유
- 퇴직일
- 처리 상태 : 대기, 처리 중, 정산 완료, 완료 등
출근기록방식 -> 출퇴근기록방식 으로 명칭 변경
- 직원 추가와 동일
3️⃣ 비밀번호 변경
- 임시 비밀번호(SMS)
- [임시 비밀번호 생성 및 SMS 발송] 버튼
- 전화번호가 등록된 상태일 때만 활성화
- 버튼 클릭하면 입력한 전화번호로 임시비밀번호 발송됨
- 전화번호가 등록되지 않은 상태일 때는 비활성화
- 툴팁으로 안내 : 전화번호를 입력하지 않아 사용할 수 없어요.
- 전화번호가 등록된 상태일 때만 활성화
- [임시 비밀번호 생성 및 SMS 발송] 버튼
- 직접 설정
- 8자 이상 · 확인 일치 · [비밀번호 변경] 즉시 반영 4️⃣ SMS 로그인 허용
- 토글로 on/off 설정
- [저장] 버튼을 눌러야지만 변경내용 저장됨
5️⃣ 시스템 관리자
노출 조건 : 토글이 off 상태에서 on으로 변경하려 할 때
[변경] 전 확인 팝업
- title : 시스템 관리자 변경
- message : 해당 사용자를 시스템 관리자로 변경할까요? 시스템 관리자는 모든 기능에 접근할 수 있어요.
- [아니오] 버튼 : 팝업 닫힘 · 토글은 off 유지
- [변경] 버튼 : 팝업 닫힘 · 토글 on 반영
- x 버튼 : [아니오]와 동일
확인 팝업이 열린 동안 직원 정보 수정 팝업은 조작 불가
토글만 on으로 바뀌고, DB 반영은 [저장] 시점
시스템 관리자 OFF (해제)
- 노출 조건 : 토글이 on 상태에서 off로 변경할 때
- 별도 확인 팝업 없음
- 토글 off 반영 후 [저장] 시 DB 반영
- 최초 admin 계정 예외 (
admin.md)- 병원 최초 생성 시 만들어진 최초 admin 계정은 해제 불가
- 토글 off 불가(disabled)로 고정
- 스스로 관리자 권한을 해제할 수 없음
- 최초 admin 계정이 토클을 off로 변경할 때 안내 팝업 발생
- 안내 팝업
- title : 시스템 관리자 해제
- message
- {최초 관리자 계정은 필수 운영 계정으로 설정되어 있어 관리자 권한을 해제할 수 없어요. 권한 변경이 필요하면 문의해 주세요.
- [확인], x 버튼 : 해당 팝업만 닫힘
- 안내 팝업
[삭제]
삭제 가능한 상태 : 비활성화, 퇴직
- [삭제] 클릭 시 팝업
- title : 직원 삭제
- message {성이름}님을 삭제할까요?
- [취소], x 버튼 : 해당 팝업만 닫힘
- [확인] 버튼 : 해당 직원 삭제되고 해당 팝업 닫힘
- [삭제] 클릭 시 팝업
삭제 불가능한 상태 : 휴직, 재직
- [삭제] 클릭 시 팝업
- title : 직원 삭제
- message 휴직 또는 재직 상태에서는 직원을 삭제할 수 없어요. 먼저 퇴사 처리 후 삭제해 주세요.
- [확인], x 버튼 : 해당 팝업만 닫힘
- [삭제] 클릭 시 팝업