Skip to content

급여 시트와 월별 워크북 ​

제품 개발 기록 · 인사 원천 · 법정공제 · 급여 확정·배포

화면·워크북·SDK·API를 연결한 급여 시트 사용 설명입니다. 실행한 조작은 아래 영상 기록에서 구분합니다. 조직에 저장된 시트·템플릿·권한·파라미터에 따라 목록과 열이 다릅니다.

목적과 진입 ​

급여 담당자가 월별 시트에 근무·실적·계약 자료를 모으고 수식을 적용해 수당·공제 내역을 급여대장에 반영하는 작업 공간입니다. 관리자 앱의 시트 메뉴는 /admin/#embed/sheets에서 HR 앱을 임베드합니다. HR 앱 내부 경로는 /hr-system/sheets와 /hr-system/sheets/{시트 UUID}입니다. 별도 호스트로 실행하면 /sheets를 기준으로 합니다. /payroll 등 일부 옛 경로가 라우터에 남아 있지만 현재 대시보드 본문은 하나의 시트 워크북입니다.

인증된 조직 세션이 필요합니다. 목록·읽기는 급여 읽기 권한, 생성·편집·계산·반영은 급여 관리 권한을 사용하며 급여 확정과 직원 공개는 급여 승인 권한을 별도로 검사합니다. 비공개 시트는 만든 사람과 접근 권한에서 지정한 팀·개인만 볼 수 있습니다. 버튼이 보인다는 사실만으로 API 권한을 갖는 것은 아닙니다. 조직·접근을 함께 확인합니다.

  1. 관리자에서 시트를 열고 상단 월을 확인합니다. 이전 달·다음 달로 이동하거나 연월을 눌러 달을 선택합니다. 월 선택 팝업은 이번 달·닫기를 제공합니다. 연도 선택 범위는 현재 연도 기준 10년 전부터 다음 해까지입니다.
  2. 왼쪽 폴더를 펼쳐 시트를 누릅니다. 급여대장은 일반 폴더 위에 별도 표시될 수 있습니다. 폴더명과 개수는 조직 데이터이며 고정된 10종 목록이 아닙니다.
  3. 시트 이름 앞 상태, 귀속월, 검색 결과와 선택 셀을 확인하고 작업합니다. 그리드 우측 도구는 셀 상세·메모·열 설정·급여 반영·행 정보·히스토리 중 하나의 패널을 엽니다.
  4. 다른 시트로 전환하거나 시트를 닫으면 화면 선택이 바뀝니다. 닫기는 삭제가 아닙니다. 편집 중 팝업은 변경 버리기 확인이 나타날 수 있으므로 저장 결과를 먼저 확인합니다.

지원 작업 목록 ​

작업실제 진입범위·저장 결과절차
월·시트 이동, 검색, 정렬, 필터월 이동, 사이드바, 검색창, 데이터선택한 월의 시트와 표시 행탐색
새 시트·추천·내 템플릿·업로드새 시트 만들기, 파일새 SheetView, 행·열 설정생성
이름·귀속월·공개 범위·자동 행 설정이름/귀속월 더블클릭, 파일 > 시트 정보시트 메타데이터관리
팀·개인 공유(보기/편집)파일 > 접근 권한, 사이드바 우클릭 접근 권한sheet_access_grants접근 권한
복제·템플릿 저장/관리·월 이월사본 만들기, 템플릿 관리, 이전 월 가져오기구조 재사용, 선택 월 신규 시트재사용
폴더 생성/이름/순서/이동, 삭제·복원폴더 관리, 우클릭, 휴지통폴더와 시트 목록·소프트 삭제관리
셀 입력·선택·복사/잘라내기/붙여넣기·채우기·찾기/바꾸기셀·편집, 선택 우클릭셀 또는 연결된 원천입력
행/열 삽입·삭제·순서·넓이·고정·표시 형식삽입, 행/열 헤더 우클릭, 열 설정행과 열 정의구조
수식·행/열 적용 범위·참조·상수수식 입력줄·열 설정·참조 선택열 기본 수식 또는 셀 수식수식
서식·조건부 서식·병합서식 도구 모음, 관련 메뉴표시 메타데이터와 병합 시 셀 값서식
메모 작성·답글·수정·해결·삭제·이력우클릭 메모, 우측 메모, 히스토리셀별 메모와 해결 상태검토
시트 작업 완료·행 보호·행 작업 완료파일, 데이터 > 시트 및 범위 보호, 행 메뉴서로 다른 보호/완료 상태상태
계산·반영·마스터 적용·자동 채움·일괄 상태 처리데이터 및 시트 상단 CTA계산 셀/수당·공제/마스터반영
CSV·XLSX·템플릿 JSON·인쇄파일 > 다운로드·인쇄로컬 파일/인쇄 화면파일
근로시간 마감 생성·개인/전체 확정·취소·다운로드관리자 근태 현황 > 근로시간 마감직원별 마감일 이전 근태 수정 차단근로시간 마감
급여 확정·취소·명세서·이카운트급여대장 CTA·셀 상세·데이터급여 헤더·직원 공개·XLSX배포 문서
  1. 검색창 사번 / 성명 / 사유 / 항목 검색 ( / )에 예를 들어 TEST001을 입력합니다. 250ms 뒤 현재 행이 좁혀집니다. /로 검색에 접근할 수 있으며 같은 월의 다른 시트 검색 결과를 선택하면 그 시트로 이동합니다.
  2. 열 헤더 또는 데이터 > 시트 정렬에서 열과 방향을 선택합니다. 필터 만들기에서 열별 조건을 고릅니다. 열 필터가 하나라도 걸리면 수식 입력줄 아래에 적용 필터 띠가 나타나 열 이름과 조건(= 값, ≥ 1,000,000, 셀 색: 노랑 등)을 칩으로 보여 줍니다. 칩을 누르면 그 열의 조건 편집기가 열리고, 칩의 ×는 그 열만, 띠 끝의 필터 초기화(또는 데이터 > 필터 초기화)는 열 필터 전부를 해제합니다. 검색어·상태 칩은 각자의 X로 지웁니다. 열 필터는 시트를 바꾸면 초기화되며 저장되지 않습니다. 조건을 해제하면 다시 해당 행이 표시됩니다. 검색으로 안 보이는 행이 삭제되는 것은 아닙니다.
  3. 보기 > 열 표시/숨김에서 표시할 열을 고릅니다. 행은 우클릭 메뉴의 이 행 숨기기(여러 행을 선택한 안에서 우클릭하면 선택한 N개 행 숨기기)로 숨깁니다. 숨김은 나만의 보기 설정(브라우저 저장, 시트별)이라 다른 사용자에게는 보이지 않고, 숨긴 행은 화면·합계 행·CSV 필터 결과에서 빠지되 급여 반영·마스터 적용에는 그대로 포함됩니다. 적용 필터 띠의 숨긴 행 N개 칩 × 또는 보기 > 숨긴 행 모두 표시로 되돌립니다. 서식 도구 모음과 수식 입력줄도 표시 여부를 전환합니다. 선택 영역 하단의 개수·합계 등은 현재 선택값을 요약합니다.
  4. 큰 시트는 첫 화면 뒤 추가 행 로딩 중… N/M을 표시하며 나머지를 가져옵니다. 검색·CSV의 대상이 현재 엔진에 로드된 행인지 확인하고, 전체 파일이 필요하면 로딩 완료 후 진행합니다. 서버 XLSX는 별도 조회 경로입니다.

필터·정렬은 출력 종류마다 적용 범위가 다릅니다. 특히 전체 확정은 검색 결과의 선택 행만 처리하지 않습니다. 해당 차이는 급여 확정에 따릅니다.

생성: 새 시트·템플릿·업로드 ​

  1. 상단 새 시트 만들기를 누릅니다. 네 탭은 새 시트 만들기·내 템플릿·추천 템플릿·업로드입니다. 시트명은 필수이며 서버 최대 120자, 귀속 연도는 2020~2100, 월은 1~12입니다. 신규 scratch의 공개 범위 기본값은 비공개입니다.
  2. 직접 만들 때 특성을 고르고 다음 단계에서 사용할 열/수식을 확인합니다. 그달 기록용처럼 특성이 없는 시트는 다섯 번째 카드 일반 시트를 고르거나 아무 카드도 고르지 않고 일반 시트로 만들기(또는 특징 없이 빈 시트로 만들기)를 누릅니다. 특성 카드를 다시 누르면 선택이 해제됩니다. 뒤로는 앞 단계로 돌아가고 취소는 생성하지 않습니다. 각 특성은 다음 출발점을 제공하며 사용자가 고르지 않은 의존 열이 있으면 관련 수식만 제외합니다.
