← 목록
기타 2026-07-19 5KB 읽기 6분

요청: 솔루션-디자인핸드오프-구축

  • 날짜: 2026-07-19 15:39:53
  • 작업 경로: /Users/ef/crowny-solution

요청 본문

solution.crowny.org 작업하기 /design-sync — 다운로드폴더 design_handoff_solution 내용 보고 만들기

관련 산출

사장님이 claude.ai/design(dc)에서 확정한 크라우니 솔루션 앱 디자인 핸드오프(5개 standalone HTML, 28MB)를 실물 서비스에 입혔다. 목업 재제작이 아니라 원본 마크업 픽셀포팅 + 개발명세 A1~A9 백엔드 실구현.

  • 앱 셸 + 6모듈(발견·서비스·계약·아카데미·고도화·운영 콘솔) 라이브
  • 진단 상태기계·계약 사다리·구독원장 3분할·편성엔진 5+5·감사로그 실구현
  • 한선씨 엔진 SSOT 동반, assert 111건 전량 PASS(STRICT 경고 0)

핸드오프 언팩 (dc 번들 → 소스)

핸드오프 HTML은 dc 번들 포맷이라 그대로는 못 쓴다. 구조를 역해석해 소스를 복원했다.

위치복원법
템플릿파일 끝 JSON 이스케이프 줄JSON.parse(line)
로직<script type="text/x-dc">HTML 엔티티 디코드 → JSX 유사 클래스(DCLogic)
마크업<x-dc> 내부 (helmet·script 제외)정규식 분리
하위 모듈 6종__bundler/ext_resources UUID → blobbase64 → gunzip → 재귀 분리
바인딩 문법: {{ expr }} · <sc-for list as> · <sc-if test> · sc-camel-on-click · style-hover · <dc-import name prop>

산출물

파일줄/크기내용
web/app.html140KB미니 dc 런타임(바인딩 인터프리터+DCLogic 베이스) + 원본 마크업 무수정 내장 + 6모듈
web/app.한선26함수동반 판정 SSOT — 경로라우팅·⌘키·4눈높이·신청큐·팔레트·셸4상·교차링크
솔루션앱.한선9.1KB / 26함수엔진 SSOT — 전이표·사다리게이트·3분할·이월환급·편성선별·감사
솔루션앱검증.한선8.1KB셀프테스트 66 assert
server.js1236 → 1644줄A6 API 15종 + 6라우트 + 영속 (백업 server.js.bak-solapp)
data/solapp.json, data/solapp-audit.log상태 영속 · 감사로그 append-only

개발명세 구현 (A1~A8)

  • A3 상태기계: received → ai_screened(score·근거) → approved/hold/escalated → scheduled → surveyed → quoted.
전이마다 AuditLog 1건 + undo 보상전이. 자동승인 없음(AI는 후보만).
  • A3 계약 사다리: 1진단→2설계→3시공→4교육→5구독. 게이트 4→5는 수료≥2일 때만. 5진입 시 원장 생성+SLA 타이머.
  • A4 구독원장 3분할: F/3 균등, 원 절삭 잔액은 maintain 귀속. edu=분기 3크레딧 FIFO 이월, 12개월 미집행→환급 전표.
  • A5 편성엔진: 솔루션 5 + 미디어 5 하드캡. 광고 슬롯 금지 · 연속 2일 동일 솔루션 제한 · 계약보유 시 고도화뉴스 대체. FeedBasis 로그.
  • A8: 감사로그 불변(append-only) · 다크 브라운 테마 고정(라이트 변형 없음 — 정체성).

검증 실측

한선씨 컴파일   CROWNY_STRICT=1 → 경고 0 (엔진·검증·동반 전부)
assert          솔루션앱검증 66/66 PASS · app.한선 45/45 PASS = 111건
A6 API          7/7 200 (solutions·feed·contracts·academy/lives·releases·sla/tickets·audit)
라우트          / /app /feed /catalog /contract /academy /upgrade /ops = 8/8 200
상태기계 왕복   접수 → ai_screened(90점) → approve → undo → ai_screened, 감사로그 4건 실측
3분할           CON-3 월 59,000 → maintain 19,668 + edu 19,666 + upgrade 19,666 = 59,000 일치
편성 캡         /api/feed?facility=FAC-1 → solutions 5 · media 5
사다리 게이트   CON-1(수료0/stage1) 원장 없음 · CON-3(수료2/stage5) 원장 활성 — 게이트 작동
픽셀대조        6모듈 CDP 캡처 vs 원본 핸드오프 — 전 모듈 레이아웃 동일
라이브배선 증거 운영콘솔 감사로그에 curl로 만든 실제 DIAG-1784558827093 이력 4건 표시

함정·교훈

  • dc 번들 하위 모듈은 gzip: ext_resources UUID → blob의 compressed:true면 base64 디코드 후 gunzip 필수. 안 풀면 모듈 6종이 통째로 유실된다.
  • 폰트/CDN: 핸드오프 원본은 jsdelivr·googleapis를 물고 있다. 크라우니 규칙(외부 CDN 미사용)에 따라 로컬 폰트스택으로 치환 — 렌더 동일 확인.
  • 공개 HTTPS 000은 오진 주의: solution뿐 아니라 tree·web·docs 전부 000이고, Host 헤더로 로컬 443/8080은 200. 내부망 헤어핀 NAT 한계이지 배선 장애가 아니다. 게이트웨이 무변경이 정답.
  • 드리프트 판정 도구화: 캡처 순회·대조 판정을 capture.한선(16 assert)으로 정본화해 학습.

크라우니코드

lookup MISS(신규 도메인) → 생성 → learn 6건: 솔루션앱_경로모듈라우팅 · _4눈높이도움말선택 · _진단신청큐적재 · _셸4상상태 · 솔루션_구독원장3분할 · 캡처순회_모듈대조판정

잔여

  • web/app.한선 이야기(스토리) 오버레이 판정 미포함 — 오버레이 자체는 app.html에 포팅됨(?story= 파라미터).
  • 이벤트버스 A7(빌딩·홀·에스텔 연동) 미배선 — 명세상 M3 마일스톤.
  • 아카데미 수료 원장·릴리즈 자동문서화·ERP 전표 대사(M4) 미착수.
  • crowny://solution 앱카드(크라우니AI 탑재) 미등록.