← 목록
기타 2026-07-30 5KB 읽기 5분

crowny-clean 정본 병합 + 잔존 브랜딩 수리 → AYS 미러 전파

개요

clean.crowny.org(:9624) 서버.한선을 SSOT로 확정하고, crowny-ays 시공 인스턴스(:9929/org.crowny.ays.work)로 동기화.sh를 통해 전파했다.

무엇을 했는지

  1. 정본 병합: crowny-ays 미러에만 있던 _설정로드() 함수 내 15줄(데이터루트 기준 15개 파일경로 재계산 — quote/booking/job/zone/photo/report/approval/staff/crew/crd_ledger/audit_log/staff_report/review/chat/seq)을 clean 정본 서버.한선의 동일 위치(반환 1 앞)에 이식. diff 결과 두 파일 완전 동일 확인.
  1. 잔존 브랜딩 수리 (4건 중 3건 완료, 1건 skip):
- a. /home 라우트 "service" 필드: "크라우니클린" 하드코딩 → _서비스명 변수 사용으로 수정 (서버.한선:1352 부근). - b. 앱.html 정적 <title>(7행)·역할바제목 초기값(242행)·하단 "Crowny Clean" 텍스트(380행)를 {{브랜드명}}/{{서비스명}} 토큰으로 치환. 서버.한선에 부팅 1회 캐시 생성 로직 추가: _앱HTML캐시생성() 함수가 체계()로 sed 치환 파일(데이터루트/_app_cache.html)을 만들고, _처리HTML이 이 캐시 파일을 파일소켓전송으로 스트리밍. VM 문자열 65535B 캡을 피하기 위해 파일 내용을 통째로 한선씨 문자열로 읽지 않고 디스크에서 sed로 처리(82KB 앱.html 안전). - c. /health 라우트: 포트 하드코딩(9624) → 문자열변환(포트) 변수 사용으로 수정. 도메인 하드코딩(clean.crowny.org)은 skip — 설정.psv에 도메인 필드가 없어 간단한 수정 범위를 벗어남(잔여 이슈로 기록).

  1. 정본 배포: hanseonc_high로 재컴파일 → launchctl kickstart -k gui/501/org.crowny.clean → 실측:
- curl 127.0.0.1:9624/ = 200 - /api/config = {"brand":"크라우니클린","service_name":"이사·입주 프리미엄 1:1 클리닝",...} - /home service = "이사·입주 프리미엄 1:1 클리닝" (설정값 그대로, 회귀 0) - / title = "크라우니클린 — 이사·입주 프리미엄 1:1 클리닝" (회귀 0)

  1. 동기화 전파: 동기화.sh 최초 실행 → 타(충돌) 판정(정본도 변경·미러도 변경 이력). 미러의 로컬수정분(15줄)이 이미 정본에 흡수된 상태였으므로, .동기화상태.psv의 기록된 미러 해시를 현재 미러 실측 해시로 갱신해 로컬수정 플래그를 해소한 뒤 재실행 → 티(동기화실행) 성사, 재컴파일 성공, 스모크(org.crowny.ays-plat:9929 LaunchAgent 최초 생성) 200 통과, 상태 갱신.
- 주의: 동기화.sh가 만든 org.crowny.ays-plat LaunchAgent는 실제 운영 인스턴스(org.crowny.ays.work, 동일 포트 9929)와 별개 — 스모크 전용으로 즉시 종료(bind 실패). 실제 반영을 확인하려면 운영 LaunchAgent(org.crowny.ays.work)를 kickstart해 새 서버.toau를 로드해야 함(발견: kickstart 전엔 옛 바이너리가 계속 서빙 중이라 title이 미치환 상태로 보였음).

종단 실측 (모두 통과, 회귀 0)

  • curl 127.0.0.1:9929/api/config{"brand":"AYS","service_name":"고객님 말씀하신대로(As You Said)",...}
  • curl 127.0.0.1:9929/ title → <title>AYS — 고객님 말씀하신대로(As You Said)</title> (치환 확인)
  • curl 127.0.0.1:9929/home service → "고객님 말씀하신대로(As You Said)"
  • https://ays.crowny.org/ = 200, https://ays.crowny.org/landing = 200
  • https://clean.crowny.org/ = 200, title = "크라우니클린 — 이사·입주 프리미엄 1:1 클리닝" (회귀 0)
  • 동기화.sh 재실행 → 옴(변경없음) 확인

관련 파일

  • /Users/ef/crowny-clean/서버.한선 (정본, SSOT)
  • /Users/ef/crowny-clean/앱.html (토큰화: {{브랜드명}}/{{서비스명}})
  • /Users/ef/crowny-clean/서버.toau (재컴파일본)
  • /Users/ef/crowny-ays/시공/서버.한선, 앱.html, 서버.toau (미러, 동기화 완료)
  • /Users/ef/crowny-ays/시공/동기화.sh, .동기화상태.psv
  • LaunchAgent: org.crowny.clean(:9624), org.crowny.ays.work(:9929, 운영), org.crowny.ays-plat(:9929, 스모크전용— 동기화.sh가 최초 생성, 상시 미기동)

잔여 이슈

  • /health 라우트의 도메인 하드코딩(clean.crowny.org)은 설정.psv에 도메인 필드가 없어 미수정. 필요 시 설정.psv 8번째 필드로 도메인 추가하고 _설정로드()/_도메인 변수화 권장.
  • org.crowny.ays-plat(동기화.sh 스모크용 LaunchAgent)와 org.crowny.ays.work(실제 운영)가 동일 포트(9929)를 바라보고 있어 향후 동시 기동 시 충돌 가능 — 정리 필요성 있음(현재는 스모크가 즉시 bind 실패 후 종료하므로 안전).