특성출발 열과 계산주의
근무기록형직원·날짜·시작/종료·휴게시간·인정시간·수당시간 차는 시간 단위 숫자이며 자정 경계는 24시간 보정. 야간·연장 공식은 선택한 열/공식에 따름
실적형수량·단가·금액, 기준 수량당 지급일반 곱셈과 기준 단위별 절사 공식을 구별
명부형사번·성명·소속·금액·사유직원 연결이 있어야 이후 직원별 집계 가능
기준형항목·기준·단가와 조직 상수직원 행과 기준 행을 동일하게 취급하지 않음
  1. 만들기가 성공하면 선택 월에 시트가 생성되어 열립니다. scratch는 빈 행 1,000개를 준비하지만 열은 선택한 특성의 구조입니다. 모든 생성 경로를 “A~Z 26열”로 설명하면 틀립니다. 기존 급여대장을 다시 만들려 하면 중복 관련 확인이 있으므로 귀속월·대상을 확인합니다.
  2. 추천 템플릿은 조직에 시드된 템플릿을 분류·검색합니다. 예를 들어 법정공제 — 4대보험 (월별)이나 퇴사 정산을 골라 적용합니다. 세트 템플릿은 구성 시트를 함께 만들고 요약 시트를 엽니다. 내 템플릿은 저장해 둔 구조를 새 시트로 적용합니다. 기존 시트 편집이 아닙니다.
  3. 업로드에서 파일을 선택/드롭합니다. CSV/XLSX는 분석 뒤 열 연결·검증·승인을 거치며, 성공 뒤 시트 열기, 실패 뒤 다시 시도를 사용합니다. CSV/XLSX는 실제 데이터 가져오기이고 JSON은 시트 설정 복원입니다. 세부 제한은 파일을 봅니다.

시트·폴더 관리 ​

  1. 이름을 더블클릭하거나 파일 > 이름 바꾸기에서 새 이름을 입력하고 확인합니다. 빈 이름은 허용하지 않습니다. 귀속월을 더블클릭하면 YYYY-MM 형식으로 바꿉니다. 다른 기간으로 옮기는 작업과 이전 월에서 복제하는 작업을 구별합니다.
  2. 파일 > 시트 정보에서 이름·설명·공개 범위·폴더·행 기준/자동 채움 설정을 확인하고 저장합니다. 정보 수정과 자동 채움 설정 저장은 별도 요청이므로 오류가 나면 다시 열어 둘 다 저장됐는지 확인합니다. 사용 중에는 구조 항목이 제한됩니다.
  3. 폴더 관리에서 이름을 입력해 폴더를 추가하거나 이름·순서를 바꿉니다. 폴더/시트 드래그로 순서·소속을 바꿀 수 있습니다. 폴더 우클릭도 관리 진입점입니다. 미분류와 급여대장 별도 표시는 실제 폴더 식별자와 구별됩니다.
  4. 사이드바 시트 우클릭의 삭제를 선택하고 확인하면 시트는 소프트 삭제됩니다. 원천 근무·수당 기록 전체를 삭제하는 버튼이 아닙니다. 휴지통을 펼치고 이름·삭제일을 확인한 뒤 복원하면 목록으로 돌아옵니다. 복원 중에는 해당 행이 복원 중…으로 표시됩니다. 영구 삭제 조작은 이 화면에 없습니다.
  5. 시트를 닫을 때 우측 패널이 열려 있으면 우선 패널을 닫거나 사이드바 우클릭의 닫기를 사용합니다. 저장 실패 후 화면만 닫는 것으로 저장이 완료되지는 않습니다.

구조 재사용과 이전 월 가져오기 ​

  1. 파일 > 사본 만들기에서 기본 제안 이름 원본명 (복제)을 확인하고 새 이름을 입력합니다. 같은 월에 비공개 시트를 만듭니다. 현재 구현은 열 구조·그룹 기준을 복제하며 입력 셀 전체의 백업이 아닙니다. 필터는 초기화되고 새 설정 상태로 시작합니다.
  2. 시트를 템플릿으로 저장할 때 이름(필수, 최대 120자)과 설명(선택, 최대 2,000자)을 입력합니다. 템플릿은 구조·설정 재사용용입니다. 템플릿 관리에서 사용자 템플릿의 이름 변경·저장·삭제를 사용할 수 있고 시스템 템플릿은 관리 제한이 있습니다.
  3. 다음 귀속월로 이동해 이전 월 가져오기를 누릅니다. 팝업은 바로 전 월을 원본으로 대상과 처리 예정 정보를 보여줍니다. 확인하면 현재 UI는 개별 선택 ID를 보내지 않고 전월의 공유 시트 중 적격 대상을 일괄 이월합니다. 비공개 시트는 제외하며 대상월의 동일 이름 시트는 건너뜁니다. 원본 설정 완료 여부는 승계하되 새 완료자/시각은 이월 수행 기준으로 기록합니다.
  4. 결과를 확인하고 이월된 시트를 엽니다. 대상월에 이미 있는 시트는 서버의 중복 처리 결과를 따릅니다. 참조 재연결 경고가 있으면 참조 대상 시트를 해당 월에 만든 뒤 수식의 시트 참조를 다시 선택합니다. 해결되지 않은 참조가 전월을 가리킬 수 있으므로 성공 토스트만 보고 완료하지 않습니다.

수식의 월별 참조는 시트 이름 대신 안정적인 slug를 사용합니다. 템플릿을 다시 적용한 중복 급여대장과 수식의 대상 급여대장을 확인해야 합니다. 직원별 월 급여 레코드는 별도 집계 단위이므로 대장 복제만으로 직원 급여 레코드가 격리되지 않습니다.

입력·붙여넣기·변경 취소 ​

  1. 셀을 선택하고 더블클릭/입력해 편집합니다. 날짜·시간·체크·목록·직원·치료 횟수 등 표시 형식에 맞는 편집기가 열립니다. 시간은 화면의 시간 형식을 사용하고 숫자는 해당 열의 단위(원·시간·횟수)를 확인합니다.
  2. Enter로 적용하거나 Esc로 편집을 취소합니다. 일반 셀 저장은 SheetCell을 갱신하지만 원천에 바인딩된 열은 해당 원천 API를 호출할 수 있습니다. 입력값이 보였다는 사실과 수당·공제 레코드 반영 완료는 다릅니다.
  3. 사번/성명을 바꾸면 직원을 개명하지 않고 행의 직원 연결을 바꿉니다. 사번은 대소문자 구별 없이 정확히 찾고 성명은 정확히 일치하는 직원을 찾습니다. 동명이인이면 사번을 쓰라는 안내가 나타납니다. 기존 직원에서 다른 직원으로 옮길 때 확인을 받으며 빈 행의 최초 연결은 바로 처리합니다. 출퇴근 등 원천이 직원을 고정하는 행은 원본 화면에서 수정하라는 안내가 납니다.
  4. 날짜 열에 연도 없는 날짜(07월 20일·7/20·7.20)를 입력하거나 붙여넣으면 이 시트 기간의 연도로 읽어 yyyy-mm-dd로 저장합니다. 대시(-·ㅡ)는 빈 칸으로 저장합니다. 이미 글자로 저장된 연도 없는 날짜도 수식에서는 같은 규칙으로 날짜로 읽힙니다.
  5. 범위를 선택해 편집 > 복사·잘라내기·붙여넣기를 사용하거나 단축키를 누릅니다. 클립보드 접근을 브라우저가 거부하면 키보드 경로와 권한을 확인합니다. 현재 선택하여 붙여넣기는 일반 붙여넣기와 동일하며 값/서식/수식 전용 모드를 제공하지 않습니다.
  6. 채우기 핸들을 끌어 복사/연속 채우기를 적용합니다. 수식은 참조 방식과 범위를 확인합니다. 편집 > 삭제는 선택 셀의 값을 지우며 행 자체 삭제와 다릅니다. 찾기 및 바꾸기는 검색값과 바꿀 값을 확인해 해당 범위에 적용합니다.
  7. 실행 취소·다시 실행으로 현재 엔진의 지원 편집 이력을 이동합니다. 이는 모든 서버 작업을 과거로 돌리는 기능이 아닙니다. 새로고침 이후의 이력 보존, 원천 API·급여 반영·확정의 취소를 이 기능으로 보장하지 않습니다. 임시 행의 저장·취소가 표시되면 해당 초안을 확정하거나 버립니다.

행·열 구조 편집 ​

직원 기준 시트의 「직원 추가」 모달 부서 / 팀 탭은 전체 팀 트리를 보이고, 팀을 고르면 그 팀의 활성 소속 직원(겸직 포함, 기본으로 하위 팀까지)이 이 시트 기준으로 정리되어 추가 가능한 직원이 모두 선택됩니다. 이미 시트에 있는 직원과 그 달 이후 입사자는 목록에서 빠지고 요약 건수로만 보입니다. 「하위 팀 포함」을 끄면 고른 팀만 봅니다.

