Commit Graph

9 Commits

Author SHA1 Message Date
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 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 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 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