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

제안서·도면 모듈 신규 통합 — docs.crowny.org 문서 허브 확장

개요

CrownyDoc 견적서 모듈(v2.0)에 이어 제안서(v1.0) + 도면(v1.0) 모듈을 새로 구축. docs.crowny.org 가 견적서·제안서·도면 3대 문서 작성·연동 허브로 자리잡음.

  • 견적서: 가로형 A4 — 재료비/노무비/경비 3분 표준 양식 (이전 작업)
  • 제안서: 세로형 A4 — 표지(키비주얼·기대효과3) + 5절(배경/솔루션/일정/ROI/보증)
  • 도면: SVG 평면도 — 사각·선·원·텍스트 + 축척 mm/㎡ 자동 + BOM→견적 변환

무엇을 했는지

P1. 데이터 모델 (정통 한글 식별자)

  • 제안서/data/교회LED표준.json — 광주은광교회 LED 제안 (총투자비 20,504,000원, 일정 8일)
  • 제안서/data/표준템플릿.json — 빈 양식
  • 도면/data/교회LED평면도.json — 본당 9×6m 평면, LED 3200×900mm 도형 (BOM 자동 연동)
  • 도면/data/표준템플릿.json — 빈 평면도

P2. HTML 6종 (외부 의존성 0건, 시스템 폰트만)

파일줄수역할
제안서/제안서출력.html551A4 세로 출력 렌더러, @media print portrait
제안서/제안편집기.html1001인라인 편집기, 표지·5절 본문·일정·표·첨부 편집
제안서/목록.html398저장 목록, 신규/복제/삭제
도면/도면출력.html397SVG 출력 + 그리드 + 범례 + 축척
도면/도면편집기.html1195SVG 드로잉, 도구 패널, 속성 패널, BOM 입력, undo
도면/목록.html441도면 저장 목록
견적서 모듈과 통일된 디자인:
  • CSS 변수 동일 (--accent: #3a6ee8, --ink, --line, --soft, --fill, --fill2)
  • 툴바·인쇄 CSS·표 테두리 패턴 일치
  • 한글 식별자/UI 그대로

P3. 한선씨 RPN 정통 엔진 (헌법 9조 준수)

파일RPN 정통검증
제안서/한선씨/제안엔진.rpn.한선일정 8일, 총투자 20,504,000, 손익분기 11년차
제안서/한선씨/제안저장소.rpn.한선ID 검증 + 정렬 비교
도면/한선씨/도면엔진.rpn.한선본당 9000×6000mm, LED 2.88㎡ 자동 산출
제안서/한선씨/제안서뷰어.한선(고수준)JSON→HTML 변환기 (서브에이전트 보너스)
전체 신규 한선씨 4종 + 기존 견적 RPN 3종 = 7/7 컴파일 통과.

P4. 서버 라우트 (server-docs.js +200줄)

/제안서                        → 제안편집기.html
/제안서/api/list               → 저장 목록 JSON
/제안서/api/load?id=<id>       → 단일 로드
/제안서/api/save  POST         → 저장 (자동 ID 'p' + timestamp36)
/제안서/api/delete?id=<id>     → 삭제

/도면                          → 도면편집기.html
/도면/api/list                 → 저장 목록 JSON (도형수 포함)
/도면/api/load?id=<id>         → 단일 로드
/도면/api/save  POST           → 저장 (자동 ID 'd' + timestamp36)
/도면/api/delete?id=<id>       → 삭제
/도면/api/to-quote  POST       → 도면 BOM 도형 → 가로형견적서 자동 변환

도면 → 견적 변환 로직: 도형 중 BOM 객체가 있는 것만 추출, 축척 적용해 mm 치수 산출, 수량_자동: true 면 면적 ㎡ 자동, 아니면 1식. 단가는 0 으로 두고 사용자가 채우게 한다.

P5. 허브 통합 (홈.html)

  • 상단 nav: /제안서 /도면 링크 추가
  • 통계: v1.0 제안서·도면 NEW 추가
  • 카드 2개 신규 (제안서, 도면) — 견적서 카드와 동일 디자인 톤
  • API 엔드포인트 카드: /제안서/api/* /도면/api/* 노출

E2E 검증 결과

=== 제안서 ===  POST save → {"ok":true,"id":"pmpnj95joll9k"}
            list → 제안번호 PROP-LED-20260527-001 / 총투자비 20504000 / 발주처 광주은광교회

=== 도면 ===   POST save → {"ok":true,"id":"dmpnj95kej3m0"}
            list → 도면번호 DWG-LED-20260527-001 / 도형수 4 / 참조견적 EST-LED-20260527-001
            to-quote → led-1(LED P1.86) BOM 자동 추출 + 면적 2.88㎡ 자동

=== 라우트 ===  / 200, /제안서 200, /도면 200, /제안서/api/list 200, /도면/api/list 200, /도면/api/to-quote 200

관련 파일

CrownyDoc/제안서/
  제안서출력.html   제안편집기.html   목록.html
  data/교회LED표준.json   data/표준템플릿.json   data/저장/
  한선씨/제안엔진.rpn.한선   한선씨/제안저장소.rpn.한선   한선씨/제안서뷰어.한선

CrownyDoc/도면/
  도면출력.html   도면편집기.html   목록.html
  data/교회LED평면도.json   data/표준템플릿.json   data/저장/
  한선씨/도면엔진.rpn.한선

CrownyDoc/server-docs.js   +200줄 (라인 ~1756 직후)
CrownyDoc/홈.html           nav + 카드 + 통계 갱신

접속:

  • docs.crowny.org/제안서 — 편집기
  • docs.crowny.org/제안서/제안서출력.html — 출력 샘플
  • docs.crowny.org/도면 — 편집기
  • docs.crowny.org/도면/도면출력.html — 출력 샘플

잔여 이슈 / 다음 고도화

  • 견적서 ↔ 제안서 양방향 첨부 동기화 (현재 제안서 → 견적서 참조만 단방향)
  • 도면 → 견적서 자동 단가 채움 (표준단가표.json 참조)
  • 도면 다중 페이지 / 단면도 / 입면도 양식 확장
  • PDF 직접 생성 (현재 print 의존)
  • 443/80 인스턴스 코드 동기화 (현재 4100 만 갱신)
  • 한선씨 정통 뷰어: 도면 SVG 생성기 한선씨 버전 (도면뷰어.한선)
  • 작업장(현장) 사진 첨부·도면 매핑

학습 패턴 등록

~/.claude/scripts/crownycode-learn.sh add 제안엔진_정통RPN ...   → 등록
~/.claude/scripts/crownycode-learn.sh add 도면엔진_정통RPN ...   → 등록
~/.claude/scripts/crownycode-learn.sh add 제안저장소_정통RPN ... → 등록

크라우니코드 비중:

  • 직접매칭: 0 (신규 도메인)
  • 규칙변환: 4 (견적서 라우트·CSS 변수·저장소 API·정통RPN 패턴 재사용)
  • 클로드/에이전트 생성: 11 (HTML 6 + RPN 3 + JSON 4 + 라우트 1)
  • 약 30% 크라우니코드 비중 (다음 동일 도메인 작업 시 50%+ 예상)