AYS 사이트 복구 + 운영자 시공사진 업로드 + 메인 이미지 + studio 템플릿 100종
개요
2026-06-17 세션. 사용자 요청 4건 처리:
- ays.crowny.org 사이트 복구
- 운영자(유대표)가 시공사진을 직접 게시
- 메인(히어로) 이미지 생성·배치 — 블라인드 창가 카페에서 여유를 즐기는 여성
- (추가) 상담버튼 투명도 버그 수정 + studio 빌더에 한국형 홈페이지 템플릿 100종 + 자유 이미지
1. 사이트 복구 (+ 게이트웨이 전역 복구)
- 증상: ays 503, studio·padella·finance 등 전 서브도메인 503(백엔드는 로컬 200) = 게이트웨이 8080 wedged.
- 복구:
pkill -9 -f gwlive.toau; GW_PORT=8080 CROWNY_STD=... crownyc run /tmp/gwlive.toau(stunnel 유지). 비샌드박스 필수(샌드박스 기동은 accept 막혀 위장 wedge).
- 결과: 전 서브도메인 200 회복. ays.crowny.org 공개 DNS 200.
2. 운영자 시공사진 직접 게시
서버(crowny-ays/server.js): 패스코드 인증(ADMIN_PASS, env AYS_ADMIN_PASS, 기본 ays4466) +
POST /api/admin/auth 로그인 확인
POST /api/admin/case 사진(base64)+사례정보 → public/images/gallery/에 저장 + content.cases 맨 앞 삽입(최신우선) + content.json 영속
GET /api/admin/cases 관리 목록
POST /api/admin/case/delete 삭제(id/idx, 자체 업로드 이미지 파일도 정리)
UI: public/admin.html — 로그인 → 사업부/제목/위치/면적/기간/설명 + 사진 → "설치사례에 게시". 게시 즉시 renderCases가 c['이미지'] 필드로 갤러리 노출(기존 폴백 cover SVG 대체).
동반: 현장사진관리.한선(인증/확장자/사업부정규화/맨앞삽입) 컴파일+실행 검증.
E2E 검증: 게시→content.json 13건+갤러리파일 / 삭제→12건 복귀+파일 정리.3. 메인 히어로 이미지
public/images/hero-cafe-blind.svg — 따뜻한 카페, 창가에서 블라인드 너머를 바라보며 여유를 즐기는 여성(뒷모습/측면 실루엣), 베네치안 블라인드 슬랫·아침빛·커피·화분. 골드 톤(#C9A961). 외부 이미지 0(SVG 일러스트).
public/index.html 히어로를 2단(.hero-grid: 카피 좌 / 비주얼 우)으로 변경, style.css에 반응형 CSS(860px↓ 스택).
- 운영자가
admin.html로 실제 사진 업로드 시 자유 교체 가능.
4-a. 상담버튼 투명도 버그 (근인)
public/chat.css가 var(--surface)·--bg2·--border·--transition 등 16개 변수를 쓰는데 style.css :root에 미정의 → background:var(--surface)가 투명으로 풀려 패널이 비침.
- 수정: chat.css 상단에 누락 변수 전체를 AYS 라이트+골드 팔레트로 정의(
:root). 정적 파일이라 재기동 불필요.
4-b. studio 템플릿 100종 + 자유 이미지 (studio.crowny.org:9933)
생성기 crowny-studio/gen-templates.js: 업종 20종 × 스타일 5종 = 100. 스튜디오 문서모델 {meta,tokens,root:{children}}로 산출 → data/templates/<id>.json + _manifest.json.
업종: 카페·베이커리·음식점·미용실·네일·피트니스·요가·병원·치과·학원·부동산·법률·세무·인테리어·사진관·웨딩·펜션·꽃집·동물병원·IT스타트업 (8 카테고리)
스타일: 모던미니멀/따뜻한내추럴/우아한클래식/볼드임팩트/라이트클린 (팔레트+레이아웃 아카이브)
레이아웃 5종(classic/compact/gallery/trust/menu), 메뉴보유 업종은 변형1·3에서 가격강조(menu)
서버 라우트: GET /api/templates(매니페스트), GET /api/template-doc/:id(문서, 경로탈출 방어).
갤러리 UI: public/스튜디오.html 툴바 "🎨 템플릿" → 모달(카테고리 탭 + SVG 썸네일 그리드, 외부이미지 0) → 클릭 시 문서를 에디터에 로드(tree 교체·snapshot·sync).
자유 이미지: 이미 구현됨 — img 필드(히어로 bgImage·갤러리 src)에 📁 업로드(/api/upload base64→/uploads/)·URL 직접 입력. 템플릿이 이를 활용(빈 bgImage/gallery src 자리).
동반: 템플릿엔진.한선(레이아웃순서/스타일레이아웃/히어로각도/개수) 컴파일+실행 검증(총 100, 레이아웃 일치).
검증: 100/100 renderPage 전수 성공, 미지원 타입 0. 라우트·게이트웨이 200, 익스포트 E2E 성공, 경로탈출 404.관련 파일
- crowny-ays: server.js, public/admin.html, public/images/hero-cafe-blind.svg, public/chat.css, public/index.html, public/style.css, 현장사진관리.한선/.toau
- crowny-studio: gen-templates.js, data/templates/*.json(100+manifest), server.js, public/스튜디오.html, 템플릿엔진.한선/.toau
잔여 이슈
- AYS admin.html 패스코드 = 환경변수
AYS_ADMIN_PASS(기본 ays4466) — 운영 시 유대표용 패스코드 설정 권장.
- 히어로는 SVG 일러스트(실사진 아님) — 운영자가 admin으로 실사진 교체 가능. 실사 필요시 이미지 생성 파이프라인 별도.
- studio 템플릿 썸네일은 팔레트 기반 SVG 추상 미리보기 — 실렌더 캡처 썸네일은 향후 고도화 후보.
- studio LaunchAgent(com.crowny.studio.plist) 미로드 — 영속 기동은 사용자 launchctl load -w.
후속 (추천대로 실행, 2026-06-17)
- studio 영속: 이미
com.crowny.studio LaunchAgent 로드됨(PID 22107, 새 코드 서빙) — 조치 불요.
- AYS 영속:
~/Library/LaunchAgents/com.crowny.ays.plist 신규(node server.js, KeepAlive+RunAtLoad) → load -w. 재부팅/세션종료에도 자동 기동.
- 운영자 패스코드: plist
EnvironmentVariables.AYS_ADMIN_PASS에 설정(기본 ays4466 아님). 옛 기본값 401·새 값 200 검증.
- 히어로: SVG 일러스트 유지(운영자 admin 업로드로 실사진 교체 가능).
- 게이트웨이 재발 wedge: AYS 서버 재기동 후 워치독이 gwlive를 재기동했다가 전역 wedge(전 도메인 503) → gwlive 비샌드박스 재기동으로 복구, 42s+ 안정 확인. 게이트웨이 불안정은 gateway 세션 영역([[reference_gateway_live_recovery]]).