Project
온보딩 자동화 시스템
신규입사자 온보딩에 필요한 TO 관리, 사번 발급, 증명사진 정리, 체크리스트, 처우 수준 대시보드까지 하나의 웹앱으로 통합한 사내 온보딩 자동화 시스템입니다. Google Sheets를 데이터베이스로 활용하며 사내 서버에 배포하여 운영 중입니다.
Details
Tags

신규입사자가 들어올 때마다 사번을 발급하고, 사진파일을 정리하고, 체크리스트를 확인하고, 관련 부서에 안내하는 작업이 반복됩니다. 각 단계가 별도 시트와 폴더에 흩어져 있다 보니 누락이 발생하기 쉬운 구조였습니다. 이 프로젝트는 온보딩 운영 전반을 하나의 웹앱 안에서 처리할 수 있도록 만든 시스템입니다.
시스템 구성
NestJS 백엔드와 React/Vite 프론트엔드를 단일 Docker 컨테이너로 묶어 사내 서버에 배포했습니다. 별도 데이터베이스 없이 Google Sheets를 데이터 저장소로 활용하는 구조입니다. Google OAuth로 사내 구성원만 접근할 수 있고, 역할(Admin, Recruiter 등)에 따라 화면 접근이 제어됩니다.
주요 기능
- TO 관리: 부서별 인력 현황과 채용 계획을 한 화면에서 관리합니다. 셀/직무 연동 데이터를 시트에서 자동으로 동기화합니다.
- 온보딩 워크플로우: 입사 설문 응답 동기화, 사번 자동 발급, 증명사진 Google Drive 복사(파일명 규칙 자동 적용) 등 입사 시 필요한 데이터 처리를 자동화했습니다.
- 체크리스트: 신규입사자별 온보딩 진행 상황을 추적하고, 정보 연동이 완료되면 HR 마스터 데이터에 자동 반영됩니다.
- 처우 수준 대시보드: Recruiter 전용 화면으로, 연차별 익명 급여 밴드를 집계하여 표시합니다. 열람자 본인의 직무 데이터는 자동으로 숨김 처리됩니다.
- Admin: 셀/직무 연동, 설문 시트 동기화, 사번 시트 설정, 접근 권한 관리를 제공합니다.
설계에서 신경 쓴 부분
사번 발급 시 동시 요청으로 인한 중복 생성 문제(Race Condition)가 발생할 수 있어, 이를 방지하는 로직을 별도로 구현했습니다. 또한 Admin 화면에서 시트 ID와 폴더 ID를 동적으로 설정할 수 있게 하여, 환경 변수를 수정하지 않아도 운영 중 데이터 소스를 변경할 수 있도록 했습니다.
UI는 Tailwind CSS와 Framer Motion을 활용한 Glassmorphism 디자인으로, 다크/라이트 모드를 모두 지원합니다.
시작점과 확장
처음에는 Apps Script로 신규입사자 파일 정리와 입퇴사 Slack 알림만 자동화한 것에서 출발했습니다. 이후 TO 관리, 사번 발급, 체크리스트, 처우 대시보드까지 기능이 확장되면서 NestJS + React 기반의 독립 웹앱으로 재구축했습니다. 현재 사내 서버에 Docker로 배포하여 HR팀에서 실제 운영에 사용하고 있습니다.