현업 투입 전 점검 리포트 — 크라우니AI 모듈군 (ERP·빌딩·울트라키보드) [제안용]
2026-07-17. 전 항목 실측 기반(추정 항목은 "추정" 명기). 대상: crowny://erp·crowny://building 모듈, building.crowny.org:9605, erp.crowny.org:9938, 크라우니울트라키보드(구현 진행 중), 공유장부(CrownyShared).
1. 현황 (실측 스냅샷)
| 항목 | 상태 | 증거 |
|---|---|---|
| building.crowny.org | ✅ 라이브 | /health 200 "OK building 9605", HTTPS 4.2MB byte-identical, /api/route 4상 판정 응답 |
| erp.crowny.org | ✅ 라이브 | /health 200 v2.0.0(erp-portal), /api/version 200 |
| LaunchAgent | ✅ | org.crowny.building(자가부활 검증), org.crowny.stake 가동 |
| 크라우니AI 모듈 | ✅ 4종 | office·erp·building·today 장착, crowny://erp ⌘S→cdf 실저장 4건(~/Documents/CrownyERP/) |
| 공유장부 | ✅ 발행측 가동 | ~/Documents/CrownyShared/ docindex.psv 3행 + 이벤트버스.psv 3행(erp.snapshot.saved) |
| 울트라키보드 | 🔨 구현 중 | 스펙 완료(실측 493줄), 울트라키맵.한선 생성됨, JS·검증 진행 중 |
| 번들 무결 | ✅ | 장착본=원본 cmp 동일 |
2. 프로토콜 체크
| 프로토콜 | 판정 | 비고 |
|---|---|---|
| ERP-연동계약 v1 (SSOT) | ✅ 존재·발행측 준수 | cdf 경로·docindex 스키마·이벤트 토픽 계약대로 실파일 생성 확인 |
| 이벤트버스 토픽 5종 | ⚠️ 발행 1/구독 0 | erp.snapshot.saved만 발행 중. 빌딩·투데이 구독측 미배선(계약 §1 명시 "후속 punch") |
| 포트 SSOT | ✅ | building 9605 crowny-ports.sh 정식 등록, gateway.yaml 자동 갱신 경로만 사용 |
| cert/HTTPS | ✅ | building SAN 기포함, 종단 200 |
| 키맵 프로토콜 | ✅ 설계 준수 | mod 통합 토큰·KeyboardEvent.code — 오피스 키맵.한선 관용구 계승, 기존 키 충돌 0 설계 |
| 오프라인/온라인 계약 | ✅ 준수 | 오프라인=기본(계약 §3), :9938 스냅샷 수신 API 라이브 검증 전 동기화 배선 금지 — 현재 미배선 상태가 계약상 정상 |
| 배포 패키징 | ✅ | 배포패키징.sh에 building·erp bridge 포함 |
3. 현업 투입 전 필요사항 (갭)
- 실데이터 부재 (최대 갭): ERP·빌딩 앱은 데모 상수 화면(영속 0 — 연동계약 §0 실측). cdf는 화면 상태 저장이지 실업무 DB가 아님. 현업 투입 = :9938 스냅샷 수신/조회 API 정의·검증 + 실데이터 마이그레이션이 선행돼야 함.
- 구독측 배선: 빌딩(erp.schedule.confirmed→회의실 예약·공조 사전가동)·투데이(erp.* 카드) 이벤트버스 구독 미구현.
- 인증/RBAC: 크라우니AI 모듈은 로컬 앱이라 무인증이 정상이나, 온라인 동기화 붙는 순간 Bearer 인증+조직도 이식 필수(투데이 적용검토서 P0와 동일 결론).
- 멀티테넌트 매핑: erp:9938은 aimed/leum 멀티테넌트 — 어느 테넌트로 파일럿할지 결정 필요.
- 백업 루틴: ~/Documents/CrownyERP/·CrownyShared/는 현재 백업 대상 미등록 → crowny-hub 백업 편입.
- 크로스플랫폼: 현재 macOS(WKWebView)만 검증. 윈도우(WebView2) 현장이면 별도 검증 필요.
- 교육: 울트라키보드 ?(Shift+/) 도움말 오버레이가 1차 교육자료 겸함 — 별도 자료는 파일럿 후.
4. 현장 예상 버그 (근거 포함)
| # | 예상 버그 | 근거 | 심각도 |
|---|---|---|---|
| B1 | 원인 정정(실측): VM은 5초 수신 타임아웃 보유(TCP수락 SO_RCVTIMEO). 진짜 버그 = 타임아웃 반환 -1이 경로 "/"로 오해석 → 행 클라에 4.2MB 오발송·send 잠김(19초 실측). 빈요청 가드 적용 → 후속 요청 4.0초·오발송 0B·회귀 PASS. 학습 intent=TCP서버_빈요청가드_행클라방어 | ||
| B2 | 장부회전.한선(자체시험 22/22, 사본 40KB→7.9KB 행무손실 실측) + LaunchAgent org.crowny.ledger-rotate(30분 주기) + 계약 §7 회전 규약 append. 실장부 무해통과 md5 확인 | ||
| B3 | docindex.psv 키누적 공백 유실 | 기지 함정: read-modify-write PSV에 줄단위 공백제거() 사용 시 후행 스페이스 깎임(CrownyBrowser 키입력 실측 이력) — 한선씨 관리 엔진 코드 감사 필요 | P1 |
| B4 | 힌트모드 클릭 무반응(앱 업데이트 후) | synthetic MouseEvent가 dc 런타임 이벤트 위임 구조에 의존 — 앱 번들 교체 시 위임 루트 변경 가능. 스냅샷도 fiber __name 규약 의존 | P1 |
| B5 | 한글 IME 조합 중 키 오발동 | code 기반이라 대체로 안전하나 조합 중 keydown(keyCode 229, isComposing) 이중발화는 별도 가드 필요 | P1 |
| B6 | WKWebView vs Chrome 동작 차 | 12 시나리오 검증은 헤드리스 Chrome — WKWebView에서 focus/MouseEvent 미세 차이 가능성. 실앱 육안 1회 전 확정 금지 | P1 |
| B7 | 결재 승인(mod+Enter) 오발동 | 파괴적 액션 — 스펙이 4상 옴(확인 오버레이/유예)으로 방어 설계, 구현 검증 대상 | P1 |
| B8 | 데모 날짜(07-14) 고정 화면 | 현장 사용자 혼동("오늘"이 아님) — 실데이터 배선 전 파일럿 금지 사유 | P2 |
| B9 | 다크/라이트 배지 대비 | 힌트 라벨·모드 표시기 대비 미검증 | P2 |
5. 예방조치 (권고 실행 순서)
P0 (투입 전 필수)
- 빌딩서버 수신 가드: accept 루프에 read 타임아웃(논블로킹/poll) 또는 :9605 로컬 바인드 한정+게이트웨이만 공개(게이트웨이 타임아웃 방패) — 한선씨 수정 1곳
- 공유장부 회전 유틸(한선씨): 이벤트버스.psv/docindex.psv 바이트 기준 회전(≤12KB, 한글 3B 감안) + 구독측 글자수 가드 — 오피스 학습층 회전(500줄 실측) 패턴 재사용
- :9938 스냅샷 수신 API 스펙 확정(사장님 승인) → 라이브 검증 → 그때 동기화 배선(계약 §3 준수)
- ERP 회귀 하니스: 오피스 회귀하니스.js 선례 → ERP판(브릿지 스냅샷·울트라키보드 12 시나리오 자동화) — 앱 번들 교체 시 필수 게이트
- 빌딩·투데이 구독측 배선(계약 토픽), IME isComposing 가드, WKWebView 실앱 육안 1회
- 백업: CrownyERP/·CrownyShared/ → crowny-hub 편입
- crownystate 관제 등록, 윈도우 WebView2 검증, 테마 대비 점검, 교육자료
6. 사장님 결정 필요 항목 (제안)
- :9938 스냅샷 수신 API 스펙 승인(엔드포인트·인증·테넌트 매핑) — 실데이터 연동의 관문
- 파일럿 범위: 어느 테넌트(aimed/leum)·어느 현장(빌딩 모듈이면 실건물 게이트웨이 유무)부터
- 결재 승인 유예 정책: mod+Enter 즉시 vs 확인 오버레이 vs 2초 되돌리기 유예(스펙 기본=옴 확인)
- P0 예방조치 2건(서버 수신 가드·장부 회전) 즉시 착수 승인 — 각 소규모(한선씨 1~2파일)
관련 정본
- 연동계약: bundle/erp/spec/ERP-연동계약.md · 울트라키보드 스펙: bundle/erp/spec/울트라키보드-스펙.md
- 빌딩: 2026-07-16-크라우니빌딩-앱장착.md · 서버: 2026-07-17-crowny-building-서버-구축.md
이행 로그 (2026-07-17~18 — "전체 기능 작동" 순차 작업)
- ✅ P0-B1 빌딩서버 행 방어(원인 정정: -1→"/" 오해석 오발송) — 19s→4s
- ✅ P0-B2 장부회전(30분 주기 LaunchAgent + 계약 §7) — 신규 VM 함정 2종 가드레일 SSOT 반영(루프 배열반환 OOM·O(n²) 분리 재호출)
- ✅ B5 IME isComposing 가드 — CDP 회귀 FAIL 0
- ✅ P1 회귀 게이트 승격 — crowny-ultrakey/회귀실행.sh(미러동기+키맵 31/31+CDP)
- 🔨 빌딩 브릿지 JS(팔레트 판정 표시+ERP 이벤트 구독) 진행 중 · 잔여 = B6 실앱 육안, :9938 수신 API(사장님 승인 대기)