HBHR108_폴더·휴지통 사이드바
(Hereby) HR 급여 관리 > [[HBHR100_시트 워크스페이스 (공통 Shell)]] > 좌측 사이드바 > 폴더·휴지통
| 앱 | HR 급여 관리 (HBHR) |
| 대상 사용자 | 조건1 [HR_ADMIN] / 조건2 [SUPER_ADMIN] |
| 프로토타입 | TBU |
| 관련 정책 | [[POL_급여정본경계]] |
| Status | review |
| Owner | 카나 (PM) |
개요
- 워크스페이스 좌측에 상시 노출되는 폴더·휴지통 사이드바를 정의한다. "폴더" 탭은 폴더 트리(▸▾ 접기)로 시트를 나열하고, "휴지통(🗑)" 탭은 삭제된 시트를 보관한다(복원 전용, 영구 삭제/비우기 UI 없음).
- 시트 삭제는 사이드바 시트 우클릭 → "삭제" → 네이티브 confirm이 유일 경로(파일 메뉴엔 삭제 없음)이며, 워크스페이스 헤더 "폴더 관리" 버튼으로 폴더 관리 모달을, "이전 월 가져오기" 버튼으로 이전 월에서 가져오기 모달을 연다.
- 용어 결정(신규 확정): "그룹" → "폴더"로 확정. 근거 = 폴더 관리 모달 및 "+ 새 폴더" 버튼 원문. 본 문서 및 하위 참조는 "폴더" 표기를 정본으로 한다.
문서 히스토리
| 날짜 | 작성자 | 팀 | 변경 내용 |
|---|---|---|---|
| 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 | 급여대장 단독 행 승격·연결 표식·수명주기 표식 반영(#528·#540) |
| 2026-08-17 | 카나 | PM | 라이브 실사 검증 반영(dev v0.1.0+) |
Data I/O
Server → Client
| 변수 | 엔티티.컬럼 | 값 없을 때 | 비고 |
|---|---|---|---|
| $ | PayrollSheet.folder 그룹 (추정) | "(미분류)"로 fallback | 폴더별 시트 그룹 + 건수 |
| $ | PayrollSheet[] (period·folder 필터) (추정) | 빈 폴더 → Empty (문구 TBU) | 시트 아이템 "{이름} '26.7" + 건수 |
| $ | PayrollSheet[] (deletedAt not null) (추정) | 빈 휴지통 (문구 TBU) | 휴지통 보관 시트 |
| $ | 폴더별 {이름} + {n}개 시트 (추정) | "(미분류)" 제외 목록 (추정) | 폴더 관리 모달 원천 |
Client → Server
| 액션 | 전달 값 | tRPC procedure | 권한 토큰 |
|---|---|---|---|
| 탭 전환(폴더/휴지통) | tab | 클라이언트 상태 (추정) | - |
| 폴더 접기/펼치기 | folderId, expanded | 클라이언트 상태 (추정) | - |
| 시트 로드 | sheetId | sdk.payrollSheet.get() (추정) | payroll:read (추정) |
| 시트 전환(j/k) | direction | 클라이언트 상태 (추정) | - |
| 시트 삭제(우클릭→삭제) | sheetId | sdk.payrollSheet.delete() (추정) — soft delete, 네이티브 confirm 후 | payroll:write (추정) |
| 휴지통 복원 | sheetId | sdk.payrollSheet.restore() (추정) — 영구 삭제/비우기 없음 | payroll:write (추정) |
| 폴더 관리 (새 폴더 생성) | folderName | sdk.payrollSheet.createFolder() (추정) | payroll:write (추정) |
| 이전 월에서 가져오기 | selectedSheetIds[] | sdk.payrollSheet.importFromPrevMonth() (추정) | payroll:write (추정) |
화면 플로우
폴더·휴지통 사이드바 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 노출 조건 | - | 워크스페이스 진입 시 좌측에 상시 노출. 상위 노출은 [[HBHR100_시트 워크스페이스 (공통 Shell)]] 40(좌측 사이드바)에서 위임 | [[HBHR100_시트 워크스페이스 (공통 Shell)]] 40 | 상시 노출 |
| 10 | 폴더/휴지통 탭 전환 | Tab | • "폴더" / "휴지통(🗑)" 탭을 전환하는 기능 • 클릭 시: 탭 전환 - CASE01 [폴더]: 폴더 트리(20) 표시 - CASE02 [휴지통(🗑)]: 삭제 시트 목록(30) 표시 | 20 폴더 트리 / 30 휴지통 | |
| 15 | 급여대장 단독 행 | ListItem | • 급여대장을 폴더 트리 위 단독 행으로 승격 표시(문서 아이콘 ic-folder-doc-check). 폴더 그룹과 분리되며 폴더 카운트 배지에서 제외 • 클릭 시: 급여대장 시트 로드 - CASE01 [해당 월 급여대장 없음]: 급여대장 생성 진입점 노출(87437af) | 20 폴더 트리(카운트 제외) / [[HBHR200_급여대장 시트]] | #528 승격 · ic-folder-doc-check · TBU: 생성 진입점 문구·동선 |
| 20 | 폴더 트리 | List | • 폴더 그룹 + 폴더별 건수를 나열하는 트리. 폴더 접기 "▸▾"(펼침 ▾ / 접힘 ▸). 급여대장은 단독 행(15)으로 승격되어 폴더 카운트 배지에서 제외. 폴더 목록: "(미분류)" / "eCount 연동" / "급여대장" / "문서·서명" / "병동" / "시트 에러 발생 케이스" / "연장근무" / "인센티브" / "출퇴근" / "치료실 인센티브" / "휴직·퇴사". 폴더별 시트 구성은 폴더 카탈로그 요약표 참조 - Empty: 해당 기간·폴더에 시트 없으면 빈 상태 노출 | 15 급여대장 단독 행 / 21 시트 아이템 / 폴더 카탈로그 요약표 · [[HBHR101_새 시트 만들기 모달]] 새 시트 | #528 급여대장 카운트 제외 · TBU: Empty 문구 |
| ㄴ21 | 시트 아이템 구조 | ListItem | • 시트 하나를 나타내는 아이템 = 연결 상태 표식 + "{이름} '26.7"(월 표기) + 건수. 예 "급여대장 '26.7" + "293/293건". 이름 앞 표식은 장식 불릿에서 급여대장 연결 상태 표식으로 변경 — 연결=링크 아이콘 / 미연결=불릿(#528). 시트 행은 button→div 전환(#528)으로 3개월간 미렌더되던 핀·건수·마지막 수정 시각을 복구하되 핀·건수는 주석 처리, 마지막 수정 시각만 노출. 마지막 수정 시각은 마지막 실제 편집 기준(59af7b4)이며 상태별 라벨을 함께 표시. 라벨 형식 = "{n}일 전 편집됨"(예: "5일 전 편집됨") 또는 "MM/DD 편집됨"(예: "08/06 편집됨") — 상태별 라벨 모두 "…편집됨" 어미. 사이드바 폭이 181px 미만이면 기간 힌트 접힘. 설정 중 기어(⚙) 표식 노출(#540) — 급여대장 단독 행은 설정 중일 때 예 "급여대장 '26.8 · 5일 전 편집됨"에 기어 포함 • 클릭 시: 시트 로드(시트 그리드로 전환) • 우클릭 시: 시트 컨텍스트 메뉴(22) 노출 | 시트 그리드 로드 / HBHR2xx / 15 급여대장 단독 행 | #528 연결 표식·button→div · #540 기어 표식·"작업 중"→"사용 중" · 59af7b4 마지막 실제 편집 기준 · 폭 181px 미만 기간 힌트 접힘 · 8/17 라이브 실사: 편집 라벨 형식("…편집됨") 확정 · TBU: 연결/미연결 판정 기준(라이브 시각 구분만 확인, 원문 미확정) |
| ㄴ22 | 시트 우클릭 → 삭제 | ContextMenu | • 시트를 삭제(휴지통 이동)하는 유일한 동선 — 파일 메뉴에 삭제 항목 없음 • 우클릭 시: "삭제" → 네이티브 confirm "삭제된 시트는 사이드바 상단 [휴지통]에서 복원할 수 있습니다." → 실행(휴지통으로 이동, soft delete) - 에러: confirm 취소 시 삭제 없음 | 30 휴지통 / [[HBHR102_파일 메뉴]] (파일 메뉴 삭제 없음) | 유일 삭제 경로 |
| 30 | 휴지통(🗑) | Tab | • 삭제된 시트를 보관하는 탭 — 항목별 "복원" 버튼만 제공(복원 전용). 영구 삭제/비우기 UI 없음 — 삭제 시트는 휴지통에 잔류하며 복원만 가능 • 클릭 시: 삭제 시트 보관 목록 표시 - Empty: 휴지통 빈 상태 | ㄴ22 우클릭 삭제 / 10 탭 전환 | 복원 전용(영구삭제 없음) · TBU: Empty 문구 |
| ㄴ31 | 복원 버튼 | Button | • 삭제 시트를 원래 위치(폴더/월)로 되돌리는 버튼. 영구 삭제 액션은 없음 • 클릭 시: 복원 실행 | 20 폴더 트리(복원 대상) | TBU: 복원 실패 피드백 |
| 40 | 시트 전환 단축키(j/k) | - | • j / k 키로 사이드바 시트를 전환("j/k 사이드바 시트 전환 (다음 / 이전)"). 단축키 전체는 [[HBHR103_편집 메뉴·단축키]] 참조 | [[HBHR103_편집 메뉴·단축키]] 편집·단축키 | |
| 50 | 폴더 관리 버튼 | Button | • 워크스페이스 헤더의 "폴더 관리" 진입 버튼 • 클릭 시: "폴더 관리" 모달 노출(별도 표) | 폴더 관리 모달 사양표 · [[HBHR100_시트 워크스페이스 (공통 Shell)]] 헤더 | 신규(7/21) · TBU: 생성 권한 요건 |
| 60 | 이전 월 가져오기 버튼 | Button | • 워크스페이스 헤더의 "이전 월 가져오기" 진입 버튼 • 클릭 시: "이전 월에서 가져오기" 모달 노출(별도 표) | 이전 월에서 가져오기 모달 사양표 · [[HBHR100_시트 워크스페이스 (공통 Shell)]] 헤더 | 이전 월 공유 시트 복제 |
폴더 관리 모달 사양표 (별도 표)
워크스페이스 헤더 "폴더 관리" 버튼으로 진입. 원문 (source: /workspace/group/conf-work/adtest2/HBHR-modals.json "폴더관리") — 각 폴더가 "{이름}" + "{n}개 시트"로 나열되고 맨 아래 "+ 새 폴더" 버튼.
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 노출 조건 | - | 워크스페이스 헤더 "폴더 관리" 버튼(50) 클릭 시 노출 | 50 폴더 관리 버튼 | 신규(7/21) |
| 10 | 폴더 목록 | List | • 폴더별 "{이름}" + "{n}개 시트" 행을 나열. 원문 목록: "eCount 연동" / "2개 시트", "급여대장" / "3개 시트", "문서·서명" / "1개 시트", "병동" / "6개 시트", "시트 에러 발생 케이스" / "1개 시트", "연장근무" / "1개 시트", "인센티브" / "2개 시트", "출퇴근" / "3개 시트", "치료실 인센티브" / "1개 시트", "휴직·퇴사" / "2개 시트" - Empty: 폴더 0개 상태 | 20 폴더 트리 | 원문 카피 · TBU: Empty 문구 |
| ㄴ11 | 폴더 행 구조 | ListItem | • 각 행 = "{폴더명}" + "{n}개 시트". 예 "병동" + "6개 시트" | 폴더 카탈로그 요약표 | "그룹" → "폴더" 확정 근거 |
| 20 | + 새 폴더 | Button | • 목록 맨 아래 "+ 새 폴더" — 신규 폴더를 생성하는 버튼 • 클릭 시: 신규 폴더 생성(폴더명 입력 UI = TBU) | 10 폴더 목록 | "그룹"이 아닌 "폴더" 확정 근거 · TBU: 폴더명 입력 UI·기본값 / 중복 폴더명 처리·실패 피드백 |
이전 월에서 가져오기 모달 사양표 (별도 표)
워크스페이스 헤더 "이전 월 가져오기" 버튼으로 진입.
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 노출 조건 | - | 워크스페이스 헤더 "이전 월 가져오기" 버튼(60) 클릭 시 노출 | 60 이전 월 가져오기 버튼 | |
| 10 | 본문 안내 | Text | • 모달 상단 안내 문구 "이전 월의 공유 시트 중 현재 월에 없는 시트를 복제합니다. 기본 시트는 자동으로 생성되므로 제외됩니다." | 원문 카피 | |
| 20 | 시트 선택 리스트 | List | • 복제 대상 시트 리스트 — 각 항목 "이름 / n열 / n항목" - Empty: 복제 대상 시트 0건 상태 - 값 없음: 미선택 시 "{n}개 가져오기" = "0개 가져오기"(추정) | sheet_list(period 이전 월) · 40 | 이름/n열/n항목 · TBU: Empty 문구 |
| 30 | 취소 | Button | • "취소" — 복제 없이 모달을 닫는 버튼 • 클릭 시: 모달 닫기, 변경 없음 | ||
| 40 | {n}개 가져오기 | Button | • "{n}개 가져오기" — 선택 시트를 현재 월로 복제하는 버튼 • 클릭 시: 선택 시트 수({n})만큼 현재 월로 복제 실행 | sdk.payrollSheet.importFromPrevMonth() (추정) | 이전 월 공유 시트 복제 · TBU: 복제 실패 피드백 |
폴더 카탈로그 요약표
폴더별 시트 구성 요약. 각 시트 유형 상세는 HBHR2xx 참조. 폴더 10종(+ (미분류)).
| 폴더 | 시트 | 용도 |
|---|---|---|
| (미분류) | (미분류) | 임시·미분류 시트 |
| eCount 연동 | eCount 수당 코드 (2개 시트) | 이카운트 export 매핑 ([[HBHR270_전자서명 발송·eCount 연동 시트 (2섹션)]]) |
| 급여대장 | 급여대장 293/293건 · 계약급여내역 (3개 시트) | 급여 작업 시트 (편집·검토 공간, 확정 전) — 확정 시 정본 생성 ([[HBHR200_급여대장 시트]] / [[HBHR210_계약급여내역 시트]]) |
| 문서·서명 | 전자서명 발송 (1개 시트) | 명세서 전자서명 발송 ([[HBHR270_전자서명 발송·eCount 연동 시트 (2섹션)]]) |
| 병동 | 병동 일별 환자수 등 (6개 시트) | 간호 인력·병동 지표 + 수당 계산 워크시트 ([[HBHR240_병동 일별 환자수 시트]]) |
| 시트 에러 발생 케이스 | 에러 케이스 (1개 시트) | 시트 에러 재현·검토용 |
| 연장근무 | 연장근무 내역 (1개 시트) | OT 집계 ([[HBHR220_연장근무 내역 시트]]) |
| 인센티브 | 인센티브 세션 (2개 시트) | 인센티브 산정 ([[HBHR250_인센티브 세션 시트]]) |
| 출퇴근 | 출퇴근 내역 · 근태 내역 (3개 시트) | 근태 ([[HBHR230_출퇴근 내역 시트]] / [[HBHR231_근태 내역 시트 (근무시간 유형 집계)]]) |
| 치료실 인센티브 | 치료일 인센티브 (1개 시트) | 재활·치료 단가 인센티브 ([[HBHR251_치료실 인센티브 시트]]) |
| 휴직·퇴사 | 퇴사/휴직 내역 (2개 시트) | 휴직·퇴사 정산 ([[HBHR260_휴직·퇴사 내역 시트 (2섹션)]]) |
권한·상태 분기 요약
| 시나리오 | 트리거 | 결과 | 비고 |
|---|---|---|---|
CASE01 [폴더 탭] | "폴더" 탭 | 폴더 트리 표시 | ▸▾ 접기 |
CASE02 [휴지통 탭] | "휴지통(🗑)" 탭 | 삭제 시트 목록(복원 전용) | 영구 삭제 없음 |
CASE03 [삭제 confirm] | 우클릭 → 삭제 → confirm 확인 | soft delete → 휴지통 이동 | 유일 삭제 경로 |
조건1 [HR_ADMIN] | 폴더 관리·삭제·가져오기 | 권한 요건 TBU | 세부 권한 미확인 |
Open Question
- 휴지통 복원 API·권한 토큰 실제 키 = TBU (복원 전용, 영구 삭제 액션 없음)
- 휴지통 복원 실패 피드백 = TBU
- 시트 삭제(우클릭)·이전 월 가져오기·폴더 생성 tRPC procedure·권한 토큰 실제 키 = TBU
- 빈 폴더/기간·빈 휴지통·이전 월 복제 대상 0건 Empty 상태 문구 = TBU
- 폴더 관리 모달 폴더명 입력 UI·중복 처리 = TBU
- 폴더 관리 모달의 "(미분류)" 표기 여부(원문 목록엔 미포함) = TBU
- 급여대장 단독 행(15) 급여대장 미존재 시 생성 진입점 문구·동선 = TBU
- 시트 아이템(21) 연결 상태 판정 기준(연결/미연결) 및 주석 처리된 핀·건수 복구 시점 = TBU (8/17 실사: 라이브 시각 구분만 확인, 연결/미연결 원문 미확정)
- 시트 아이템(21) 편집 라벨 형식은 "…편집됨"으로 확정(8/17 실사). 상태별 배지/워딩 세부(#540)는 [[HBHR100_시트 워크스페이스 (공통 Shell)]] 64 참조
- 이전 월에서 가져오기 복제 실패 피드백 = TBU