새 직원을 등록했을 때 수동 시트에 행이 자동으로 들어오게 하려면 관리자 앱 설정 › 조직 설정 › 급여 설정의 「신규 입사자 시트 자동 추가」를 켭니다(기본 꺼짐). 켜면 직원 기준 수동 시트 중 이번 달 이후 · 상시이고 잠기지 않은 시트에 그 직원 행이 생기며, 자동 채움 규칙이 있는 시트는 원래대로 새로고침이 채웁니다. 자세한 조건은 조직 설정을 봅니다.

  1. 행을 선택하고 삽입에서 위/아래 행, 날짜/직원 행 또는 여러 행 추가를 고릅니다. 상단 CTA는 행 기준에 따라 직원 추가·날짜 추가·빈 행 추가로 달라집니다. 직원 검색/선택을 쓰면 실제 직원 UUID가 행에 연결됩니다.
  2. 열을 선택하고 삽입에서 왼쪽/오른쪽·여러 열·수식·체크박스·드롭다운 열 추가를 고릅니다. 선택지에서 고르게 하려면 열 설정의 종류를 단일 선택(드롭다운에서 하나, 예: 오전/오후) 또는 다중 선택(체크리스트에서 여럿)으로 바꾸고 옵션을 한 줄에 하나씩 적습니다. 단일 선택 값은 수식에서 =IF([구분]="오전", 1, 0)처럼 글자로 비교하고, 다중 선택은 선택 개수로 읽힙니다. 열 설정에서 이름·표시 형식·폭·표시 여부·고정·바인딩/수식을 조정합니다. 열 키는 고유해야 하며 서버가 중복 키를 거부합니다.
  3. 열 헤더를 드래그해 순서를 바꾸고 경계 드래그로 폭을 바꿉니다. 경계(조절 바)를 더블클릭하면 머리글과 지금 보이는 칸의 글자 폭에 맞춰 폭이 자동으로 정해집니다. 숨김은 삭제가 아닙니다. 구조를 삭제하기 전에 다른 열/시트의 참조와 급여 반영 대상 연결을 확인합니다.
  4. 행 삭제는 행 종류에 따라 다릅니다. 일반 행은 SheetRow 삭제, 연결 원천은 해당 API, 자동 생성 행은 제외/재생성 규칙을 따릅니다. 계약급여내역의 삭제는 계약 비활성화이며 계약 버전 기록을 남깁니다. 보호된 행과 작업 완료 시트는 서버에서도 변경을 막습니다.
  5. 데이터 > 일괄 변경은 변경할 컬럼·새 값을 정해 적용합니다. 수정 불가능한 열은 변경할 수 없는 컬럼입니다 안내가 나옵니다. 원천/계산/직원 연결의 의미가 다른 열을 일괄 숫자 덮어쓰기로 취급하지 않습니다.

수식·참조·계산 범위 ​

  1. 셀 또는 열을 선택하고 수식 입력줄/열 설정을 엽니다. 적용 대상 표시를 먼저 확인합니다. 열 수식은 열 전체의 기본식이며 셀 수식은 특정 셀의 예외입니다. =수식 (이 열 전체에 적용돼요) 안내가 있는 상태는 한 셀 수정이 아닙니다.
  2. 같은 행의 값을 예로 =[단가]*[수량]처럼 참조합니다. 화면의 표시 이름은 저장할 때 열 키로 변환됩니다. 실제 저장식 예시는 =ROUND([unitCount]*[unitPrice])입니다. ROUND·ROUNDUP·ROUNDDOWN은 엑셀과 같은 방식으로 반올림합니다(ROUND(2.5)=3, ROUND(-2.5)=-3, ROUND(125, -1)=130). WEEKDAY([날짜])는 엑셀과 같은 요일 번호(일=1…토=7, 유형 2는 월=1…일=7)라 =IF(WEEKDAY([근무일])=7, [연장시간], 0)처럼 토요일 근무만 거를 수 있습니다. ISHOLIDAY([날짜])는 조직 휴일(국가 공휴일·대체공휴일·병원 지정 휴일, 조직이 제외한 날은 빼고)이면 1이라 =IF(OR(WEEKDAY([근무일])=1, ISHOLIDAY([근무일])), [연장시간], 0)처럼 휴일 근무를 따로 모을 수 있습니다. 토·일은 공휴일이 아니므로 주말은 WEEKDAY로 함께 거릅니다. 시트/열 선택 도구를 쓰면 동일 이름의 시트는 폴더·기간 등의 구분 이름으로 고를 수 있습니다.
  3. 다른 시트는 [시트slug:열key], 조직 상수는 [$namespace.key]로 저장됩니다. 예를 들어 [$statutory.health_insurance.employee_rate]는 조직의 시행일별 상수입니다. 참조 시트에 slug가 없으면 저장 과정에서 생성을 시도하며 실패 시 UUID 참조로 남을 수 있습니다. 월 이월 후 참조 확인이 필요한 이유입니다.
  4. 수식바에서 편집하다가 다른 시트의 열을 참조하려고 그 시트를 열면 초안이 수식 편집 팝오버로 넘어갑니다. 그 시트의 열 머리글을 클릭하면 [시트!열] 참조가 들어가고, 저장하면 원본 시트로 돌아와 저장됩니다. 값 열의 셀 하나에서 시작한 수식은 「이 셀만」으로 저장됩니다.
  5. 자주 참조하는 다른 시트의 열은 열 머리글 우클릭 → 열 북마크로 모아 둡니다. 북마크는 병원 공통이며 수식바 fx 팝오버와 수식 편집 팝오버의 북마크한 열에 칩으로 보여, 클릭하면 [시트!열] 참조가 커서 자리에 들어가고 칩의 ×로 해제합니다. 앵커는 시트 slug + 열 key 라 월 이월 뒤에도 같은 열을 가리키며, 이번 기간에 없는 시트의 칩은 흐리게 보입니다. 비공개 시트의 열은 북마크할 수 없습니다.
  6. 함수 목록/인수 도움말에서 함수를 삽입하고 참조를 선택한 뒤 적용합니다. 같은 열 또는 시트 간 순환 참조는 저장 전 검사에서 거부합니다. IFERROR 감싸기는 오류의 표시 대체이며 누락된 원천이나 잘못된 급여 기초 자체를 고치는 기능이 아닙니다.
  7. 열 수식과 계산 모듈을 구별합니다. formula는 참조와 수식 평가, computed는 서버 계산 실행 결과입니다. 계산 열이 있으면 데이터 > 계산 실행 후 처리 행/작성 셀/수동값 건너뜀 결과를 확인합니다. 수동 override를 포함한 값 우선순위를 셀 상세에서 확인합니다.
  8. 수식 편집기의 상수에서 관리를 열어 상수를 수정합니다. 기존 항목은 값과 변경 사유를 입력해 행별 저장, 신규 항목은 namespace·key·이름·값과 선택 단위를 입력합니다. 실제 키 검증과 읽기 권한을 통과해야 하며 조회 실패 시 선택 목록이 비어 있을 수 있습니다. 시행일 조정은 이 화면에 별도 입력이 없습니다. 법정공제의 기간 해석을 확인합니다.

직원 연결을 사용한 교차 시트 참조는 Excel의 단순한 동일 행번호 참조와 다릅니다. 직원이 없는 기준행·병동행과 한 직원의 여러 기록행은 집계/참조 설정을 확인해야 합니다. Excel의 모든 함수를 지원하지 않으며 ROW·QUOTIENT 등을 임의로 넣기보다 실제 함수 목록을 사용합니다.

서식·조건부 서식·병합 ​

  1. 셀/범위를 선택한 뒤 서식 도구에서 글꼴 크기·강조·색·배경·정렬·테두리·줄바꿈·숫자 표시 등을 적용합니다. 저장된 서식은 시트 표시 메타데이터입니다. 숫자 서식을 바꾸는 것으로 원천 금액의 단위를 환산하지 않습니다.
  2. 조건부 서식에서 대상 열/조건/비교값과 스타일을 정해 저장합니다. 빈 값, 대소/동일 비교, 수식이 참일 때를 구별합니다. [다른열키]를 비교값으로 사용할 수 있습니다. 조건식의 잘못된 문법·0 나누기·빈 값 산술은 조건 불충족으로 처리될 수 있으므로 색이 없다고 데이터가 정상이라는 뜻은 아닙니다. 서버 급여 계산식과는 별도 평가기입니다.
  3. 병합할 연속 범위를 선택해 병합합니다. 읽기 전용/직원 식별 열, 충돌하는 기존 병합 등의 제한을 통과해야 합니다. 병합은 왼쪽 위 대표값/수식으로 범위를 정리하므로 단순 장식이 아닙니다.
  4. 병합 해제는 셀 경계를 되돌립니다. 병합 전 개별 값을 되살리는 조작은 같은 세션의 실행 취소에 의존합니다. 이력이 사라진 후 병합 해제만으로 원래 값 전체가 복원되지 않습니다.

메모·히스토리·검토 ​

  1. 셀 우클릭의 메모 또는 우측 메모에서 내용을 입력하고 저장합니다. 빈 내용은 저장하지 않습니다. 메모는 시트·행·열에 연결됩니다. 법정공제의 수동 판정 사유도 정확한 판정 셀에 작성해야 합니다.
  2. 메모에서 답글을 달거나 자신의 편집 가능한 메모를 수정합니다. 삭제 확인을 취소하면 유지되며 확인하면 삭제 API를 실행합니다. 해결로 표시하면 기본 미해결 목록과 배지에서 빠집니다.
  3. 히스토리에서 메모 이력을 열고 필터/상세/해결 상태를 확인합니다. 메모 해결은 수식 변경이나 급여 반영을 자동 실행하지 않습니다. 수동 판정 사유 검사에서는 삭제되지 않은 메모의 존재를 검사하므로 해결 상태와 삭제 상태를 구별합니다.
  4. 저장/답글/이력 로드 실패는 각각 오류를 표시합니다. 다시 열어 내용과 상태를 확인한 뒤 재시도합니다. 패널 작성 중 닫기에도 변경 취소 확인이 적용됩니다.

