Skip to content

시트 양식 다운로드 ​

HR 시스템의 시트 양식(JSON) 파일을 내려받아 바로 새 시트를 만들 수 있어요. 이 페이지에서는 양식이 무엇인지, 어떻게 올리는지, 그리고 기존 구글 시트의 근로자 정보를 옮겨 붙이는 절차를 설명해요.

양식 JSON이란 ​

양식 JSON은 시트의 컬럼 레이아웃만 담은 파일이에요. 열의 이름·순서·너비·형식(텍스트·숫자·날짜·체크·선택)과 컬럼 그룹, 열 머리 도움말이 들어 있고, 행 데이터는 들어 있지 않아요.

양식을 업로드하면 「설정 중」 상태의 비공개 새 시트가 빈 행 1,000개와 함께 만들어져요. 이후 열을 다듬고 값을 채운 뒤 「설정 완료」로 사용 중 상태로 넘기면 돼요. 시트 상태(설정 중 → 사용 중)의 의미는 HR 급여 시트 가이드를 참고하세요.

업로드 방법 ​

  1. HR 시스템 → 시트로 이동해요.
  2. 사이드바에서 「새 시트 만들기」를 눌러요.
  3. 모달의 파일 업로드 영역에 내려받은 .json 파일을 드롭하거나, 영역을 눌러 파일을 선택해요.
  4. 「양식이 업로드되었어요」 안내가 뜨면 완료예요. 양식 이름으로 새 시트가 만들어지고 바로 열려요.

TIP

같은 양식을 여러 번 올리면 같은 이름의 시트가 여러 개 생겨요. 시트 이름은 만들고 나서 시트 탭에서 바꿀 수 있어요.

양식 목록 ​

각 카드의 「컬럼 전체 보기」를 펼치면 열마다 키·종류·형식과 선택 옵션을 확인할 수 있어요. 파란 배경 행은 직원 정보에서 읽어 오는 식별 컬럼이에요.

양식 목록을 불러오고 있어요…

주의 — 민감정보는 시트에 넣지 마세요

시트에는 열 단위 마스킹·암호화·권한이 없어요. 공유 시트는 payroll:manage 권한이 있는 사람 모두에게 평문으로 보이고, 엑셀 내보내기에도 그대로 포함돼요. 주민등록번호·계좌번호·주소 같은 값은 「근로자 정보 (민감정보 제외)」 양식을 쓰고, 직원 정보(암호화 저장)에서 관리해 주세요. 「원본 60열」 양식은 기존 시트 구조를 검토하거나 임시로 옮길 때만 쓰고, 옮긴 뒤에는 민감정보 열을 삭제하는 것을 권장해요.

근로자 정보 시트에 구글 시트 내용 붙여넣기 ​

「근로자 정보」 양식으로 만든 시트에 기존 구글 시트의 데이터를 한 번에 옮기는 절차예요.

① 직원 정보에 사번을 먼저 등록해요 ​

붙여넣기는 사번으로 직원을 찾아 행을 연결해요. 그래서 관리자 패널의 직원 정보에 사번이 먼저 등록돼 있어야 해요.

  • 직원 정보에 없는 사번은 연결되지 않아요. 나머지 값은 저장되지만 그 행의 사번·성명 칸이 빈 채로 남으니, 붙여넣은 뒤 빈 사번 칸을 훑어 미등록 직원을 찾아 주세요. (빈 행이 모자라 새 행을 만들며 붙여넣는 경우에는 미일치 행을 건너뛰고 토스트로 알려 줘요.)
  • 원본에 같은 사번이 두 번 있으면 두 행이 같은 직원에 연결돼요. 붙여넣기 전에 원본의 중복 사번을 정리해 주세요.

② 구글 시트에서 데이터 영역을 복사해요 ​

구글 시트에서 헤더(제목 행)를 제외한 데이터 영역을 A열부터 끝 열까지 선택해 복사해요. 양식의 열 순서가 원본과 같으므로 열을 골라 낼 필요 없이 블록 전체를 복사하면 돼요.

③ 첫 데이터 행의 「연번」 셀을 클릭하고 붙여넣어요 ​

