HBHR281_판정 상세·수동 판정 모달
(Hereby) HR 급여 관리 > 시트 워크스페이스 > 법정공제 시트 > 판정 상세·수동 판정 모달
| 앱 | HR 급여 관리 (hr-system, 포트 4000) |
| 대상 사용자 | 조건1 [HR_ADMIN] / 조건2 [SUPER_ADMIN] |
| 프로토타입 | /workspace/group/deduction-screens/mockup-deduction-v1.html (판정 상세 모달 장면) |
| 관련 정책 | [[POL_공제_판정]] · [[POL_법정공제]] |
| Status | draft |
| Owner | 카나 |
| 부모 | [[HBHR280_법정공제 시트 (4대보험·소득세 월별)]] |
| 관련 | [[HBHR100_시트 워크스페이스 (공통 Shell)]] |
개요
- 판정 상세·수동 판정 모달은 [[HBHR280_법정공제 시트 (4대보험·소득세 월별)]]의 판정 배지 셀을 클릭했을 때 열리는, 행별 판정 근거 표시 + 수동 판정 override(사유 필수) 모달이다 (IA 19529769).
- 🔶 상태: 브랜치 미배포. 판정 클러스터 자체는 FIG PoC(§6-4①)에서 확인된 실체이나, 본 모달은 아직 배포되지 않은 브랜치 UI다. 따라서 이 문서의 모든 UI 텍스트는 "(기획 문구 — 목업 기준)"이며 확정 원문이 아니다. tRPC procedure·엔티티명은 라이브 미확인으로 TBU/(추정).
- 판정 규칙의 정의(적용/제외 기준, 특수케이스)는 본 사양서가 정하지 않는다 — [[POL_공제_판정]] 참조.
문서 히스토리
| 날짜 | 작성자 | 팀 | 변경 내용 |
|---|---|---|---|
| 2026-08-24 | 카나 | PM | 최초 작성 (IA 19529769 기준, 🔶 브랜치 미배포 — UI 텍스트 기획 문구) |
Data I/O
Server → Client
| 변수 | DB 엔티티.컬럼 | 값 없을 때 | 비고 |
|---|---|---|---|
${judgment.row} | 행별 판정 결과 (국민연금/건강/장기요양/고용 적용·제외) | 판정 미수행 시 이상값 노출(연령 0 등) | (추정) — ✓ §6-4① 판정 수식 열 근거 |
${judgment.reasons} | 판정 근거 (연령·초단시간·이중근로 등 사유코드) | 근거 없으면 공란 | (추정) · 사유코드 스키마 TBU |
${judgment.identity} | 숨김 identity(생년월일·입사일·주 소정근로시간·급여 마감일) | 부재 시 판정불가 표시 | ✓ §6-4① 숨김 입력 |
Client → Server
| 액션 | 전달 값 | tRPC procedure | 권한 토큰 |
|---|---|---|---|
| 수동 판정 override 저장 | rowId, itemKey, 판정값(적용/제외), 사유코드, 메모 | TBU (라이브 미확인 — 인터페이스 추정) | payroll:write (추정) |
| 모달 닫기 | — | 클라이언트 상태 | — |
🔶 브랜치 미배포로 override 저장 procedure·엔티티는 라이브 미확인 = TBU. 수동 판정은 audit 근거로 사유 코드 + 메모를 동결하는 것으로 설계 추정(§1-5 특수케이스 대응). 동결 저장 스키마 TBU.
화면 플로우 (Mermaid)
🔶 브랜치 미배포 — 위 플로우의 UI 문구·저장 동작은 기획/목업 기준이며 라이브 확정 아님.
판정 상세·수동 판정 모달 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 노출 조건 | - | [[HBHR280_법정공제 시트 (4대보험·소득세 월별)]]에서 판정 배지 셀 클릭 시 모달 오픈. 조건1 [HR_ADMIN]/조건2 [SUPER_ADMIN] | HBHR280 판정 클러스터 | 🔶 미배포 |
| 01 | 초기 상태 | Output | 클릭한 행의 4항목(국민연금/건강/장기요양/고용) 판정 결과 + 근거 표시 | $ | 기획 문구 — 목업 기준 |
| 10 | 모달 헤더 | Text | • 대상 직원·귀속월·항목 요약 표시 (원문 TBU) | employees · 시트 귀속월 | 원문 미확인 · TBU |
| 20 | 항목별 판정 리스트 | List | • 국민연금/건강보험/장기요양/고용보험 4행. 각 행에 "적용" | "제외 · {사유}"(기획 문구 — 목업 기준) 배지 - 사유 예: "60세 도달", "초단시간", "이중근로 부사업장"(기획 문구 — 목업 기준) | [[POL_공제_판정]] | 사유코드 근거 |
| ㄴ21 | 판정 근거 | Text | • 연령·초단시간·이중근로 등 사유코드 근거 표시. 연령 기준일 = payEndDate | ✓ §6-4① · [[POL_공제_판정]] | 근거 표시 |
| ㄴ22 | 판정불가 표시 | Text | • 숨김 identity 부재 시 판정불가(이상값) 안내 — [[HBHR282_계산 진단 패널 드로어]] 「판정불가」 분류와 연동 | [[HBHR282_계산 진단 패널 드로어]] | fail-safe |
| 30 | 수동 판정 override | Toggle | • 항목별 판정을 수동으로 적용/제외 전환하는 override 컨트롤 • 조작 시: override on → 사유 입력(40) 필수 노출 - 특수케이스(§1-5): 60세 연금상실·초단시간·이중근로 부사업장·일용직 등 | [[POL_공제_판정]] | 🔶 미배포 · 기획 문구 |
| 40 | 사유 입력 | Input Box | • 수동 판정 사유(사유코드 + 메모) 입력. 사유 필수 - CASE01 [사유 있음]: 저장 활성 - CASE02 [사유 없음]: 저장 차단(필수) | audit(사유코드+메모 동결)(추정) | 사유 필수 |
| 50 | 저장 버튼 | Button | • 수동 판정 override를 저장하는 버튼 • 클릭 → 저장(추정: audit 근거로 사유코드+메모 동결) → 모달 닫고 배지 갱신 - 실패·미확인 동작: TBU (라이브 미확인) | TBU procedure | 🔶 미배포 · procedure TBU |
| 60 | 닫기/취소 | Button | • 변경 없이 모달 닫기 (Esc) | 클라이언트 상태 | |
| 20-E | Empty (판정 근거 없음) | Text | • 판정 근거 0건 시 안내 (원문 TBU) | 원문 미확인 · TBU |
권한 요청 / 분기 요약
| 시나리오 | 트리거 | 결과 | 비고 |
|---|---|---|---|
CASE01 [배지 클릭] | 판정 배지 셀 클릭 | 판정 상세 모달 오픈 | 🔶 미배포 |
CASE02 [override + 사유 있음] | 수동 판정 전환 후 사유 입력·저장 | override 저장(사유코드+메모 동결)(추정) → 배지 갱신 | payroll:write (추정) |
CASE03 [override + 사유 없음] | 수동 판정 전환 후 사유 미입력·저장 | 저장 차단 (사유 필수) | 기획 문구 |
CASE04 [판정불가 행] | 숨김 identity 부재 | 판정불가 표시 + 진단 드로어 연동 | ✓ §6-4① fail-safe |
Open Question
- 수동 판정 override 저장 tRPC procedure·엔티티 = TBU (🔶 브랜치 미배포, 라이브 미확인)
- 사유코드 enum 전체 값 스키마(60세 도달/초단시간/이중근로/일용직 등) = TBU
- 수동 판정 동결(audit)의 저장 위치·필드(사유코드+메모) = (추정) → 확정 스키마 TBU
- 모달 헤더·판정 근거 표시 UI 원문 = TBU (라이브 실사 전, 기획 문구 기준)
- override가 재커밋/DeductionRecord appliedParameters에 반영되는 경로 = TBU