설정·보호·작업 완료 ​

상태/조작의미다음 조작
설정 중setupCompletedAt 없음. 열 구조/바인딩을 만드는 단계설정 완료에서 열·수식·반영 연결·행 기준 요약 확인
사용 중설정 완료. 구조 변경 제한, 값 입력·반영 가능파일 > 시트 재설정 하기로 구조 편집 재개
작업 완료완료 의도는 workDoneAt, 쓰기 잠금은 함께 설정된 lockedAt파일에서 사용 중으로 변경한 뒤 수정
행 보호선택 행 lockedAt에 의한 개별 변경 방지보호 목록에서 해제
행 작업 완료담당 행 작업 상태행 메뉴에서 취소/재설정
급여 확정직원·월 PayrollRecord의 확정급여 확정 취소
  1. 열과 원천 연결을 마친 뒤 설정 완료를 누르고 요약을 검토해 확정합니다. 성공하면 사용 중 배지와 값 편집/반영 조작이 나타납니다. 서버는 예상 updatedAt을 비교하므로 다른 작성자가 먼저 변경했으면 갱신 후 다시 진행합니다.
  2. 열 이름·수식·종류를 바꾸려면 파일 > 시트 재설정 하기를 선택합니다. 사용 중에도 열 폭·표시·고정·순서 등 보기 설정은 허용될 수 있습니다. 작업 완료 잠금을 해제하지 않은 채 재설정할 수는 없습니다.
  3. 월 작업을 멈추려면 파일에서 해당 시트를 작업 완료로 바꿉니다. workDoneAt과 lockedAt을 함께 설정하며 API의 잠금 방어가 쓰기를 막습니다. 시트 보호만 켜면 완료 표시와는 구별됩니다. 보호를 해제하면 완료 표시도 함께 해제됩니다. 기간 전체를 마감하는 기능이나 급여의 확정/지급 완료가 아닙니다.
  4. 일부 행만 잠글 때는 데이터 > 시트 및 범위 보호 또는 행 메뉴에서 보호하고 목록에서 해제합니다. 같은 원천을 다른 시트가 보호한 경우에도 원천 수정이 거부될 수 있습니다.

계산·원천 갱신·급여 반영 ​

  1. 원천이 추가되었다면 데이터 > 새로고침 (자동 채움) 또는 자동 행 생성에서 현재 설정의 행을 다시 구성합니다. 이는 브라우저 새로고침, 서버 계산 실행, 급여 확정과 다른 조작입니다. 자동 행 생성의 「직원 범위」(팀 · 하위 팀 포함 · 직원)는 행을 만드는 규칙 필터이고, 사이드바의 팀·직원 필터는 행을 숨기는 보기 필터입니다. 팀을 골라도 행 수가 줄지 않으면 규칙 필터 쪽을 확인합니다. 팀과 직원을 함께 고르면 둘의 합집합(팀 직원 + 고른 직원)이 들어옵니다. 출퇴근·연장근무·치료/인센티브의 원천 승인 상태와 기간도 확인합니다.
  2. computed 열은 계산 실행 후 값이 나왔는지 확인합니다. 필요한 값이 비면 원천·파라미터·모듈 연결을 보완합니다. 일부 열의 계산 성공만으로 전체 급여 검증이 끝나지 않습니다.
  3. 열의 급여 반영 설정에서 수당/공제 구분과 대상 급여대장 slug·열 key를 연결합니다. 급여대장에 반영을 누르면 기존 레코드를 덮어쓴다는 확인을 받습니다. 수식 변경만으로 장부 금액이 바뀌는 것은 아닙니다.
  4. 서버가 기초 누락·사유 누락·필수 계산값 누락을 검사합니다. 차단이면 원인을 고치고 다시 반영합니다. 확인 가능한 경고는 해당 행 보기로 해당 행에 이동하거나 이대로 반영으로 명시적으로 진행합니다. Esc는 경고 단계를 취소합니다. 자세한 예는 법정공제를 봅니다.
  5. 성공 요약의 신규·갱신·금액 누락 건수를 확인하고 급여대장을 다시 엽니다. 반영 출력은 원천 시트/행/열과 대상 급여대장 연결을 가진 AllowanceRecord·DeductionRecord입니다. 현행 워크북의 반영 후 동작은 결과 요약과 재조회이며 별도 변경 내역 팝업이 자동 열린다고 보장하지 않습니다.
  6. 급여대장의 소스 전체 반영은 변경된 연결 원천을 묶어 반영합니다. 설정 중 원천은 제외하고, 최신 원천은 건너뛰며, 일부 실패는 시트별로 보고합니다. 실패한 시트를 열어 원인을 해결한 뒤 개별 반영합니다. 이 조작은 급여 확정과 별개입니다.
  7. 호봉/인센티브 기준 원천에서는 마스터에 적용을 사용합니다. 이는 급여 금액 레코드 생성과 다른 마스터 갱신입니다. 대기 행 모두 승인·승인 행 모두 지급 처리는 지원 원천의 상태를 일괄 바꾸며 시트 이름만으로 모든 종류에 노출되지 않습니다.

서버 계산 조회·저장·응답 개선 검증 (2026-10-21) ​

세액 조건과 조직 파라미터 참조가 같은 경우 한 번의 계산 안에서 조회 결과를 재사용하도록 변경했습니다. 다음 계산은 변경된 기준값을 다시 읽습니다. 계산 셀의 조건부 저장 SQL을 줄이고 급여 표에서는 편집에 필요한 셀 정보만 요청합니다. 기본 전체 응답과 감사·서식 조회는 유지합니다. 기존 금액·계산 이력·수동 입력 보호 회귀 검사, PostgreSQL 및 동일 500행 시트의 개발 브라우저 전후 측정, 재발 방지 기준은 계산 성능 검증 기록에 남겼습니다. 계산 클릭부터 결과 표시까지를 측정했으며 개발 배포·운영 환경의 검증과는 구분합니다.

파일 가져오기·내보내기·인쇄 ​

형식/조작입력·동작보존 범위와 제한
CSV/XLSX 업로드새 시트 만들기 > 업로드 또는 파일 > 업로드; 첫 비어 있지 않은 행을 헤더로 사용Excel의 비어 있지 않은 모든 탭을 가져오며 여러 탭은 파일명 폴더로 묶음. 모두 비공개. 형식화된 값을 문자열로 가져오므로 Excel 수식·스타일의 완전 복제 아님
직원 연결가져온 사번 열의 직원 연결 설정/연결 기능텍스트 파일을 가져온 사실만으로 직원 연결이 완성되지 않음. 미일치·중복 결과 확인
TSV 원천 업로드데이터 > TSV 업로드가 있는 고정인센티브/연장근무 시트붙여넣기 양식의 열 순서와 검증 결과를 확인한 후 제출. 일반 XLSX 새 시트와 다른 원천 등록 경로
CSV 전체/필터 결과파일 > 다운로드의 CSV 선택엔진에 로드된 전체 행 또는 현재 필터 행, 표시 열, 합계행. 가상 소계행 제외, UTF-8 BOM
XLSX 현재 시트/이번 달다운로드 선택 후 파일 저장서버가 대상 시트를 재조회하고 표시 열·값·지원 서식·병합을 작성. 셀의 실행 가능한 Excel 수식 자체를 내보내는 기능 아님
템플릿 JSON다운로드에서 템플릿 선택열·필터·참조 설정. 입력 데이터 백업 아님
인쇄파일 > 인쇄브라우저 인쇄 흐름. 원본 파일/확정/발송 상태를 바꾸지 않음
이카운트 XLSX급여대장 데이터 > 이카운트 Export (XLSX)급여 배포에서 확정·코드·대상 범위 확인
  1. 업로드 후 열 연결과 검증 보고서를 확인하고 「승인하고 시트 만들기」로 생성합니다. 승인 전에는 시트를 만들지 않습니다. 검토·승인·원본·되돌림을 순서대로 수행합니다.
  2. 파일에 여러 탭이 있으면 탭별 열 연결을 모두 확인합니다. 생성 중 통신 오류 후에는 다시 업로드하기 전에 시트 목록에서 결과를 확인합니다.
  3. 다운로드의 현재 시트/월 전체, 전체 행/필터 결과를 구별합니다. CSV에서 셀 색·병합을 기대하지 않으며 XLSX도 원본 스프레드시트 프로그램과의 동등성은 별도 검증 대상입니다.
  4. 치료 일일 실적의 세션 가져오기는 결제/치료 도구 원천과 연결되는 별도 조작입니다. 원천 생성과 수정은 인센티브의 절차를 따릅니다.

