Skip to content

HBNS220_내 희망 일정 (내 근무시간)

(Hereby) 팀 관리(team-manager) > 간호 스케줄러 > 내 희망 일정 (내 근무시간)

간호 스케줄러 (team-manager 내장, 포트 TBU)
대상 사용자조건1 [간호 관리자] (내 근무시간·조회 모드) · 조건3 [간호사] (희망 입력, TBU)
프로토타입TBU
관련 정책[[POL_간호스케줄 Lifecycle]]
Statusdraft
Owner카나

개요

  • "📝 내 희망 일정" 뷰. admin 계정 라이브에서는 **"내 근무시간"**으로 표기되며 조회 모드로 동작한다.
  • 뷰 전환은 "조회 모드" 라벨 아래 "달력" / "목록" 전환 + "오늘" 이동을 제공한다.
  • 원문 인용: "선택한 달의 배정 근무와 실제 출퇴근 기록을 비교합니다." — 배정 근무 vs 실제 출퇴근을 대조하며, "배정 0일" / "출근 0일" 요약을 노출한다.
  • 실제 출퇴근 원천은 [[HBHR230]](HR 출퇴근 내역)이다.
  • 간호사 계정의 희망휴가/불가일/제한근무 입력2단계(nurseScheduler.preference.create.submit)로 라이브 확정됐다 (TC 확정: 04:4.2 — 기존 "라이브 미확보 TBU" 해소). ERD nurse_preferences(vacationDates / restrictedDates / unavailableDates / preferredDates / status)가 그 원천이며, admin은 nurseScheduler.preference.list로 조회한다.

문서 히스토리

날짜작성자변경 내용
2026-07-06카나PM최초 작성
2026-07-10카나PM라이브 기능 검토 반영
2026-07-13카나PM버튼 행동 명세 보강
2026-07-21카나PMGC700 깊이 재작성
2026-07-21카나PM셀 스타일 확정판 적용 (콸 승인)
2026-07-21카나PMTC 크로스체크 확정분 반영 (🟡 — 희망입력 preference.create+submit 2단계 라이브 확정, 미확보 TBU 해소 등)
2026-07-24카나PM코드 변경 반영(c235e2f·71f134e·535a404)
2026-07-25카나PM코드 변경 반영(c49479a·6beda4f·7c9cc5e·109ef41) — 희망 입력 팝오버 탭 제거·희망/제약/휴가 3그룹 단일 화면, 삭제 버튼 접근성·셀 컨텍스트 메뉴 재구성·스타일

Data I/O

Server → Client

변수DB 엔티티.컬럼값 없을 때비고
${assigned}nurse_schedule_entries[] (선택 월 배정 근무)배정 0건 → 요약 "배정 0일", 조회 셀 Empty(-E)admin "내 근무시간" 조회 대상
${attendance}실제 출퇴근 기록 ([[HBHR230]] 원천)기록 0건 → 요약 "출근 0일", 조회 셀 Empty(-E)배정 vs 실제 대조
${preferences}nurse_preferences (vacationDates / restrictedDates / unavailableDates / preferredDates / status)미입력 시 빈 목록간호사 희망 입력 원천 — 2단계 create+submit 라이브 확정 (TC 04:4.2). vacationDates 확장: string 레거시

Client → Server

액션전달 값tRPC/SDK권한 토큰
뷰 전환"달력" / "목록" / "오늘" (admin=조회 모드)클라이언트 표시 전환(추정)조건1
희망 입력(간호사 계정)year, month, wardId, vacationDates, unavailableDates(date+reason), preferredDates, notesnurseScheduler.preference.create(...)nurseScheduler.preference.submit(preferenceId) 2단계 (TC 확정: 04:4.2)조건3 (TBU)
희망 목록 조회(admin)wardId, year, monthnurseScheduler.preference.list({wardId, year, month}) (TC 확정: 04:4.2)조건1

외부 통합 (cross-app)

외부 시스템데이터동기/비동기비고
HR 출퇴근 내역 ([[HBHR230]])실제 출퇴근 기록동기(조회 로드)"출근 0일" 비교 원천

화면 플로우 (상태 머신 필수)

admin="내 근무시간" 조회 모드(배정 vs 출퇴근 비교). 간호사 계정 희망 입력 동선은 docs상 존재하나 라이브 미확보 = TBU.

내 희망 일정 / 내 근무시간 사양표

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00화면 진입 조건-조건1 [간호 관리자] 인증 시 "📝 내 희망 일정" 뷰 노출인증 세션TBU: 조건3 [간호사] 희망 입력 모드
01계정별 표기-• admin = "내 근무시간" 표기·조회 모드
조건3 [간호사] = 희망 입력 모드
TBU: 간호사 라이브 미확보
10조회 모드 전환Tab• "달력"/"목록" 조회 표시를 전환하고 "오늘"로 이동하는 뷰 컨트롤
• 탭 전환 → 해당 뷰로 표시 전환
 - CASE01 ["달력"/"목록"]: 조회 표시 전환
 - CASE02 ["오늘"]: 오늘 날짜로 이동
라벨 원문 카피·TBU: 전환 무반응 시 버그 후보
20비교 안내Output• "선택한 달의 배정 근무와 실제 출퇴근 기록을 비교합니다." 고정 노출원문 카피
30배정/출근 요약Output• 배정 근무 vs 실제 출퇴근을 대조해 "배정 0일" / "출근 0일" 요약 표기 (값 없음 시 0일)[[HBHR230]]
ㄴ31배정 근무Output• 선택 월 배정 셀 요약 "배정 0일"
 - CASE01 [배정 0건]: 조회 셀 Empty (아래 31-E)
