← 목록
기타 2026-07-16 9KB 읽기 9분

크라우니빌딩 (Crowny Building) 앱 장착 (2026-07-16)

개요

crowny://building = 빌딩 시설관제 앱(구 "Crowny Space" standalone → 크라우니빌딩으로 개명, 사장님 지시 2026-07-16). "크라우니스페이스" 이름은 홈어시스턴스 범주로 재작성 예정이라 비워둠. 크라우니오피스 앱장착(2026-07-14) 선례와 동일 공정.

무엇을 했는지

1. 리네임 + 브랜딩 치환 (Downloads)

  • Crowny Space 앱 (standalone).htmlCrowny Building 앱 (standalone).html (브랜드 문자열 1건 치환)
  • Crowny Space 전체설계 (standalone).htmlCrowny Building 전체설계 (standalone).html (9건 치환)
  • <title>Bundled Page</title> → 각각 Crowny Building 앱 / Crowny Building 전체설계
  • 내부 식별자(SpaceModuleDash 등 dc-import 모듈명)와 스페이스바 키 라벨은 보존 — 치환하면 번들 참조가 깨짐. 사용자 노출 브랜딩만 치환.
  • 원본 Space 파일 2본은 Downloads에 보존(삭제 안 함 — 필요 시 사용자 판단).

2. 번들 장착 + 오프라인 검증

  • /Users/ef/CrownyBrowser/bundle/building/app/index.html (실작동 앱, 4.26MB)
  • /Users/ef/CrownyBrowser/bundle/building/design/index.html (전체설계 문서, 4.32MB)
  • self-contained 검증: src/href 외부URL 0건, fetch/WebSocket/XHR 실호출 0건. unpkg/jsdelivr는 번들 데이터 내 문자열(오피스와 동일 소견) → 오프라인 렌더 가능, 로컬퍼스트 부합.

3. 네이티브 배선 (crowny-ai-content.m) — sonnet 위임 완료

