ays.crowny.org — 주식회사에이와이에스(AYS) 사이트 구축
개요
interior.crowny.org의 유병일 대표(필름/특수시공) 전용 사이트. 브랜드 AYS = "As You Say"(고객님 말씀하신 대로 / 주님 말씀하신 대로). neofilm.co.kr 구조를 스크리닝해 레이아웃 패턴만 참조하고, 모든 카피는 자체 창작(원본 텍스트 복제 없음). 로고는 샘플의 로고 자리에 AYS 배치.
- 회사: 주식회사에이와이에스(AYS) · 사업자번호 273-81-02677 · 대표 유병일 · 010-4466-7838
- 도메인/포트: ays.crowny.org → :9920 (gateway.yaml 등록 완료)
- 위치:
/Users/ef/crowny-ays/
사업영역 (4사업부)
열차단필름사업부 / 시트지사업부 / 블라인드사업부 / 인테리어필름사업부
무엇을 했는지
/api/consult 즉시 jobId → /api/consult-result 폴링), 게이트웨이 호환. AYS 페르소나(4사업부 매핑, 유병일 총괄, [[상담완료]] 마커→문의 생성).관련 파일
/Users/ef/crowny-ays/
├── server.js — Node 서버(:9920). content/reviews/inquiries API + AI 상담 잡 프록시
├── AYS서버.한선 — 한선씨 동반(사업부매칭/상담완료판정/통계). 컴파일·자체검증 통과
├── data/
│ ├── content.json — 사업부/사례/상식/유튜브/파트너/FAQ/히어로 (워크플로우 산출)
│ ├── reviews.json — 후기 8건(seed) + 사용자 등록 누적
│ └── inquiries.json — 상담 접수 누적
├── public/
│ ├── index.html — 메인(SPA)
│ ├── style.css — 디자인 시스템 + 후기 모달
│ ├── app.js — 콘텐츠 렌더링 + 폼 처리
│ ├── chat.js / chat.css — 크라우니AI 상담 챗
└── .claude/settings.json — 서브에이전트 권한
API
| 메서드 | 경로 | 용도 |
|---|---|---|
| GET | /api/company | 회사·사업부 정보 |
| GET | /api/content | 전체 콘텐츠 |
| GET/POST | /api/reviews | 후기 조회/등록 |
| GET/POST | /api/inquiries | 상담 접수 조회/등록 |
| GET | /api/stats | 통계 |
| POST | /api/consult | AI 상담 잡 제출(202 jobId) |
| GET | /api/consult-result?id= | 상담 결과 폴링 |
빌드 & 실행
bashcd /Users/ef/crowny-ays && node server.js # http://localhost:9920
# 한선씨 동반 검증
cd /Users/ef/CrownyOS/crownyc && ./hanseonc_high /Users/ef/crowny-ays/AYS서버.한선 > /tmp/ays.toau && ./crownyc run /tmp/ays.toau
검증 결과
- 전 엔드포인트 200 + 폼 동선(접수→유병일 매칭, 후기 등록) 통과.
- AI 상담 잡 제출 202+jobId 정상. crowny AI(9852) 미기동 시 graceful 폴백.
- 한선씨 동반: 컴파일 OK, 자체검증 5건 통과(
설정→꺼내수정,포함pos0 회피).
잔여 이슈
- 게이트웨이 라이브 스왑(ays.crowny.org → :9920 업스트림 활성/리로드)은 gateway 세션 담당. 포트는 gateway.yaml 등록 완료, 백엔드 LISTEN 확인됨.
- 사진: 카드 썸네일은 현재 아이콘/그라데이션 플레이스홀더. 실제 시공 사진 확보 시 교체.
- 유튜브: 영상 카드 = 주제별 유튜브 검색 링크(죽은/허위 video ID 방지). 추후 실제 영상 ID 큐레이션 가능.
- 영속화: data/*.json 파일 기반. 서버 데몬/워치독 등록은 미적용(수동 기동).
추가 작업 (2026-06-11)
게이트웨이 연결 + 인증서
- gateway.yaml ays 항목 보강(healthCheck/cors), validate 통과. 라이브 게이트웨이 클린 재기동(게이트웨이재기동.sh)으로 ays HTTP 라우팅 활성 → :80/:8080 200, API 정상.
- HTTPS 미완: ays가 마스터 cert(crownybus.com) SAN에 없어 fallback cert(CN=life.crowny.org) 제시 → 이름 불일치 경고. 신규 HTTP-01 발급이 막힌 원인 = 한선씨 게이트웨이(게이트웨이통합.한선)에 acme-challenge webroot 우선서빙 미구현(컷오버 패리티 갭, 기존 100도메인은 LE 캐시 authz로 발급됨). → gateway 세션 코어 보완 필요 사항.
- cert-manager add 1회 실행(ays 검증 실패→7일 제외, 이후 수동 해제). DNS는 8.8.8.8/1.1.1.1 정상 전파.
모노톤 이모지
- 유니코드 이모지 전량 → 크라우니 모노톤 인라인 SVG(public/icons.js, currentColor 상속). 정적 12 + 동적 6. 평점 별/사업부/사례/영상/팁/챗 전부 교체. 잔여 0.
이미지 관리 (공통규칙)
- image.crowny.org(9872) 공통규칙 확인: CIF2.1 + 6561 4상티어(X-Crowny-Service→자동분류, crowny-ays=T2 6561티) + 의미어 메타.
- AYS images/ 스캐폴드(원본/cif/meta/manifest.json) + README(명명·저작권 규칙) + AYS이미지의미어.한선(셀코어 분류/검증, 컴파일OK).
- neofilm 사진 스크래핑·재호스팅 거부(타사 저작권). AYS 자체/라이선스 사진 입수 시 CIF변환+의미어메타+업로드 파이프라인 동작.
게이트웨이/인증서 완료 (2026-06-11)
✅ ays.crowny.org HTTPS 완료
- 신뢰 인증서 발급 완료: crownybus.com SAN(100)에 ays 포함. 제시 cert CN=abti.crowny.org, SAN에 ays.crowny.org. 신뢰체인 검증 200(비-insecure), 발급자 Let's Encrypt, 만료 2026-09-08.
- HTTP·HTTPS·API 전부 정상, interior 등 타 도메인 무손상.
🔧 게이트웨이 코어 ACME 서빙 구현 (플랫폼 전체 가치)
- 문제: 한선씨 게이트웨이(게이트웨이통합.한선)에
/.well-known/acme-challengewebroot 우선서빙이 없어, 신규 도메인 HTTP-01 발급 불가(기존 100도메인은 LE 캐시 authz로만 발급되던 상태). - 수정:
_acme처리(연결,경로)함수 추가 →_요청처리에서 경로추출 직후·리다이렉트/프록시 이전 호출. webroot 파일을 text/plain으로 정확 서빙. 컴파일OK, 토큰 정확 서빙 검증. - 효과: ays 발급 + 전 도메인 인증서 갱신 복구. (그동안 막혀 있던 신규/갱신 ACME 동작)
⚠️ gateway 세션 인계사항
stunnel_conf_gen.py가 ays를 abti lineage SNI 블록으로 안 만듦(cert SAN엔 분명 ays 존재, openssl 확인됨). 파싱/타이밍 의심. 현재는 stunnel-live.conf에 수동 ays SNI 블록(s-manual-ays, cert=crownybus.com)으로 보완 — 생성기 재실행 시 덮어쓰이므로 생성기 버그 수정 필요.- 직전 LE API ReadTimeout 2회는 일시적 외부 연결(이후 성공). cert-manager 상태 리셋됨.