근로시간 마감: 출퇴근 원천 잠금 ​

관리자 /admin/#attendance의 근태 현황 > 근로시간 마감에서 사용합니다. attendance:manage 계열 권한이 필요하며 월 급여 확정·시트 보호와 독립적으로 직원별 마감일 이전 및 당일 출퇴근 기록의 수정을 막습니다. 근태를 확인하는 앞 단계는 근태·휴가입니다.

조작실제 입력/버튼저장 결과
마감 생성마감 내역 > 마감 추가WorkTimeClosing과 미확정 WorkTimeClosingTarget
마감 수정·삭제목록 행 수정·삭제날짜·기한·옵션 변경, 대상 확정이 없을 때 소프트 삭제
개인/현재 목록 전체 확정개인별 마감 상태, 행/전체 체크, 근로 시간 확정대상 상태·확정자·확정시각
확정 취소선택 후 확정 취소미마감, 확정자/시각 null
검색·미확정 필터·다운로드이름·사번 검색, 확정하지 않은 사원만 보기, 다운로드현재 필터 목록/XLSX
자동 마감·요청 메일생성/수정 팝업 옵션자동 처리 설정; 요청 메일은 생성 시 별도 비동기 전송
  1. 마감 내역 > 마감 추가를 엽니다. 마감일은 필수이며 기본 제안은 이번 달 1일, 확정 기한은 이번 달 말일입니다. 자동 마감 > 사용, 확정 요청 > 알림 메일 발송은 기본 꺼짐입니다. 마감일과 기한의 뜻을 확인해 예를 들어 전월 마지막 날을 마감일로 지정합니다.
  2. 적용 대상은 기본 재직 전원 또는 직접 선택입니다. 직접 선택은 한 명 이상 필요하고 전체 체크는 현재 불러온 후보 전체입니다. 직접 선택 후보는 활성 직원 첫 500명 조회이므로 500명 초과 조직의 완전한 후보 목록은 보장하지 않습니다. 재직 전원은 서버가 생성 시점 활성 직원을 조회합니다.
  3. 확인하면 마감과 대상자를 만들고 목록의 확정/전체 인원과 진행중 상태를 표시합니다. 취소·닫기·Esc는 팝업을 닫으며 이 팝업에는 별도 변경 버리기 확인이 없습니다. 생성과 대상 저장은 별도 저장 단계이므로 오류 후 기존 마감 건을 확인합니다.
  4. 마감 행을 누르면 그 건의 개인별 마감 상태를 엽니다. 마감일 선택, 이름·사번 입력 후 Enter/검색, 확정하지 않은 사원만 보기로 대상을 좁힙니다. 새로 읽을 때 기존 체크는 해제됩니다. 행 클릭/체크박스로 한 명을, 헤더 체크로 현재 검색 결과 전체를 고릅니다.
  5. 근로 시간 확정을 눌러 인원과 마감일을 확인한 뒤 확인합니다. 성공 후 대상은 마감, 확정일이 표시되며 목록도 재조회합니다. 대상이 한 명 이상이고 모두 확정이면 전체 건은 마감, 그렇지 않으면 진행중입니다. 확정은 근로시간 숫자를 재계산하거나 수당을 생성하지 않습니다.
  6. 수정할 대상은 선택 후 확정 취소를 누르고 확인합니다. 상태가 미마감으로 바뀌고 확정자/시각이 지워집니다. 다른 마감 건에서도 같은 직원·날짜가 확정되어 있으면 여전히 수정이 막힙니다. 필요한 모든 마감 관계를 확인한 후 원천을 고칩니다.
  7. 마감 내역의 수정은 날짜·기한·옵션을 바꾸며 기존 대상자는 화면에서 바꿀 수 없습니다. 삭제는 확인 후 요청하지만 확정 대상이 하나라도 있으면 서버가 거부합니다. 먼저 개인별 확정을 취소해야 삭제할 수 있습니다.
  8. 다운로드는 현재 필터 결과의 사번·이름·소속·상태·확정일을 근로시간마감_날짜.xlsx로 저장합니다. 선택된 행만의 파일이 아닙니다. 목록이 비면 다운로드가 비활성입니다.
  9. 자동 마감은 기한이 있는 사용 설정 건을 API 시작 후 45초, 이후 한 시간 간격으로 확인해 미확정 대상을 확정합니다. 기준 날짜는 현재 구현상 UTC이고 자동 확정자는 null입니다. 기한이 이미 도래한 자동 마감을 취소하면 다음 실행에 다시 마감될 수 있으므로 수정 전에 자동 마감 옵션도 확인합니다. 실제 배포 잡 실행은 이번에 확인하지 않았습니다.
  10. 알림 메일 발송을 켜서 생성하면 이메일이 있는 대상에게 확정 안내를 비동기로 요청합니다. 개별 발송 오류는 생성 성공을 취소하지 않으며 설정 수정만으로 재발송하지 않습니다. 알림의 앱 알림/읽음 상태와 별도입니다.

화면과 관리자 동작은 WorkTimeClosingService를 통해 마감 API를 호출합니다. 입력 스키마는 날짜 문자열·검색 100자·대상 UUID를 검증합니다. 자동 마감 잡과 출퇴근 API의 assertWorkTimeNotClosed가 실제 자동 확정/수정 차단 경로입니다.

확정/취소 API의 직접 UUID 요청에 대한 조직 범위 검증, 기한과 마감일의 역전/잘못된 날짜, 같은 기간 중복 마감, 자동 마감 재확정, 500명 이상 후보, 오류가 빈 목록으로 표시되는 경우, 메일 수신 및 마감 전후 출퇴근 API의 생성/수정/연장시간 갱신 차단은 새로 실행하지 않았습니다. 특히 원천 전체를 포괄하는 잠금이라고 단정하지 않고 실제 검사 호출이 있는 경로를 기준으로 검증해야 합니다.

근거와 이력 정리 ​

현재 흐름의 소유 경계는 아래와 같습니다. 링크는 모두 확인한 커밋에 고정합니다.

소스책임
대시보드, 시트 셸, 그리드 메뉴실제 노출되는 메뉴와 CTA. app.ts의 미노출 잔존 메서드와 구별
워크북, 특성 카탈로그, 생성 상태생성·구조·셀/수식·클립보드·메모·반영·재사용 상태
SheetViewService, SheetRowService워크북 요청을 typed tRPC로 전달
시트 API, 행 해석·계산·원천 구성, 쓰기 방어조직/소유권·입력 검증·저장·수명주기·계산·반영
시트 스키마, 시스템 템플릿이름·기간·열 종류·급여 연결·초기 구조

HBHR100부터 HBHR109, HBHR200부터 HBHR270는 화면 의도를 확인하는 자료입니다. payrollSheet.*·finishSetup·HR_ADMIN·payroll:write 등 “추정” 표기와 전자서명 자동 연계 설명은 현재 API 근거로 사용하지 않습니다. 시트 아키텍처, 급여 계보, 구 스키마 설계의 ✓ 커밋, 금액 정본, NOT NULL 계보 등의 과거 표현도 현행 반영 UI와 정산 출력의 예외를 구별해 읽습니다.

과거 기록이 문서에 반영한 내용·시점 한계
특성 기반 생성네 특성·의존 열 제외·자정 계산. 그날 테스트 결과를 현재 실행으로 표시하지 않음
저사양 시트 성능CPU 4배 제한, 계약 시트 1,010행·16열에서 DCL 15.7→2.6초, 첫 그리드 19.3→4.6초의 과거 기록. 현재 수치 아님. 후속 계획의 구현 여부는 별도 확인 필요
새로고침과 로그아웃부모·iframe 세션 공유, 요청 취소와 인증 실패 구분. 현재 Redis/배포 토폴로지는 재측정하지 않음
로딩 스피너설정 완료의 영역 로더·동작 줄이기. 계산 스타일·빌드 결과는 해당 변경의 검증 범위
법정공제 반영 게이트경고 이동·사유·미계산 차단. 실행 화면은 법정공제에 캡션과 함께 보존

남은 증거: 이 기능 문서의 최초 작성은 런타임을 실행하지 않은 코드 조사였습니다. 이후 계산 실행의 동일 500행 시트 전후 측정은 계산 조회 검증 기록에 기기·브라우저·네트워크·반복 횟수·원시 trace 해시와 함께 추가했습니다. 관리자/개인 시트 소유자/읽기 전용 사용자 각각의 생성·편집·권한 거부, 큰 시트 완전 로딩, 다중 탭 업로드 중간 실패, 행/열 드래그·채우기·병합 복원, 월 이월 참조, 원천 일괄 상태 처리의 행별 결과는 별도로 촬영·재조회해야 합니다. 계산 실행 측정이 이들 동작이나 개발 배포의 검증을 대신하지 않습니다.

기존 랜딩 데모에 포함된 급여 시트 실제 화면 녹화도 볼 수 있습니다. 단계 자막·수식바 확대가 있는 과거 자료이며 현재 사용 조건·버튼은 이 문서가 기준입니다.