nurse_schedule_entries
ㄴ31-E배정 없음(Empty)-E• 선택 월 배정 0건일 때 조회 셀 Empty, "배정 0일" 표기Empty·TBU: 빈 상태 문구
ㄴ32실제 출퇴근Output• 실제 출퇴근 기록 요약 "출근 0일"
 - CASE01 [기록 0건]: 조회 셀 Empty (아래 32-E)
[[HBHR230]]출퇴근 원천
ㄴ32-E출퇴근 없음(Empty)-E• 선택 월 출퇴근 0건일 때 조회 셀 Empty, "출근 0일" 표기Empty·TBU: 빈 상태 문구
40희망 입력(간호사)Input• 희망휴가/불가일/제한근무를 입력하는 간호사 전용 기능. 2단계 라이브 확정
• 입력 → nurseScheduler.preference.create(...) (draft 생성) → .submit(preferenceId) (제출) (TC 확정: 04:4.2)
nurse_preferences조건3 [간호사] 전용 · TBU: UI 동선·검증·에러
ㄴ40a희망 입력 팝오버 (단일 화면)Popover• 희망근무 입력 팝오버를 탭 제거 → 희망·제약·휴가 3그룹 단일 화면으로 재구성. 「희망 근무 유형(D/E/N)」·「근무 불가(전체+D/E/N)」·「휴가 예정」을 한 번에 노출, 메모(사유)는 하단 공통
• 조작 시: 버튼 on/off 토글, 한 셀에는 하나만 지정
 - CASE01 [토글]: 버튼 on/off로 지정/해제
 - CASE02 [상호 배타]: 같은 날 'D 원함'+'D 불가' 동시 지정 불가
• 배경: 탭 분리 시 다른 탭 선택값이 안 보여 확인하려면 탭을 왕복해야 했음
nurse_preferences (preferredDates / unavailableDates / vacationDates / notes)코드 반영: c49479a · 탭 제거·단일 화면
ㄴ41희망 필드Input• vacationDates / unavailableDates(date+reason) / preferredDates / notes + status(draft→submitted)nurse_preferencescreate→submit 2단계 (TC 04:4.2)
ㄴ42희망근무 휴가 유형 선택Select• 희망근무 '휴가'에서 스케줄러 연동 휴가 유형(코드·색·이름)을 선택해 날짜별로 저장·표시하는 기능. pref popover에 휴가 유형 칩, 코너 배지에 휴가 코드 노출
• 선택 시: 날짜별 휴가 유형 저장·표시
 - vacationDates 모델 확장: string 레거시
{date, leaveTypeId} 혼용 jsonbnurse_preferences.vacationDates (jsonb) · 스케줄러 휴가 유형
ㄴ43원하는/불가 시프트 근무유형 노출Select• '원하는 시프트'·'특정 시프트 불가'를 스케줄러 연동 근무유형(코드·라벨색·이름)으로 노출. 코너 배지에 근무유형 코드 노출
• 선택 시: 근무유형 기준 희망/불가 지정
nurse_preferences.preferredDates / restrictedDates · 스케줄러 근무유형신규 (코드 반영: 71f134e)
ㄴ44preference 탭 개선-• preference 탭 기능 개선 + 데이트피커 기본값 개선 (코드 반영: 535a404)nurse_preferences세부 TBU
ㄴ45삭제 버튼 접근성(스크롤)Button• 픽커 팝오버에서 스크롤 시에도 삭제 버튼 접근성 유지
• 스크롤 시: 삭제 버튼 도달 가능 유지
희망 입력 팝오버코드 반영: 6beda4f
ㄴ46셀 컨텍스트 메뉴 재구성Context Menu• 셀 컨텍스트 메뉴를 배정 목록 증가에 맞게 재구성
• 클릭 시: 재구성된 컨텍스트 메뉴 노출 (세부 TBU)
nurse_schedule_entries코드 반영: 7c9cc5e · 세부 TBU
ㄴ47"불가" 톤 통일·모달 클리핑 해제-• "불가" 톤 표기 통일 + 긴 모달 클리핑 해제 (스타일)희망 입력 팝오버코드 반영: 109ef41 · 스타일

권한·상태 분기 요약

시나리오트리거결과권한비고
CASE01 [admin 조회]"📝 내 희망 일정" 진입"내 근무시간" 조회 모드 — 배정 vs 출퇴근 비교조건1"배정 0일" / "출근 0일"
CASE02 [뷰 전환]"달력" / "목록" / "오늘"해당 뷰로 표시 전환조건1
CASE03 [간호사 희망 입력]간호사 계정희망휴가/불가일/제한근무 입력 → preference.create → .submit 2단계조건3라이브 확정 (TC 04:4.2)

Open Question

  • 간호사 계정 희망 입력 UI/화면 동선 = TBU (procedure는 preference.create.submit 2단계로 확정, TC 04:4.2)
  • nurse_preferences.status 전이 = create(draft) → submit(submitted) 확정 (TC 04:4.2); 이후 반려·재제출 전이 = TBU
  • 희망 입력 ↔ AI 자동생성([[HBNS201]]) 제약 반영 흐름 = TBU
  • 배정 vs 출퇴근 불일치 시 처리(경고/알림) = TBU
  • 조회 셀(달력/목록) Empty 빈 상태 문구 = TBU