크라우니캔버스 — 컬렉션뷰(예산 테이블) 라이브 위장 결함 수리
개요
crowny-canvas(:9620) 에디터 화면의 컬렉션뷰(예산 테이블) 위젯이 계약(07-앱-계약.md §3)에
없는
/api/컬렉션/<id> 엔드포인트를 호출 — 서버 라우트 부재로 항상 404 — 실패 시 하드코딩 목
데이터로 조용히 대체되면서 BlockShell 헤더에
라이브:true, 초전:12를 무조건 부여해 끊긴 커넥터를
"라이브"로 위장하던 P0 결함을 수리.
무엇을 했는지
앱/화면/editor.js 컬렉션뷰렌더(): BlockShell을 라이브:false로 먼저 생성 → fetch 응답 도착 후
헤더반영()이 실측 상태(연결/끊김)를 헤더에 사후 반영(연결=라이브점, 끊김=적갈 "연결 끊김 · 목데이터" 칩).
그리기()가 끊김 시 각주도 "⚠ nexus:9802 연결 끊김 — 아래 값은 로컬 예시(실제 커넥터 응답 아님)"로 갱신 —
목데이터를 실데이터처럼 보이지 않게 함(성공 위장 금지 원칙).
- 부수 발견·동시 수리(같은 파일, 스코프 내):
에디터생성(ctx)가 ctx.페이지id(한글 키)만 읽고
index.html 라우터가 실제 보내는
ctx.pageId(영문 키)를 무시 → 항상 스토어 1번째 페이지(seed_today)로
폴백. seed_today.json 자체가 배열이 아닌 단일 오브젝트라
.map 런타임 예외 발생.
ctx.pageId||ctx.페이지id
둘 다 수용하도록 방어적 수정(라이브 검증 과정에서 발견 — 내 fix를 브라우저로 확인하려다 막혀서 필요).
- 한선씨 동반:
한선씨/에디터.한선에 컬렉션연결됐나(끊김플래그, 행개수) 파리티 함수 — 이미 동일 세션 계열
작업으로 존재 확인, STRICT 재컴파일 + 셀프테스트 46/46 PASS(컬렉션연결됐나 3건 포함) 재검증.
라이브 검증
데이터/블록/seed_product_plan.json에 임시로 컬렉션뷰 블록 추가 → 크롬으로 http://127.0.0.1:9620/#/page/seed_product_plan 렌더 확인 →
헤더 배지 "연결 끊김 · 목데이터"(적갈), 각주 "⚠ nexus:9802 연결 끊김…" 정상 노출 스크린샷 확보. 검증 후 원본 3블록으로 즉시 복원.
/api/컬렉션/<id>는 여전히 404(계약에 없는 미배선 엔드포인트, 서버.한선 소유 — 이번 수리 범위 밖).
관련 파일
/Users/ef/crowny-canvas/앱/화면/editor.js
/Users/ef/crowny-canvas/한선씨/에디터.한선
/Users/ef/crowny-canvas/한선씨/컬렉션.한선 (F4, 독립 모듈 — 서버 결선 대기 상태 그대로)
잔여 이슈
- 서버 미결선(범위 밖):
/api/컬렉션/<id>가 계약에 없고 서버.한선에도 라우트 없음. F4(컬렉션.한선)를
실제로 서버에 결선하거나, 계약에 정식 추가하는 결정이 F1/서버 소유 세션에 필요.
- seed_today.json 데이터 형식 오류: 블록 배열이 아니라 단일 오브젝트로 저장돼 있어 해당 페이지를
열면
.map is not a function 런타임 예외 발생(이번 수리 범위 밖, 데이터 소유 트랙 확인 필요).
- 서버(:9620)가 기존에 독립적으로 OOM/문자열핸들 고갈 크래시루프 중(
/tmp/crowny-canvas.err) — 세션 내내
재현 간헐적, 이번 수리와 무관.