feat: Streamlit 운영 대시보드 3페이지 (#22) #43

Merged
xhh merged 1 commit from issue-22-ops-dashboard into main 2026-04-23 01:27:27 +09:00
Owner

Summary

Sprint 2 마무리. /api/collect/* + /api/meta/coverage 를 소비하는 내부 운영 페이지 3장.

  • utils/api.py — REST 클라이언트 (사이드바 API URL/Key, 세션 state 유지, 에러 dict 반환)
  • pages/4_Collection_History.py — heatmap (실패/성공 2분할) + 최근 실패 로그
  • pages/5_Data_Coverage.py — 테이블 요약, 심볼 상세, gaps (missing/stale) 경고
  • pages/6_Manual_Trigger.py — 단일/복수 심볼 + insider + margin-debt 버튼식 트리거
  • README: 운영 페이지 진입 + API_URL env 설명

Out of scope (후속 제안)

  • Streamlit Dockerfile + compose 서비스
  • Traefik stock-admin.xhhan.com 라우팅 + Tailscale/Cloudflare Access 인증 결정

Test plan

  • ruff clean
  • 61 tests pass
  • 로컬 streamlit 부팅 (포트 18501) + 새 페이지 HTTP 200 확인

Closes #22

## Summary Sprint 2 마무리. `/api/collect/*` + `/api/meta/coverage` 를 소비하는 내부 운영 페이지 3장. - `utils/api.py` — REST 클라이언트 (사이드바 API URL/Key, 세션 state 유지, 에러 dict 반환) - `pages/4_Collection_History.py` — heatmap (실패/성공 2분할) + 최근 실패 로그 - `pages/5_Data_Coverage.py` — 테이블 요약, 심볼 상세, gaps (missing/stale) 경고 - `pages/6_Manual_Trigger.py` — 단일/복수 심볼 + insider + margin-debt 버튼식 트리거 - README: 운영 페이지 진입 + `API_URL` env 설명 ## Out of scope (후속 제안) - Streamlit Dockerfile + compose 서비스 - Traefik `stock-admin.xhhan.com` 라우팅 + Tailscale/Cloudflare Access 인증 결정 ## Test plan - [x] ruff clean - [x] 61 tests pass - [x] 로컬 streamlit 부팅 (포트 18501) + 새 페이지 HTTP 200 확인 Closes #22
feat: Streamlit 운영 대시보드 3페이지 (#22)
All checks were successful
Tests (PR) / pytest (pull_request) Successful in 24s
1574af1fc0
Sprint 2 마무리 — 내부 운영 관점에서 수집 상태를 한눈에 보고 수동 트리거까지.

추가
----
- `frontend/streamlit/utils/api.py` — FastAPI REST 클라이언트
  - 사이드바에 API URL / X-API-Key 입력 (세션 state 유지)
  - 에러는 예외 없이 (None, err_str) 튜플로 → UI 가 alert 으로 렌더
  - 트리거용 POST 는 timeout 300s (외부 I/O 대기)
- `pages/4_Collection_History.py` — `/api/collect/history` 기반 heatmap
  (실패/성공 2분할) + 최근 실패 로그 `/api/collect/logs?status=failed`
- `pages/5_Data_Coverage.py` — `/api/meta/coverage` 기반 테이블 요약,
  테이블별 심볼 상세, gaps (defined_but_missing / stale) 경고
- `pages/6_Manual_Trigger.py` — `/api/collect/single|insider|margin-debt`
  버튼식. TriggerResponse 의 success_count/failed_count/results 표시.
- README: 운영 페이지 진입 경로 + API_URL 환경변수 설명

스코프 제외 (후속 이슈 권장)
---------------------------
- Streamlit 용 Dockerfile / compose 서비스
- Traefik `stock-admin.xhhan.com` 라우팅 + Tailscale/Cloudflare Access
  인증 방식 결정

검증
----
- ruff clean, 61 tests pass (UI 는 Streamlit 자체 구동 스모크: 포트 18501
  에 로컬 부팅 후 루트 + /Collection_History 둘 다 HTTP 200).

Closes #22

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
xhh merged commit 6d3482d834 into main 2026-04-23 01:27:27 +09:00
xhh deleted branch issue-22-ops-dashboard 2026-04-23 01:27:27 +09:00
Sign in to join this conversation.
No reviewers
No milestone
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!43
No description provided.