HBAD200_직원 관리
(Hereby) 관리자 패널 > App Shell > 인사 관리 > 직원 관리
| 메타 | 앱: 관리자 패널 (App Shell)대상 사용자: 조건1 [직원 조회/관리 권한 보유 역할]프로토타입: TBU관련 정책: [[POL_권한(RBAC)]]Status: reviewOwner: 카나 |
개요
직원 관리는 관리자 패널의 기본 랜딩 화면이자 직원 마스터(employees)의 SoT 목록이다. KPI 통계 바 + 필터/검색 + 직원 목록 그리드로 구성된다. 한 직원은 **멀티 소속·역할(n:m)**을 가진다. 소속은 team_members 계층 chip으로 표기된다 (예: "간호부 > 병동1"). "직원 추가"는 단일 모달로 Employee + 소속 + 계약 + 자격증 요건을 1회 생성한다 (HBAD201). 목록 행 클릭은 무반응이며, 진입은 오직 "관리" 컬럼 버튼(편집/휴직·퇴직/근태 관리)으로만 한다 (7/20 재검증). 휴직·퇴직은 별도 처리 모달(HBAD202)로 진행된다.
문서 히스토리
- 2026-07-06 최초 작성 - 카나/콸
- 2026-07-10 라이브 기능 검토 반영 - 카나/콸
- 2026-07-13 버튼 행동 명세 보강 - 카나/콸
- 2026-07-17 코드 변경 반영(de57b65·0125f00) - 카나/콸
- 2026-07-21 GC700 깊이 재작성 (라이브 재검증 7/20 — KPI/검색/empty/행클릭) - 카나/콸
- 2026-07-21 셀 스타일 확정판 적용 (콸 승인) - 카나/PM
- 2026-07-22 코드 변경 반영(c648ec1·4f063fa) - 카나/콸
- 2026-07-23 코드 변경 반영(98a90dd·d0610db) - 카나/콸
- 2026-09-01 팀 선택 트리 접기 동작 수정 반영(#598, 라이브 실증) - 카나/PM
Data I/O
Server → Client
변수
| 메타 | $ |
| 메타 | $ |
| 메타 | $ |
| 메타 | $ |
| 메타 | $ |
Client → Server
| 액션 | 전달 값 | tRPC procedure | 권한 토큰 |
|---|---|---|---|
| 직원명부 다운로드 | 현재 필터 + 선택 출력 컬럼 + 팀별/전체 범위 | export (코드 반영: 98a90dd) | 직원 조회 (추정) |
| 직원 추가 | - | HBAD201 모달 오픈 | 직원 관리 (추정) |
| 필터/검색 | 상태/팀/역할/입사일/검색어 | 목록 재조회 | 직원 조회 (추정) |
| 소속 chip × / 역할 변경 | team_member row | sdk.teamMember.* (추정) | 직원 관리 (추정) |
직원 관리 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 노출 조건 | - | • 관리자 패널 진입 시 기본 랜딩 ("직원 관리"). 조건1 [직원 조회 권한] | 인증 세션 | |
| 01 | 초기 상태 | - | • "직원 목록" 표시, 필터 미적용 전체 목록, "총 295건 중 1-30건". 기본 정렬 = 입사일 기준(조직 탭 포함) • 탭 상태 기억: 탭(직원/조직 등) 선택 상태를 localStorage에 저장 — 새로고침 시 마지막 탭 복원, URL 해시 = 현재 탭 (코드 반영: d0610db) | 기본 정렬 입사일(코드 반영: c648ec1·4f063fa) · 탭 상태 복원(d0610db) | |
| 10 | KPI 통계 바 | Output | • 조직 인원·조직 카운트 요약 표시 "전체 295 / 재직 271 / 비활성 9 / 휴직 3 / 퇴직 12 / 팀 33 / 역할 4" (7/20 재검증). 값 없음: 0 - CASE01 [상태 enum]: 재직/비활성/휴직/퇴직 4종 | $ | 7/10 대비 팀 64→33, 비활성 7→9, 전체 293→295 |
| 20 | 필터 | Dropdown | • 상태/팀/역할/입사일로 목록을 거르는 필터: "상태 선택" / "팀 선택" / "역할 선택" / "입사일" / "선택 초기화" • 선택 시: 목록 재조회 + 카운트 갱신 - "팀 선택" = 계층 트리(체크박스 + 팀별 "접기" 토글). CASE01 [접기]: 해당 팀의 하위 팀이 목록에서 숨김 (라이브 실증 9/1: 병동1 접기 → 팀1 숨김. 구버전은 접어도 하위가 계속 보이던 버그 — #598 수정) | 목록 재조회 · 팀 피커 공용 컴포넌트 | 접기 동작(#598) 라이브 실증 |
| ㄴ21 | 검색 | Search | • 이름/사번/이메일로 직원을 찾는 검색창 (placeholder "직원 검색 (이름 / 사번 / 이메일)...", 7/20 재검증) • 입력 시: 일치 목록 재조회 - CASE01 [결과 있음]: 필터 목록 표시 - CASE02 [결과 없음]: Empty | ${affiliations} 부재 | 문구 순서 변경(이름/사번/이메일) · TBU: 목록 0건 empty 표기 |
| 30 | 직원 액션 | Button | • 목록 상단 액션 버튼 묶음: "직원명부 다운로드" / "직원 추가" | ||
| ㄴ31 | 직원명부 다운로드 | Button | • 현재 필터 조건의 직원 목록을 파일로 내보내는 버튼 • 클릭 시: 출력 컬럼 선택 모달(ㄴ31-M) 오픈 → 컬럼 선택 후 내보내기 실행, 성공: 파일 다운로드 | 권한 "직원 조회" · 코드 반영: 98a90dd | |
| ㄴ31-M | 출력 컬럼 선택 모달 | Modal | • 명부 출력 시 포함할 컬럼을 고르는 체크박스 모달 (신설) • 컬럼 체크박스: 기본 전체 선택 • 팀별/전체 내보내기 지원 • 모달 재오픈 시: 선택 상태 리셋 • 클릭 시: 내보내기 실행 → 선택 컬럼만 포함한 파일 다운로드 | export | 신설 (코드 반영: 98a90dd) · 배경: 7/21 베스트 요구 반영 · 세부 UI TBU |
| ㄴ32 | 직원 추가 | Button | • Employee+소속+계약+자격증요건을 1회 생성하는 단일 모달 진입 버튼 • 클릭 시: "직원 추가" 모달 오픈 (HBAD201) | [[HBAD201_직원 추가·수정 모달]] | |
| 40 | 직원 목록 | Grid | • 직원 마스터 목록 그리드. 컬럼: ☑ / 사번 / 이름 / 이메일 / 팀 · 역할 / 입사일 / 근무형태 / 상태 / 관리 (7/20 헤더 재확인) • 클릭 시: 행 본문 클릭 → 무반응 (상세 모달 없음, 7/20 — 진입은 "관리" 컬럼으로만) | employees | 8+체크박스 |
| ㄴ40-1 | 컬럼 정렬 | Sort | • 사번 / 성명 / 팀명 / 입사일 컬럼 헤더 클릭으로 목록 정렬. 기본 정렬 = 입사일 기준 • 클릭 시: 토글 3단 순환 — CASE01 [1클릭] 오름차순 → CASE02 [2클릭] 내림차순 → CASE03 [3클릭] 정렬 해제 • UI 시각 인디케이터로 현재 정렬 컬럼·방향 표시 • 직원 추가 모달 오픈 시: 정렬 상태 리셋 | employees | 신설 · 4개 컬럼(사번/성명/팀명/입사일) (코드 반영: c648ec1·4f063fa) |
| ㄴ41 | 팀 · 역할 셀 | Cell | • 멀티 소속 chip 셀: "간호부 > 병동1"(계층 표기) + 역할 chip + 소속 추가 아이콘. 값 없음: "역할 없음" • 소속 chip "×" 클릭 시: 컨펌 "이 멤버를 팀에서 제거하시겠습니까?" → 실행 • 역할 chip 클릭 시: 컨펌 ""{이름}"의 역할을 "{역할}"(으)로 변경하시겠습니까?" → 실행 • 소속 추가 클릭 시: 소속(팀·역할) 배정 인라인 추가 | team_members n:m | 계층 chip · 테이블 내 버튼은 아이콘 전용 "+", 라벨 "소속 추가"는 빈 테이블 상태에서만 노출(7/16 변경, 동작 불변) |
| ㄴ42 | 상태 | Badge | • 재직 상태 배지: CASE01 [재직] / CASE02 [비활성] / CASE03 [휴직] / CASE04 [퇴직] | employees.status | |
| ㄴ43 | 관리 | Button | • 직원 행 진입 유일 경로 버튼(행 본문 클릭 무반응) • "편집" 클릭 시: "직원 정보 수정" 모달 (HBAD201) • "휴직·퇴직" 클릭 시: 휴직·퇴직 처리 모달 (HBAD202) • "삭제" 클릭 시: 컨펌 후 삭제 (파괴적 — 기존 기록) | HBAD201 / HBAD202 | |
| ㄴ44 | 근태 관리 | Button | • 직원별 근태를 조회·관리하는 "근태 관리" 버튼 • 클릭 시: "근태 관리" 모달 오픈 | attendances (추정) |
소속 chip 계층 표기
| 표기 | 의미 | 근거 |
|---|---|---|
| "간호부 > 병동1" | 상위 팀 > 하위 팀 계층 경로 | teams.parentTeamId |
| "역할 없음" | 소속·역할 미배정 (값 없음 처리) | team_members 부재 (7/20 원문) |
| chip × (제거) | 해당 소속 해제. 클릭 → 컨펌 "이 멤버를 팀에서 제거하시겠습니까?" | team_members row |
| 역할 chip (변경) | 역할 변경. 클릭 → 컨펌 ""{이름}"의 역할을 "{역할}"(으)로 변경하시겠습니까?" | team_members.roleId |
| + (소속 추가) | 추가 팀·역할 배정 (n:m). 테이블 내 버튼은 아이콘 전용 "+", 라벨은 빈 테이블 상태에서만 노출 (7/16 변경) | team_members.roleId |
권한 / 상태 요약
| 시나리오 | 트리거 | 결과 | 비고 |
|---|---|---|---|
| CASE01 [목록 조회] | 화면 진입 | 직원 목록 그리드 + KPI 바 표시 | 권한 "직원 조회" |
| CASE02 [행 본문 클릭] | 목록 행 클릭 | 무반응 (상세 모달 없음) | 7/20 재검증 |
| CASE03 [명부 다운로드] | "직원명부 다운로드" | 필터 조건 export | |
| CASE04 [직원 추가] | "직원 추가" | HBAD201 모달 오픈 | 권한 "직원 관리" |