HBHR101_새 시트 만들기 모달
(Hereby) HR 급여 관리 > 시트 워크스페이스 > 새 시트 만들기 모달
| 항목 | 내용 |
|---|---|
| 앱 | HR 급여 관리 (HBHR) |
| 대상 사용자 | 조건1 [HR_ADMIN] |
| 부모 화면 | [[HBHR100_시트 워크스페이스 (공통 Shell)]] |
| 프로토타입 | TBU |
| 관련 정책 | [[POL_급여정본경계]] |
| Status | review |
| Owner | 카나 |
개요
워크스페이스 Shell([[HBHR100_시트 워크스페이스 (공통 Shell)]])의 상단 유틸 "+"(새 시트 만들기) 또는 빈 상태 진입 시 노출되는 새 시트 생성 모달을 정의한다. 4개 탭("✏️ 새 시트 만들기" / "📁 내 템플릿" / "⭐ 추천 템플릿" / "📥 업로드")으로 생성 모드를 분기하며, 공개/비공개 설정(기본 비공개)과 생성 액션(취소/만들기)을 포함한다. 기본 생성 규격은 1000행 × A~Z 26열이다.
"✏️ 새 시트 만들기"(scratch) 경로는 UP-009로 2단계로 확장된다 — 1단계에서 시트 이름 + "이 시트의 특징"(카테고리) 카드를 고르면 해당 특징의 컬럼 골격과 디폴트 수식이 제안되고, 2단계에서 추천 수식을 선택·참조 바인딩한 뒤 "만들기"로 생성하며(카테고리 미선택 시에는 기존처럼 "특징 없이 빈 시트로 만들기"로 빈 시트 생성), 생성된 시트는 설정 중(수명주기) 상태로 열린다([[HBHR100_시트 워크스페이스 (공통 Shell)]] 연동).
문서 히스토리
| 날짜 | 작성자 | 팀 | 변경 내용 |
|---|---|---|---|
| 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 | 셀 스타일 확정판 적용 (콸 승인) |
| 2026-08-11 | 카나 | PM | 템플릿 실시간 검색·토요일 인센 템플릿 반영(8a76dce·3a08cfb) |
| 2026-08-12 | 카나 | PM | 카테고리 기반 생성 2단계(UP-009) 반영(9d7b44a) |
| 2026-08-17 | 카나 | PM | 라이브 실사 검증 반영(dev v0.1.0+) |
Data I/O
Server → Client
| 변수 | 엔티티.컬럼 | 값 없을 때 | 비고 |
|---|---|---|---|
| $ | PayrollSheetTemplate (추정) | Empty 상태 ("📁 내 템플릿" 탭) | 목록 필드 세부 TBU |
| $ | PayrollSheetTemplate.isRecommended (추정) | hide | "추천 템플릿 19" 카운트로 표기 |
Client → Server
| 액션 | 전달 값 | tRPC procedure | 권한 토큰 |
|---|---|---|---|
| 시트 생성 ("만들기") | name, folderId, isPublic, template | sdk.payrollSheet.create() (추정) | payroll:write (추정) |
| 내 템플릿 목록 조회 | - | sdk.payrollSheet.myTemplates() (추정) | payroll:read (추정) |
| 추천 템플릿 목록 조회 | - | sdk.payrollSheet.recommendedTemplates() (추정) | payroll:read (추정) |
| 파일 업로드 ("📥 업로드") | file | TBU | payroll:write (추정) |
procedure·엔티티 매핑은 라이브 확인 전 추정치이며, 확정 시 갱신한다.
화면 플로우
모달 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 노출 조건 | - | • Shell 상단 우측 유틸 "+" 또는 빈 상태 진입 시 모달을 노출하는 조건. 조건1 [HR_ADMIN] 시 노출, 그 외 진입점 hide | [[HBHR100_시트 워크스페이스 (공통 Shell)]] | 권한 세부 TBU |
| 01 | 초기 상태 | - | • 모달 열림 직후 기본 상태를 정의 - CASE01 [기본 탭]: "✏️ 새 시트 만들기" 활성 - CASE02 [이름 미입력]: "만들기" disabled - CASE03 [공개 체크박스]: 기본 해제(비공개) | 40, 51 | |
| 10 | 타이틀 | Text | • 모달 상단 "새 시트 만들기" 타이틀 | — | |
| 20 | 생성 모드 탭 | Tab | • 4탭("✏️ 새 시트 만들기" / "📁 내 템플릿" / "⭐ 추천 템플릿" / "📥 업로드")으로 생성 모드를 분기하는 탭 • 클릭 시: 해당 탭 하단 패널로 교체 | 21~24 | TBU: 에러·실패 동작 |
| ㄴ 21 | ✏️ 새 시트 만들기 | Tab 패널 | • 시트 이름 입력 후 생성하는 직접 생성 모드 — UP-009로 2단계 확장 (ㄴ26~28). 특징 미선택 시 기존처럼 빈 시트(기본 규격 1000행 × A~Z 26열, columnKey col_1~col_26) • 클릭 시: 직접 생성 모드로 전환 | 30, 51, ㄴ26 | 1000행×26열 · 카테고리 생성(9d7b44a) |
| ㄴ 26 | 시트 특징(카테고리) 선택 | Card 선택 | • 1단계 — 시트 이름 아래 특징 카드 선택 영역. 섹션 헤더 "이 시트의 특징 — 고르면 컬럼과 수식이 맞춰 제안돼요". 카드 4종 원문(카탈로그): ① 🕐 근무기록형 — "출퇴근 시각·횟수를 적으면 수당을 계산해요 (시간외·나이트·휴일)" / ② 📊 실적형 — "치료 건수·회차로 인센티브를 계산해요" / ③ 📋 명부형 — "대상자 명단에 금액을 직접 적어요 (기타수당·특별수당)" / ④ 📐 기준형 — "단가표·기준값을 관리해요 (호봉표·단가)". 선택 시 해당 특징의 컬럼 골격+디폴트 수식이 제안됨 • 카드 선택 시: "다음 — 수식 고르기" 버튼 활성 → 2단계(ㄴ27). 특징 미선택·이름 입력 시 "특징 없이 빈 시트로 만들기" 버튼(이름 미입력 시 disabled) - CASE01 [특징 미선택]: 기존 빈 시트 생성 경로 유지 | sheet-category-catalog · ㄴ27 | 신규(UP-009, 9d7b44a) · 카테고리는 sheet_view에 저장 · 8/17 라이브 실사: 카드 4종·섹션 헤더·버튼 원문 확정 |
| ㄴ 27 | 디폴트 수식 선택·참조 바인딩 | Step 패널 | • 2단계 — "{카테고리} — 추천 수식 고르기". 컬럼 골격 미리보기 + 추천 수식 체크 리스트. 헤더 "컬럼 미리보기 · {n}개 ✎ 더블클릭 = 컬럼 이름 바꾸기 — 연결된 수식 슬롯이 따라와요" / "추천 수식 · 기본 전부 체크 · 「참조 연결」로 슬롯 ↔ 컬럼 바인딩". 컬럼 칩에 "자동" 뱃지(사번·성명). 수식별 참조 슬롯 바인딩: 컬럼 슬롯=이름 자동 매칭(실패 시 슬롯 "[야간시간] ← ⚠ (연결 안 됨)" + "⚠ 연결 필요" 뱃지), 시스템 값 슬롯="[통상시급] ← 개인별 자동 (직원 연결값) 🔒", 수식 참조 슬롯=다른 칩 결과 인라인 치환(🔒). 푸터 "수식은 만들고 나서 설정에서 바꿀 수 있어요. · 연결 안 된 수식은 생성 시 제외돼요(설정에서 연결 가능)." • "뒤로" 클릭 시: 1단계 복귀 / "만들기" 클릭 시: 생성(ㄴ28). 2단계 버튼 = [취소] [뒤로] [만들기] | ㄴ26, 51 | 신규(UP-009) · 슬롯 kind 3종(column/formula/system) · 8/17 라이브 실사: 2단계 헤더·슬롯·푸터·버튼 원문 확정 |
| ㄴ 28 | 카테고리 생성 결과 | 동작 | • 골격 컬럼+체크된 수식이 적용된 시트 생성, 설정 중(수명주기) 상태로 열림 - CASE01 [미연결 수식 존재]: 해당 수식 제외 + 토스트 안내 - CASE02 [생성 성공]: 성공 토스트 | [[HBHR100_시트 워크스페이스 (공통 Shell)]] 수명주기 | 신규(UP-009) · TBU: 생성 토스트 문구 원문 — 시트 생성 실행 필요로 8/17 실사 미검증 |
| ㄴ 22 | 📁 내 템플릿 | Tab 패널 | • 저장된 템플릿 목록을 노출하고 선택 시 해당 템플릿 기반 시트를 생성하는 모드 • 클릭 시: 저장 템플릿 목록 노출 - Empty [저장 템플릿 없음]: 22-E Empty 상태 노출 | $ | TBU: 목록 항목 구조·필드 세부 · Empty 문구 원문 |
| ㄴ 23 | ⭐ 추천 템플릿 | Tab 패널 | • 시스템 제공 템플릿 목록을 노출하고 선택 시 해당 템플릿 기반 시트를 생성하는 모드. 탭에 "추천 템플릿 19" 카운트 표기(제공 템플릿 수). 제공 템플릿에 "치료 토요일 인센티브(특별수당)" 포함(therapy Saturday incentive template for special allowance) • 클릭 시: 시스템 제공 템플릿 목록 노출 - CASE01 [카운트 0]: hide 여부 미확정 | ${recommended_templates}, 25 | 카운트 19 · TBU: 개별 제공 템플릿 목록·필드 세부 · 카운트 0 시 hide 여부 |
| ㄴ 25 | 템플릿 실시간 검색 | Input Box | • 템플릿 탭에서 키워드 입력 시 템플릿 목록을 라이브 필터링하는 검색 필드. placeholder "템플릿 검색"(aria "추천 템플릿 검색") • 입력 시: 키워드로 템플릿 목록 실시간 필터 + 일치 키워드 하이라이트 표시 - CASE01 [키워드 미입력]: 전체 템플릿 목록 노출 - CASE02 [일치 없음]: 결과 없음 — "'{검색어}' 검색 결과가 없어요." | 22, 23 | 라이브 필터 + 키워드 하이라이트 · 8/17 라이브 실사: placeholder·결과 없음 문구 확정 |
| ㄴ 24 | 📥 업로드 | Tab 패널 | • 파일 업로드 후 시트를 생성하는 모드 • 클릭 시: 파일 업로드 → 시트 생성 | [[HBHR102_파일 메뉴]] | TBU: 파일 메뉴 "📤 업로드"와 동일 동선 여부·지원 포맷·포맷 미지원 시 에러 |
| 30 | 시트 이름 | Input Box | • 시트명을 입력받는 필드("✏️ 새 시트 만들기" 탭 필수). placeholder "예: Q4 NDT 야간수당 검토" • 입력 시: 시트명 반영 → "만들기" enabled(51) - CASE01 [미입력]: "만들기" disabled(51) | 51 | 8/17 라이브 실사: placeholder 원문 확정 |
| 40 | 공개 설정 | Checkbox | • 공개/비공개를 토글하는 체크박스 "공개 (체크 해제 시 비공개 — 본인만 열람)", 기본 unchecked(비공개) • 클릭 시: 공개/비공개 토글 - CASE01 [체크]: 공개 — 전체 열람 - CASE02 [해제]: 비공개 — 본인만 열람 | — | 기본 비공개 |
| 50 | 취소 | Button | • 모달을 닫고 생성을 취소하는 버튼 • 클릭 시: 모달 닫기, 생성 취소 - CASE01 [변경 없음]: 입력값 폐기, 즉시 닫힘 - CASE02 [2단계 변경 있음]: 확인 다이얼로그 노출 "변경된 내용을 저장하지 않고 나가시겠어요?" / 버튼 [계속편집] [나가기] | [[HBHR100_시트 워크스페이스 (공통 Shell)]] | 8/17 라이브 실사: 변경 있는 상태 취소 시 확인 다이얼로그 노출 확정 |
| 51 | 만들기 | Button | • 시트를 생성하고 해당 시트로 이동하는 버튼(추정) • 클릭 시: 시트 생성 후 해당 시트로 이동 - CASE01 [이름 미입력]: disabled - CASE02 [이름 입력됨]: enabled - CASE03 [생성 실패]: 토스트/무반응 여부 미확정 | 30, [[HBHR100_시트 워크스페이스 (공통 Shell)]] | disabled 규칙 · TBU: 생성 실패 처리 |
Open Question
- 생성 모드 탭(20) 탭 전환 에러·실패 동작 = TBU
- 추천 템플릿(23) 카운트 0일 때 hide 여부 = TBU
- 내 템플릿(22) / 추천 템플릿(23) 목록 항목 구조·필드 세부 = TBU
- 카테고리 생성 토스트 문구 원문(ㄴ28) = TBU (시트 생성 실행 필요로 8/17 실사 미검증)
- 내 템플릿 Empty(22-E) 노출 문구 원문 = TBU
- 업로드 탭(24)이 파일 메뉴 "📤 업로드"와 동일 동선인지 여부 및 지원 포맷 = TBU
- 파일 업로드 procedure = TBU
- "만들기"(51) 생성 실패 시 에러 처리 동작 = TBU