시트의 첫 번째 데이터 행 「연번」 셀을 클릭한 뒤 ⌘V(맥) 또는 Ctrl+V(윈도우)를 눌러요. 붙여넣기 시작 셀이 「연번」이어야 A열부터 복사한 블록이 열 순서대로 맞아 들어가요.

  • 각 행의 사번 열 값으로 직원을 찾아 행에 연결하고, 나머지 셀 값을 저장해요.
  • 붙여넣기는 2,000셀 단위로 자동 분할 전송되므로 수백 명 × 60열도 한 번에 붙여넣을 수 있어요. 완료될 때까지 잠시 기다려 주세요.
  • 붙여넣은 블록이 시트보다 넓으면 오른쪽에 열이 자동으로 추가돼요. 단, 「사용 중」 시트는 구조가 잠겨 있어 열이 추가되지 않고, 잘린 열 수를 알려 줘요. 열을 늘려야 하면 「설정 중」 상태에서 붙여넣어 주세요.

⑤ 날짜·숫자·체크 값은 자동으로 인식돼요 ​

형식인식되는 입력 예저장
날짜2012-08-03 · 2010/03/05 · 1976. 11. 8 · 1985년 1월 20일날짜 값
숫자260,400,000 · -50,000 (콤마·음수 그대로)숫자 값
체크TRUE / FALSE체크 값

⑥ 식별 컬럼에 붙여넣은 값은 무시돼요 ​

식별 컬럼은 직원 정보에서 읽어 와 표시하는 열이라, 붙여넣은 값이 있어도 무시되고 직원 정보의 값이 보여요. 값을 바꾸려면 관리자 패널의 직원 정보에서 수정해 주세요.

  • 두 양식 공통: 사번 · 성명
  • 「민감정보 제외」 양식 추가: 생년월일 · 연락처(핸드폰) · 이메일 · 입사일(시스템)

⑦ 「설정 완료」로 사용 중 전환해요 ​

붙여넣기 결과를 확인하고 필요한 열 이름·형식을 손본 뒤, 「설정 완료」를 눌러 시트를 사용 중 상태로 전환해요. 이후에는 구조가 잠기고 값만 편집할 수 있어요.

직원 마스터 시트 — 붙여넣은 값을 DB에 반영하기 ​

「직원 마스터 (근로자 정보 · DB 반영)」 양식은 앞의 두 양식과 달리 시트가 직원 정보와 연결된 마스터 시트예요. 업로드하면 빈 행 대신 조직의 직원 한 명당 한 행이 사번순으로 자동으로 만들어지고, 열마다 DB의 어느 항목에 연결되는지가 정해져 있어요.

열은 세 종류예요 ​

종류열 머리 표시동작
식별 (사번·성명)자물쇠직원 정보에서 읽어 와요. 편집·붙여넣기 불가 — 사번은 붙여넣기의 키로만 쓰여요.
DB 반영 (42열)「DB에 반영돼요」 도움말붙여넣거나 입력하면 오버라이드로 시트에만 먼저 저장되고, 「⚙️ 마스터에 적용」을 누르면 DB에 기록된 뒤 셀이 비워져 DB 값이 다시 보여요. 아직 적용되지 않은 셀은 주황색 띠로 표시돼요.
시트 전용 (16열)「시트에만 저장」 도움말만나이·성별·장애·학력·퇴직연금·요양야간·EMR 관리번호처럼 DB에 대응 항목이 없는 값이에요. 시트에만 남아요.

DB 반영 열이 어디로 가는지는 아래와 같아요. 각 열의 정확한 대상은 카드의 「컬럼 전체 보기」에서 종류(DB 반영)와 키를 확인할 수 있어요.

대상열
직원 정보직책 · 최초입사일 · 생년월일 · 주소 · 주민등록번호 · 연락처 · 이메일 · 은행 · 계좌
팀 소속팀 (같은 이름의 팀이 관리자 패널에 있어야 해요 — 없으면 그 셀만 남고 사유를 알려 줘요)
근태 근무 배정근무 그룹 · 근무 유형 (관리자 패널 근태 설정의 이름과 같아야 해요 — 없는 이름이나 같은 이름이 여럿이면 그 셀만 남고 사유를 알려 줘요)
근로계약근로형태 · 직무 · 변동일(계약 시작일) · 퇴사일(계약 종료일) · 연봉 · 월급여 · 기본급 · 통상시급 · 근속수당 · 포괄연장 · 포괄야간 · 직책/자격/위험/특별수당 · 근로시간 · 포괄시간 · 연장/야간시간 · 근무일 형태 · 근무시간 · 휴게시간
자격증필수면허 1·2의 이름 · 면허번호 · 발급일 · 발급기관 (슬롯이 비어 있으면 새로 등록, 있으면 갱신)

근무 그룹·근무 유형 열은 맨 끝에 있어요

