Streamlit 레거시 프로토타입 페이지 API 기반으로 마이그레이션 #54

Closed
opened 2026-04-23 03:03:27 +09:00 by xhh · 0 comments
Owner

frontend/streamlit/utils/data_loader.py 와 레거시 페이지(Market_Coverage, Sector_Flows, Indicator_Detail) 및 app.py 사이드바가 SQLite 파일을 직접 읽는다. 때문에 Streamlit 컨테이너에 ./data:/app/data:ro read-only 볼륨을 공유하고 있음 (v0.3.3 에서 도입).

왜 제거해야 하나

  • 단일 책임: Streamlit 은 API 소비자가 되어야 자연스럽다. DB 를 둘이 공유하는 현 구조는 스키마 변경 시 두 쪽을 다 고쳐야 한다.
  • 새 운영 페이지(#22, #46) 는 이미 API 기반 — 같은 패턴으로 수렴시켜야 유지보수 단일 경로.
  • 프로덕션 외부 노출: 볼륨을 공유하지 않으면 공격 경로가 하나 줄어든다 (SQLite 파일 직접 접근 불가).

대상

  • app.py — 사이드바에서 get_database_stats() / get_latest_update_time() 호출 중 → /api/meta/coverage + /api/health 로 대체
  • pages/1_Market_Coverage.py / pages/2_Sector_Flows.py / pages/3_Indicator_Detail.pydata_loader.py 함수들 사용 → /api/prices/*, /api/indicators/*, /api/meta/* 로 교체. 없는 엔드포인트가 있으면 추가.
  • utils/data_loader.py — 전부 제거
  • docker-compose.yml./data:/app/data:ro 볼륨 마운트 삭제
  • 선택: 옛 프로토타입 페이지 자체를 운영 페이지에 통합할지 별도로 유지할지 결정

완료 기준

  • data_loader.py 삭제
  • 모든 Streamlit 페이지가 REST API 만으로 동작
  • Streamlit 컨테이너에서 /app/data 마운트 제거해도 모든 페이지 정상
  • 레거시 페이지 기능이 그대로 유지되거나, 운영 페이지에 통합되어 사용자가 이해할 수 있는 구조

참고

  • v0.3.3 에서 임시 방편으로 read-only 볼륨 공유
  • 이 마이그레이션 완료 시 볼륨 공유 제거
`frontend/streamlit/utils/data_loader.py` 와 레거시 페이지(Market_Coverage, Sector_Flows, Indicator_Detail) 및 `app.py` 사이드바가 SQLite 파일을 직접 읽는다. 때문에 Streamlit 컨테이너에 `./data:/app/data:ro` read-only 볼륨을 공유하고 있음 (v0.3.3 에서 도입). ## 왜 제거해야 하나 - **단일 책임**: Streamlit 은 API 소비자가 되어야 자연스럽다. DB 를 둘이 공유하는 현 구조는 스키마 변경 시 두 쪽을 다 고쳐야 한다. - **새 운영 페이지(#22, #46) 는 이미 API 기반** — 같은 패턴으로 수렴시켜야 유지보수 단일 경로. - **프로덕션 외부 노출**: 볼륨을 공유하지 않으면 공격 경로가 하나 줄어든다 (SQLite 파일 직접 접근 불가). ## 대상 - `app.py` — 사이드바에서 `get_database_stats()` / `get_latest_update_time()` 호출 중 → `/api/meta/coverage` + `/api/health` 로 대체 - `pages/1_Market_Coverage.py` / `pages/2_Sector_Flows.py` / `pages/3_Indicator_Detail.py` — `data_loader.py` 함수들 사용 → `/api/prices/*`, `/api/indicators/*`, `/api/meta/*` 로 교체. 없는 엔드포인트가 있으면 추가. - `utils/data_loader.py` — 전부 제거 - `docker-compose.yml` — `./data:/app/data:ro` 볼륨 마운트 삭제 - 선택: 옛 프로토타입 페이지 자체를 운영 페이지에 통합할지 별도로 유지할지 결정 ## 완료 기준 - [ ] `data_loader.py` 삭제 - [ ] 모든 Streamlit 페이지가 REST API 만으로 동작 - [ ] Streamlit 컨테이너에서 `/app/data` 마운트 제거해도 모든 페이지 정상 - [ ] 레거시 페이지 기능이 그대로 유지되거나, 운영 페이지에 통합되어 사용자가 이해할 수 있는 구조 ## 참고 - v0.3.3 에서 임시 방편으로 read-only 볼륨 공유 - 이 마이그레이션 완료 시 볼륨 공유 제거
xhh closed this issue 2026-04-26 13:33:14 +09:00
xhh referenced this issue from a commit 2026-04-26 14:41:43 +09:00
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
xhh/financial-data-platform#54
No description provided.