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

크라우니캔버스 컬렉션(DB) 엔진 — F4 구현

개요

크라우니캔버스(canvas.crowny.org:9620) 계약 F4 모듈. 노션형 "컬렉션(데이터베이스)" 블록의 스키마·레코드·뷰·외부바인딩을 담당하는 독립 컴파일 한선씨 라이브러리.

무엇을 했는지

  • 한선씨/컬렉션.한선 신규 작성(함수 전부 컬렉션_ 접두, 독립 컴파일 — 다른 신규 라이브러리 미가져옴, 문자열.한선만 사용)
  • 스키마: 컬렉션 생성 + 속성 추가(제목/텍스트/숫자/선택/사람/날짜/체크) + 순서 보장 속성 목록
  • 레코드 CRUD: 생성/조회/수정/삭제(소프트, append-log latest-wins PSV), 필드는 플랫 JSON({"속성":"값"}) 저장
  • 뷰: 테이블/보드/리스트 종류 + 단일조건 필터 + 정렬(속성/asc·desc) 저장·적용(컬렉션_뷰적용)
  • 합계: 숫자 속성 sum(컬렉션_합계/컬렉션_전체합계) — 예산 테이블 자동 재산출용
  • 외부바인딩 선언: {커넥터, 데이터셋, 매핑, 쓰기정책:'커맨드만'} 저장/조회 (코어는 연동을 모른다 원칙 — 실제 쓰기는 커넥터.한선 F6이 담당)
  • 셀프테스트(환경변수 게이트 CANVAS_COLLECTION_SELFTEST=1): 스키마 생성→레코드 3건→필터·정렬·합계·뷰·바인딩 8단계 assert 전부 PASS

실측

  • CROWNY_STRICT=1 ./hanseonc_high 컬렉션.한선 → 0경고, 13226 큐브 생성
  • CANVAS_COLLECTION_SELFTEST=1 ./crownyc run → 8/8 PASS(속성순서·레코드3건·필터2건·정렬3건·합계250000·뷰2건·바인딩정책)
  • 발견/수정한 VM 함정: 포함하나()는 참=1/거짓=-1(0 아님) — 유니크ID목록에서 ==0으로 잘못 짜 전체 조회가 0건 회귀. ==-1로 수정 후 통과. (가드레일에 이미 기재된 규칙, 실사용 중 재확인)

관련 파일

  • /Users/ef/crowny-canvas/한선씨/컬렉션.한선
  • 참조 정본 패턴: /Users/ef/crowny-canvas/한선씨/저장소.한선(PSV append-log latest-wins), /Users/ef/crowny-canvas/한선씨/검색.한선(독립 컴파일+셀프테스트 게이트 관용구)

잔여 이슈

  • 결선 단계(서버.한선)에서 /api/컬렉션* 라우트 및 F6 커넥터.한선과의 바인딩 실제 동기화 미연결(본 모듈은 F4 단독 범위)
  • 필터는 단일조건만(다중 AND/OR 조건은 후속 확장 여지, 뷰 필터JSON 스키마는 확장 가능하게 설계)
  • 레코드/속성 규모가 커지면(수백+) 삽입정렬 O(n²)이 부담 — 현재는 소규모 컬렉션 전제