fix: lifespan 에서 Base.metadata.create_all — 신규 테이블 자동 반영 #51

Merged
xhh merged 1 commit from fix/lifespan-create-all into main 2026-04-23 02:52:44 +09:00
Owner

Summary

v0.3.0 배포 실패 원인 수정. 기존 DB 에 gdpnow_vintages 테이블이 없어 /api/health 503 → healthcheck 실패 → streamlit depends_on 실패.

  • FastAPI lifespan 에 Base.metadata.create_all(engine) 추가
  • idempotent — 기존 테이블은 건드리지 않고 누락 테이블만 생성
  • 릴리스마다 init_db.py 수동 실행 필요 없음
  • 컬럼 변경은 alembic 이 필요 (후속 이슈로 분리)

Test plan

  • ruff clean
  • 105 tests pass
  • 배포 재시도 — v0.3.1 태그 찍어 deploy.yml 재실행

이 PR 병합 후 v0.3.1 태그로 재배포 필요.

## Summary v0.3.0 배포 실패 원인 수정. 기존 DB 에 `gdpnow_vintages` 테이블이 없어 /api/health 503 → healthcheck 실패 → streamlit depends_on 실패. - FastAPI lifespan 에 `Base.metadata.create_all(engine)` 추가 - idempotent — 기존 테이블은 건드리지 않고 누락 테이블만 생성 - 릴리스마다 `init_db.py` 수동 실행 필요 없음 - 컬럼 변경은 alembic 이 필요 (후속 이슈로 분리) ## Test plan - [x] ruff clean - [x] 105 tests pass - [ ] 배포 재시도 — v0.3.1 태그 찍어 deploy.yml 재실행 이 PR 병합 후 v0.3.1 태그로 재배포 필요.
fix: lifespan 에서 Base.metadata.create_all — 신규 테이블 자동 반영
All checks were successful
Tests (PR) / pytest (pull_request) Successful in 27s
2e6fdc2eb3
v0.3.0 배포 실패 원인: 기존 DB 파일(v0.2.0 시점)에 `gdpnow_vintages`
(#11 신규) 테이블이 없어 /api/health 가 503 → Docker healthcheck 실패
→ api 컨테이너 unhealthy → streamlit depends_on 실패 → deploy 실패.

FastAPI lifespan startup 에서 `Base.metadata.create_all(engine)` 를 호출.
SQLAlchemy 의 create_all 은 idempotent — 기존 테이블은 건드리지 않고
누락된 새 테이블만 생성. 릴리스마다 init_db.py 수동 실행할 필요 없음.

한계: 컬럼 추가/삭제 같은 스키마 변경은 이 경로로 반영 안 됨. 그 경우엔
alembic 도입 필요 (후속 이슈).

테스트 시: conftest 는 dependency_override 로 in-memory DB 를 주입하지만
lifespan 의 get_database() 는 override 를 안 탐. 실패해도 무시하도록
try/except 로 감쌈 (테스트는 자체적으로 create_all 을 수행).

105 tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
xhh merged commit 1208e7110d into main 2026-04-23 02:52:44 +09:00
xhh deleted branch fix/lifespan-create-all 2026-04-23 02:52:44 +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!51
No description provided.