추천
인터넷이 차단된 사내 PC 한 대에서 단독 기동되는 근무평정 관리 웹입니다. 산식을 순수함수 엔진 하나로 통일해 화면값과 저장값이 어긋나지 않도록 구축·납품했습니다.
인터넷이 완전히 차단된 사내 PC 한 대에서 단독으로 동작하는 근무평정 관리 웹을 구축·납품했습니다. 담당자들이 엑셀 워크북으로 관리하던 근무평정 업무를 명단 관리부터 정량·정성 지표 입력, 직급별 정원 배분과 등급 산출, 결과 엑셀 내보내기와 결재용 인쇄까지 하나의 시스템으로 옮겼습니다. 웹·API·데이터베이스를 명령 한 번으로 함께 띄우고 화면 폰트까지 번들해 외부로 나가는 요청이 한 건도 없으며, 외부망을 쓸 수 없는 조직의 인사·심사·정산 업무에도 같은 골격으로 응용할 수 있도록 설계했습니다.
작업 범위
주요 업무









문서로 정리되지 않은 규칙이 셀 수식에 섞여 있어, 직급별 정원 누적 컷오프와 등급 그룹 내 정규화까지 복원해 엑셀과 같은 값을 내야 했습니다.
입력 화면의 미리보기 점수와 저장 후 조회 점수를 따로 구현하면 반드시 갈라지므로, 산식을 순수함수 패키지 하나로 모아 프론트와 백엔드가 함께 쓰게 했습니다.
가중치나 규칙을 고칠 때 기존 결과가 조용히 바뀌지 않도록, 전원 재계산 결과가 오차 0.01 이내로 재현되고 등급이 모두 일치해야 반영되게 묶었습니다.
외부 저장소에 접근할 수 없어 이미지를 tar로 반입해 설치하고, 화면 폰트까지 번들해 외부로 나가는 요청을 없앴습니다.
포트를 모든 인터페이스에 열면 사내망에 연결되는 순간 다른 PC에서도 접속되므로, 루프백에 고정해 설치된 PC에서만 열리도록 했습니다.
총점·환산·순위·정원배분·정규화·등급 계산을 순수함수 패키지 하나에 모으고 프론트 미리보기와 백엔드 확정 계산이 같은 코드를 씁니다. 계산을 두 번 구현하지 않으므로 두 값이 어긋날 수 없습니다.
산식을 프론트와 백엔드가 각각 구현하면 반드시 갈라집니다. 한 곳에 두고 양쪽이 import 하는 것이 유일한 해법이었습니다.


직급별 정원 컷오프로 변환등급을 정하고 등급 그룹 안에서 총점을 정규화해 결정등급을 산출합니다. 개인별 계산 경로를 단계별로 펼쳐 보고, 기존 엑셀과 전 인원·다섯 항목을 대조해 모두 일치함을 확인했습니다.
평가는 결과보다 근거를 설명할 수 있어야 받아들여집니다. 숫자가 나온 경로를 되짚게 하고, 기존 엑셀과 전수 대조해 의심을 없앴습니다.


외부 통신이 전혀 없는 사내 PC 한 대에서 명령 한 번으로 웹·API·데이터베이스가 함께 뜨도록 구성했습니다. 이미지를 tar로 반입해 오프라인 설치하며 폰트까지 번들해 외부 요청이 없습니다.
포트를 모든 인터페이스에 열면 랜선을 꽂는 순간 사내망 어느 PC에서든 열립니다. 루프백에 고정해 접속 범위를 서면 약속대로 묶었습니다.


수식 관리와 작업 로그는 마스터 계정에만 노출되고 서버에서도 차단합니다. 평가 기간을 잠그면 입력이 동결되며 등록·수정·삭제가 감사 로그에 남습니다.
메뉴만 숨기는 권한은 권한이 아닙니다. 화면과 서버 양쪽에서 막아야 우회가 없습니다.


1,000명 규모 명단을 엑셀로 일괄 등록하거나 개별 등록·수정하고 사번·이름 검색과 직급 필터로 대상을 찾습니다. 평가 입력에서 진행 상태를 보며 점수를 채우고 병가 대조로 근태 반영분을 맞춥니다.
담당자 서너 명이 1,000명을 다루므로, 어디까지 입력했는지가 항상 보여야 일이 끊기지 않습니다.


담당자가 쓰던 엑셀에서 정량 7·정성 2 지표와 정원 배분·정규화 규칙을 역추적해 요구사항 정의서와 화면 설계서로 확정했습니다.
평가·기간·설정·감사 등 6개 테이블을 설계하고 산식을 순수함수 패키지로 분리했습니다. 전수 재현 테스트를 함께 만들어 이후 변경을 게이트로 묶었습니다. 대시보드·명단·평가 입력·결과·이력·수식 관리 화면을 만들고 워크북 업로드와 전수 대조 화면을 붙였습니다.
컴포즈 단독 기동 구성, 루프백 바인딩, 권한 이중 차단, 세션 만료, 백업·복구 스크립트를 정비했습니다.
인터넷이 없는 현장 PC에 이미지를 반입해 설치하고 담당자와 함께 실제 데이터로 결과를 대조했습니다. 이어서 사용 매뉴얼을 포함한 산출물 6종을 정리해 인계하고 준공 서류를 제출했습니다.
다양한 도메인 응용