창호 견적 DB 및 실측·시공 운영 관리 웹
가견적 앱 이후 단계로, 관리자가 견적 DB 단가와 버전을 관리하고 실측자 배정, 정밀실측 금액 확정, 발주·시공 상태, 시공팀·창호공장별 자동 정산까지 한 곳에서 다루는 운영 웹 구현한 프로젝트입니다.
프로젝트 개요
가견적 앱 이후 단계로, 관리자가 견적 DB 단가와 버전을 관리하고 실측자 배정, 정밀실측 금액 확정, 발주·시공 상태, 시공팀·창호공장별 자동 정산까지 한 곳에서 다루는 운영 웹 구현한 프로젝트입니다. 시공팀과 창호공장의 접근 권한을 분리하는 구조를 함께 설계합니다.
작업 범위
- 견적 DB·단가 버전 관리: 제품별·10mm 단위 단가를 조회하고 일괄 조정한 뒤 새 버전으로 게시하며, 버전 간 차이를 비교합니다
- 실측자 배정·금액 확정: 정밀실측 요청 건을 목록에서 선택해 실측자를 배정하고, 실측 결과를 기준으로 정밀실측 금액을 확정합니다
- 발주·시공 상태와 자동 정산: 최종견적 이후 발주와 시공 진행 상태를 확인하고, 시공 완료 건을 시공팀·창호공장별로 묶어 정산 내역을 생성합니다
- 시공팀·창호공장 권한 분리: 관리자, 시공팀, 창호공장 계정별로 볼 수 있는 화면과 데이터를 구분하고, 사업자 인증 결과를 조회합니다
주요 업무
- 견적 DB·단가 버전 관리 화면: 단가 변경을 초안 버전에 모아 검증 후 게시하는 구조로 설계하며, 게시 전 이전 버전과의 차이 요약을 제공합니다
- 실측자 배정·금액 확정 화면: 요청 건 상태와 실측자 일정 충돌을 함께 확인하며 배정하고, 확정 금액과 가견적의 차이를 표시하는 구조를 반영합니다
- 발주·시공 상태와 자동 정산 화면: 정산 규칙을 수수료율과 지급 대상별 설정값으로 분리하고, 완료 건을 비동기 작업으로 집계하는 구조를 반영합니다
- 시공팀·창호공장 권한 분리 화면: 역할별 라우트·API·데이터 범위를 서버에서 검증하는 구조와 사업자 인증 결과 조회 화면을 반영합니다




프로젝트 핵심 과제
단가 버전이 바뀌어도 과거 가견적과 확정 금액을 재현해야 하므로 게시 버전 불변 규칙과 결과 기록 구조를 설계할 필요가 있습니다
PG 정산·지급대행 계약 범위에 따라 정산 구조가 달라질 수
지급 인터페이스를 어댑터로 분리해 대응합니다
수백만 건 단가 데이터를 한 화면에서 다루
서버 측 페이지네이션과 인덱스 전략을 설계할 필요가 있습니다
시공팀과 창호공장이 서로의 건과 금액을 볼 수 없
데이터 범위를 서버에서 제한하는 검증 구조를 마련합니다
발주사 저장소 이관과 타 업체 인수인계를 고려해 구성 요소와 배포 절차를 문서화하는 구조로 대응할 계획입니다
핵심 기능 상세
견적 DB·단가 버전 관리
제품별·10mm 단위 단가를 조회하고 일괄 조정한 뒤 새 버전으로 게시하며, 버전 간 차이를 비교합니다.
- 초안·검증·게시 상태를 가진 단가 버전 테이블과 게시 시점 불변 처리 구조 설계
- 비율·정액 일괄 조정을 배치 쿼리로 처리하고 변경 전후 차이를 요약하는 비교 로직 구현
- 대용량 단가 목록은 서버 측 페이지네이션과 가상 스크롤 목록으로 표시
게시된 견적 DB 버전을 수정 불가로 고정하고 변경은 새 버전으로만 반영해 과거 견적의 산출 근거를 보존하는 구조를 설계합니다.


실측자 배정·금액 확정
정밀실측 요청 건을 목록에서 선택해 실측자를 배정하고, 실측 결과를 기준으로 정밀실측 금액을 확정합니다.
- 실측자별 일정 충돌을 검사하는 배정 가능 시간대 조회 쿼리 설계
- 가견적 금액과 실측 기준 금액의 차이를 항목별로 비교하는 확정 화면 구현
- 배정·확정 이벤트를 상태 이력 테이블에 기록해 진행 단계를 추적하는 구조 설계
배정과 금액 확정을 요청 건 상세 패널 안에서 이어서 처리하도록 구성해 화면 이동 없이 업무를 마치는 흐름을 설계합니다.


발주·시공 상태와 자동 정산
최종견적 이후 발주와 시공 진행 상태를 확인하고, 시공 완료 건을 시공팀·창호공장별로 묶어 정산 내역을 생성합니다.
- 발주·시공 완료 이벤트를 큐에 적재하는 Bull Queue 기반 정산 집계 작업 설계
- 시공팀과 창호공장별 수수료율을 설정 테이블로 분리한 정산 계산 모듈 구현
- PG 정산·지급대행 범위에 따라 교체 가능한 지급 인터페이스를 어댑터로 추상화
정산 대상, 수수료율, 지급 인터페이스를 각각 분리해 PG 계약 범위가 확정되는 시점에 설정과 어댑터만 바꿔 대응하는 구조를 설계합니다.


시공팀·창호공장 권한 분리
관리자, 시공팀, 창호공장 계정별로 볼 수 있는 화면과 데이터를 구분하고, 사업자 인증 결과를 조회합니다. 역할별 라우트·API·데이터 범위를 서버에서 검증하는 구조와 사업자 인증 결과 조회 화면을 반영합니다.
- JWT 클레임의 역할과 소속 식별자로 API 응답 범위를 제한하는 미들웨어 설계
- 화면 메뉴, 라우트, 쿼리 조건 3단계에서 동일 권한표를 참조하는 구조 구현
- 사업자 인증 결과와 조회 이력을 저장하고 관리자 목록에서 상태로 필터링
시공팀은 배정된 건만, 창호공장은 발주된 건만 조회하도록 서버에서 데이터 범위를 제한해 화면 숨김에만 의존하지 않는 권한 구조를 설계합니다.


프로젝트 진행 단계
단가 모델링 및 버전 테이블 설계 · 2026.10
제품·사이즈 단가 스키마, 초안·게시 버전 구조, 대용량 적재 스크립트 설계
견적 DB 관리 화면 구현 · 2026.10
단가 검색, 일괄 조정, 버전 비교 화면을 목록-상세 패널 구조로 구현
배정·확정·발주 흐름 구현 · 2026.10
실측자 배정, 금액 확정, 발주·시공 상태 전이와 이력 기록 구현
정산 집계 및 권한 체계, 소스 이관 정리 · 2026.10
큐 기반 정산 집계, 역할별 데이터 범위 제한, 발주사 저장소 이관과 운영 매뉴얼 정리
개발 결과
기술적 주안점
- 게시된 견적 DB 버전을 수정 불가로 고정하고 변경은 새 버전으로만 반영해 과거 견적의 산출 근거를 보존하는 구조를 설계합니다
- 배정과 금액 확정을 요청 건 상세 패널 안에서 이어서 처리하도록 구성해 화면 이동 없이 업무를 마치는 흐름을 설계합니다
- 정산 대상, 수수료율, 지급 인터페이스를 각각 분리해 PG 계약 범위가 확정되는 시점에 설정과 어댑터만 바꿔 대응하는 구조를 설계합니다