오피스 코드 무수정, 8지점 순수 추가: ①caIsVectorService "빌딩" ②AI홈 타일('빌'/'빌딩', crowny://building) ③v5 북마크 시드("크라우니빌딩", bookmarksSeeded.v5 가드) ④⑧file://+bundle/building/ → crowny://building 리매핑 2곳 ⑤normalizeURLString 별칭(crowny://building/빌딩/크라우니빌딩) ⑥caOpenBuildingInActiveTab(후보 2경로: 번들리소스→개발기 bundle/building/app/index.html, 탭제목 "크라우니 빌딩") ⑦navigateTo 디스패치. 오피스 브릿지 WKUserScript는 미복제(빌딩 브릿지 JS = 후속 트랙).
  • 빌드: make ai 에러 0·경고 0, CrownyAI 바이너리(452KB) 생성. 앱 재패키징은 미실행.
  • 상세: CrownyDoc 2026-07-16-crownyai-crowny-building-배선.md

4. 한선씨 동반 — bundle/building/bridge/빌딩명령.한선 (sonnet 위임) 완료

자연어 커맨드 → 9모듈 라우팅 + 층/구역 추출 + 동작 추출 + 4상 판정(티=단일구역 가역 즉시실행 / 옴=다구역·모호 확인필요 / 타=안전위반 거부(방범 중 전체개방 등) / 음=권한 밖 관리자 이관) + 크라우니ERP 연동 판정(예약성 명령 → 연동플래그=1) + 온/오프라인 모드(CROWNY_BUILDING_NET, offline 기본 — 클라우드 필요 명령은 티→옴 대기큐 강등).
  • CLI: CROWNY_BUILDING_MODE=route + CROWNY_BUILDING_CMD_FILE → PSV 모듈|동작|범위|판정|연동플래그|모드|사유. 미설정 시 자체시험.
  • 검증: CROWNY_STRICT=1 컴파일 경고 0(문자열.한선 숫자인가 충돌 → 숫자문자인가로 개명 수정), 자체시험 22/22 PASS, route 실검증 4건 + 메인 세션 독립 재현 2건("2층 복도 조명 꺼줘"→조명|끄기|2층|티|0|online, "회의실 예약해줘"→공간|예약|미지정|옴|1|offline).
  • 설계 방어: 판정 반환=파이프 문자열(길이(맵)=0 함정 회피), 라우팅=조기반환 만약 블록(아니면 35중첩 한계 회피), 오프라인 강등은 기존 티일 때만(타/음/옴 미차폐).
  • 학습 래칫: brain learn intent 빌딩명령_자연어_모듈라우팅_4상판정 + learn.sh add — 다음부터 토큰0.
  • 기존 건물제어.한선(crowny-architect CLI)은 도메인 불일치(건물등록/에너지/주차 — NLU 아님)로 재사용 불가 확인 후 신규 작성.

앱 내용 (파악)

9모듈: 관제·공간·조명·공조·센서·에너지·보안·설비·자동화. 핵심 UX = 자연어 커맨드 팔레트("3층 회의실 시원하게 해줘" → 실행 계획·영향 범위 → 승인 후 적용) + 감사 로그·되돌리기. 헤더 = "시설 관리자 · 게이트웨이 로컬 모드".

ERP 연동 방침 (사장님 지시: 연동 고려)

  • 연동 대상 = 크라우니ERP (erp.crowny.org:9938, 멀티테넌트 v2.0.0 — aimed/leum). 외부 ERP 아님.
  • 앱 대시보드의 "오늘 예약 4건 (ERP 연동 2건)" = 회의실 예약 ↔ 크라우니ERP 예약/자원 흐름.
  • 1차(이번): 빌딩명령.한선이 연동 판정·페이로드 조립까지 수행(예약성 명령 → 연동플래그+대상). 실호출(HTTP)은 후속 트랙 — 게이트웨이 경유 crowny://building 브릿지 JS(오피스 crownyBridge.js 선례)에서 붙인다.
  • 예약 생성 시 파생 동작(회의 30분 전 공조·조명 사전 가동, 예약자 도어 권한 등록)은 자동화 모듈 시나리오로 — ERP는 예약 SSOT, 빌딩은 실행 계층.

오프라인/온라인 방침 (사장님 지시)

  • 앱 자체 = self-contained(오프라인 렌더 완전). 설계상 "게이트웨이 로컬 모드" = 건물 내 로컬 게이트웨이가 1차 제어 주체.
  • 빌딩명령.한선 판정: CROWNY_BUILDING_NEToffline(기본) = 로컬 실행 가능 명령만 티(즉시실행), 클라우드 필요 명령은 옴(대기큐) / online = 전 명령 정상 판정. 오프라인에서도 제어가 죽지 않는 로컬퍼스트 구조.

관련 파일

  • 번들: /Users/ef/CrownyBrowser/bundle/building/{app,design,bridge}/
  • 네이티브: /Users/ef/CrownyBrowser/native/crowny-ai-content.m
  • 원본: ~/Downloads/Crowny Building {앱,전체설계} (standalone).html
  • 선례: CrownyDoc 2026-07-14-크라우니오피스-앱장착.md

E2E 검증 (2026-07-17 추가)

  • 배포 패키징 포함: native/배포패키징.sh에 building/{app,design,bridge} 복사 블록 추가.
  • 라이브 배선 확인: CrownyAI 실기동 스크린샷 — 시작페이지 빌딩 타일 + 북마크바 "크라우니빌딩"(v5 시드) 표시 확인. CrownyAI.app(00:19 재패키징분, 동일 452,520B)에 빌딩 배선 포함 확인.
  • 오프라인 렌더 PASS: 헤드리스 크롬 file:// 렌더 — "Crowny Building" 브랜드 헤더·9모듈 내비·관제 대시보드(248kW/312/318 기기/층별현황)·"오늘 예약 · ERP 연동" 패널·자연어 팔레트(ASK CROWNY)·"게이트웨이 로컬 모드" 푸터 전부 정상.
  • 탭 실클릭 육안은 미완: 19세션 환경에서 GUI 자동화(cliclick/keystroke)가 타 세션 터미널에 입력될 위험으로 중단 — 다음 사용자 기동 시 확인.

잔여 이슈

  1. 빌딩 브릿지 JS (오피스 crownyBridge.js 선례): 앱 자연어 팔레트 ↔ 빌딩명령.한선 route 연결. 착수 보류 — ERP 세션이 "투데이·빌딩 연동 계약(CrownyShared/docindex.psv + 이벤트버스.psv)" 설계를 열린 태스크로 보유, crowny-ai-content.m도 해당 세션이 편집 중(07-17 00시대)이라 동시수정 충돌 회피. 계약 확정 후 빌딩은 구독 측으로 붙는다(지식셀 #24858 세션조율 등록).
  2. 크라우니스페이스(홈어시스턴스): 이름 비워둠 — 재작성 별도 트랙.

옴니 작동 + building.crowny.org 서버 (2026-07-17 완료)

  • 옴니 E2E 육안 PASS: CrownyAI URL바에 crowny://building 실타이핑 → 탭 "Crowny Building 앱" 풀렌더 스크린샷 확정. 빌딩/크라우니빌딩 별칭도 배선됨.
  • building.crowny.org:9605 라이브 (한선씨 서버, /Users/ef/crowny-building/빌딩서버.한선):
  • /·/design = CrownyBrowser 번들 SSOT 절대경로 파일소켓전송 스트리밍(복사 없음) — HTTPS 4.2MB byte-identical(cmp) 실측
  • /health = OK · /api/route?cmd= = 빌딩명령.toau 서브프로세스 4상 판정(온라인 경로 — 오프라인 로컬은 앱/게이트웨이, 온라인은 이 서버가 담당)
  • LaunchAgent org.crowny.building(KeepAlive kill -9 자가부활 검증) · start.sh 4항 mtime 재컴파일 가드
  • cert SAN 기포함 확인 — https://building.crowny.org 종단 200 (발급 불필요)
  • 함정 학습: 파일바이트수/현재밀리초 미존재(정식=파일바이트크기/현재시간 — 학습DB 낡은 이름), 한글 응답 Connection:close
  • 정본: CrownyDoc 2026-07-17-crowny-building-서버-구축.md / 학습 intent: 빌딩서버_정적스트리밍_route프록시
  • 참고: 크라우니스페이스(홈어시스턴스)는 별도 세션이 crowny://space + space.crowny.org로 구축 진행 중(07-17 확인) — 이름 분리 방침대로 진행됨.