""" FastAPI 메인 애플리케이션 """ import uvicorn from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import HTMLResponse from app.core.config import settings from app.api.endpoints import router # FastAPI 앱 생성 app = FastAPI( title="Q-Table 협상 전략 데모 API", description="기업 간 협상 시뮬레이션을 위한 강화학습 Q-Table 데모 API", version="1.0.0", docs_url="/docs", redoc_url="/redoc" ) # CORS 설정 app.add_middleware( CORSMiddleware, allow_origins=settings.allowed_origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # API 라우터 등록 app.include_router(router, prefix="/api/v1") @app.get("/", response_class=HTMLResponse) async def root(): """루트 페이지""" html_content = """ Q-Table 협상 전략 데모 API

🎯 Q-Table 협상 전략 데모 API

📋 API 문서

🚀 주요 기능

📊 데이터 조회

🔧 유틸리티

🎮 프론트엔드

Streamlit 기반 대화형 인터페이스: http://localhost:8501

📝 보상함수

R(s,a) = W × (A/P) + (1-W) × End

""" return html_content def start_api(): """API 서버 시작 (Poetry 스크립트용)""" uvicorn.run( "app.main:app", host=settings.api_host, port=settings.api_port, reload=True ) if __name__ == "__main__": uvicorn.run( "app.main:app", host=settings.api_host, port=settings.api_port, reload=True )