diff --git a/cryptoai/api/__pycache__/binance_api.cpython-313.pyc b/cryptoai/api/__pycache__/binance_api.cpython-313.pyc index 0831f15..b12ba3a 100644 Binary files a/cryptoai/api/__pycache__/binance_api.cpython-313.pyc and b/cryptoai/api/__pycache__/binance_api.cpython-313.pyc differ diff --git a/cryptoai/routes/adata.py b/cryptoai/routes/adata.py index e6f947e..cdcca6e 100644 --- a/cryptoai/routes/adata.py +++ b/cryptoai/routes/adata.py @@ -140,6 +140,9 @@ async def get_stock_analysis(stock_code: str, current_user: Dict[str, Any] = Dep "response_mode": "streaming", "user": current_user["mail"] } + + # 保存用户提问 + get_db_manager().save_user_question(current_user["id"], stock_code, "请分析以下股票:" + stock_code + ",并给出分析报告。") response = requests.post(url, headers=headers, json=data, stream=True) diff --git a/cryptoai/routes/crypto.py b/cryptoai/routes/crypto.py index aced56c..d9594a7 100644 --- a/cryptoai/routes/crypto.py +++ b/cryptoai/routes/crypto.py @@ -12,6 +12,8 @@ from cryptoai.utils.config_loader import ConfigLoader from fastapi.responses import StreamingResponse from cryptoai.routes.user import get_current_user import requests +from cryptoai.api.binance_api import get_binance_api +from cryptoai.models.data_processor import DataProcessor # 创建路由 router = APIRouter() @@ -19,7 +21,7 @@ router = APIRouter() logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) -@router.get("/crypto/search/{key}") +@router.get("/search/{key}") async def search_crypto(key: str): manager = get_db_manager() result = manager.search_token(key) @@ -29,7 +31,32 @@ class CryptoAnalysisRequest(BaseModel): symbol: str timeframe: Optional[str] = None -@router.post("/crypto/analysis") +@router.get("/kline/{symbol}") +async def get_crypto_kline(symbol: str, timeframe: Optional[str] = None, start_time: Optional[str] = None, end_time: Optional[str] = None): + + binance_api = get_binance_api() + + if not start_time: + # 今年1月 1 日 + start_time = datetime.now().strftime("%Y-01-01 00:00:00") + if not end_time: + # 今天 + end_time = datetime.now().strftime("%Y-%m-%d 23:59:59") + + print(f"symbol: {symbol}, timeframe: {timeframe}, start_time: {start_time}, end_time: {end_time}") + + kline = binance_api.get_historical_klines(symbol, timeframe, start_time, end_time) + + data_processor = DataProcessor() + + result = data_processor.add_technical_indicators(kline).to_dict(orient="records") + + print(f"total kline: {len(result)}") + + return result + + +@router.post("/analysis") async def analysis_crypto(request: CryptoAnalysisRequest, current_user: dict = Depends(get_current_user)): diff --git a/docker-compose.yml b/docker-compose.yml index 07b52b1..242c96f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -29,7 +29,7 @@ services: cryptoai-api: build: . container_name: cryptoai-api - image: cryptoai-api:0.0.23 + image: cryptoai-api:0.0.24 restart: always ports: - "8000:8000"