CDF(Crowny Document Format) v1 + 적정가 오디오 개선
개요
솔루션 소개서를 크라우니 자체 문서포맷(.cdf)으로 발행. 서명된 JSON 번들로 브라우저에서 바로 렌더. docs.crowny.org 뷰어로 로그인 유저는 내 문서함 저장.
작업 내용
1. "적정가 오디오" 표현 개선
적정가 오디오 → 에센셜 프로 오디오
InterAct 적정가 오디오 브랜드 → Inter-M 에센셜 프로 라인
적정가 PA → 현장 표준 PA
가성비 라인업 → 핵심 기능 중심 라인업
- (Pixelhue F시리즈의
가성비 프로세서는 실제 제품 포지션이므로 유지)
2. CDF (Crowny Document Format) v1 스펙
- 확장자:
.cdf
- MIME:
application/vnd.crowny.cdf+json
- 구조: 서명된 JSON (
@cdf, id, kind, title, subject, issuer, sections[], meta, sig)
- 섹션 타입: paragraph, list, table(header/rows), totals(row[]), html
- 서명: HMAC-SHA256 (env
CDF_SIGN_SECRET)
- 셀프뷰어:
.cdf를 HTML로 감싸서 브라우저로 바로 열 수 있음 — /docs/:kind.html
3. solution.crowny.org 추가 엔드포인트
GET /docs/{kind}.cdf — raw CDF JSON 다운로드 (disaster/fire/security/control/media/all)
GET /docs/{kind}.html — 셀프뷰어 HTML (CDF 뷰어 없이도 열림)
- 각 솔루션 페이지(
/s/{kind})에 📄 소개서 다운로드 + 🔎 온라인 보기 버튼 추가
lib/cdf.js — buildCDF(), renderSelfView() 유틸
4. docs.crowny.org 추가 엔드포인트
GET /viewer — CDF 뷰어 (URL/파일 업로드/드래그드롭 지원)
GET /viewer?url=... — 외부 CDF 즉시 렌더
POST /api/cdf/save — 로그인 유저 문서함에 저장 (쿠키 인증)
GET /api/cdf/list — 내 문서함 목록
- 저장 위치:
/Users/ef/CrownyDoc/dist/cdf-library/{uid}/*.cdf
5. 사용자 흐름
- 관공서 담당자가 solution.crowny.org/s/disaster 접속
- 📄 소개서 다운로드 클릭 →
crowny-disaster.cdf 저장
- 셀프뷰어면 바로 브라우저로 오픈 (모든 기기 OK)
- ☁ docs.crowny.org 저장 클릭 → 로그인 후 자기 라이브러리에 보관
- 이후 docs.crowny.org/viewer에서 언제든 열람
빌드된 소개서 내용 (CDF)
- disaster: QUAKEON-7000 9항목 + 선행실적 5개 + 월 48만/본체 1,496만/통합플랫폼 1.2-2억 + 법규 4개
- fire: Inter-M 8모델 + 월 25만
- security: 13 모듈 3카테고리 + 월 5.9만 + 준수법규 4개
- control: BEMS 5항목 + 30% 절감 사례 + 월 12.9만
- media: InterAct 6카테고리 + Pixelhue 9모델 + 월 88만
- all: 통합 개요 + 5개 솔루션 가격표 + 애드온 3종
관련 파일
/Users/ef/crowny-solution/lib/cdf.js (신규)
/Users/ef/crowny-solution/server.js (/docs/:kind 라우트 + buildSolutionBrochure)
/Users/ef/crowny-solution/web/solutions/*.html (5개 모두 다운로드 버튼 추가)
/Users/ef/crowny-solution/web/index.html (적정가 → 에센셜 프로 전역 치환)
/Users/ef/CrownyDoc/server-docs.js (/viewer + /api/cdf/save + /api/cdf/list)
/Users/ef/CrownyDoc/dist/cdf-library/ (사용자별 저장소)
테스트 결과
GET /docs/disaster.cdf → 200, application/vnd.crowny.cdf+json ✅
GET /docs/disaster.html → 200, 셀프뷰어 렌더 ✅
GET docs.crowny.org/viewer → 200, 뷰어 UI ✅
POST /api/cdf/save (미인증) → {"error":"login required"} ✅
- 서명 HMAC-SHA256 32자 포함 ✅