Skip to content

HBAD260_근무 설정 (근무 그룹·유형) ​

(Hereby) 관리자 패널 > 근태 현황 > 근무 탭 > 유형·기준 관리 모달 > 근무 설정

메타앱: 관리자 패널 (HBAD)대상 사용자: 조건1 [근태 관리] (설정 수정)프로토타입: TBU관련 정책: [[POL_근무설정]]Status: reviewOwner: 카나

개요 ​

근무 설정은 근무 그룹과 그룹별 근무 유형(마스터) 을 정의하는 근태 원천 설정 화면이다.근태 현황 > 근무 탭 > "근무 설정" 버튼 → "유형·기준 관리" 모달(좌측 네비 7종: 근무 설정 / 연장근무 유형 / 외근 유형 / 연차 부여 기준 / 휴가/연차 유형 / 연차 정책 / 공휴일)의 근무 설정 섹션으로 진입한다.근무 유형은 간호 스케줄러(HBNS)와 근태 정규화의 원천이 된다. ✅ 2026-08-17 라이브 실사에서 유형·기준 관리 모달이 최초로 실오픈되어 내부 구성을 실화면 대조 완료했다. 스케줄러 연동 ON/OFF에 따른 코드·코드라벨색 조건부 노출(d1c3f25)이 폼 레벨에서 실증되었다. 근무 그룹과 근무 형태는 그룹→형태 2단계로 배정된다(근무 형태는 항상 특정 근무 그룹에 속함). 직원에게 배정할 때 근무 그룹만 바꾸면, 이전에 잡혀 있던 근무 형태가 새 그룹에 없을 경우 그 형태를 자동으로 비운다(직원 마스터 시트 일괄 입력·직원 추가/수정 모달 모두 동일하게 동작, 3ef0508). 예전에는 그룹만 바뀌고 이전 형태가 남아 그룹과 형태가 어긋난 직원(예: 야간전담에서 3교대로 옮겼는데 계속 야간 기준 시각·근무시간으로 잡히는 경우)이 생겼는데, 이 규칙으로 그룹과 형태의 정합을 맞춘다. 비워진 형태는 출퇴근 기준 시각·근무시간 산정([[HBAD270_설정 (조직 설정·내 정보)]] 기준 시각 결정 규칙)에 연동되어, 새 그룹 기준으로 다시 산정된다.

