Commit Graph

32 Commits

Author SHA1 Message Date
chpark efdf4c2fd5 design: 글래스모피즘 디자인 전면 적용
- 관리자 페이지: 사이드바/카드/모달/폼 유리 효과
- 로그인 페이지: 유리 카드 + 강화된 배경 효과
- 비주얼 매퍼: 유리 패널 + 스텝카드
- 공개 페이지(목록/랜딩): 유리 카드 + 애니메이션 그라데이션 배경
- 전체 backdrop-filter blur + 반투명 배경 + 애니메이션 오브
2026-03-31 10:58:18 +09:00
chpark 830f79071a chore: remove deploy script 2026-03-30 12:18:23 +09:00
chpark d9e0a5b3f4 fix: EUC-KR 등 비UTF-8 인코딩 사이트 크롤링 지원
- iconv-lite 추가
- 크롤러/API 모두 Content-Type charset 자동 감지
- HTML meta charset 폴백 감지
2026-03-30 12:15:34 +09:00
chpark 94b2826179 fix: 공개 페이지 하단 면책 문구 통일
- 목록/랜딩 템플릿 모두 적용
- 정보 안내 플랫폼 + 자료 호스팅 안함 문구
2026-03-30 00:27:21 +09:00
chpark fd64b19d3a fix: 비주얼 매퍼 JS 문법 오류 수정
- iframe 스크립트를 template 태그 방식으로 변경 (EJS 백틱 이스케이프 충돌 해결)
- Mixed Content 치환을 단순 문자열 replace로 변경
- regex 이스케이프 문제 수정
2026-03-30 00:00:08 +09:00
chpark 51496b976e fix: 비주얼 매퍼 iframe 스크립트 실행 + Mixed Content 수정
- sandbox에 allow-scripts 추가
- HTTP 리소스 URL을 HTTPS로 자동 변환
- fetch-page API 직접 호출로 에러 처리 개선
2026-03-29 23:52:31 +09:00
chpark 226e1d9334 feat: 비주얼 매퍼 도구 추가
- 페이지 URL 입력 → HTML 프리뷰 표시
- iframe 내 요소 호버 시 하이라이트 + CSS 셀렉터 표시
- 클릭으로 필드 매핑 (컨테이너, 제목, URL, 순위 등)
- 목록/랜딩 2가지 데이터 타입 지원
- 매핑 결과 → parse_rules JSON 자동 생성
- 사이트 저장 + 즉시 크롤링 한번에 처리
2026-03-29 23:44:18 +09:00
chpark 260aac5d7c feat: 랜딩 페이지 템플릿 추가
- 목록(list) / 랜딩(landing) 2가지 템플릿 지원
- 랜딩: content_selector로 본문 추출, 깔끔한 다크 테마 렌더링
- 사이트 관리 UI에 템플릿 선택 드롭다운 추가
- 템플릿별 파싱 규칙 기본값 자동 세팅
2026-03-29 23:32:32 +09:00
chpark 2e45cd4195 fix: certresolver 이름 le → letsencrypt (Traefik 설정과 일치) 2026-03-29 23:12:12 +09:00
chpark 99fb030720 fix: .dockerignore 추가 (data/postgres 빌드 오류 방지) 2026-03-29 23:09:47 +09:00
chpark a0b12f723b fix: Traefik v3 HostRegexp 문법 수정
Traefik v3에서는 {name:pattern} 문법이 제거됨.
표준 정규식으로 변경: ^[a-z0-9-]+\.startover\.co\.kr$
2026-03-29 23:08:40 +09:00
chpark 81f52afd57 fix: 서브도메인 연결 수정 + SEO 기능 추가
- 도메인 매핑 저장 시 소문자 정규화
- 도메인 조회 시 case-insensitive 비교 (LOWER)
- robots.txt, sitemap.xml 자동 생성
- SEO 메타 태그 (OG, Twitter Card, JSON-LD 구조화 데이터)
2026-03-29 20:53:48 +09:00
chpark 40e3713f99 feat: 서브도메인 와일드카드 라우팅
- Traefik: *.startover.co.kr → crawl-manager (admin 제외)
- startover.co.kr(메인)은 기존 컨테이너 그대로 유지
- admin.startover.co.kr → 관리자
- {서브도메인}.startover.co.kr → DB domain_mappings에서 매핑된 사이트 HTML 서빙
- domainRouter에서 admin 도메인 명시적 제외

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 14:42:17 +09:00
chpark 2343c1903d fix: api/toast/timeAgo 함수를 body 스크립트보다 앞에 배치
스크립트 실행 순서: __INIT__ → 유틸함수 → 페이지 스크립트

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 13:20:53 +09:00
chpark d576cb5255 fix: __INIT__ script를 body 내 다른 스크립트보다 먼저 실행되도록 위치 이동
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 13:12:42 +09:00
chpark 8c8e3ffeaa fix: SSR 데이터 주입 방식 수정 - layout에서 ssrData script 태그 직접 출력
- app.js: initScript() 헬퍼로 <script>var __INIT__=데이터</script> 생성
- layout.ejs: <%- ssrData %> 로 body 뒤에 script 태그 삽입
- 모든 페이지에서 첫 로드 시 즉시 데이터 표시 확인 완료

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 12:56:59 +09:00
chpark dcae228a24 fix: 전 페이지 서버사이드 렌더링으로 전환 (초기 데이터 fetch 제거)
- 모든 관리자 페이지에서 DB 데이터를 서버에서 직접 HTML에 주입
- __INIT__ 글로벌 변수로 초기 데이터 전달 (fetch 불필요)
- 대시보드/사이트관리/AdSense/도메인/로그/사이트상세 전부 적용
- trust proxy 설정 (Traefik 뒤 동작)
- 저장/삭제/크롤링 등 액션은 여전히 API fetch 사용

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 11:24:57 +09:00
chpark e560a2faa2 fix: 프로덕션 쿠키/세션 문제 해결
- trust proxy 설정 (Traefik 뒤에서 동작)
- 쿠키 secure:false (Traefik이 SSL 처리하므로 내부는 HTTP)
- fetch credentials:'same-origin' 명시
- redirect:manual 제거 (opaqueredirect 문제)
- content-type 체크로 비정상 응답 감지

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 02:25:05 +09:00
chpark 678e00449a fix: API fetch 에러 핸들링 강화
- fetch redirect:manual로 리다이렉트 방지
- 401/리다이렉트 시 로그인 페이지로 이동
- JSON 파싱 실패 시 빈 배열 반환 (빈 목록 방지)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 02:14:47 +09:00
chpark 4df273fa19 fix: API 인증 실패 시 401 반환 (리다이렉트 대신)
페이지 이동 후 사이트 목록 빈 화면 버그 수정

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 02:07:23 +09:00
chpark 0e1138df15 fix: data 디렉토리 sudo로 생성 + 권한 부여
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 01:59:42 +09:00
chpark e1f7f1f2ad feat: 로그인 페이지 추가 (Basic Auth 제거)
- 산뜻한 로그인 페이지 (다크 테마 + 글로우 배경)
- 쿠키 기반 세션 인증 (24시간 유지)
- 로그아웃 버튼 (사이드바 + 상단바)
- 미인증 시 로그인 페이지로 리다이렉트

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 01:57:38 +09:00
chpark 6257025c8e fix: 루트 경로 /admin 리다이렉트 + git URL 인코딩 수정
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 01:42:48 +09:00
chpark 99ae8ed79e fix: docker system prune 제거 (DB 데이터 보호)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 01:29:30 +09:00
chpark 6d6e1b96f0 fix: start-server.sh 실행권한 자동 부여
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 01:25:38 +09:00
chpark b7453fb273 fix: git 인증정보 수정
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 01:24:41 +09:00
chpark 0a322bafa3 fix: DB 연결 재시도 + git 인증 + 볼륨 경로 수정
- db.js: waitForDB() 추가 (최대 10회, 3초 간격 재시도)
- app.js: DB 연결 시 waitForDB 사용
- start-server.sh: git 유저명 @를 %40으로 인코딩
- docker-compose.yml: 볼륨 상대경로로 변경 (./data/)
- 디렉토리 권한 문제 해결

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 01:23:32 +09:00
chpark 71329d72a9 fix: Traefik 외부 네트워크 이름 수정 (repo_default)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 01:14:54 +09:00
chpark d6f15c81f0 fix: 서버 git 자동 인증 + 최초 설치 스크립트
- start-server.sh: git remote URL에 인증정보 포함 (비밀번호 입력 생략)
- setup-server.sh: 서버 최초 설치용 (clone + 디렉토리 생성)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 01:09:58 +09:00
chpark 52b1c40132 fix: 사이트 관리 페이지 개선 + 디스커버리 크롤링 + 광고 슬롯 선택화
- 디스커버리 크롤링: 태그/목록 페이지 URL에서 최신 글 링크 자동 탐색
  (parse_rules.discovery.link_selector로 Read more 링크 찾기)
- AdSense 슬롯 ID 선택사항: client_id만 있으면 자동 광고 동작
- 사이트 관리: 저장 후 목록 즉시 갱신 (await loadSites)
- 사이트 관리: 크롤링 스케줄 설정 UI 추가 (크론 프리셋 버튼)
- 사이트 관리: 미리보기 버튼 추가 (렌더링 + 파싱 데이터 확인)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 01:05:21 +09:00
chpark 73cd9d1a2e add: 서버 배포 스크립트 (start-server.sh)
- Ubuntu 서버에서 git fetch + reset으로 최신 소스 적용
- Docker 시스템 정리 후 빌드 & 실행
- 데이터 디렉토리 자동 생성

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 00:45:24 +09:00
chpark c61f10560f init: 크롤링 관리 솔루션 초기 구성
- Express.js 기반 관리자 페이지 (사이트/크롤링/AdSense/도메인 관리)
- PostgreSQL 16 + Docker Compose (Traefik 연동)
- 크롤러: axios + cheerio 기반 HTML 파싱
- 스케줄러: node-cron 기반 자동 크롤링
- 공개 사이트: slug/도메인 기반 DB에서 렌더링 HTML 서빙
- 도메인: admin.startover.co.kr

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 00:44:19 +09:00