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:
@@ -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"])
|
||||
Reference in New Issue
Block a user