← 목록
기타 2026-05-22 7KB 읽기 6분

견적서 도구 고도화 — 가로형 표준 견적서 v2.0

개요

project.crowny.org의 견적서 도구를 고도화. 기존 세로형(A4 portrait, 노무비 단일 표) 견적서를 가로형(A4 landscape, 재료비·노무비·경비 3분 표준 양식) 으로 대치하고, 문서 처리 계층을 docs.crowny.org(CrownyDoc)로 이전. 교회 LED 디스플레이 설치공사 견적을 기본 시나리오로 구축.

향후 제안서·사양서·도면까지 CrownyDoc에서 통합 처리하는 문서 허브의 첫 모듈.

무엇을 했는지

현황 분석

  • crowny-project에 두 견적 시스템 존재: estimates(노무비 세로형) + hw_estimates(LED 하드웨어, DOT-QUOTE 포팅)
  • 실제 교회 LED 데이터 확인: P1.86 GOB 6.14㎡ + VX400Pro → ~21.3M원 (data/hw_estimates.셀db)
  • 문제: 제대로 된 가로형 표준 견적서 출력이 없었음 — 세로형 노무비 표만 존재

P1. 데이터 모델 + 교회 LED 표준 BOM

  • 6개 공종 19개 항목으로 정규화 — LED 설비 / 구조물 / 전기 / 설치 / 가설·부대 / 설계·관리
  • 각 항목: 품명·규격·단위·수량 + 재료비단가·노무비단가·경비단가 + 비고
  • 비용 균형3진 매핑: 재료비(재화) / 노무비(용역) / 경비(기회비용)

P2. 가로형 견적서 렌더러

  • A4 가로, 한국 표준 공사 견적서 양식 (2단 헤더: 재료비/노무비/경비 × 단가·금액)
  • 공종별 소계 + 전체 합계 + 정산 박스(공급가액·부가세·합계) + 금액 한글표기
  • @media print A4 landscape, 표 머리말 반복, 행 분할 방지 → 인쇄 깔끔
  • 데이터 우선순위: ?src= URL → localStorage['견적_현재'] → 임베드 기본값

P3. 견적엔진.한선 (한선씨 동반)

  • 행금액·소계누적·절사내림·부가세계산 함수
  • VM 함정 3종 발견·회피: 내림() float 깨짐, 함수 길이/매개변수 4개+ 바인딩 깨짐, 나눗셈=반올림
  • 검증 결과: 공급가액 18,640,000 / 부가세 1,864,000 / 합계 20,504,000원 (HTML 렌더러와 일치)

P4. 견적 편집기 (Sonnet 에이전트)

  • 문서 메타·공급자·공급받는자·공종/항목 추가삭제·특기사항 인라인 편집
  • 실시간 계산, 임시저장 자동백업, JSON 입출력, "견적서 출력" → 렌더러 연동

P5. 표준 단가표 (Haiku 에이전트)

  • 6공종 26항목 LED 설치공사 표준 단가 레퍼런스 (실내/실외/렌탈 모듈 포함, 단가범위 ±20~30%)

