HBHR202_직원 추가
(Hereby) HR 급여 관리 > 시트 워크스페이스 > 급여대장 시트 > 행 추가
| 앱 | HR 급여 관리 (hr-system, 포트 4000) |
| 대상 사용자 | 조건1 [HR_ADMIN] / 조건2 [SUPER_ADMIN] |
| 프로토타입 | TBU |
| 관련 정책 | [[POL_급여정본경계]] |
| Status | review |
| Owner | 카나 |
| 부모 | [[HBHR200_급여대장 시트]] |
개요
- 급여대장 시트 툴바의 ➕ 직원 추가(진입 버튼명 유지)를 클릭하면 "행 추가" 모달이 열린다. 모달 제목은 "행 추가", 안내 문구는 "한 명을 골라 추가하거나, 조건으로 여러 명을 한 번에 추가합니다.".
- 시트 행은 새로운 직원 마스터를 생성하는 것이 아니라, 기존 employee를 참조하는 행(
sheet_rows.employeeIdFK → employees)을 만든다. - 모달은 조건 필터 탭(전체 직원 / 부서·팀 / 이번 달 생일자 / 입사 기념일 / 입사 100일)으로 후보를 좁히고, "{n}명 후보" 카운트와 "전체 선택 · 전체 해제", 직원 리스트(사번 / 이름 / 소속)를 제공한다. 한 명 또는 여러 명을 선택해 한 번에 추가한다.
- 직원 마스터의 SoT는 Admin(직원 마스터)이며, 급여대장 시트는 그 employee를 참조해 급여 작업 행을 얹는 구조다. 시스템 컬럼(#/사번/성명/팀/직급)은 이 참조로 read-only 채워진다. 추가된 행은
sheet_rows.source가 manual(기본값)이 되며, 확정 전까지는 작업공간 행이다 ([[POL_급여정본경계]]).
문서 히스토리
| 날짜 | 작성자 | 팀 | 변경 내용 |
|---|---|---|---|
| 2026-07-06 | 카나 | PM | 최초 작성 |
| 2026-07-10 | 카나 | PM | 라이브 기능 검토 반영 (행 추가 모달 개편) |
| 2026-07-13 | 카나 | PM | 버튼 행동 명세 보강 |
| 2026-07-21 | 카나 | PM | GC700 깊이 재작성 |
| 2026-07-21 | 카나 | PM | 가독성 패스 + 액션 표기 (GUIDE §7·§8) |
| 2026-07-21 | 카나 | PM | 셀 스타일 확정판 적용 (콸 승인) |
Data I/O
Client → Server
| 액션 | 전달 값 | tRPC procedure | 권한 토큰 |
|---|---|---|---|
| 직원(행) 추가 | sheetViewId, employeeId[] | sdk.payrollSheet.addRows() (추정) | payroll:write (추정) |
Server side 효과 (행 생성)
| 대상 | 효과 | 비고 |
|---|---|---|
sheet_rows.sheetViewId (FK) | 대상 급여대장 시트에 행 추가 | |
sheet_rows.employeeId (FK → employees) | 선택 직원 마스터 참조 | 시트 행 = employee 참조 |
sheet_rows.source | manual (기본값) | 수동 추가 행 |
sheet_rows.sortOrder | 행 순번 부여 |
화면 플로우 (행 추가 동선)
직원 마스터 생성이 아니라 참조. 급여 계산/확정은 [[HBHR200_급여대장 시트]]/[[HBHR201_전체 확정 (commit)]]에서.
행 추가 모달 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 노출 조건 | - | 급여대장 시트 툴바 "➕ 직원 추가" 클릭 → "행 추가" 모달 노출 (진입 버튼명 유지) | [[HBHR200_급여대장 시트]] | 진입 버튼명 "직원 추가" |
| 01 | 초기 상태 | - | 기본 탭 "전체 직원" 활성, 후보 리스트 전 직원. 미선택 상태 = 추가 버튼 disabled(추정) | ||
| 10 | 타이틀 | Text | "행 추가" (원문) | ||
| 11 | 안내 문구 | Text | "한 명을 골라 추가하거나, 조건으로 여러 명을 한 번에 추가합니다." (원문) | ||
| 20 | 조건 필터 탭 | Tab | • 탭 조건으로 후보를 좁히는 기능. 탭: "전체 직원" / "부서 · 팀" / "이번 달 생일자" / "입사 기념일" / "입사 100일" • 클릭 시: 해당 조건으로 후보 필터 - CASE01 [탭 전환]: 후보 리스트·카운트 재산출 | Admin 직원 마스터 (employees) · 30 후보 카운트 | 조건별 후보 산출 |
| 30 | 후보 카운트 | Text | • 선택 조건 기준 후보 수를 "{n}명 후보"로 표기하는 기능. 조건 결과 0명 시 "0명 후보" | 20 조건 필터 | |
| 40 | 전체 선택 · 전체 해제 | Button | • 후보 리스트를 일괄 선택/해제하는 기능 ("전체 선택 · 전체 해제") • 클릭 시: 후보 전량 선택 또는 해제 | 50 직원 리스트 | |
| 50 | 직원 리스트 | List | • 후보 직원을 골라 선택하는 기능. 항목 = 사번 / 이름 / 소속. 시트 행 = employee 참조 • 클릭 시: 해당 직원 선택/해제 (한 명 또는 여러 명) | Admin 직원 마스터 (employees) | 마스터 생성 아님 |
| 50-E | Empty (후보 0) | Text | • 조건 결과 0명 시 빈 리스트 표시 | TBU: Empty 문구 원문 | |
| 60 | 행 추가 | Button | • 선택 직원(들)로 sheet_rows 행을 생성하는 기능 (source=manual) • 클릭 시: 즉시 실행 → 선택 직원 행 생성 - CASE01 [미선택]: 무반응/비활성(추정) | sheet_rows.employeeId FK | payroll:write (추정) |
| 70 | 시스템 컬럼 채움 | Output | • 추가 직후 #/사번/성명/팀/직급이 employee 참조로 read-only 자동 채움 | employees | |
| 80 | 값 없음 처리 | - | • 추가 직후 급여 항목 컬럼은 빈 셀/미계산 (추정) | TBU: 급여 항목 컬럼 초기값/필드 상세 |
관계: 시트 행 ↔ Admin 직원 마스터
| 계층 | 역할 | 정본성 |
|---|---|---|
| Admin 직원 마스터 (employees) | 직원 기본 정보 SoT (사번/성명/팀/직급) | 직원 마스터 정본 |
| 급여대장 시트 행 (sheet_rows) | employee를 참조하는 급여 작업 행 | 작업공간 (참조) |
시트에서 직원을 추가/제거해도 employee 마스터 자체는 변하지 않는다(참조 관계). 시스템 컬럼은 마스터가 SoT이므로 시트에서 read-only.
권한·상태 분기 요약
| 시나리오 | 트리거 | 결과 | 비고 |
|---|---|---|---|
CASE01 [직원 추가] | ➕ → 직원 선택 → 행 추가 | sheet_rows 행 생성 (employeeId 참조) | payroll:write (추정) |
CASE02 [시스템 컬럼] | 추가 직후 | 사번/성명/팀/직급 read-only 채움 | employee가 SoT |
CASE03 [후보 0명] | 조건 필터 결과 없음 | 빈 리스트, 추가 불가 |
Open Question
- 추가 시 급여 항목 컬럼 초기값/필드 상세 = TBU
- 미등록 직원(마스터 부재) 추가 가능 여부 및 마스터 생성 동선 = TBU
- 확정 후 행 제거 제약 (정본 record와의 관계) = TBU
- 미선택 상태 추가 버튼 disabled 여부 및 후보 0명 Empty 문구 = TBU