CrownyAI 브라우저에 크라우니홀(crowny://hall) 장착
개요
hall.crowny.org:9606(크라우니홀, 공연장 대관·운영 통합도구 — 관제/대관/기획/큐시트/제어/스태프 6모듈)을
CrownyAI 브라우저에 crowny://hall 스킴으로 장착. 최신 선례인 크라우니스페이스(:9607, 07-17)·
크라우니트리(:9608, 07-17)의 배선 공정을 crowny-ai-content.m에서 그대로 미러링하되, 핵심 차이 하나:
스페이스/트리는 self-contained 번들(loadFileURL) 오픈, 홀은 라이브 URL(loadRequest) 오픈.
홀 앱은 서버 API(딜/큐시트/RBAC/정산 등)에 의존하는 라이브 서버형 도구라 오프라인 번들 사본은
데이터 없는 껍데기가 되므로 만들지 않았다(허위배선 금지 원칙).
무엇을 했는지
crowny-ai-content.m (AI_SRC, make ai 타깃) — 5지점
- normalizeURLString: —
crowny://hall*/홀/hall/크라우니홀 → crowny://hall 정규화 (tree 블록 뒤에 추가, line ~1112)
- caOpenHallInActiveTab 신규 메서드 — caOpenSpaceInActiveTab/caOpenTreeInActiveTab과 동일 구조(activeTab 확보→탭 갱신→알림 post)이나,
loadFileURL 대신 [t.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://hall.crowny.org"]]]로 라이브 URL 오픈. t.urlString = @"crowny://hall", title="크라우니홀".
- navigateTo: 디스패치 — tree 분기 뒤에 홀 별칭(홀/hall/크라우니홀/crowny://hall*) →
caOpenHallInActiveTab 호출 분기 추가
- AI홈 타일 — 시작페이지 HTML의 tiles div에
<a class='tile' onclick="location.href='crowny://hall'">...홀...</a> 추가(트리 타일과 '+' 추가 타일 사이)
- 북마크 시드 v10 — 기존 v7(today)/v8(space)/v9(tree) 게이트 규약 그대로,
crowny.ai.bookmarksSeeded.v10 UserDefaults 게이트로 crowny://hall 북마크 1회 삽입(index MIN(7, count))
옴니바(주소창) 서비스명 매칭은 위 normalizeURLString/navigateTo 자체가 담당(ERP/투데이 등 기존 서비스와 동일 패턴 — 별도 자동완성 리스트 없음, grep으로 확인).
src/앱목록.psv — 런처 카드 1행 추가
홀|url:https://hall.crowny.org|-|-|-|공연장 대관·운영 (Crowny Hall)
공통계약(6열, url: 접두 = 웹서비스 카드) 그대로. 파싱은 crowny-ai-engine.m의 자체 appListEntries()가 담당(코드 무수정 — PSV 행 추가만으로 런처 카드에 자동 반영).
src/홀연결.한선 (신규, 한선씨 동반 SSOT)
탭종류판정.한선(듀얼탭 스킴 분기)의 자매 파일. "서비스명 문자열 → crowny://hall로 갈지" 4상 판정:
- 티(홀별칭인가) —
crowny://hall*/홀/hall/크라우니홀 → 즉시 확정
- 타(타서비스별칭인가) — 스페이스/트리/오피스/빌딩/ERP/투데이 등 기존 확정 서비스 별칭 → 거부
- 옴 — "홀"/"hall" 부분포함이나 정확매칭 아님(예: "공연장 홀 대관 문의", "hallway") → 모호, 재확인 필요
- 음 — 그 외 무관 → 이관/통과
자체시험 12/12 PASS.
CROWNY_STD=/Users/ef/CrownyOS/crownyc/libs ./hanseonc_high src/홀연결.한선 > /tmp/홀연결.toau && ./crownyc run /tmp/홀연결.toau →
홀연결 판정 검증: 12/12 [결과] 티 — 전체 통과.
브릿지 (이번 범위 제외)
홀 전용 브릿지 .js는 후속 트랙. 라이브 URL 오픈 방식이라 WKUserScript 주입 없이도 완전 동작(일반 웹 탭과 동일).
관련 파일
/Users/ef/CrownyBrowser/native/crowny-ai-content.m — 5지점 배선(normalizeURLString, caOpenHallInActiveTab, navigateTo, AI홈 타일, 북마크시드 v10)
/Users/ef/CrownyBrowser/src/앱목록.psv — 홀 런처 카드 행 추가
/Users/ef/CrownyBrowser/src/홀연결.한선 — 4상 라우팅 판정 SSOT(신규, 자체시험 12/12)
/Users/ef/crowny-hall/CLAUDE.md — 크라우니홀 서비스 정본(참조만, 무수정)
검증
cd /Users/ef/CrownyBrowser/native && make ai — 컴파일 에러 0, CrownyAI 바이너리 생성 확인
strings -a CrownyAI | grep "crowny://hall\|hall.crowny.org" — 두 문자열 모두 바이너리에 내장 확인(라우팅 코드 실제 링크 확인)
curl https://hall.crowny.org → HTTP 200 (서버 라이브 확인)
- 회귀: grep으로 caOpenSpaceInActiveTab/caOpenTreeInActiveTab/caOpenErpInActiveTab/caOpenBuildingInActiveTab/caOpenOfficeInActiveTab/caOpenTodayInActiveTab 각 정확히 1회씩 그대로 존재 확인(무접촉), 파일 라인수 3541→3606(+65, 추가분만)
- GUI 실행 검증 생략: cliclick 등 GUI 자동화 금지 원칙 + 신규 Cocoa 앱 프로세스 기동 자체가 실제 화면에 창을 띄워 사용자 포커스를 뺏을 위험(기존 실사고 이력)이 있어, 코드 경로 검증(빌드+strings+grep+한선씨 자체시험)으로 대체함(작업 지시의 명시적 허용 대안).
크라우니코드 lookup/learn
- lookup:
crownycode-learn.sh search "라이브URL 서비스 crowny 스킴 오픈" / "탭종류판정 4상 라우팅" → 둘 다 MISS
- learn:
crownycode-learn.sh add hall라우팅판정4상 "<홀연결.한선 전문>" → 학습 완료
잔여 이슈
- 홀 전용 브릿지(.js) 및 팬아웃 연동(ERP/Today 이벤트버스 구독) — 후속 트랙
- 실사용자 세션에서 crowny://hall 클릭 시 실제 WKWebView 렌더 확인(이번엔 코드 경로로만 검증)