React + FastAPI 풀 마이그레이션 — Streamlit 제거

- backend/ — FastAPI + JWT + 모든 REST 엔드포인트
- frontend/ — Next.js 14 + Tailwind + 7페이지 (대시보드/트레이드/거래소/자동매매/설정/내정보/로그인)
- core_logic.py — 신호계산/알림 로직 분리 (기존 app_streamlit.py 에서 추출)
- users_db.py + bcrypt 인증, exchange_keys.py + Fernet 암호화
- trades_db.py — 진입/청산 lifecycle 추적, signal_events raw 로그
- settings_db.py — 모든 운영 파라미터 DB 영속 저장 (RSI/거래량/펀딩비 임계값 포함)
- docker-compose: frontend / backend / postgres + Traefik 라우팅
- assets/logo.svg — JUNGGOMOA 그라디언트 로고

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
chpark
2026-05-06 17:27:11 +09:00
parent bdd2d66ea0
commit c4e6aab7b2
55 changed files with 5192 additions and 46 deletions
+54
View File
@@ -0,0 +1,54 @@
"""
FastAPI 메인. 모든 라우터 + CORS + 백그라운드 알림 스레드 시작.
기존 Python 모듈 (users_db, settings_db, trades_db, exchange_keys, core_logic) 그대로 사용.
"""
import os
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
import users_db
import settings_db
import trades_db
import exchange_keys
import core_logic
import alert_state
from .routes import auth_route, settings_route, market_route, trades_route, exchange_route, automation_route, users_route
app = FastAPI(title="JUNGGOMOA Trading API", version="1.0", redirect_slashes=False)
# CORS — 같은 도메인이라도 허용 (개발 편의)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=False,
allow_methods=["*"],
allow_headers=["*"],
)
@app.on_event("startup")
def on_startup():
settings_db.init_db_with_env_defaults()
trades_db.init_db()
exchange_keys.init_db()
users_db.init_db()
# alert_symbol DB 에서 동기화
alert_state.alert_symbol = settings_db.get("alert_symbol", "BTCUSDT")
# 백그라운드 알림 / 일일 리포트 시작
core_logic.start_background_threads()
print("[FastAPI] 모든 모듈 init OK + 백그라운드 스레드 시작")
@app.get("/api/health")
def health():
return {"ok": True}
# 라우터 등록
app.include_router(auth_route.router, prefix="/api/auth", tags=["auth"])
app.include_router(users_route.router, prefix="/api/users", tags=["users"])
app.include_router(settings_route.router, prefix="/api/settings", tags=["settings"])
app.include_router(market_route.router, prefix="/api/market", tags=["market"])
app.include_router(trades_route.router, prefix="/api/trades", tags=["trades"])
app.include_router(exchange_route.router, prefix="/api/exchange", tags=["exchange"])
app.include_router(automation_route.router, prefix="/api/automation", tags=["automation"])