기능별 시트 가이드 촬영 ​

로컬 예제 조직에서 명부형 시트 생성, 워크스페이스·월 이동, 열 설정, 수명주기 전환을 각각 촬영했습니다. 생성한 「영상 실습 수당」은 1,000개 빈 행의 명부형 시트로, 직원 정보와 금액·사유 열을 확인했습니다. 금액 열의 컬럼 그룹을 「지급」으로 저장하고 열 설정을 다시 열어 유지되는 것을 확인했습니다.

설정 완료 확인창의 구조 요약을 읽고 사용 중으로 전환한 다음, 파일 메뉴에서 작업 완료·확인창의 「변경」으로 잠갔습니다. 파일의 「사용 중으로 변경」은 바로 잠금을 풀며, 「시트 재설정 하기」로 설정 중에 돌아온 뒤 히스토리를 확인했습니다. 예제 시트에는 급여 반영 연결이 없으므로 이 영상은 수당·공제 생성, 급여 확정, 명세서 공개의 증거가 아닙니다.

촬영 중 본문을 현재 UI에 맞췄습니다. 헤더의 주황 「이번 달」은 상태 표시이고 실제 이동은 월 선택 창의 「이번 달」입니다. 작업 완료도 상시 토글이 아니라 파일 메뉴와 확인창을 거칩니다. 관련 구현은 apps/hr-system/src/views/tabs/sheets.html, views/tabs/sheets/grid.html, sheets/workbook/rows.ts이며 각 영상의 입력과 결과는 같은 절의 번호별 설명에 기록했습니다.

단축키 도움말 촬영 ​

채우기 핸들·단축키에 「단축키」 버튼으로 도움말을 열고, 목록을 내려 조작을 확인한 뒤 닫는 영상을 연결했습니다. 영상은 단축키 도움말 조회이며 실제 채우기 핸들 드래그나 모든 단축키 실행을 보여 주는 자료는 아닙니다. 해당 조작은 같은 절의 별도 촬영 범위로 남깁니다.

직원 행·셀 값·수식·메모 후속 촬영 ​

관리자에 등록한 예제 직원 DOC002 홍영상을 사용 중인 「영상 실습 수당」 시트에 추가했습니다. 직원 행 추가 영상은 직원 추가 → 사번 검색 → 선택 → 행 추가 → 시트 검색으로 결과 확인 순서입니다. 선택 직원의 사번·성명·팀 경로가 표시되는 것을 확인했습니다. 1,000개의 기존 빈 행에 직원 연결 행 1개가 추가된 촬영용 시트입니다.

셀 편집은 금액 100,000과 사유를 수식바로 저장하고 다른 시트로 이동했다가 다시 열어 값의 유지를 확인했습니다. 셀 수식은 같은 금액 셀에 =12000*10+8000*2를 입력하고 Enter, 수정 사유 입력, 적용을 거쳐 136,000 결과를 확인했습니다. 사용 중 시트의 셀 수식 사유는 메모로 남으며 열 전체 수식 변경과 구분합니다. 이 숫자를 실제 급여대장에 반영한 것은 아닙니다.

셀 메모는 해당 셀 선택 → 메모 → 메모 추가 → 입력 → 저장 후 본문 확인을 촬영했습니다. 동료 멘션은 넣지 않았습니다. 합계 배지·근태 조회·메모 답글/수정/삭제는 이 영상에서 실행하지 않았습니다.

시트 정보에서는 사용 중의 이름·행 기준 잠금을 확인하고 사이드바 폴더를 「영상 교육」으로 옮겼습니다. 다시 열어 저장된 폴더를 확인했습니다. 자동 행 생성은 데이터 메뉴의 별도 설정이므로 폴더 영상으로 원천 레코드의 자동 생성을 검증했다고 표시하지 않습니다.

실제 값 편집은 formula-bar.ts → cell-edit.ts → sheetCell, 행 추가는 bulk-add.ts → sheetRow.batchCreate, 메모는 공용 셀 메모 경로를 사용합니다. 해당 입력값·원식·사유와 직원 연결을 사용자 가이드의 각 영상 아래 글로 함께 남겼습니다. 서식·병합·복사/붙여넣기·열 전체/다른 시트 참조·급여대장 반영은 후속 촬영 범위입니다.

급여대장 생성·연결·반영 영상 ​

격리 예제 조직에서 추천 급여대장 생성, 반영 종류·대상 선택, 수당 기록 반영을 별도 영상으로 촬영했습니다. 새 대장은 직원 식별·산정 기간·근무일·보험료 기초(과세보수) 열로 시작합니다. 기본급·수당·공제 열 전체가 자동으로 완성되는 템플릿은 아닙니다.

원천 「영상 실습 수당」의 금액 머리글을 우클릭해 급여대장 반영 설정을 열었습니다. 반영 종류 「수당」과 준비된 대상 「금액 · 급여대장」을 고르고 저장한 뒤 머리글의 연결 표시를 확인했습니다. 원천과 대상 대장을 각각 설정 완료로 전환했습니다. 새 집계 컬럼을 만드는 경우에는 대상 급여대장도 설정 중이어야 하며, 사용 중 대장에서는 구조 변경 안내가 발생하는 것을 확인했습니다. 안내 뒤 항목코드가 남을 수 있으므로 같은 동작을 무작정 반복해 새 코드를 추가하지 않습니다.

반영 영상은 DOC002의 금액 136,000과 사유를 먼저 검토하고, 「급여대장에 반영」의 기존 기록 덮어쓰기 안내를 읽은 뒤 실행해 완료 건수를 확인합니다. 검색은 화면을 좁히는 기능이며 반영 대상을 검색한 한 행으로 제한하지 않습니다. 완료 후 대장을 여는 과정까지 담았으며, 반영과 급여 확정·명세서 공개는 각각 다른 작업입니다.

관계는 SheetView의 열 연결 설정 → sheetView.commitToRecords → AllowanceRecord/DeductionRecord → 대장의 집계 열입니다. 값 입력·메모 영상에서 반영하지 않았던 동일 예제 시트에 후속 연결을 추가한 것이므로 이전 촬영 시점의 미반영 상태와 구분합니다. 원천의 설정 저장 과정에서 임베드가 다시 로드될 수 있어 저장 직후 표시와 재조회 결과를 대조했습니다.

찾기·한 건 바꾸기의 실제 사용 영상 ​

HR 가이드의 찾기·바꾸기 항목에 Codex가 촬영한 번호 영상을 연결했습니다. 예제 조직 관리자가 「영상 실습 수당」에서 DOC002를 검색한 뒤 셀 상세 패널을 접고 편집 → 찾기 및 바꾸기를 엽니다. 찾을 내용은 기존 사유인 「영상 가이드 실습 수당」, 바꿀 내용은 「교육 수당 촬영 예제」를 입력하고 「바꾸기」를 눌러 한 셀의 실제 변경을 확인합니다. 이어 변경한 문구를 찾아 기존 사유로 한 건을 복원하고 찾기 창을 닫습니다.

찾기창의 「바꾸기」와 「전체 바꾸기」를 구분합니다. 이 영상은 한 건의 대체와 복원을 실행했으며 전체 바꾸기·조건부 서식·복합 조건은 촬영하지 않았습니다. 원문을 복원하더라도 원천 시트의 편집 시각은 갱신되어 「반영 필요」가 표시될 수 있습니다. 화면 편집과 수당 기록 재반영은 별도 조작이므로, 찾기 영상에서 수당 금액이나 확정 스냅샷을 다시 생성한 것으로 안내하지 않습니다.

같은 항목의 별도 정렬·필터 영상에서는 데이터 → 시트 정렬에서 금액·내림차순을 선택하고 「정렬 적용」을 누릅니다. 금액 머리글의 필터에서 「초과 >」·0을 입력한 뒤 「완료」를 누르면 136,000원이 있는 예제 직원 행이 남습니다. 다시 필터를 열어 「필터 제거」, 데이터 → 시트 정렬 → 「정렬 해제」로 표시 범위와 순서를 복원했습니다. 정렬·필터는 지급액 수정이나 확정 범위 선택이 아닙니다.

접근 권한 — 팀·개인 공유 ​

