← 목록
기타 2026-07-24 4KB 읽기 3분

크라우니캔버스 — /api/컬렉션 배선 + 결재함 실데이터 (임무 A)

개요

07-앱-계약.md §3에 정의됐으나 서버.한선에 라우트가 없어 항상 404였던 /api/컬렉션/<id>를 배선하고, /api/결재함이 하드코딩 목 2건만 반환하던 것을 데이터/결재.psv 실PSV 우선 반영으로 교체.

무엇을 했는지

  1. /api/컬렉션/<id>?뷰= 배선 — 서버.한선에 _컬렉션ID추출()(기존 _페이지ID추출 패턴 재사용)
+ _처리컬렉션조회() 추가. 컬렉션.한선의 기존 조회함수 컬렉션_레코드맵빌드()(O(n) 단일빌드, 2026-07-24 P0 수리분 재사용)로 레코드를 읽어 editor.js 컬렉션뷰렌더가 기대하는 {"행":[{"항목":..,"구분":..,"단가":수,"수량":수,"금액":수}], "합계":수} 형식으로 응답. 미존재 id는 404.
  1. 시드: 데이터/컬렉션/CR-720-budget_레코드.psv — 컬렉션.한선 정본 저장함수
컬렉션_레코드생성()을 그대로 호출하는 일회성 스크립트(_임시시드.한선, 실행 후 삭제)로 3건 적재: 부품비 500×5000=2,500,000 · 가공비 800,000 · 조립비 150,000 (합계 3,450,000).
  1. 결재함 실데이터: _처리결재함()데이터/결재.psv(8필드 PSV: id|문서번호|제목|금액|상태|
4상|근거1;근거2|결재선JSON, |¦ 이스케이프)를 우선 파싱해 반환하도록 교체, 파일 없음/빈파일/파싱 0건일 때만 기존 목 2건으로 폴백(로직 그대로 보존). 시드 2건: 사무용품 구매요청 420000(판정 옴) · 출장비 정산 850000(판정 티), 결재선 객체배열 포함.

검증 (실측)

  • STRICT 재컴파일(CROWNY_STRICT=1 ./hanseonc_high 서버.한선) — 0경고.
  • launchctl kickstart -k gui/$(id -u)/org.crowny.canvas 재기동 후 /health 200.
  • curl /api/컬렉션/CR-720-budget?뷰=table → 200, 행 3건(부품비/가공비/조립비), 합계 3450000.
  • curl /api/컬렉션/nonexistent-id → 404 {"오류":"컬렉션 없음: ..."}.
  • curl /api/결재함 → 200, PSV 시드 2건 그대로 반영(판정 옴/티, 결재선 객체배열, 끊김=nexus
실측 연결상태). 차분 검증: 결재.psv 제목 필드를 임시로 변조(_실측증거 접미) 후 재요청 → 응답에 즉시 반영 확인(하드코딩 아님을 실측 확인), 이후 원복.

관련 파일

  • /Users/ef/crowny-canvas/한선씨/서버.한선_컬렉션ID추출·_처리컬렉션조회·_컬렉션행JSON
추가, _처리결재함·_결재행JSON·_결재PSV목록 추가/교체.
  • /Users/ef/crowny-canvas/데이터/컬렉션/CR-720-budget_레코드.psv — 신규 시드(3건).
  • /Users/ef/crowny-canvas/데이터/결재.psv — 신규 시드(2건).
  • /Users/ef/crowny-canvas/서버.toau — 재컴파일 배포본.

잔여 이슈

  • 결재.psv는 결재선 필드에 |가 실제로 들어가면 깨짐(현재 값엔 없음) — 값 안 | 금지 원칙
(계약 §5)을 결재 데이터 입력 시에도 지킬 것.
  • /api/컬렉션은 아직 파라미터로 보드/리스트 구분을 하지 않음(테이블 형식만 반환) — F4
트랙 후속 확장 여지.
  • 컬렉션 스키마(속성.psv)는 이번 시드에서 등록하지 않음(레코드 필드만 직접 채움) — 스키마
기반 검증/타입 렌더가 필요해지면 컬렉션_스키마생성+컬렉션_속성추가도 함께 시드할 것.

크라우니코드: lookup HIT 0건(재사용) / MISS 1건(생성) / learn 추가 1건