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

crowny-clean 서버.한선 설정 구동형 플랫폼 코어화

개요

crowny-clean(clean.crowny.org:9624)의 서버.한선을 clean/AYS가 동일 파일을 쓰고 인스턴스 차이만 설정 파일로 표현하는 구조로 리팩토링. 부팅 시 설정.psv를 로드해 포트·데이터루트·브랜드명· 서비스명·종목목록·앱HTML경로·폰트경로를 오버라이드. 설정 파일이 없으면 clean 기존 하드코딩 기본값 그대로 동작(회귀 0).

무엇을 했는지

  1. 서버.한선: _설정로드() 함수 추가. 환경변수("CROWNY_INSTANCE_CONF") → 없으면
현재경로()+"/설정.psv" → 없으면 /Users/ef/crowny-clean/설정.psv 순으로 후보 경로 순회. 설정 라인 형식(1행, | 구분): 포트|데이터루트|브랜드명|서비스명|종목목록(쉼표)|앱HTML경로|폰트경로. 각 필드는 값이 있을 때만 전역 변수를 덮어씀 (부분 설정도 안전).
  1. GET /api/config 라우트 추가 — {"brand":..,"service_name":..,"items":[...]} JSON 반환.
문자열 배열 JSON 헬퍼 _배열JSON_문자열() 신규 추가(기존 _배열JSON은 quote 없이 raw 값용).
  1. /Users/ef/crowny-clean/설정.psv 작성 (clean 기본값 명시):
9624|/Users/ef/crowny-clean/data|크라우니클린|이사·입주 프리미엄 1:1 클리닝|아파트,오피스텔,빌라,단독|/Users/ef/crowny-clean/앱.html|/Users/ef/crowny-clean/fonts/PretendardVariable.woff2
  1. 앱.html: 부팅 시 /api/config fetch(설정로드()) → document.title, 역할바 제목(#역할바제목),
홈 화면 브랜드/서비스 카피, 견적 폼의 주거형태 칩줄(housing_type)을 서버가 준 items로 치환. 기존 하드코딩 값과 100% 동일해 clean 화면은 그대로 렌더.

관련 파일

  • /Users/ef/crowny-clean/서버.한선 (수정)
  • /Users/ef/crowny-clean/앱.html (수정)
  • /Users/ef/crowny-clean/설정.psv (신규)
  • /Users/ef/crowny-clean/서버.한선.bak-플랫폼화전, 서버.toau.bak-플랫폼화전 (수정 전 사본)
  • /Users/ef/crowny-clean/서버.toau (재컴파일 후 배포본)

설정 키 스펙

순서설명
0포트리슨 포트 (숫자)
1데이터루트PSV append-log 디렉토리
2브랜드명/api/config brand
3서비스명/api/config service_name
4종목목록쉼표구분, /api/config items 배열
5앱HTML경로정적 서빙할 앱.html 경로
6폰트경로woff2 폰트 경로

검증 결과 (2026-07-30)

  • 컴파일: hanseonc_high 서버.한선 — 에러 0, 64447 큐브 생성.
  • 격리 테스트(포트 9699, 커스텀 설정.psv): /=200, /api/config={"brand":"테스트브랜드",...}, /quotes/estimate=200.
  • 라이브 재기동(launchctl kickstart -k gui/$(id -u)/org.crowny.clean, 기존 LaunchAgent org.crowny.clean 사용):
  • / = 200
  • /api/config = 200, {"brand":"크라우니클린","service_name":"이사·입주 프리미엄 1:1 클리닝","items":["아파트","오피스텔","빌라","단독"]}
  • /health = 200, 기존과 동일 응답
  • /quotes/estimate = 200
  • /staff = 200
  • data/*.psv 라인 수 재기동 전후 동일 확인(quote.psv 4, booking.psv 4, job.psv 1 등) — 데이터 훼손 없음.
  • 재기동 방식

    LaunchAgent org.crowny.clean (~/Library/LaunchAgents/org.crowny.clean.plist, KeepAlive+RunAtLoad, crownyc run 서버.toau). 배포 절차: 사본 백업 → 재컴파일 → 서버.toau 교체 → launchctl kickstart -k gui/$(id -u)/org.crowny.clean → curl 실측.

    잔여 이슈

    • /health 라우트는 여전히 port:9624/domain:clean.crowny.org 하드코딩 문자열 — 필요 시
    _브랜드명/포트 변수로 동적화 가능(이번 스코프는 /api/config 중심이라 미변경).
    • AYS 인스턴스 적용 시: 해당 디렉토리에 자체 설정.psv(다른 포트·데이터루트·브랜드) 배치하거나
    CROWNY_INSTANCE_CONF 환경변수로 경로 지정 필요. 아직 AYS 쪽 설정.psv는 생성하지 않음.
    • 디자인이식 훅이 앱.html 기존(사전 존재) 색상 토큰(#000000 등, 크라우니캔버스 디자인 규칙.css
    영역)을 위반으로 계속 표시 — 이번 작업으로 도입한 값이 아니라 기존 라이브 파일에 이미 있던 값들이며, 이번 변경 범위(브랜드/종목 치환) 밖이라 손대지 않음. 별도 디자인 정합 작업 필요 시 확인.