AYS server.js(:9920) 프론트 라우팅 재편
개요
crowny-ays/server.js(:9920, 라이브)의 프론트 진입점을 재편: 랜딩페이지를 /landing으로 옮기고,
루트(/)는 새로 구축된 "시공" 플랫폼(127.0.0.1:9929)으로 리버스 프록시.
라우팅 규칙표
| 경로 | 처리 |
|---|
/landing, /landing/ | public/landing.html 직접 서빙 |
/ (루트) | 9929(시공 플랫폼)로 프록시 (스트리밍, 15MB 안전상한, 다운시 landing.html 폴백) |
기존 정의된 /api/* 30종(회원/거래/정산/후기/문의/현장수신 등) | 기존 핸들러 그대로(무변경, 조기 return) |
public/에 실존하는 파일(join.html, terms.html, admin.html, chat., images/ 등, 확장자 있고 fs.statSync 성공) | 기존 정적서빙 그대로 |
그 외 전부 (예: /api/config, /home, /quotes*, /bookings, /chat, /approvals*, /staff*, /view/*, /admin/photos/classify, /admin/zones/publish 등 플랫폼 앱.html이 실제 호출하는 경로) | 9929로 프록시 |
플랫폼 API는 기존
/api/* 화이트리스트와
경로가 겹치지 않음(플랫폼은
/api/config 하나만
/api/ 접두, 기존엔 미정의) — 별도 화이트리스트 불필요, 자연스러운 fallthrough로 해결.
수정 파일
/Users/ef/crowny-ays/server.js — 라이브 파일, 신중 수정. proxyToPlatform()/serveLandingFallback() 추가 + 최종 정적서빙 블록을 "실존파일=기존, 아니면=프록시" 구조로 교체
/Users/ef/crowny-ays/프록시라우팅.한선 (신규) — 판정 로직 동반본. hanseonc_high 컴파일 통과(2614 큐브, 0 에러), 셀프테스트 7건 전부 기대값 일치. crownycode-learn 학습 완료(intent=ays프록시라우팅판정)
재기동 (함정 회피)
pkill -f로는 옛 프로세스가 안 잡혀(argv에 절대경로 없음) →
lsof -nP -iTCP:9920 -sTCP:LISTEN의 PID를 kill 후
launchctl kickstart -k gui/501/com.crowny.ays로 재기동. PID 1342 → kill → 재기동 확인(새 PID 97611, 재차 kickstart로 최종 PID 확정).
검증 (실측)
curl 127.0.0.1:9920/ → 200, 시공 플랫폼(9929) 응답 프록시 확인
curl 127.0.0.1:9920/landing → 200, landing.html(크라우니디자인 적용본) 서빙
curl 127.0.0.1:9920/api/stats → 200 (기존 API 무변경 유지)
curl 127.0.0.1:9920/join.html → 200 (기존 정적파일 유지)
curl 127.0.0.1:9920/api/config → {"brand":"AYS","service_name":"고객님 말씀하신대로(As You Said)","items":["열차단필름시공","인테리어필름시공","창호시공"]} (플랫폼 응답, 프록시 경유 확인)
curl 127.0.0.1:9920/home → 200 (플랫폼 신규 경로 프록시 확인)
잔여 이슈
- 루트(
/) 프록시 시 받아오는 원본 HTML의 <title>이 "크라우니클린"(플랫폼측 잔존 placeholder) — 페이지 로드 후 클라이언트 JS가 /api/config로 실제 AYS 브랜드로 갱신하므로 브라우저에서는 정상 표기되나, SSR 단계 title은 플랫폼(9929) 쪽 앱.html 수정 필요(이 세션 범위 밖, 다른 세션이 시공/ 디렉토리에서 동시 작업 중이라는 이전 보고 있음).
- 9929 다운 시 폴백(landing.html) 로직은 코드 리뷰로만 검증(실제 9929 중단 후 502→landing 폴백 라이브 테스트는 라이브 서비스 보호를 위해 미실시).