Skip to content

HBHR220_연장근무 내역 시트

(Hereby) HR 급여 관리 > 시트 워크스페이스 > 연장근무 내역 시트

HR 급여 관리 (hr-system, 포트 4000)
대상 사용자조건1 [HR_ADMIN] / 조건2 [SUPER_ADMIN]
프로토타입TBU
관련 정책[[POL_급여정본경계]]
Statusreview
Owner카나
부모[[HBHR100_시트 워크스페이스 (공통 Shell)]]

개요

  • 연장근무 내역 시트는 직원별 연장·야간·휴일 초과근무 신청/승인 내역을 한 행으로 표현하는 **급여 입력 원천 시트(작업공간)**다.
  • 좌→우 12컬럼 구조이며, overtime_records(FK 4종: employeeId·organizationId·shiftId·typeId)를 근거로 한다.
  • 승인상태 컬럼은 팀결재(HBTM01) 결재 결과를 소비한다 — 이 시트에서 승인하지 않고 overtime_records.status를 표시만 한다.
  • 값은 초과근무 calculator(16 output keys)의 입력 원천이며, 주 52시간 상한 판정과 연결된다.
  • 시트=작업공간, 정본=commit 경계다. 승인 연장시간 × 통상시급 × 배수 = 연장수당은 확정(commit) 시에만 allowance_records로 정본화된다 ([[POL_급여정본경계]] 참조). 커밋 산출 record는 item-code FK가 아니라 targetSheetSlug+targetColumnKey 페어로 급여대장 집계 컬럼에 앵커된다 (2026-06-19 모델, migration 1816 — TC 확정: 10:10.1~10.3).

문서 히스토리

날짜작성자변경 내용
2026-07-06카나PM최초 작성
2026-07-10카나PM라이브 기능 검토 반영
2026-07-13카나PM버튼 행동 명세 보강
2026-07-21카나PMGC700 깊이 재작성
2026-07-21카나PM가독성 패스 + 액션 표기 (GUIDE §7·§8)
2026-07-21카나PM셀 스타일 확정판 적용 (콸 승인)
2026-07-21카나PMTC 크로스체크 확정분 반영 (🟡)
2026-07-21카나PM🔴 정정: record 타깃 페어 모델(item-code FK 폐기) (TC 정본, 콸 승인)

Data I/O

Server → Client

변수DB 엔티티.컬럼값 없을 때비고
${sheet.rows}overtime_records[] (기간 필터)0건 시 빈 그리드초과근무 행
${row.status}overtime_records.status (overtime_records_status_enum)공란HBTM 승인 결과 소비
${row.category}overtime_records.category (default weekday)default weekday구분
${row.multiplier}overtime_types.multiplier (typeId FK, default 1.5)default 1.5수당 배수

Client → Server

액션전달 값tRPC procedure권한 토큰
셀 편집rowId, columnKey, valuesdk.payrollSheet.updateCell() (추정)payroll:write (추정)
컬럼 수식/바인딩 변경columnKey, formula/calculatorKeysdk.payrollSheet.updateColumn() ([[HBHR107_컬럼 헤더 컨트롤]])payroll:write (추정)
재계산 previewsheetIdcompute preview (읽기 전용, [[HBHR203_재계산 diff 뷰]])

승인상태 소비 (HBTM01 근무 관리) · 연장 파이프라인·승인 게이트

연장·휴일 근무 큐에서 팀장 승인/반려 결과 = overtime_records.status. 상태 값: 대기 / 승인 / 반려 / 취소 / 보고서 대기 / 보고서 승인 / 보고서 반려.

연장 파이프라인(라이브 확정): 유저 overtime.request(PENDING) → 팀장 teamManager.approveOvertime → 유저 overtime.submitReport(id, actualHours, note) → 팀장 teamManager.approveOvertimeReport(ids). 보고서 승인 시 overtimeHours를 actualHours로 재기록한다.

급여 집계 게이트 (2026-06-11): approved / report_ (승인·보고서 승인) 상태 행만 급여 집계 대상. PENDING(대기)은 집계에서 제외*. (TC 확정: 10:10.1~10.3 overtime→computed→commit)

Calculator 연동

컬럼(ƒ) ↔ 초과근무 calculator(16 output keys): 연장/야간/휴일 시간 × 통상시급([[HBHR210_계약급여내역 시트]]) × 배수(overtime_types.multiplier)로 수당 산출 (16키 세부 = TBU).

화면 플로우 (Mermaid)

이 시트는 INPUT 원천 시트다. 승인상태는 HBTM01에서 결정되어 표시만 되며, 정본 record 생성은 급여대장 전체 확정([[HBHR201_전체 확정 (commit)]])에서만 발생한다.

컬럼 사양표 (12컬럼, 좌→우 — 기본 템플릿 기준)

컬럼 순서·명칭은 기본 템플릿 기준이며, 시트별 실데이터는 사용자 컬럼 편집으로 변형될 수 있다. 내부 fieldKey 11종: workDate / employeeNumber / employeeName / department / category / startTime / endTime / overtimeHours / mealBreakHours / status / notes.

