feat: API 키 관리 UI + Tailscale 게이트 유틸 (#46) #47
No reviewers
Labels
No labels
api
bug
chore
collector
decision-needed
docs
enhancement
feature
feedback-loop
frontend
infra
skill
test
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
xhh/financial-data-platform!47
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "issue-46-api-key-mgmt"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
브라우저에서 API 키를 발급/폐기/회전할 수 있는 운영 페이지 + #44 재사용용 Tailscale 게이트 유틸.
API
routers/admin.py+schemas/admin.py—/api/admin/keys/*(list/create/delete/rotate)require_scope("write")로 보호. 원문 키는 create/rotate 응답에서 단 1회 노출.Streamlit
utils/tailscale_probe.py— 브라우저 JS 프로브 +ADMIN_FORCE_ON=1로컬 우회, 사이드바 배지utils/api.py—post_json()+delete()헬퍼 추가pages/7_API_Keys.py— 목록/발급/폐기/회전 (게이트됨)pages/6_Manual_Trigger.py— 동일 게이트 적용테스트
tests/api/test_admin_keys.py12 케이스 (80 tests pass, 68 → 80)Test plan
ADMIN_FORCE_ON=1 uv run streamlit run frontend/streamlit/app.py에서 API_Keys / Manual_Trigger 페이지 HTTP 200Closes #46