문서 히스토리 ​

  • 2026-07-06 최초 작성 - 카나/콸
  • 2026-07-10 라이브 기능 검토 반영 (진입 경로 확인, 모달 내부 미오픈) - 카나/콸
  • 2026-07-13 버튼 행동 명세 보강 - 카나/콸
  • 2026-07-21 GC700 깊이 재작성 - 카나/콸
  • 2026-07-21 셀 스타일 확정판 적용 (콸 승인) - 카나/PM
  • 2026-08-06 근무 코드 조건부 노출(스케줄러 연동 기준) 반영(d1c3f25) - 카나/PM
  • 2026-08-17 라이브 실사 검증 반영(dev v0.1.0+, 유형·기준 모달 최초 실증) - 카나/PM
  • 2026-09-15 근무 설정 목록 상태 필터(전체 상태/활성/비활성, 기본 "활성") 반영 — 역할 관리(#665)와 같은 방식, 병원 설정 > 근무시간 서브탭과 공용(CS-LOC-260915-0002) - 카나/PM
  • 2026-09-15 근무 그룹→근무 형태 2단계 선택 — 그룹만 바꾸면 새 그룹에 없는 기존 형태를 비우는 규칙(직원 마스터 시트·직원 모달 일치, 3ef0508) 반영 - 카나/콸
  • 2026-09-17 근무 유형 폼 「요일별 시간」 칸·목록 「화·목 다름」 배지 반영(#774, 3df87cb) — 커밋 근거만, 라이브 실사 미도달 → TBU/실사 이월(내일 주간 스윕) - 카나/PM
  • 2026-09-18 직무 마스터 신설 — 근무 설정 하단 「직무」 섹션 + 근태 설정 팝업 공용, 직무별 기본 근무(그룹›형태)·허용 근무형태·직군, 직원 등록·대량 추가 자동 근무 채움(직무 기본 → 팀 대표 순서) 반영(7f63a4b, #791) — 커밋 근거, 라이브 실사 이월(TBU) - 카나/PM
  • 2026-09-21 직무 마스터 별도 탭 이관 — 설정 › 「직무 설정」 서브탭 신설(「목록」·「매핑표」 2보기), 매핑표를 격자→행 기반 그룹›형태 select로 재설계(격자는 열 34개·폭 5,300px 희소), 직무 폼 「허용 근무형태」 체크 제거, 근무 유형 폼 「기본으로 쓰는 직무」 칩 추가, 근무 그룹 헤더 「직무 N개」 링크, 그룹/유형 soft delete 시 직무 기본 근무 참조 정리, 직군 묶음 역순·칩만 변경 시 저장 비활성 버그 수정 반영(a6e8253·b39d759·db5dcdc, #801) — 커밋 근거, 라이브 실사 이월(TBU) - 카나/PM
  • 2026-09-23 직무 설정 「기본 근무 재적용」(미리보기 → 적용) + 직무 마스터 「유형 미지정」 경고 반영(33948ca, #851, MED-693), 설정 「근로형태」 탭 신설은 탭 목록 1줄만 반영(73c0cb4, #823 — 전용 사양서 미작성, 신규 화면 후보) — 커밋 근거, 라이브 실사 이월(TBU) - 카나/PM
  • 2026-09-23 설정 3개 표(근무 설정·직무 설정·근로형태) 열 규칙 통일 + 머리글 「?」 툴팁·근무 설정 파셜 단일화(dc081d8, #874)·근로형태 「근무 그룹에서 가져오기」(미리보기 → 적용)(b03c1ad, #857, CS-OKBEST-260922-0005 후속)·근무일·근무시간·휴게 문구와 월 소정근로를 기본 근무에서 자동 생성(3295bba, #869, MED-704 1단계) 반영 — 「근로형태」 탭은 전용 사양서 미작성 유지(ㄴ02-1a~c 1줄씩), 커밋 근거·라이브 실사 이월(TBU) - 카나/PM
  • 2026-09-25 낮 스윕 라이브 실사(okbest.dev 낮 시간 DNS 정상) — 좌측 네비 9종 실측(「직무 설정」·「근로형태」 추가), 근무 유형 폼 「요일별 시간」 칸(ㄴ34d)·「대표로 쓰는 팀」/「기본으로 쓰는 직무」 칩(ㄴ37)·연차 차감 판정 3옵션(ㄴ34a)·공휴일 근무 설명(ㄴ34b) 실측, 목록 배지 라벨은 「요일별」로 정정(ㄴ23 — 「화·목 다름」류 아님, 시간 머리글 툴팁 원문 근거), 근무 유형 표 머리글 「?」 툴팁 7종 원문 채록(ㄴ10b), 직무 설정 목록/매핑표·「기본 근무 재적용」 버튼·Empty 원문(40-1·40-5·ㄴ41·ㄴ42), 근로형태 Empty 원문·「근무 그룹에서 가져오기」 미리보기 모달(ㄴ02-1b — 적용 미실행)·추가 창 자동 파생 안내(ㄴ02-1c) 실측 확인 - 카나/PM

Data I/O ​

Server → Client

변수

메타$
메타$

Client → Server

액션전달 값tRPC procedure권한 토큰
근무 그룹 추가name, isActivesdk.shiftGroup.create() (추정)근태 관리
근무 유형 추가/수정근무그룹·코드·이름·출퇴근 시간·근무/휴게 시간·적용 요일·요일별 시간(dayOverrides)·색상·스케줄러 연동sdk.workType.create() (추정)근태 관리
삭제idsdk.*.delete() (추정)근태 관리

외부 통합 (cross-app)

외부 시스템데이터동기/비동기비고
간호 스케줄러 (HBNS)근무 유형(D/E/N 등) → 근무표 셀 원천 ("스케줄러 연동" 토글)참조[[POL_근무설정]]
근태 정규화근무 유형 근무·휴게 시간 → attendances regularHours 산정 기준 (추정)참조

근무 설정 사양표 ​

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00노출 조건-• 조건1 [근태 관리 권한] 인증 후 근무 탭 "근무 설정" 버튼으로 진입
 - CASE01 [미인증]: /admin/signin 리다이렉트
인증 세션 · RBAC
01초기 상태-• 유형·기준 관리 모달 좌측 네비 "근무 설정" 선택 상태
• 기본 상태 필터 = "활성"(CS-LOC-260915-0002, 9/15) — 진입 시 활성 그룹·유형만 노출
2026-08-17 라이브 실오픈 확인 · 기본 필터 "활성"
02좌측 네비Nav• 유형·기준 관리 모달 좌측 네비 9종(원문, 상단 그룹 라벨 "유형·기준 관리"): "근무 설정" / "직무 설정" / "근로형태" / "연장근무 유형" / "외근 유형" / "연차 부여 기준" / "휴가/연차 유형" / "연차 정책" / "공휴일"
• 클릭 시: 해당 섹션 전환
[[HBAD261_유형 설정 (연장근무·외근·휴가)]] · [[HBAD262_연차 부여 기준]]라이브 정정: 7→9종("직무 설정"·"근로형태" 추가)(2026-09-25 실사)
ㄴ02-1「근로형태」 탭 (신규)Nav• 설정에 「근로형태」 탭 신설 — 병원 「직무별 근로형태」 표를 마스터로 등록하는 화면. 근로형태 = 포괄임금의 월 시간 기준(월 소정·고정연장·고정야간 → 임금산정시간)이라 근무 유형(하루의 출퇴근 시각)과 축이 다름
 - 신규 탭 — 전용 사양서 미작성(신규 화면 후보). 아래 ㄴ02-1a~c 는 커밋에 명시된 변경만 남긴 것이고 화면 전체 사양은 여전히 갱신 대기
 - 설정 › 「근로형태」 서브탭과 근태 설정 팝업 「근로형태」 섹션이 같은 파셜(같은 화면)
 - 직원 등록/수정 패널·대량 업로드 열의 「근로형태」(workPatternName)가 이 마스터를 참조
work_patterns · employees.workPatternId · job_duties.defaultWorkPatternId · [[HBAD201_직원 추가·수정 모달]] ㄴ50-4 · [[HBAD200_직원 관리]] ㄴ33신설 (코드 반영: 73c0cb4, #823) · 9/23 커밋 3건 누적(dc081d8 #874 · b03c1ad #857 · 3295bba #869) · 전용 사양서 미작성(신규 화면 후보) · 세부 사양 = 갱신 대기
ㄴ02-1a근로형태 목록 표 (열 규칙·머리글 툴팁)Grid• 근로형태 목록을 근무 설정·직무 설정과 같은 열 규칙으로 통일 — 글줄 열 왼쪽 · 숫자 열 오른쪽 · 긴 값은 안쪽 블록으로 폭을 묶고 줄바꿈
 - 열: 근로형태 / 근무 / 월 소정 · 월 연장 · 월 야간 · 월 휴일 / 임금산정 / 직원 / 상태 / 관리 (직무별 묶음)
 - 「근무」 열 = 첫 줄 기본 근무(근무 그룹 › 근무 유형) + 아래 근무일 · 근무시간 · 휴게 문구. 그룹만 골라 유형이 여럿이면(3교대) 유형마다 한 줄로 나눠 표 폭 3,900px(9/23 실측) → 래퍼 폭 안
 - 머리글마다 「?」 툴팁 + 툴바 화면 도움말 「?」(임금산정시간·통상시급 공식). 요약 줄 원문 "포괄임금의 월 시간 기준이에요. 근무일 · 근무시간 · 휴게는 기본 근무에서 만들어져요."
 - 긴 설명은 2줄까지 표시(클램프), 잘리면 전체 문장을 툴팁으로
디자인시스템 .cell--left/.cell--right/.ds-help-badge/cell-trunc-tip · tooltip.ts(세로 클램프 판정) · 직무 사양표 40-6 · ㄴ10b신설 (코드 반영: dc081d8, #874) · 전용 사양서 미작성 — 이 행은 커밋 명시 변경만 · 2026-09-25 실사: 탭·툴바 「?」 요약 줄 확인, 근로형태 0건이라 표 열 규칙 실화면은 미노출 — Empty 원문 확정 "등록된 근로형태가 없어요. 직원이 근무 그룹으로 이미 배정돼 있다면 「근무 그룹에서 가져오기」로 그룹마다 근로형태를 만들고 직원을 이을 수 있어요. 그 뒤 근로형태 수정에서 월 시간을 채우면 월 근로시간·통상시급이 자동으로 채워져요."
ㄴ02-1b「근무 그룹에서 가져오기」Modal• 근무 그룹을 근로형태로 옮겨 오는 미리보기 → 적용 2단계 모달. 툴바 버튼 「근무 그룹에서 가져오기」(title "근무 설정의 근무 그룹마다 근로형태를 만들고, 그 그룹으로 배정된 직원을 이어요(미리보기 뒤 적용).")
• 클릭 시: 모달 "근무 그룹에서 근로형태 가져오기" 오픈(미리보기 dryRun)
 - STEP1 [미리보기]: 표 열 「근무 그룹 → 근로형태」 / 「직무」 / 「이을 직원」 / 「처리」(「새로 만듦」·「기존에 연결」)
 - STEP2 [적용]: 버튼 라벨 "근로형태 {N}개 만들고 직원 {M}명 잇기"(진행 중 "적용 중…") · 「닫기」
• 생성 규칙: 활성 근무 그룹마다 근로형태 1개 — 이름 = 그룹 이름, 기본 근무 = 그 그룹, 직무 = 그 그룹을 기본으로 둔 직무가 하나일 때만. 그 그룹으로 배정됐고 근로형태가 없는 직원을 이어 줌
 - 월 시간 = 표준 209로 넣고 근로계약 파생값은 건드리지 않음(관리자가 월 시간을 채우면 그때 재계산 미리보기가 열림)
 - Empty(-E) [가져올 것 없음]: "가져올 것이 없어요 — 활성 근무 그룹마다 근로형태가 이미 있고 직원도 모두 이어져 있어요."
 - 목록 Empty 문구도 개정 — "등록된 근로형태가 없어요. 직원이 근무 그룹으로 이미 배정돼 있다면 「근무 그룹에서 가져오기」로 그룹마다 근로형태를 만들고 직원을 이을 수 있어요. …"
work_patterns · shift_groups · employees.workPatternId · sdk.workPattern.*(importFromShiftGroups) · 10 근무 그룹 목록신설 (코드 반영: b03c1ad, #857) · 배경: CS-OKBEST-260922-0005 후속(「배정된 근로형태가 안 나온다」) · 2026-09-25 실사(미리보기 단계만, 적용 미실행): 모달 제목·표 4열(근무 그룹 → 근로형태 / 직무 / 이을 직원 / 처리 「새로 만듦」)·버튼 라벨 "근로형태 1개 만들고 직원 3명 잇기"/「닫기」 실증, info 원문 "근무 그룹 1개 중 새로 만들 근로형태 1개, 이을 직원 3명이에요. 월 시간은 표준 209시간으로 들어가요 — 적용 뒤 근로형태 수정에서 월 소정·연장·야간을 채우면 그때 직원 파생값 재계산 미리보기가 열려요. 지금은 근로계약 값을 바꾸지 않아요."
ㄴ02-1c근무일·근무시간·휴게 자동 생성 (기본 근무 파생)Rule• 근로형태의 근무일 형태 · 근무시간 · 휴게시간을 손으로 적지 않고 연결된 기본 근무(근무 그룹 › 근무 유형)에서 자동 생성 — 목록·추가/수정 창·근로계약 파생값이 같은 describeShiftSchedule 사용
 - 추가/수정 창: 텍스트 입력 3칸 제거 → info 안내로 미리보기. 원문 "근무일 · 근무시간 · 휴게(근무 유형에서 자동): {문구} — 시각·휴게를 바꾸려면 근무 설정의 근무 유형을 고쳐요."
 - CASE01 [기본 근무 미선택]: "기본 근무를 고르면 근무일 · 근무시간 · 휴게 문구가 근무 유형에서 자동으로 채워지고, 근로계약에도 같은 문구가 들어가요."
 - 「기본 근무」가 필수(*) 로 승격. 도움말 끝줄 "…근무일·근무시간·휴게 문구와 월 소정근로 기본값도 여기서 나와요."
 - 월 소정근로도 근무 유형에서 기본값(주5일 8h → 209) — 라벨 옆 「(자동)」, 직접 고치면 그 값 유지 + 되돌리기 버튼 "근무 유형 기준 {N}시간으로"
 - 옛 텍스트 열(workDaysText 등)은 남겨 두고 문구가 없을 때만 폴백(컬럼 삭제는 2단계)
shifts(출퇴근 시각·휴게·적용 요일) · @hereby/core describeShiftSchedule · 근로계약 근무일 형태/근무시간/휴게시간 · ㄴ34d 요일별 시간신설 (코드 반영: 3295bba, #869, MED-704 1단계) · 2026-09-25 실사 확인: 추가 창에서 「기본 근무 *」 필수·CASE01 문구·도움말 끝줄 원문 일치, 월 시간 산식 표시 "임금산정시간 209시간 = 209 + 0 × 1.5 + 0 × 0.5"·「일 단위로 넣기」(월 근무일수 21.73일 안내) 실측. 신규 관찰: 「속한 직무」 필드(도움말 "직원 등록에서 그 직무를 고르면 이 근로형태가 먼저 보여요. 직무의 기본 근로형태는 직무 설정에서 정해요.")·하단 안내 "이름·기본 근무(근무 그룹)을 입력하면 저장할 수 있어요."·비활성 안내 "비활성 근로형태는 직원 등록 목록에서 빠져요. 이미 그 근로형태인 직원은 그대로 유지돼요."
10근무 그룹 목록List• 근무 그룹을 카드/행으로 나열 — 그룹별 활성 배지 · "스케줄러" 배지 · "근무 유형" 버튼 노출 (라이브: "기본 근무" = 활성 + 스케줄러 배지 + [근무 유형] 버튼 / "3교대" 등). 설명 "비슷한 근무 형태를 묶는 단위예요. 예) 3교대·간호부·행정직"(원문). 하단 "근무 그룹 추가" 버튼
 - CASE01 [그룹 0건]: Empty state (원문 TBU)
shift_groups (추정)라이브 실증(2026-08-17 실사) · TBU: 그룹 Empty 원문
ㄴ10a상태 필터Select• 목록 상단 좌측 셀렉트(전체 상태 / 활성 / 비활성, 기본 "활성"). 역할 관리(#665)·병원 설정 > 근무시간 서브탭과 같은 로직(app.ts shiftStatusFilter 공용)
 - CASE01 [활성]: 활성 그룹만 노출, 그룹 안 유형도 활성만
 - CASE02 [비활성]: 비활성 그룹(안의 유형 전부) + 비활성 유형을 가진 활성 그룹(그 유형만)
 - CASE03 [전체 상태]: 그룹·유형 모두 활성 → 비활성 순 정렬, 비활성 그룹 카드 회색 배경·비활성 유형 행 흐림
 - CASE04 [필터 결과 0건]: "활성 상태인 근무 그룹이 없어요." / "비활성 상태인 근무 그룹·근무 유형이 없어요." (그룹 안 유형 0건: "활성 상태인 근무 유형이 없어요." / "비활성 상태인 근무 유형이 없어요.")
shift_groups.isActive · shifts.isActiveCS-LOC-260915-0002 · data-testid="type-manager-shift-status-filter"
ㄴ10b표 열 규칙 통일 · 머리글 「?」 툴팁 (파셜 단일화)Layout• 근무 설정 화면 본문을 설정 › 근무 설정 서브탭과 근태 설정 팝업이 같은 파셜 하나로 사용(두 사본 → 하나). 호스트 구분만 다름 — 설정 탭은 그룹 헤더 「직원 N명」이 직원 관리 링크, 팝업은 숫자만 표시
• 열 규칙을 직무 설정·근로형태와 통일 — 글줄 열 왼쪽 · 숫자 열 오른쪽 · 긴 값은 폭을 묶고 줄바꿈
 - 툴바 화면 도움말 「?」 + 요약 줄 원문 "근무 그룹 › 근무 유형으로 출퇴근 시각 · 휴게 · 적용 요일을 정해요."
 - 근무 유형 표 머리글마다 「?」 툴팁(여러 줄 말풍선)
 - 그룹 카드 = 헤더 전체 클릭으로 펼침/닫힘(기본 펼침), 액션 영역은 제외. 「스케줄러」 배지 툴팁 원문 "스케줄러 연동 그룹이에요. 근무표에서 날마다 근무 유형을 정하므로 직원은 그룹만 배정돼도 정상이에요."
 - 그룹 설명은 2줄까지 표시(클램프), 잘리면 전체 문장 툴팁
 - Empty(-E) [그룹 0건]: "등록된 근무 그룹이 없어요. 근무 그룹을 추가해 주세요." (10의 TBU 해소)
settings-shift-groups.html(공용 파셜, shiftHost = settings/popup) · 디자인시스템 .ds-help-badge·cell-trunc-tip · tooltip.ts · ㄴ02-1a · 직무 사양표 40-6 · 40-4신설 (코드 반영: dc081d8, #874) · 2026-09-25 실사 확인 — 머리글 「?」 툴팁 7종 원문: 코드 "스케줄러 근무표에 찍히는 약자예요. 그룹의 스케줄러 연동을 켠 유형만 코드가 있고, 연동을 끈 그룹은 「-」예요." · 시간 "출근–퇴근 시각이에요. 「+1」은 퇴근이 다음 날(야간)이라는 뜻이에요. 요일마다 다른 시간이 있으면 「요일별」 표시가 붙어요 — 수정 창의 「요일별 시간」에서 볼 수 있어요." · 요일 "이 근무 유형이 적용되는 요일이에요. 비워 두면 월–금으로 봐요. 근태 판정도 같은 기준이에요." · 근무/휴게 "하루 근무시간과 휴게시간이에요(시:분). 근태 판정, 근로형태의 근무시간·휴게 문구, 연차 환산이 이 값을 써요." · 연장 휴게 "연장근무를 할 때 빼는 휴게시간이에요. 0:00이면 연장근무 시간에서 휴게를 빼지 않아요." · 직원 "이 근무 유형으로 배정된 직원 수예요. 그룹만 배정된 직원은 그룹 헤더의 「직원 N명」에만 들어가요." · 상태 "비활성 유형은 새로 고를 수 없어요. 이미 배정된 직원은 그대로 남고, 직무 설정의 「기본 근무 재적용」이 활성 유형으로 맞춰 줘요."
ㄴ11+ 근무 그룹 추가Button• 새 근무 그룹을 생성하는 진입
• 클릭 시: 근무 그룹 폼 열림 → 저장 시 그룹 생성
shift_groups (추정)
ㄴ12편집 / 삭제 (그룹)Action• 개별 근무 그룹을 수정·삭제
• 클릭 시: "편집" → 근무 그룹 편집 폼 · "삭제" → 컨펌 후 삭제
shift_groups (추정)TBU: 삭제 컨펌 문구
ㄴ12-1삭제 시 직무 기본 근무 정리Rule• 근무 그룹·근무 유형을 soft delete 하면 이를 참조하던 직무 기본 근무도 함께 비움(팀·소속·직원과 같은 규칙)
 - 이유: 비우지 않으면 이름 없는 기본 근무가 걸린 채 「없음」 표시도 나오지 않음
job_duties.defaultShiftId · shift_groups · shifts신설 (코드 반영: b39d759, #801) · TBU: 라이브 실사 이월
ㄴ13+ 근무 유형 (그룹 내)Button• 해당 그룹에 근무 유형을 추가하는 진입
• 클릭 시: 근무 유형 폼 모달(30) 열림
shifts (추정)
20근무 유형 목록Grid• 그룹별 근무 유형을 그리드로 표시 — 컬럼(census): 코드 / 이름 / 근무시간 / 연장 휴게 / 상태 / 관리
 - CASE01 [유형 0건]: Empty state "등록된 근무 유형이 없어요."(census 원문)
shifts (추정)census
ㄴ21코드Cell• 근무 유형 코드 배지 표시 (D/E/N 등)
 - CASE01 [코드 없음 (그룹 '스케줄러 연동' OFF)]: 코드 배지 대신 "-" 표시
shifts.code (추정)코드 optional (d1c3f25) · 라이브: OFF 그룹 유형 0건이라 "-" 셀 실물 미관찰(폼 레벨 코드 숨김 메커니즘은 확인, 2026-08-17 실사)
ㄴ22이름Cell• 근무 유형명 표시shifts.name (추정)
ㄴ23근무시간Cell• 출퇴근 시각 + 적용 요일 + 근무/휴게 시간을 한 셀에 병합 표기 (라이브 원문 예: "09:00~18:00+1 월 화 수 목 금 8:00 / 휴게 1:00")
 - CASE01 [요일별 시간 있음]: 기본 시간과 다른 요일이 있으면 「요일별」 배지를 목록에 표시(dayOverrides — ㄴ34d). 시간 머리글 툴팁 원문 "…요일마다 다른 시간이 있으면 「요일별」 표시가 붙어요 — 수정 창의 「요일별 시간」에서 볼 수 있어요."
shifts.startTime / endTime / breakHours · shifts.dayOverrides (추정)병합 표기(라이브 hh:mm 실증, 2026-08-17 실사) · 2026-09-25 실사: 배지 라벨 = 「요일별」로 정정(커밋 3df87cb 당시 「화·목 다름」류 표현 폐기 — 툴팁 원문 근거). 실배지는 dayOverrides 설정 유형이 없어 미노출(표시 조건 자체는 툴팁으로 확정)
ㄴ24연장 휴게Cell• 연장 휴게 시간 표시 (h)shifts (추정)TBU: 산정 규칙
ㄴ25상태 / 관리Badge/Action• 활성/비활성 배지 + 편집/삭제 액션
• 클릭 시: "편집" → 근무 유형 폼 모달(30) · "삭제" → 컨펌 후 삭제
shifts.isActive (추정)TBU: 삭제 컨펌 문구
30근무 유형 폼Modal• 근무 유형을 생성/수정하는 폼 모달 (아래 필드)
• 클릭 시: "+ 근무 유형" 또는 "편집"으로 열림
 - CASE01 [저장]: 유형 생성/갱신
 - CASE02 ["코드 *"/"이름 *" 미입력]: 저장 불가(추정)
sdk.workType.create() (추정)필드 census · TBU: 실패 처리
ㄴ31코드 / 이름Input• 근무 유형 코드·이름 입력
• 입력 시: "이름 *" 필수
 - CASE01 [그룹 '스케줄러 연동' ON]: "이름 *"(예: 데이,이브닝,나이트) + "코드 *"(예: D,E,N) 2열 노출·필수 (스케줄러 셀 표기용)
 - CASE02 [그룹 '스케줄러 연동' OFF]: 코드 필드 미노출(x-show), "이름 *" 단독 1열 그리드 · 코드 값은 x-show 숨김이라 연동 OFF↔ON 전환 시 보존
shifts.code / name (추정)조건부 필수 (d1c3f25) · 라이브 폼 레벨 실증: ON=이름*+코드* / OFF=이름*만(2026-08-17 실사)
ㄴ32출퇴근 시간TimePicker• 출근/퇴근 시각 지정(라이브 출근 09:00/퇴근 18:00) + 야간 근무용 "익일 퇴근" 체크
• 선택 시: 익일 퇴근 ON이면 퇴근 시각을 +1일로 계산
shifts.startTime / endTime (추정)익일 퇴근 · 라이브 실증(2026-08-17 실사)
ㄴ33근무·휴게 시간Input• 근무 시간 / 휴게 시간 입력(hh:mm) — 근태 정규화 기준값. 라이브 근무 8:00·휴게 1:00근태 정규화 기준단위 hh:mm(라이브 실증)
ㄴ34적용 요일Checkbox• 월~일 칩 중 유형이 적용될 요일 선택(라이브 월~금 선택)
• 선택 시: 체크된 요일에만 유형 적용
shifts (추정)라이브 월~일 칩 실증(2026-08-17 실사)
ㄴ34a연차 차감 판정-• "연차 차감 판정" 선택 3옵션(원문): "요일 기준 (상근·고정 요일제)" / "듀티 기준 (3교대 등 교대 근무)" / "달력" — 달력 설명 원문 "주말·공휴일을 빼지 않고 신청일 그대로 차감해요."shifts (추정)라이브 신규 필드(2026-08-17 실사) · 세부 옵션 3종 원문 확정(2026-09-25 실사)
ㄴ34b공휴일 근무Checkbox• "공휴일에도 근무하는 유형" 토글 — 설명 원문 "켜면 이 직군에겐 공휴일이 일반 근무일이에요 — 공휴일에도 연차를 신청할 수 있고, 공휴일이 낀 연차도 그 날짜만큼 차감되며, 근태 정산에서도 휴일 가산 없이 일반 근무로 분류돼요."shifts (추정) · 공휴일 정책라이브 신규 필드(2026-08-17 실사) · 설명 원문 채록(2026-09-25 실사)
ㄴ34c상태Dropdown• "상태" 드롭다운(활성/비활성 등). 라이브 신규 관찰 필드shifts.isActive (추정)라이브 신규 필드(2026-08-17 실사, 옵션값 TBU)
ㄴ34d요일별 시간TimeRange• 한 근무 유형이 요일마다 다른 출퇴근 시각을 가질 수 있게 하는 칸(적용 요일로 체크한 요일만 노출). 기본 시간 컬럼은 그대로 두고 다른 요일만 shifts.dayOverrides에 덮어씀(NULL = 기존 동작). 예: 월수금 09:00–18:00 / 화목 09:00–15:00. 해석은 @hereby/core resolveShiftDay(shift, date) 단일 경로로 앱 출근·일괄 입력·지문·백필이 같은 기준 시각을 씀. 익일 퇴근은 요일 시간에서 파생, 휴게·오늘 상태 표시도 그날 요일 값 사용. 연차 환산의 1일 소정근로시간은 기본 근무 시간 한 값을 그대로 씀
 - CASE01 [dayOverrides NULL]: 기존 단일 시간 동작
 - 폼 실화면(2026-09-25 실사): 섹션 제목 "요일별 시간" + 안내 원문 "요일마다 시간이 다르면 그 요일만 체크해 따로 정해요. 체크하지 않은 요일은 위 「정규 시간」을 그대로 써요." — 적용 요일로 체크한 요일만 "{요일}요일은 다른 시간" 체크 + 시간 칸(예: 월~금 적용 유형이면 5행) 노출, 기본 시간 섹션 라벨은 「정규 시간」
shifts.dayOverrides · @hereby/core resolveShiftDay · [[HBAD250_근태 현황 (근무)]] · [[HBHR231_근태 내역 시트 (근무시간 유형 집계)]]신설 (코드 반영: 3df87cb, #774, 2026-09-17) · 라이브 실사 확인(2026-09-25 낮 스윕 — 폼 칸·안내 원문 실증, TBU 해소)
ㄴ35코드 라벨 색상ColorPicker• "코드 라벨 색상" (원문) — 스케줄러 셀에 표시될 코드 라벨 색상 팔레트 지정
• 선택 시: 간호 스케줄러 근무표 셀 색상에 반영
 - CASE01 [그룹 '스케줄러 연동' ON]: 코드 라벨색 팔레트 노출 (스케줄러 셀 표기용)
 - CASE02 [그룹 '스케줄러 연동' OFF]: 코드 라벨색 필드 숨김(x-show)
간호 스케줄러 표시조건부 노출 (d1c3f25) · 라이브 실증: ON 폼에만 "코드 라벨 색상" 노출(2026-08-17 실사)
ㄴ36스케줄러 연동Toggle• 간호 스케줄러 근무표 노출 여부 제어 (추정)
• 토글 시: ON → HBNS 근무표 셀 원천으로 노출(추정)
HBNS 간호 스케줄러cross-app
ㄴ37「기본으로 쓰는 직무」 칩Chips• 근무 유형 폼에서 반대 방향으로 같은 연결을 편집 — 이 근무형태를 기본 근무로 쓰는 직무를 칩으로 지정
• 저장 시: jobDuty.setDefaultShift 호출
 - 값 없음: 칩 없음(연결된 직무 없음)
 - 폼 실화면(2026-09-25 실사): "기본으로 쓰는 직무 (선택)" + 도움말 원문 "직원 등록에서 이 직무를 고르면 이 근무가 기본으로 선택돼요" + 「직무 추가」 버튼. 바로 위에 "대표로 쓰는 팀 (선택)"(도움말 "직원 등록 시 이 근무가 기본으로 선택돼요" + 「팀 추가」) 병렬 배치
job_duties.defaultShiftId · sdk.jobDuty.setDefaultShift()신설 (코드 반영: a6e8253, #801) · 라이브 실사 확인(2026-09-25)
ㄴ38칩만 변경 시 저장 활성Fix• 「대표로 쓰는 팀」·「기본으로 쓰는 직무」 칩만 바꾸면 저장 버튼이 비활성으로 남던 문제 수정 — 저장 활성·닫기 확인 판정(closeGuardForms)이 두 칩 배열도 감시-수정 (코드 반영: db5dcdc, #801) · TBU: 라이브 실사 이월

직무 사양표 (설정 › 직무 설정 서브탭 — 9/18 신설 / 9/21 별도 탭으로 이관) ​

⚠ 2026-09-21 위치 변경(a6e8253, #801): 9/18에는 근무 설정 화면 하단의 「직무」 섹션이었으나, 설정 › 「직무 설정」 서브탭(근태 설정 팝업 좌측 네비 「직무 설정」 섹션)으로 옮겨졌고 「목록」·「매핑표」 두 보기를 가진다. 상태 필터는 근무 설정의 활성/비활성 필터를 그대로 사용한다. 직무마다 기본 근무(그룹 › 형태)·허용 근무형태를 이어 두면 직원 등록·대량 추가에서 직무 기본 근무 → 팀 대표 근무 순서로 근무가 자동으로 채워진다.

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
40직무 섹션 헤더-• 제목 "직무" + 설명 원문 "직무마다 기본 근무를 정해 두면 직원 등록·대량 추가에서 근무가 자동으로 채워져요(직무 기본 근무 → 팀 대표 근무 순서)." + [직무 추가] 버튼job_duties (신설 엔티티)신설 (코드 반영: 7f63a4b, #791) · TBU: 라이브 실사 이월
40-1직무 설정 서브탭Tab• 설정 아래 「직무 설정」 서브탭(근태 설정 팝업 「직무 설정」 섹션)이 직무 마스터의 단독 진입점
• 보기 2종 전환: 「목록」(직군별 묶음) / 「매핑표」(직무 × 근무 그룹)
 - 기본 보기 = 「목록」 (2026-09-25 실사 확인)
• 근무 설정 하단의 기존 「직무」 섹션은 이 탭으로 이관
• 툴바(2026-09-25 실측): 상태 필터 · 「목록」/「매핑표」 토글 · 화면 도움말 「?」 · 「기본 근무 재적용」 · 「+ 직무 추가」
근태 설정 팝업(type-manager)신설 (코드 반영: a6e8253, #801) · 라이브 실사 확인(2026-09-25)
40-2직무 매핑표 (보기)Grid• 직무마다 기본 근무를 한 화면에서 이어 주는 표. 행마다 「근로형태(그룹)」 › 「근무형태」 select 2단으로 골라 셀에서 바로 저장
 - 설계 근거: 병원 「직무별 근로형태」 시트(근로형태 33개)를 넣어 보니 직무 × 그룹 격자는 열 34개·폭 5,300px 희소 격자가 되어 폐기(직무 하나는 그룹 하나만 사용)
 - CASE01 [「그룹만」인 다교대 그룹]: 형태 select 대신 비고 "형태 N개 — 등록할 때 골라요"
 - Empty(-E) / 저장 실패 문구 = TBU
job_duties.defaultShiftId · shift_groups신설 (코드 반영: b39d759, #801) · TBU: 라이브 실사 이월
40-3직군 묶음 정렬Fix• 「목록」 보기에서 직군 묶음이 역순으로 그려지던 버그 수정 — 묶음마다 tbody + 직군 헤더 행 구조로 변경(중첩 template x-for 렌더 순서 문제)
• 기대: 직군 순서대로 헤더 행 → 해당 직군 직무 행
-수정 (코드 반영: db5dcdc, #801 · 브라우저 확인에서 발견) · TBU: 라이브 실사 이월
40-4근무 그룹 헤더 「직무 N개」 링크Link• 근무 그룹 헤더에 이 그룹을 기본 근무로 쓰는 직무 수를 링크로 표시("직무 N개")
• 클릭 시: 직무 설정(해당 그룹 기준)으로 이동 (TBU: 필터 여부 라이브 확인)
job_duties신설 (코드 반영: a6e8253, #801) · TBU: 라이브 실사 이월
40-5기본 근무 재적용Action• 설정 › 직무 설정에서 이미 등록된 직원의 근무를 직무 기본 근무에 맞추는 기능. 미리보기 → 적용 2단계
 - 맞추는 대상: 근무가 비었음 · 그룹만 배정 · 비활성 값 · 기본에서 온 값
 - CASE01 [직접 고른 값]: 바꾸지 않고 유지
 - 같은 규칙(decideDefaultShiftReapply)을 직원 수정·대량 수정·마스터 시트에서 직무·근로형태만 바꾼 직원에게도 적용
 - 배경: 직무는 있는데 근무형태가 비었거나 직무와 무관한 옛 값이 남아 직원 관리에서 「미지정」으로 보이고 근태가 다른 유형을 붙이던 결함(MED-693)
 - 미리보기 화면 구성·적용 결과 문구 = 갱신 대기
job_duties.defaultShiftId · employees 근무 배정 · [[HBAD200_직원 관리]] ㄴ46-3 · [[HBAD201_직원 추가·수정 모달]] ㄴ50-3신설 (코드 반영: 33948ca, #851, MED-693) · 2026-09-25 실사: 툴바 「기본 근무 재적용」 버튼 + title 원문 "직무는 있는데 근무가 비었거나 비활성이거나 기본이 바뀐 직원을 찾아 직무 기본 근무로 맞춰요(미리보기 뒤 적용)." 확인(직무 0건 환경이라 미리보기 화면은 미실행)
40-6표 열 규칙 통일 · 머리글 「?」 툴팁 (직무 설정)Layout• 직무 설정의 「목록」·「매핑표」 두 보기를 근무 설정·근로형태와 같은 열 규칙으로 통일 — 글줄 열 왼쪽 · 숫자 열 오른쪽 · 긴 값은 안쪽 블록으로 폭을 묶고 줄바꿈
 - 툴바 화면 도움말 「?」(직무의 역할·두 보기·「기본 근무 재적용」 안내) + 요약 줄 원문 "직무마다 기본 근무를 정해 두면 직원 등록에서 근무가 자동으로 채워져요."
 - 「목록」 머리글 「?」 툴팁: 직무 / 기본 근무 / 직원 / 근무형태 분포 / 상태 (「관리」는 툴팁 없음)
 - 「매핑표」 머리글 「?」 툴팁: 근무 그룹 / 근무형태 (예: "…고르면 바로 저장돼요.")
 - 직무 설명은 2줄까지 표시(클램프), 잘리면 전체 문장 툴팁
 - 「없음」 배지 툴팁 원문 보강 "기본 근무가 없어요. 이 직무로 등록하면 팀 대표 근무로 넘어가요."
디자인시스템 .cell--left/.cell--right/.ds-help-badge/cell-trunc-tip · tooltip.ts · ㄴ10b · ㄴ02-1a신설 (코드 반영: dc081d8, #874) · 2026-09-25 실사: 화면 도움말 「?」 툴팁 원문 "직무는 「누가 어떤 근무를 쓰나」를 정하는 곳이에요. · 직무마다 기본 근무(근무 그룹 › 근무 유형)와 기본 근로형태를 두면, 직원 등록·대량 추가·직원 정보 수정에서 직무를 고르는 순간 근무가 채워져요(직무 → 팀 대표 근무 순서). · 「목록」은 직군별로 훑고, 「매핑표」는 행마다 근무 그룹·근무 유형을 골라 바로 저장해요 — 병원의 「직무별 근로형태」 표를 그대로 옮길 때 써요. · 「기본 근무 재적용」은 직무는 있는데 근무가 비었거나 비활성이거나 기본이 바뀐 직원을 찾아 맞춰 줘요(미리보기 뒤 적용)." (머리글 개별 툴팁은 직무 0건이라 미노출)
ㄴ41직무 목록Grid• 컬럼: 직무 / 직군 / 기본 근무 / 허용 근무형태 / 직원 / 근무형태 분포 / 상태 / 관리
• 「직원」 셀 = "{n}명" 버튼(title "이 직무로 등록된 직원 목록을 직원 관리에서 봐요.") — 클릭 시 직원 관리로 이동해 이 직무로 필터([[HBAD200_직원 관리]])
• 「근무형태 분포」 = 이 직무 직원이 실제 배정된 근무형태 분포(기본 근무와 다른 배정을 한눈에)
• 「관리」 = 편집(title "편집") / 삭제(title "삭제") 아이콘 버튼
 - CASE01 [상태 필터 활성/비활성]: "활성 상태인 직무가 없어요." / "비활성 상태인 직무가 없어요."
 - -E [직무 0건]: "등록된 직무가 없어요. 직무를 추가하면 직원 등록에서 목록으로 고를 수 있어요."
job_duties · employees신설 (코드 반영: 7f63a4b) · -E 원문 라이브 일치 확인(2026-09-25 실사, 직무 0건 환경 — 컬럼 구성 실화면은 미노출)
ㄴ41-1「유형 미지정」 경고Label• 「목록」 보기 기본 근무 셀에 노란 배지로 경고 표시 — 근무 그룹만 있고 근무 유형이 없는 직무
 - CASE01 [그룹만·스케줄러 그룹 아님]: 「유형 미지정」 배지 + 툴팁 "근무 그룹만 있고 근무 유형이 없어요. 3교대(스케줄러 그룹)가 아니면 유형을 정해 주세요."
 - CASE02 [기본 근무 없음]: 「없음」 배지 + 툴팁 "기본 근무가 없어요. 이 직무로 등록하면 팀 대표 근무로 넘어가요."
 - 3교대 등 스케줄러 연동 그룹은 「그룹만」이 정상이라 경고 없음
job_duties.defaultShiftId · shift_groups.schedulerEnabled · 40-5 기본 근무 재적용신설 (코드 반영: 33948ca, #851, MED-693) · 표시 위치·툴팁 원문 확정(dc081d8, #874) · TBU: 라이브 실사 이월
ㄴ42미배정 안내Text• 목록 하단 안내 "직무가 비어 있거나 목록에 없는 직원 {n}명 — 직원 정보 수정에서 직무를 골라 주세요."employees.jobDuty신설 (코드 반영: 7f63a4b) · 원문 라이브 일치 확인(2026-09-25 실사, n=300)
50직무 추가/수정 모달Modal• 제목 "직무 추가" / "직무 수정"(편집 시). 근무 그룹 모달과 같은 틀
 - 이름 * : placeholder "간호사, 간호조무사, 요양보호사 등" (최대 100자)
 - 설명 : placeholder "이 직무의 범위를 적어 두세요. (예: 병동 간호사 · 외래 제외)" (최대 200자)
 - 직군 : 병원 공통 분류(간호등급 등 병원 공통 계산의 기준), 기본 "미분류". 직원 등록 때 직군을 고르지 않으면 이 값이 기본값
 - 기본 근무 : 그룹 › 형태 2단계("그룹 미지정"/"형태 미지정"). 도움말 원문 "직원 등록·대량 추가에서 이 직무를 고르면 기본으로 선택돼요. 팀 대표 근무보다 먼저 보고, 등록할 때 바꿀 수 있어요." — 기본값일 뿐 제한 아님(팀 대표 근무와 같은 규칙)
 - 허용 근무형태 : "(비우면 제한 없음)" — 한 직무가 여러 근무형태를 가질 때(예: 간호사 = 통합병동 · 나이트 · 일반병동 · 외래). 도움말 "직원 등록의 근무형태 목록에서 이 형태들이 먼저 보여요. 기본 근무형태는 자동으로 포함돼요." -E [근무 유형 0건]: "등록된 근무 유형이 없어요."
 - 상태 : 활성/비활성
job_duties · shift_groups · shifts · sdk.jobDuty (JobDutyService)신설 (코드 반영: 7f63a4b, #791) · TBU: 라이브 실사 이월 · TBU: 삭제 확인 다이얼로그·직원 연결 시 삭제 거부 여부
ㄴ50-1허용 근무형태 체크 제거Change• 직무 폼의 「허용 근무형태」 체크 묶음을 제거(9/18 신설분 철회). 직무 ↔ 근무 연결은 「기본 근무」와 매핑표·근무 유형 폼 칩으로 일원화
• ⚠ 직무 목록(ㄴ41)의 「허용 근무형태」 컬럼 잔존 여부 = TBU(라이브 확인 필요)
job_duties변경 (코드 반영: a6e8253, #801) · TBU: 라이브 실사 이월

근무 유형 예시 (census 6종) ​

유형구분비고
일반근무기본 근무 그룹주간 표준
3교대 주간(D)3교대 그룹Day
3교대 오후(E)3교대 그룹Evening
3교대 야간(N)3교대 그룹Night (익일 퇴근)
스포츠 근무-특수 근무
스케줄 근무-스케줄러 연동

권한 · 상태 분기 요약 ​

시나리오트리거결과 화면비고
CASE01 [조회]근무 설정 진입그룹·유형 목록근태 관리
CASE02 [그룹 추가]"+ 근무 그룹 추가"그룹 폼 → 생성
CASE03 [유형 추가]"+ 근무 유형"유형 폼 모달 → 생성
CASE04 [유형 없음]유형 0건"등록된 근무 유형이 없어요."Empty
CASE05 [권한 없음]근태 관리 권한 미보유편집/추가 비활성 (추정)TBU

Open Question ​

  • ✅ 유형·기준 관리 모달 2026-08-17 라이브 최초 실오픈 — 좌측 네비 7종·근무 유형 폼 조건부 노출 실화면 대조 완료.
  • 좌측 네비 신규 2종 "연차 정책" / "공휴일" 섹션 내부 구성. TBU (별도 사양 편입 대상).
  • 근무 유형 폼 신규 필드 "연차 차감 판정"(옵션값)·"공휴일에도 근무하는 유형"·"상태"(옵션값) 세부. TBU.
  • 스케줄러 OFF 그룹 유형 목록 코드 "-" 셀 실물(현재 OFF 그룹 유형 0건이라 미관찰). 데이터 필요.
  • 근무 그룹/유형 엔티티명(shift_groups / shifts) 확정. TBU.
  • "연장 휴게" 컬럼 산정 규칙. TBU.
  • 그룹/유형 삭제 컨펌 문구 원문. TBU.
  • 스케줄러 연동 토글 ↔ 간호 스케줄러(HBNS) 근무표 매핑 → [[POL_근무설정]] 참조.
  • 요일별 시간(ㄴ34d)·목록 배지(ㄴ23) 라이브 실사 이월 → 2026-09-25 낮 스윕에서 해소: 폼 「요일별 시간」 칸 실증, 목록 배지 라벨은 「요일별」로 정정(툴팁 원문 근거). 남은 것: dayOverrides 실데이터 유형의 배지 실렌더·「요일별」 배지 셀 내 위치(데이터 생기면 확인).