비공개 시트를 만든 사람이 특정 팀이나 직원에게 열어 주는 기능입니다. 드라이브 폴더 공유와 같은 모델이며, 정본 설계는 docs/internal/design-sheet-access-control.md입니다.

  • 진입은 파일 > 접근 권한 또는 사이드바 시트 우클릭 접근 권한 둘 다입니다. 모달의 동작은 즉시 저장되며 별도 저장 버튼이 없습니다.
  • 공개 범위가 조직 전체이면 급여 권한이 있는 관리자 전원이 보고 목록은 무시됩니다. 지정한 팀·개인만(비공개)일 때 목록이 적용됩니다.
  • 대상은 팀 또는 개인, 역할은 보기(viewer)/편집(editor)입니다. 팀 대상은 현재 소속(활성 팀원)에게만 적용되어 팀을 떠나면 자동으로 빠집니다. 같은 대상을 다시 추가하면 역할만 바뀝니다.
  • 역할은 사용자의 급여 권한을 넘지 못합니다. 급여 조회 권한만 있는 사람에게 편집을 줘도 읽기 전용이고, 급여 조회 권한이 없는 직원은 공유해도 시트를 열 수 없습니다.
  • 권한을 바꿀 수 있는 사람은 만든 사람, 편집으로 공유받은 사람, 시스템 관리자입니다. 비공개 시트의 삭제는 만든 사람(또는 시스템 관리자)만 할 수 있습니다. 조직 관리자(최고 관리자 포함)라도 남의 비공개 시트는 공유받지 않으면 보이지 않습니다.
  • 보기로 공유받은 시트는 툴바에 읽기 전용 배지가 붙고 셀·구조 편집이 막힙니다. 사이드바에서는 비공개 아이콘 옆에 일부 공유 아이콘이 붙습니다.
  • 상시 시트의 새 버전은 공유 대상을 그대로 잇습니다. 이월(이전 월 가져오기)은 공개 시트만 대상이라 해당 없습니다.

편집할 수 없는 셀의 수정 위치 ​

더블클릭·Enter·타이핑으로 편집할 수 없는 셀에 접근하면 이유를 안내합니다. 셀 편집 가이드에 원인별 수정 위치와 저장 후 재조회 절차를 정리했습니다. 원본을 가져온 직원 정보는 직원 관리/직원 마스터, 합산 값은 원본 시트 수정 후 다시 반영, 소계·계산 값은 입력 자료 수정, 치료 일별 합계는 세션 편집으로 연결합니다. 아직 저장되지 않았거나 직원이 연결되지 않은 행은 먼저 행·직원을 준비합니다.

uneditable-reason.ts는 _isCellEditableForRow의 판정 순서와 맞아야 합니다. hasSheetWithSlug가 참일 때만 직원 마스터/원본 시트 바로가기를 붙이며, 버튼은 접근 권한을 추가하지 않습니다. cell-edit.ts, selection.ts, clipboard.ts의 안내 사용과 PR #790을 대조했습니다. 고객 가이드에서는 제품 메시지에 있는 ‘레코드·커밋’을 그대로 설명 용어로 쓰지 않고 ‘원본 자료·급여대장에 반영’으로 풀이합니다. 화면 재촬영은 대기 중입니다.

퇴사·재입사와 귀속 기간 ​

급여대장 가이드에 급여 제외·최종 근무일·계약 종료일과 재입사 확인 절차를 추가했습니다. 기간 시작 전 퇴사 기록은 자동 행 제외에 쓰이며, 현재 재직 기간보다 앞선 퇴사 기록은 배지·최종 근무일·제외 판정에서 제외합니다. 현재 재직 기간은 입사일과 최신 유효 계약 시작일 중 뒤의 날짜로 판단합니다. 직원 마스터의 최종 근무일 입력은 퇴사 기록에 반영되지만 빈 셀은 변경 없음이고 직원 재직 상태까지 바꾸지 않습니다.

PR #722·#758·#771·#789 및 sheet-rows/materializer.ts, resolver.ts, employee-master.ts, utils/resignation-tenure.ts를 대조했습니다. 과거 월 조회·확정된 급여·재입사·실제 파일 결과는 별도 검증 대상입니다. 운영 배포나 해당 장면 촬영 완료를 의미하지 않습니다.

작업사용자 가이드와 확인 범위
상시 시트·적용일별 버전·고정템플릿·상시 시트. 기존 원고를 보존했으며 PR #713·#788의 촬영 대기를 유지합니다.
값 목록·셀/글자 색 필터필터·정렬. PR #701·#704·#727은 기존 원고에 반영돼 있습니다. 직접 지정한 색과 조건부 서식이 칠한 색(「(조건부 서식)」 표시)이 모두 필터 후보이며, 필터 창의 「색상별 정렬」·「색상별 필터링」도 같은 색 목록을 씁니다(2026-09-28).
링크 복사·팀/개인 보기·편집시트 정보. PR #676·#728에 맞춰 권한과 링크의 차이, 즉시 저장과 되돌리는 방법을 보완했습니다.

새 영상의 최종 주소가 없으므로 기존 탐색·필터·시트 정보 영상의 번호·시각·설명을 새 절차에 맞춰 임의 변경하지 않습니다.

근태 시간 선택과 폴더 정리 ​

출퇴근 참조 열에는 일반·야간·휴일일반·휴일야간 시간이 있습니다. 연장·주말·휴일 통합 항목의 레거시 표시는 과거 자료 호환용이며 새 계산에서 이 열만으로 연장근무 전체를 집계하면 안 됩니다. 승인 연장은 연장근무 자료와 연결합니다. PR #707의 columns.ts와 계산 구조 정리에 근거하며 시트 정보의 자료 종류와 함께 확인합니다. 법정 산식의 적합성이나 운영 급여액을 이번 작업에서 재검증한 것은 아닙니다.

PR #754에서 급여대장만 들어 있는 자동 폴더는 빈 폴더로 남지 않고 폴더 해제는 저장 후에도 유지됩니다. 직접 만든 빈 폴더와 미분류는 유지됩니다. 폴더 조작은 템플릿·폴더 안내에 연결하며 실제 드래그·재접속 대조는 대기입니다.

파일 검토·승인·원본 대조·되돌림 ​

전체 조작은 사용자 가이드의 업로드를 따릅니다. new-sheet-modal.ts와 modals/new-sheet.html은 CSV/XLSX를 분석하고 열을 값·직원 정보·수식·제외로 연결합니다. 사번 또는 이름으로 직원을 찾으며 동명이인·미등록 직원은 자동으로 단정하지 않습니다. 검증 후에도 미연결 행을 승인하면 직원 없는 수동 행 생성 확인을 받습니다. 여러 탭은 모두 검토하고, AI 매핑 제안 없이도 수동 연결·검증·승인이 가능합니다.

파일의 급여 금액을 직원 정보 열로 잘못 연결하면 원본 값 대신 계약 값을 읽게 되므로 값 열과 구분합니다. 지원하지 않는 수식은 변환 여부·보존 원문·값을 대조합니다. 성공 카드의 원본 보기는 최대 50행이며 전체 파일 대조는 원본 다운로드로 합니다. 시트는 비공개·설정 중으로 생성되므로 공유·구조 확인·급여 반영은 별도입니다. 가져오기 변경 이력을 되돌리면 시트 전체가 휴지통으로 이동하고 열린 시트에서 나옵니다. 되돌림 후 빈 시트를 계속 표시하는 것으로 설명하지 않습니다.

PR #832·#836, packages/api/src/routers/sheet-import.router.ts, apps/hr-system/src/sheets/workbook/change-sets.ts를 대조했습니다. 원본 보관의 12개월 정책 메타데이터와 실제 정기 삭제 작업은 구분해야 하며, 후자는 구현·운영 확인 없이 자동 정리된다고 안내하지 않습니다.

계약 기간과 조직 기준 ​

급여대장 가이드와 조직 설정을 함께 봅니다. 월별 시트는 해당 월에 유효한 근로계약을 읽습니다. sheetContractBasis가 prorate이면 금액을 계약별 소정근로일 비율로 합산하고 나머지 값은 월말 최종 계약에서 읽습니다. last_contract는 최종 계약 값을 사용합니다. 계약이 없는 월은 빈 값이며 상시 시트는 현재 활성 계약을 사용합니다. 조직 공휴일이 비율 계산에 영향을 주므로 동일 월·계약·조직 설정을 함께 대조합니다. 이것은 계약 값 선택 규칙이며 지급액 계산·확정 자체를 대체하지 않습니다. PR #873과 조직 설정 화면을 근거로 보완했습니다.

여러 행 작업과 시트 AI ​

선택 범위 안 우클릭은 선택한 전체 행의 삭제·보호·해제를 처리하고, 범위 밖 우클릭은 한 행으로 선택을 옮깁니다. 저장되지 않은 행·자동 행·한 행 전용 작업의 제한은 행 사용법에 있습니다. PR #868의 rows.ts 및 행 메뉴를 대조했습니다. AI의 일괄 변경·열 구성·되돌림은 시트 AI와 연결됩니다.

월별 작업의 추가 절차 ​

사용 대상은 해당 시트의 조회·편집 권한을 가진 급여 담당자입니다. 팀 급여 조회자는 허용된 직원 행만 보고, 다른 시트 참조 역시 접근 범위 안에서만 값을 읽습니다. 조직 전체 조회가 필요한 관리 화면과 팀 행 조회를 구분합니다.