P6. CrownyDoc 통합

  • server-docs.js/견적서/* 라우트 추가 (퍼센트 인코딩 디코딩 처리, 경로탈출 차단)
  • 4100 인스턴스 재시작 → docs.crowny.org/견적서 라이브

관련 파일 경로

CrownyDoc/견적서/
  가로형견적서.html          # 출력 렌더러 (A4 가로, 인쇄)
  견적편집기.html            # 입력/편집 UI
  data/교회LED표준.json      # 교회 LED 설치공사 표준 견적 (6공종 19항목)
  data/표준단가표.json       # LED 설치공사 표준 단가 레퍼런스 (6공종 26항목)
  한선씨/견적엔진.한선        # 계산 엔진 한선씨 동반
CrownyDoc/server-docs.js     # /견적서/* 라우트 추가 (line ~1508)

접속: docs.crowny.org/견적서 (편집기) · docs.crowny.org/견적서/가로형견적서.html (출력)

잔여 이슈 / 다음 고도화

  • 제안서 양식 (CrownyDoc 문서 허브 확장)
  • 사양서 양식
  • 도면 첨부/뷰어
  • 견적 저장/목록 API — /견적서/api/{save,list,load,delete} 서버 영속화. 목록.html 신규. 편집기 [서버 저장]·[목록] 버튼, ?id= 로드. 가로형견적서 ?id= 우선 로드. 한선씨 동반 견적저장소.한선. (2026-05-22 loop#2)
  • crowny-project hw_estimates → 가로형 견적서 자동 변환 브릿지 — POST /견적서/api/from-hw 엔드포인트, hw변환.html UI(좌우 분할 + 클라이언트 폴백), 하드웨어견적변환.한선 동반. 광주은광교회 b53acb75 검증 — 5공종 13항목 합계 17,721,000원 (마진제외, 원본 finalTotal=21,360,000은 B2B 20% 마진포함). (2026-05-23 loop#4)
  • 인쇄미리보기 회귀검증 — 헤드리스 시뮬레이션으로 load()/render()/계산() 정상 확인 (15,052B 렌더, 합계 20,504,000원, print-foot 포함). 이전 증상은 stale listener 캐시 원인. (2026-05-23 loop#4)
  • 다중 페이지 인쇄 — 전 페이지 반복 고정푸터(견적번호·공사명·공급자), 공종헤더 외톨이 방지, tfoot 끝 1회 출력, 정산/서명 묶음 유지 (2026-05-22 loop#1)
  • 443/80 인스턴스(별도 프로세스) 코드 동기화 — 현재 4100만 갱신됨
  • 견적엔진.한선 RPN 정본 변환 — 헌법 위반 시정. 견적엔진.rpn.한선·견적저장소.rpn.한선·하드웨어견적변환.rpn.한선 3종 모두 정통 RPN(hanseonc_std)으로 작성·컴파일·실행 검증. C-like 의 VM 함정(내림() float, 함수 길이, 매개변수 4+) 자체가 RPN 에서는 발생 안 함. 학습DB 등록 (견적엔진_정통RPN, 견적저장소_정통RPN, 하드웨어견적변환_정통RPN). 합계 20,504,000원 일치. (2026-05-27 RPN정통화)
  • PDF 직접 생성 / 다국어 / 전자서명 / 견적 버전관리 (loop 발굴 항목)
  • 세로 견적서 + 한선씨 정통 뷰어 PoC — 데이터 모델 통일(data/간단견적표준.json, 분류=제품/인건비/기타비용), 한선씨 렌더러 한선씨/세로견적뷰어.한선 (JSON→HTML, 460줄), TOAU 빌드 bin/세로뷰어.toau (714KB), server-docs.js 라우트 /견적서/세로?id=<id> (Node spawn → crownyc run), env-var QUOTE_FILE 로 JSON 경로 전달. 검증 합계 3,641,000원. 렌더링 로직이 처음으로 100% 한선씨. 서버 본체는 여전히 Node.js(다음 단계). (2026-05-27 한선씨정통화 step1)
  • 가로형 견적서도 같은 방식으로 한선씨 렌더러 (가로견적뷰어.한선 → 공사 견적서, 6공종 다층)
  • 데이터 모델 호환 — 가로형 공사명 ↔ 세로형 건명 필드 통일 또는 폴백
  • 서버 본체 한선씨화 (server-docs.한선 활성화로 Node.js 의존성 제거)
  • 제안서·사양서·도면 모듈 (세로/가로 뷰어 패턴 재사용)
  • CrownyDoc 허브 페이지 + 라우팅 재편홈.html 신설 (11모듈 카드, 부산 LED 견적 1st, 245+ React 컴포넌트·214 한선씨·448 프로젝트 노출), //홈 모두 허브, React 풀앱은 /편집 으로 이동, 4100 깨끗 재시작·외부 검증. (2026-05-22 loop#3 — 사용자 발견 우선순위)