인사이트

공개 구조 읽기

이 글은 수집기에서 공개 HTML까지 이어지는 정적 구조를 사실만으로 풀어 씁니다.

1. 원본 데이터에서 화면까지

이 저장소의 공개 화면은 수집기와 내보내기 단계를 거친 뒤에만 렌더링됩니다. `collector/main.py` 계열은 외부 데이터와 공시를 수집하고, `web/scripts/*` 계열은 이를 읽기 전용 DTO로 바꿉니다. 그 뒤 `web/components/etf-dashboard.tsx`와 공개 페이지들이 정적 JSON만 읽어 화면을 만듭니다.

원본 데이터 경로

  • `collector/main.py`와 `collector/collect_session_service.py`가 수집과 정리를 담당합니다.
  • `web/scripts/export_static_data.py`와 `web/scripts/export_upcoming_data.py`가 공개 JSON DTO를 만듭니다.
  • 브라우저는 Supabase에 직접 붙지 않고, export된 정적 파일만 읽습니다.

브라우저가 읽는 파일

  • `/data/etfs.json`
  • `/data/charts/{code}.json`
  • `/data/holdings/{code}.json`
  • `/data/news.json`
  • `/data/upcoming.json`

운영 경로와 실험 경로

  • `/lab`는 숨김 경로이고 `noindex`로 처리됩니다.
  • `web/lib/lab-fixtures.ts`는 운영 DTO와 분리된 로컬 목업만 제공합니다.
  • `web/components/lab-dashboard.tsx`는 운영 경로를 건드리지 않는 실험 UI입니다.

공개 페이지의 역할

  • `/about`는 프로젝트 개요를 설명합니다.
  • `/privacy`는 공개 페이지와 개인정보 안내를 제공합니다.
  • `/contact`는 피드백과 정정 요청의 공개 진입점입니다.
  • `/insights/*`와 `/updates`는 설명형 콘텐츠와 변경 기록을 모읍니다.

2. 왜 공개 페이지가 여러 개인가

공개 페이지들은 한 화면에 모든 것을 넣기보다, 역할별로 나누어져 있습니다. 대시보드는 현재 상태를 보여 주고, `상장예정`은 공시 단계와 상장 진행을 따로 보여 주며, `방법론`과 `용어집` 은 용어와 경계를 정리합니다. `업데이트 로그`는 이 변경들을 날짜로 남깁니다.

3. 이 구조가 말하는 것

이 사이트는 브라우저가 데이터베이스에 직접 연결하는 구조가 아닙니다. 공개 JSON과 정적 HTML이 중심이고, 숨김 경로인 `/lab`는 로컬 목업만 사용합니다. 그래서 운영 화면과 실험 화면이 섞이지 않으며, 공개 페이지는 설명형 콘텐츠를 별도로 담을 수 있습니다.