## 버그 수정 요약
### 1. 거래량 필터 오작동 (market_analyzer.py)
- acml_vol(당일 누적량, 장초 2~10만주)을 100만주 기준으로 필터
→ 전 종목이 필터에 걸려 추천 종목 0개
- 수정: 20일 평균 거래량(avg_vol_20) 기준 10만주 미만 필터로 교체
### 2. min_volume_ratio 기본값 1.0 미설정 (recommendations.py)
- get_rule_based_recommendations_realtime()에서 min_volume_ratio 누락
→ 기본값 1.0 적용, 장중 acml_vol/avg_vol_20≈0.1 → 전 종목 None 반환
- 수정: min_volume_ratio=0 명시 설정
### 3. KRX 호가단위 오류 (korea_investment_api.py)
- 계산된 주문가격이 호가단위(50/100/500/1000원 등) 불일치
→ 모의투자 "호가단위 오류"로 모든 주문 실패
- 수정: _round_to_krx_tick() 헬퍼 추가, 주문 전 올림 처리
### 4. MCP 서버 AI_PROVIDER 미전달 (docker-compose.dev.yml, mcp-server/config.py)
- mcp-server 서비스에 AI_PROVIDER 환경변수 누락 → 항상 Gemini 사용
- Gemini 무료 쿼터 소진 → /analyze 500 에러 → fail-open
- 수정: AI_PROVIDER=${AI_PROVIDER:-claude} 추가
- 수정: load_dotenv(override=True)로 빈 env var 덮어쓰기 허용
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
59 lines
1.9 KiB
Python
59 lines
1.9 KiB
Python
import os
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv(override=True) # 컨테이너 빈 env var보다 .env 파일 우선
|
|
|
|
|
|
class Settings:
|
|
# API Keys
|
|
ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY", "")
|
|
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY", "")
|
|
|
|
# AI Provider Selection (claude or gemini)
|
|
AI_PROVIDER = os.getenv("AI_PROVIDER", "gemini")
|
|
|
|
# Server Settings
|
|
MCP_SERVER_HOST = os.getenv("MCP_SERVER_HOST", "0.0.0.0")
|
|
MCP_SERVER_PORT = int(os.getenv("MCP_SERVER_PORT", "8001"))
|
|
|
|
# Database
|
|
DATABASE_URL = os.getenv("DATABASE_URL", "")
|
|
REDIS_URL = os.getenv("REDIS_URL", "")
|
|
|
|
# Logging
|
|
LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO")
|
|
|
|
# Claude Settings
|
|
CLAUDE_MODEL = os.getenv("CLAUDE_MODEL", "claude-3-5-sonnet-20241022")
|
|
|
|
# Gemini Settings
|
|
GEMINI_MODEL = os.getenv("GEMINI_MODEL", "gemini-2.0-flash")
|
|
|
|
# Common AI Settings (AI_PROVIDER에 따라 자동 선택)
|
|
MAX_TOKENS = int(os.getenv(
|
|
"GEMINI_MAX_TOKENS" if AI_PROVIDER == "gemini" else "CLAUDE_MAX_TOKENS",
|
|
"1024"
|
|
))
|
|
TEMPERATURE = float(os.getenv(
|
|
"GEMINI_TEMPERATURE" if AI_PROVIDER == "gemini" else "CLAUDE_TEMPERATURE",
|
|
"0.3"
|
|
))
|
|
|
|
# Token Optimization Settings
|
|
TOKEN_SAVE_MODE = os.getenv("TOKEN_SAVE_MODE", "false").lower() == "true"
|
|
NEWS_LIMIT = int(os.getenv("NEWS_LIMIT", "5"))
|
|
CHART_DAYS = int(os.getenv("CHART_DAYS", "100"))
|
|
JSON_COMPACT = os.getenv("JSON_COMPACT", "false").lower() == "true"
|
|
|
|
# CORS (이슈 5)
|
|
# 서버-서버 통신용: 브라우저 credentials 불필요.
|
|
# Docker 환경: MCP_CORS_ORIGINS=http://backend:8000
|
|
# 개발 환경: MCP_CORS_ORIGINS=http://localhost:8000,http://127.0.0.1:8000
|
|
MCP_CORS_ORIGINS = os.getenv(
|
|
"MCP_CORS_ORIGINS",
|
|
"http://localhost:8000,http://127.0.0.1:8000,http://backend:8000",
|
|
)
|
|
|
|
|
|
settings = Settings()
|