← 포트폴리오 목록

근무평가 관리 시스템

공공기관 폐쇄망 환경에서 운전원 850명 대상 근무평가를 관리하는 풀스택 시스템을 React + Node.js + PostgreSQL 기반으로 설계·구현합니다.

평가 수식 버전닝 구조 설계수식 변경이 기존 완료 평가에 소급 적용되지 않도록 evaluation 레코드에 formula_version_id를 외래키로 연결, 변경 이력 10건 조회 및 복원 구조 구현
엑셀 일괄 업로드 트랜잭션 설계ExcelJS로 8행 단위 트랜잭션 업서트 처리, 중복 사번 충돌 시 Prisma advisory lock 기반 롤백, 파싱 오류 행을 별도 에러 리포트 CSV로 반환
마스터-디테일 인라인 편집 아키텍처 구현useDriverDetail Custom Hook으로 목록 선택 상태·편집 폼 상태·저장 뮤테이션을 단일 훅으로 추상화, 4개 화면에서 재사용
서비스 타입Web
업종데이터 분석
기술 스택
ReactTypeScriptTailwind CSSNode.jsExpressPostgreSQLPrismaRechartsDocker
주요 기능
  • 운전원 관리
  • 평가 입력
  • 수식 설정
  • 대시보드
Overview

프로젝트 개요

범위: 개발, 디자인, 기획
공공기관 폐쇄망 환경에서 운전원 850명 대상 근무평가를 관리하는 풀스택 시스템을 React + Node.js + PostgreSQL 기반으로 설계·구현합니다. 정량 7개·정성 2개 지표 점수 입력, 가중치 기반 자동 등급 산출, 엑셀 일괄 업로드·다운로드, Docker 컨테이너 로컬 배포 구성을 포함한 프로젝트입니다.
근무평가 관리 시스템
요구사항 정의

프로젝트 핵심 과제

프로젝트 진행 시 해결한 핵심 기술 과제입니다.

사내 평가 산식이 미팅 후 제공되므로

지표 항목·가중치·등급 컷오프를 관리자가 수정할 수 있는 범용 수식 엔진으로 설계해야 합니다

엑셀 파일 형식이 공고에 명시되지 않아 다양한 컬럼 배치 변형에 대응하는 파싱 로직 설계와 오류 행 리포트 구조가 필요합니다

폐쇄망 환경에서 원격 디버깅이 불가하므로 Docker 이미지 단독 기동·환경변수 오버라이드·로그 수집 구조를 로컬 배포 패키지에 포함해야 합니다

정량·정성 지표의 자동 임시저장과 최종 완료 상태를 분리 관리하면서

미완료 항목 현황을 실시간 집계해 관리자가 평가 진행 상황을 파악할 수 있어야 합니다

핵심 기능 1

운전원 관리

운전원 850명의 정보를 등록·수정·삭제하고 사번·이름 검색, 엑셀 일괄 업로드(8명 단위)로 대량 데이터를 효율적으로 관리합니다
운전원 관리
핵심 기능 2

평가 입력

정량 지표 7가지와 정성 지표 2가지 점수를 운전원별로 입력하고, 입력 상태(대기·진행중·완료)를 시각적으로 표기합니다
평가 입력
핵심 기능 3

수식 설정

정량·정성 지표별 가중치와 등급별 컷오프 점수(A~E)를 관리자가 직접 설정하고 저장하며, 변경 이력을 관리합니다
수식 설정
핵심 기능 4

대시보드

등급별 분포 원형 차트, 부서·그룹별 평균 점수 막대 차트, 평가 진행 현황을 한 화면에서 조망합니다
대시보드
구현 과정

프로젝트 진행 단계

STEP 1

도메인 분석 및 ERD 설계

운전원 평가 업무 프로세스 분석, PostgreSQL 테이블 12개 정의(driver/evaluation/formula/history), 정량·정성 지표 스키마 설계

STEP 2

평가 산식 엔진 및 API 개발

Express 기반 가중치 계산·등급 산출 로직 구현, 엑셀 파싱(ExcelJS) API, 수식 버전닝 구조 설계

STEP 3

마스터-디테일 UI 및 평가 입력 폼 개발

React 마스터-디테일 레이아웃 구현, 정량·정성 지표 입력 폼, 자동 임시저장 패턴 적용

STEP 4

대시보드 차트 및 Docker 배포 구성

Recharts 등급 분포·부서별 차트 구현, Dockerfile + docker-compose 폐쇄망 로컬 배포 구성, 통합 테스트

프로젝트 성과
평가 수식 버전닝 구조 설계수식 변경이 기존 완료 평가에 소급 적용되지 않도록 evaluation 레코드에 formula_version_id를 외래키로 연결, 변경 이력 10건 조회 및 복원 구조 구현
엑셀 일괄 업로드 트랜잭션 설계ExcelJS로 8행 단위 트랜잭션 업서트 처리, 중복 사번 충돌 시 Prisma advisory lock 기반 롤백, 파싱 오류 행을 별도 에러 리포트 CSV로 반환
마스터-디테일 인라인 편집 아키텍처 구현useDriverDetail Custom Hook으로 목록 선택 상태·편집 폼 상태·저장 뮤테이션을 단일 훅으로 추상화, 4개 화면에서 재사용
폐쇄망 Docker 컨테이너 배포 구성외부 레지스트리 없이 로컬 PC에서 docker-compose up 한 명령으로 Node API + PostgreSQL + Nginx 리버스 프록시 기동 구성, 이미지 tar 전달 방식 설계
Review

기술적 주안점

  • 마스터-디테일 패턴으로 리스트 선택 → 우측 패널 인라인 편집 구조를 Custom Hook(useDriverDetail)으로 추상화해 목록과 편집 상태를 분리 관리하는 아키텍처를 구현합니다
  • 정량 7개 + 정성 2개 지표를 단일 폼에서 처리하며 입력 상태 배지(대기·진행중·완료)를 서버 동기화와 로컬 낙관적 업데이트 양쪽으로 관리하는 이중 상태 구조를 설계합니다
  • 수식 설정 변경이 기존 완료된 평가에 소급 적용되지 않도록 평가 레코드에 스냅샷 수식 버전을 함께 저장하는 버전닝 구조를 설계합니다

유사한 프로젝트를 기획하고 계신가요?

FIRSTPIP이 개발 범위와 로드맵을 함께 정리해드립니다

무료 상담 시작하기