「근무 그룹」「근무 유형」 두 열은 원본 60열 뒤(비고 다음)에 붙어 있어요. 구글 시트를 A열부터 그대로 붙여넣는 정렬은 그대로 유지되고, 이 두 열은 원본의 「근무형태」 값을 근태 설정의 그룹 이름으로 옮겨 적어 채워요. 원본 표기를 그대로 두는 「근무형태」 열은 시트 전용이라 근태에 반영되지 않아요.

  • 근무 그룹은 이름으로 찾아 직원의 근무 그룹 배정이 돼요. 근무 유형은 그 행의 근무 그룹(없으면 직원의 현재 그룹) 안에서 찾고, 유형만 적으면 그 유형이 속한 그룹으로 그룹도 함께 맞춰져요 — 관리자 패널의 「근무 그룹 → 근무형태」 2단계 배정과 같은 결과예요.
  • 같은 이름의 근무 유형이 여러 그룹에 있으면 첫 번째를 고르지 않고 「근무 그룹 열을 함께 적어 주세요」로 보고해요.
  • 두 열을 비우면 기존 배정이 유지돼요(팀 열과 같은 규칙). 배정 해제는 관리자 패널 직원 정보에서 해요.

붙여넣기는 사번으로 행을 찾고, 없는 사번은 등록 대기 행이 돼요 ​

마스터 시트의 행 순서는 구글 시트와 다르므로, 붙여넣기 블록에 사번 열이 들어 있으면 각 줄을 행 위치가 아니라 사번이 같은 직원 행에 넣어요. 어느 행을 클릭했든 상관없어요. 「사번」 셀을 클릭한 채 연번부터 복사한 블록을 붙이는 것처럼 블록의 사번 열이 시트의 사번 열과 한 칸 어긋나도, 앵커 기준으로 한 줄도 맞지 않으면 블록 안에서 사번이 든 열을 찾아 자동으로 맞춰 붙이고 토스트로 알려 줘요. 시스템에 없는 사번은 건너뛰지 않고 시트 아래쪽에 등록 대기 행으로 추가돼요(사번·성명 칸까지 주황색 띠). 원본 60열 양식과 열 순서가 같으니 구글 시트의 데이터 영역을 A열부터 그대로 복사해 「연번」 셀에 붙여넣으면 돼요 — 직원을 미리 등록해 둘 필요가 없어요.

등록 대기 행은 「⚙️ 마스터에 적용」 때 직원이 돼요 ​

적용을 누르면 등록 대기 행마다 직원이 새로 만들어지고, 그 행은 만들어진 직원에 연결돼요. 관리자 패널에서 직원을 추가할 때와 같은 부속이 함께 생겨요.

  • 필수 값은 사번 · 성명 · 최초입사일 세 가지예요. 하나라도 비면 그 행은 만들지 않고 사유를 알려 줘요.
  • 성명은 「김승택」처럼 붙여 쓴 이름을 성·이름으로 나눠 저장해요(남궁·선우 같은 두 글자 성 인식, 공백이 있으면 공백 기준).
  • 로그인 계정과 임시 비밀번호(조직의 비밀번호 정책 형식)가 만들어지고 첫 로그인 때 변경하도록 표시돼요. 초대 메일은 보내지 않아요 — 수백 명을 한 번에 등록할 때 메일이 대량 발송되는 것을 막기 위해서예요. 초대는 관리자 패널의 직원 정보에서 보내요.
  • 팀 열에 적힌 팀이 있으면 기본 역할(EMPLOYEE)로 그 팀에 소속돼요. 팀 이름은 조직 안에서 하나뿐이라, 부서마다 「총괄」처럼 같은 이름이 있으면 「간호부 총괄」처럼 구분해 만들고 시트의 팀 값도 그렇게 적어요. 근로계약·면허 열이 채워져 있으면 계약 1버전과 자격증도 함께 만들어져요.
  • 부서 경로·계약번호·호봉처럼 읽기 전용 열에 붙여넣은 값은 적용 때 자동으로 지워지고 시스템 값이 다시 보여요. 근로형태는 정규직·계약직·기간제·파트타임·임시직·인턴·도급·자문·프리랜서 중 하나여야 해요.
  • 적용 사이에 같은 사번이 다른 경로로 등록됐다면 새로 만들지 않고 그 직원에 연결한 뒤 값을 반영해요. 이메일·연락처가 다른 직원과 겹치면 그 행은 만들어지지 않고 사유가 보고돼요.
  • 붙여넣는 블록 안에 같은 사번이 두 줄 있으면 첫 줄만 그 직원 행에 들어가고 나머지 줄은 별도의 등록 대기 행이 돼요. 적용 때 「이미 ○○ 직원이 쓰는 사번」으로 보고되니, 원본의 사번을 바로잡은 뒤 다시 적용해 주세요.
  • 팀 열을 반영하면 그 팀이 주 소속이 되고 이전 팀의 소속은 그날로 종료돼요.
  • 근무 그룹·근무 유형 열이 채워져 있으면 새 직원에게도 근태 근무 배정이 함께 들어가요.