#컬럼타입설명 (용도·형식)연관 (ERD/calculator/타 앱)비고
1#Index• 행 순번을 표시하는 시스템 컬럼 (read-only)sheet_rows.sortOrderread-only
2근무일DatePicker• 초과근무 발생일(YYYY-MM-DD)을 지정하는 DatePicker 컬럼
• 입력 시: overtime_records.workDate 갱신 (작업공간)
overtime_records.workDate / fieldKey=workDate
3사번Text (system)• 직원 사번을 표시하는 시스템 컬럼 (read-only)employees.employeeNumber / fieldKey=employeeNumber시스템 컬럼
4성명Text (system)• 직원 성명을 표시하는 시스템 컬럼 (read-only)employees.name / fieldKey=employeeName시스템 컬럼
5부서Text (system)• 소속 부서/팀을 표시하는 시스템 컬럼 (read-only)teams / fieldKey=department시스템 컬럼
6구분Badge• 초과근무 유형(평일/야간/토요일 등)을 표시하는 Badge 컬럼overtime_records.category (overtime_records_category_enum, default weekday) / fieldKey=categoryTBU: category enum 전체값
7시작Time• 초과근무 시작 시각(HH:MM)을 지정하는 Time 컬럼
• 입력 시: overtime_records.startTime 갱신
overtime_records.startTime / fieldKey=startTimenullable
8종료Time• 초과근무 종료 시각(HH:MM)을 지정하는 Time 컬럼
• 입력 시: overtime_records.endTime 갱신
overtime_records.endTime / fieldKey=endTimenullable
9연장시간Output/Number• 인정 연장근무 시간(h)을 표시하는 Output 컬럼. numeric(7,2), 식사휴게 차감 후overtime_records.overtimeHours / fieldKey=overtimeHours · 초과근무 calculator 입력식사휴게 차감 후
10식사휴게Number• 식사·휴게 차감 시간(h)을 입력하는 컬럼. numeric(7,2), 연장시간 산정 제외
• 입력 시: overtime_records.mealBreakHours 갱신, 연장시간 재산정
overtime_records.mealBreakHours (default 0) / fieldKey=mealBreakHours연장시간 산정 제외
11승인상태Badge• HBTM 결재 결과를 소비해 표시하는 Badge 컬럼. 대기/승인/반려/취소/보고서 대기/보고서 승인/보고서 반려overtime_records.status / fieldKey=status ← HBTM01 근무 관리이 시트에서 승인 불가(표시 전용)
12메모Text• 비고/사유를 입력하는 메모 컬럼
• 입력 시: overtime_records.notes 갱신
 - 셀 메모(💬) 클릭 시: payroll_cell_memos 별도 저장
overtime_records.notes / fieldKey=notes · payroll_cell_memos(columnKey)

공통 우측 컬럼군(재계산 diff + eCount)은 [[HBHR203_재계산 diff 뷰]] 참조.

연동·플로우

  • 승인 소비 흐름: Employee App 신청 → HBTM01 근무 관리 승인(overtime_records.status) → 본 시트 승인상태 표시 → 승인 행만 급여 반영.
  • 52시간 이슈: 주표준시간([[HBHR210_계약급여내역 시트]]) + 연장시간 합산이 주 52시간 상한 근접/초과 시 경고. HBTM 52시간 preflight는 docs 명문 / 라이브 UI 미노출(HBTM01 §50, TBU). HR 시트 측 경고 UI 위치 = TBU.
  • 버전 관리: overtime_records는 chainId/version/supersededAt 보유 — 정정 시 새 version(추정). 시트는 최신 version 표시(TBU).
  • 확정 경계: 승인 연장시간 × 통상시급 × 배수 = 연장수당, 전체 확정([[HBHR201_전체 확정 (commit)]]) 시 allowance_records로 정본화.

권한·상태 분기 요약

시나리오트리거결과비고
CASE01 [시스템 컬럼 편집 시도]사번/성명/부서 셀 편집차단 (read-only 바인딩, 입력 무시)employee 마스터가 SoT
CASE02 [ƒ 컬럼/원천 셀 편집]연장시간/식사휴게 등 셀·수식 변경작업공간 업데이트 (payroll:write 추정)commit 무관
CASE03 [승인상태 소비 행]overtime_records.status = 대기/승인/반려 등표시 전용 (이 시트에서 승인 불가)HBTM01이 결재 SoT

Open Question

  • 초과근무 calculator 16 output key 세부 및 컬럼 매핑. TBU.
  • overtime_records_category_enum / status_enum 전체 값. TBU.
  • 급여 산입 대상 상태 정책(승인만 vs 보고서 승인 포함)approved / report_ 만 집계, PENDING 제외* 확정(2026-06-11 게이트). 보고서 승인이 overtimeHours←actualHours 재기록. (TC 확정: 10:10.1~10.3)
  • 52시간 경고의 HR 시트 노출 위치([[HBHR203_재계산 diff 뷰]] preflight vs 인라인). TBU.
  • 정규/야간/휴일 분해가 이 시트인지 근태 내역([[HBHR231_근태 내역 시트 (근무시간 유형 집계)]])인지 경계. TBU.