poin-site — 포인 홍보 홈페이지 자체 운영 전환
리포 =
C:\dev\poin-site· 서빙 =poin-mini:8800(테일스케일 전용) · 시작 26.8.21(금)
목표
거래처(contentsworks/아임웹)에 맡긴 포인 홍보용 홈페이지 www.poin.co.kr 를 만료(올해 말) 전에 카피해 자체 운영으로 돌린다. 운영자료 인계는 거래처가 거부했다.
확정 사실 (코디 실측 26.8.21)
- 플랫폼 = 아임웹(imweb) SaaS. 쿠키
IMWEBVSSID, 에셋 전부cdn.imweb.me/vendor-cdn.imweb.me. contentsworks = 아임웹 파트너 대행사이지 자체 CMS 아님. → ⚠관리자 페이지 "가져오기"는 물리적으로 불가. 남의 SaaS 코드다. 가져올 수 있는 건 콘텐츠(데이터)뿐, 관리자는 새로 만든다. - 사이트 = 4페이지.
/index(Home) ·/15(About) ·/16(Gallery) ·/18(Contact). 사이트맵·크롤 일치. - 갤러리 = 게시판, 현재 4건(강화군 농업기술센터 강의실 / 수납형 캣타워 / 홍천 개인주택 / 천안 모델하우스 현장).
- Contact = 문의폼(성함·연락처·설치주소·희망일자·의뢰내용) → 아임웹 내부 ajax 엔드포인트. 폼 백엔드도 새로 만들어야 동작.
- 본문 텍스트는 서버렌더 HTML 안에 있다(JS 렌더 아님) → 스크랩 쉽다.
- 이미지 전량이
cdn.imweb.me→ 만료되면 같이 죽는다. 전량 로컬 다운로드가 필수. - 현재 사이트에 GA4 없다.
wcslog(네이버 애널리틱스) +fbq(페북 픽셀)뿐 → 지금 보는 방문자 통계 = 아임웹 어드민 내장 통계, SaaS 내부 데이터라 이관 불가(캡처/CSV만). - 애니메이션 = 스크롤 페이드인 8곳 +
owl-carousel슬라이더 2개. 비디오·외부 임베드 없음 → 재현 난이도 낮음. - DNS 네임서버 =
cns1~4.hostcocoa.com(호스팅코코아). 도메인 명의 = 포인(페페 확인), 호스팅만 대행사 위임 → 도메인 상실 위험 없음. - 만료 = 올해 말 예정(페페).
- 환경: poin-mini(100.108.234.45) Python 3.12.10 / Flask 3.1.3 / playwright 1.61 / requests 설치됨. 8xxx 점유 =
8443 8788 8790~8793 8795 8799 8801~8804 8810 8815 8822→ 8800 비어있음. .secrets\.env에 메일 자격증명 없음.
그릴링 결정 (26.8.21 페페)
| # | 결정 | 내용 |
|---|---|---|
| 1 | 카피 방식 | 미러 스냅샷 → 재구축, 2단계. 미러본은 「정답지」로 영구 보관 |
| 2 | 관리자 범위 | 갤러리 관리 + 방문자 통계 2개만. 아임웹 어드민 전체 흉내 안 함 |
| 3 | 도메인 | 명의 = 포인. 급한 불 없음 |
| 4 | 스택 | Flask + SQLite + Jinja (pfs와 동일 계열) |
| 5 | 통계 | 자체 카운터 지금 + GA4는 공개 전환 때. 아임웹 과거 통계는 만료 전 스크랩(참고 보관) |
| 6 | 자산 확보 | 어드민 로그인해 원본 다운로드 + CDN 긁기 병행. 로그인 자동화 = 페페 승인 확정 |
| 7 | 문의폼 | SQLite 저장. 알림은 이메일(poincustomer@gmail.com), 텔레그램 아님 |
| 8 | 배포 | 리포 C:\dev\poin-site / 포트 8800 / pythonw 자동시작(HKCU Run) / 테일스케일 전용, Funnel 공개 안 함 |
| 9 | 재현 충실도 | "같아 보이면 OK" — 데스크톱·모바일 육안 대조. 픽셀 완전일치 아님 |
| 10 | 메일 발송 | 지금은 저장만. SMTP는 공개 전환 때 붙임(앱 비밀번호 미발급) |
| 11 | 문의 이력 | 과거 실사용 기록 없음 → 이관 안 함, 새로 시작 |
| 12 | 완료 판정 | 아래 8항목 |
작업 계획 (Phase)
- P0 미러 스냅샷 — 만료 전 원본 확보(되돌릴 수 없는 리스크 1순위). Python 미러 스크립트(requests, wget 없음) →
mirror/. 페이지 4 + 참조 에셋 전량, URL 로컬 재작성. - P1 어드민 수확 — Playwright로 아임웹 어드민 로그인 → ①갤러리 4건 원본 이미지+본문 ②방문자 통계 최대기간 CSV/캡처 ③페이지 편집기 원본 이미지 ④SEO 설정(메타·OG·파비콘) ⑤숨은 데이터 유무 확인. →
harvest/ - P2 콘텐츠 추출 — 미러 HTML → 섹션별 텍스트/이미지 구조화(
content.json) + 이미지 전량static/img/로컬화 - P3 재구축 — Flask 앱: 템플릿 4 + base, SQLite 3테이블(gallery·inquiry·visit), 관리자(로그인 + 갤러리 CRUD + 통계표), 페이드인 = IntersectionObserver, 슬라이더 = CSS scroll-snap
- P4 배포·검증 — 8800 pythonw 자동시작 + 완료 판정 8항목
완료 판정
① 4페이지 전부 뜬다 ② 원본 vs 재현 데스크톱·모바일 스크린샷 대조 첨부 ③ 이미지 전량 로컬(cdn.imweb.me 참조 0건) ④ 갤러리 등록·수정·삭제 실동작 ⑤ 통계표에 실제 접속 기록 ⑥ 문의폼 제출 → DB 저장 확인 ⑦ 재부팅 후 자동시작 ⑧ 미러 스냅샷 보관 완료
진행 상황 (2026-08-21 세션)
- ✅ P0 미러 스냅샷 — 8페이지(4 + 갤러리상세 4) · 에셋 357개 75.6MB · 스크린샷 16장. 자체검사 ALL PASS(절대URL 잔존 0 · 에셋 누락 0 · 백지밴드 0). 커밋
6fe6455 - ✅ P1 어드민 수확 — 글 4건 원문 + 원본 사진 34장 34MB(3936×2624 급) · 방문자/페이지뷰 월간 이력 2025-04~2026-08 CSV · SEO/사이트 설정 · 숨은 데이터 점검(전부 비어있음 확인). 커밋
8e90b3a - ✅ P2~P4 재구축·배포 — Flask+SQLite, 공개 4페이지 + 갤러리 상세, 관리자(갤러리 CRUD·방문자 통계·문의함), 자동시작(HKCU Run, 창 없음). 자동검증 39/39 PASS. 커밋
a982e64 - 🔴만료일 정정 = 2027-04-09 (D-231) — 사전 정보 「올해 말」과 다르다. 여유가 더 있다.
- 원본 대조(데스크톱 높이차): index −11 · gallery −10 · contact −37 · about −109 px. 모바일은 원본이 별도 섹션을 쓰므로 200~400px 차(의도).
접속
- 사이트
http://poin-mini:8800·http://100.108.234.45:8800(테일스케일 붙은 기기 전부) - 관리자
http://poin-mini:8800/admin— 비번 =.secrets/.env의POIN_SITE_ADMIN_PW
미결 · 다음
- ⏳ 페페 육안 1회 — 4페이지 + 관리자 화면. 어긋난 곳 지적하면 그 부분만 손본다.
- ⏳ 공개 전환 시 = GA4 부착(
tools/site-analytics재활용) · Gmail 앱 비밀번호 발급(페페) → 문의 메일 알림 · HTTPS · DNS(호스팅코코아)를 새 서버로 전환 - ⏳ 갤러리 사진 업로드 UI 없음 — 현재는
static/img/posts/<slug>/에 넣고tools/build_assets.py재시드. 필요하면 붙인다. - 📌 만료 전 재수확 1회 권장(2027-03) — 그 사이 원본에 콘텐츠가 늘면
tools/mirror.py+harvest_*.py다시 돌린다.