작업진입·입력·저장·확인예외·취소·연관
일반 월별 기록새 시트 만들기에서 이름·공개 여부를 정하고 「일반 시트」, 「일반 시트로 만들기」. 생성 기간·이름 확인수식 선택을 건너뛴 빈 표. 만들기 전 닫기는 취소
팀별 직원 추가직원 추가에서 팀 검색·하위 팀 포함·재직/급여 대상 필터, 체크 후 추가검색을 바꿔도 체크 유지. 기존 빈 행 우선 사용. 설정 중에도 직원 기준 시트의 행 추가 가능
자동 채움 대상시트 정보에서 팀/직원 범위 저장 후 다시 조회신규 직원 자동 추가는 조직 선택 기능. 직원 등록 전 대상 미리보기와 등록 후 결과 확인
필터·행 숨김표 위 조건별 해제·전체 초기화, 행 메뉴 숨김·숨김 해제개인 보기이며 삭제 아님. 화면 합계·필터 결과 내보내기와 전체 급여 처리 대상이 다름
빈 행·열 삭제수정 메뉴에서 아래쪽 빈 행/오른쪽 빈 열 정리끝의 연속 구간만. 값·수식·메모·참조·병합 등 사용 중인 열 보존
열 편집경계 두 번 클릭으로 너비 맞춤, 저장된 식별 필드 확인, 저장하고 이동저장 실패 시 현재 창에서 보완. Delete로 지울 수 없는 칸의 안내 확인
값 이월열 설정 「값 이월」 저장, 이전 월에서 가져오기, 새 월 값 확인직접 입력값 대상. 수식 결과 고정 복사 아님. 대기 예약 적용은 별도
열 즐겨찾기자주 참조하는 열 등록 후 수식 도구에서 삽입·제거참조 시트·열·행 기준 확인. 시트 이동 중 작성하던 수식 연결 유지
고정 수당시작/종료 기간이 있는 고정 수당 원천 연결 후 기간 금액 확인중도 시작·종료는 월 해당 기간 비례 계산. 급여 반영·확정 별도

일반 시트, 원본 파일 관리와 값 이월, 직원 선택, 예약·편집, 수식, 필터의 사용자 절차를 함께 갱신했습니다. 계약·셀의 미래 변경은 예약 기능에 분리합니다.

정산 진행·원본 관리·계산 변경 ​

「정산 진행」은 선택 연월의 일곱 단계와 다음 할 일·이상치를 읽습니다. 원천 기록이 없는 자동 채움 시트는 그 이유를 보이고 진행을 막지 않습니다. 시트 바로가기는 조회 화면만 열며 반영·확정을 실행하지 않습니다. 전월 대비 급변·퇴직자 금액 등 이상치는 담당자의 대조가 필요합니다. eCount 내보내기 이력과 명세서 발송은 마지막 단계의 근거이며 외부 회계 시스템 업로드 완료까지 확인하지 않습니다.

「파일 > 업로드 파일 관리」는 분석만 한 파일도 보여 줍니다. 삭제 확인은 원본만 제거하며 생성된 시트 값은 유지합니다. 삭제·보관 만료 사유는 이력과 원본 보기에 남습니다. 기본 365일 보관이며 실제 작업기 실행·파일 제거는 운영 환경에서 확인해야 합니다. 로컬 문서 검증을 파일 보관 정책의 실제 실행 증거로 사용하지 않습니다.

수식은 Excel 방식의 음수 ROUND, PERIODSTART/PERIODEND, DATEDIF, 문자열, 조직 시간 기준 TODAY, QUOTIENT, WEEKDAY, ISHOLIDAY를 지원합니다. 연도 없는 날짜는 시트 기간의 연도를 씁니다. 공휴일 함수는 조직 공휴일 자료의 정확성에 의존합니다. 급여 금액과 법정 기준의 적합성을 이 문서에서 별도로 인증하지 않습니다.

사용 중인 급여대장에 「+ 새 집계 컬럼」을 추가하면 확인 후 재설정·저장·설정 완료를 이어서 수행합니다. 작업 완료/보호 상태는 거부하며 중간 실패 시 설정 중 상태를 직접 마무리합니다. 변경 세트 적용·되돌림 후 행·합계와 칸 이력을 함께 갱신합니다.

구현은 apps/hr-system/src/sheets/workbook/의 행 선택·이월·예약·이력 모듈, packages/api/src/routers/sheet-rows/, services/payroll-cycle.load.ts, 업로드 원본 관리 서비스에 연결됩니다. 회차별 소스 대조 원장에 각 PR와 검증 경계를 남깁니다.

단일 선택·다중 선택 입력 ​

항목안내
대상·조건해당 시트 편집 권한. 열 설정 변경은 설정 중 상태에서 수행합니다.
시작열 제목 오른쪽 클릭 > 열 설정 > 고급 종류
선택지한 줄에 하나씩 입력한 뒤 저장합니다. 취소하면 열 설정 변경을 버립니다.
단일 선택칸을 두 번 눌러 목록에서 하나를 고릅니다. 선택 즉시 저장하고 다시 열어 대조합니다.
다중 선택칸을 두 번 눌러 항목 글자·체크박스로 선택·해제합니다. 확인은 저장, 취소는 이번 편집을 버립니다.
연결단일 선택은 글자 비교, 다중 선택은 선택 개수로 수식에서 사용합니다.

열 설정 사용법에 실제 펼침·입력·저장·취소·재조회 절차를 반영했습니다. PR #1039는 열 설정의 단일 선택 진입점을 추가하고 다중 선택 목록이 항목 클릭 중 닫히던 문제를 수정했습니다. 폼의 단일 선택은 kind: literal, format: select, selectOptions로 저장되며 기존 서버 열 종류를 추가하지 않습니다. 관련 구현은 workbook/columns.ts, cell-edit.ts, ime-catcher.ts와 column-settings-panel.html입니다.

PR #1044의 행 중복 방지는 사용 조작을 바꾸지 않습니다. 큰 시트의 표시 행·고유 행·합계를 대조하는 검증 대상으로 관리합니다. PR #1045는 현재 재직 중인 직원의 지난 퇴사 기록을 배지·최종 근무일·급여대장 포함 판정에서 제외합니다. 퇴직 상태인 직원과 미래 퇴직 예정은 별도로 확인합니다.

예제 1,000행의 실제 조회를 두 번 확인했습니다. 각 회차에서 500행씩 받은 두 페이지는 서로 겹치지 않았고 고유 행 합계는 1,000개였습니다. 이는 예제 DB의 페이지 조회 검증이며 운영 자료의 금액·소계·내보내기까지 확인한 결과는 아닙니다.

이카운트 내보낼 열 선택 ​

항목사용 방법
대상·시작급여 담당자가 급여대장의 데이터 메뉴에서 이카운트 Export (XLSX)를 엽니다.
선택지급·공제 열 중 내보낼 항목을 고릅니다. 기본급도 포함하려면 직접 선택합니다. 이카운트 항목 코드가 없는 열은 코드를 먼저 설정합니다.
저장·결과선택 후 내보내면 파일을 내려받습니다. 「이 선택을 기본값으로 저장」을 켜고 내보낸 경우 다시 열 때 선택했던 항목을 확인하며, 항목 구성이 바뀌면 다시 대조합니다.
취소·예외닫기는 파일을 만들지 않습니다. 내보낼 항목이 없거나 코드가 빠진 경우 안내를 확인합니다. 내려받기 성공과 외부 회계 시스템의 가져오기 성공은 별개입니다.

이카운트 사용자 절차를 함께 갱신했습니다. 근거는 #1062의 apps/hr-system/src/sheets/workbook/payroll.ts입니다. 이번에는 코드와 가이드 절차를 대조했으며 실제 확정 급여의 외부 반영은 확인하지 않았습니다.

#1065의 파일 메뉴는 시트 상태에 따라 설정 완료·재설정을 구분합니다. #1066은 필터로 표시 행이 줄었을 때 스크롤 위치를 조정합니다. 화면에서 행이 안 보이는 것과 실제 행 삭제를 구분해 확인합니다.

근로형태 열과 직원 마스터 반영 ​

열 설정의 식별 > 근로형태는 직원에게 연결된 근로형태를 읽어 보여 줍니다. 읽기 전용 열에서 값을 바꾸려 하지 않습니다. 직원 마스터 시트에서 수정하려면 고급 종류 > 시스템 기록에서 소스 테이블을 비워 근로자 정보 필드를 고르고 근무 > 근로형태를 선택합니다. 열 설정 저장 후 등록된 이름을 입력하고 마스터에 적용 결과를 확인합니다. 열 설정 취소는 이번 설정을 버립니다.

등록되지 않았거나 비활성인 이름은 반영 단계에서 문제로 표시될 수 있습니다. 미리보기 통과와 실제 적용 성공은 다릅니다. 반영 후 직원 정보와 관련 근로시간·급여 기준을 확인합니다. 고용형태(정규직·계약직 등)와 근로형태를 구분합니다. 같은 필드 선택 목록에서 직책·급여 가산일 등 조회 항목도 확인할 수 있습니다.

급여 담당자 가이드에 조회용·수정용 절차를 연결했습니다. PR #1249의 열 선택·조회·반영 경로를 코드로 대조했으며 이번 회차에는 해당 반영 영상을 촬영하지 않았습니다. PR #1207·#1209의 비활성 인센티브 템플릿 제한·선택 항목·금액 형식 보정도 구분해 검토했으며 실제 급여 반영 검증을 완료했다고 표시하지 않습니다.