「⚙️ 마스터에 적용」을 누르면 ​

  1. 열 형식대로 값을 검증해요. 숫자 열의 20,940,203, 날짜 열의 1976. 11. 8, 근로형태의 정규직(→ permanent) 같은 값은 자동으로 변환돼요. 형식에 맞지 않는 값(예: 근로형태 「대표자」)은 그 셀만 남기고 사유를 알려 줘요.
  2. 직원 한 명씩 하나의 트랜잭션으로 기록해요. 직원 정보는 바로 갱신되고, 근로계약은 기존 계약을 종료하고 새 버전을 만들어요(이력 보존). 자격증은 슬롯별로 갱신하거나 새로 등록해요.
  3. 성공한 셀은 비워져 DB 값이 다시 보이고, 실패한 셀은 주황색 띠 그대로 남아요. 결과 창에 「사번 · 열 · 값 — 사유」 목록이 나오니 고친 뒤 다시 적용하면 돼요.

민감정보

주민등록번호·계좌번호·면허번호는 암호화된 컬럼에 저장되고, 적용이 끝나면 시트에는 761108-1******, ****1234처럼 마스킹된 값만 보여요. 다만 붙여넣은 뒤 적용 전까지는 오버라이드 셀에 원문이 그대로 있으니, 붙여넣기 직후 바로 적용하는 것을 권장해요.

이메일·연락처 중복

이메일과 연락처는 조직 안에서 유일해야 해요. 다른 직원과 겹치면 그 직원의 행 전체가 반영되지 않고 「이미 다른 직원이 쓰는 이메일 또는 연락처예요」로 보고돼요. 원본에서 중복을 먼저 정리해 주세요.

다른 마스터 시트도 JSON으로 등록할 수 있어요 ​

양식 JSON의 autoPopulate 필드가 시트의 소스 바인딩이에요. { "source": "employee" }면 직원 마스터, salary_grade면 호봉 정의, incentive_preset이면 인센티브 프리셋 시트로 만들어지고, 이 필드가 없으면 보통의 빈 시트예요. 시스템에서 마스터 시트를 「JSON — 시트 형식」으로 내보내면 이 필드와 slug가 함께 담기므로, 내보낸 파일을 그대로 이 페이지에 올려 재사용할 수 있어요. 직원 마스터의 ref 열이 쓸 수 있는 refField 이름은 packages/core/src/constants/employee-master-fields.ts의 카탈로그가 정본이에요 — 카탈로그에 없는 이름은 값이 비어 보일 뿐 오류가 나지 않으니 주의해 주세요.

양식 추가하기 ​

문서 관리자를 위한 안내예요. 새 양식을 이 페이지에 올리려면 두 가지만 하면 돼요.

  1. 양식 JSON 파일을 docs/public/sheet-templates/에 넣어요. 시스템에서 내보낸 JSON을 그대로 써도 돼요(시트 → 파일 메뉴 → 「⬇ 다운로드」 → 형식 내보내기 「JSON — 시트 형식」). 파일은 packages/core/src/schemas/sheet-view.schema.ts의 sheetTemplateExportSchema(schemaVersion: 1)를 따라야 해요.
  2. 같은 폴더의 index.json에 항목을 추가해요. file(파일명) · name · summary · audience · sensitive · tags를 채우고, columns · identityColumns · groups는 양식 파일을 못 읽을 때 쓰는 폴백 값이라 실제 파일과 맞춰 적어요.
json
{
  "file": "my-template.json",
  "name": "양식 이름",
  "summary": "한두 문장 설명이에요.",
  "audience": "이럴 때 써요.",
  "sensitive": false,
  "columns": 12,
  "identityColumns": 2,
  "groups": ["기본", "급여 구조"],
  "tags": ["태그"]
}

열 수·식별 컬럼 수·그룹 목록과 컬럼 표는 페이지가 양식 파일을 직접 읽어 계산하므로 문서 본문을 따로 고칠 필요는 없어요. 주민등록번호·계좌 같은 열이 들어 있으면 sensitive: true로 표시해 「민감정보 포함」 배지가 붙게 해 주세요.