test1 / data /collect_data.py
davidkim205's picture
์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” web_search ์ œ๊ฑฐ
a1e7a46
from typing import Any
from datetime import datetime
import yfinance as yf
from data.earnings import fetch_earnings_data
from data.finance_fetchers import fetch_fundamentals, fetch_news, fetch_price_data
from data.technicals import fetch_technicals
from llm.web_search import fetch_web_search
from utils.data_types import MarketData
def collect_data(client, intent, tools):
# ์ธํ…ํŠธ์™€ ์„ ํƒ๋œ ๋„๊ตฌ ๋ชฉ๋ก์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ชจ๋“  ์‹œ์žฅ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘
ticker = intent.get("ticker", "")
period = intent.get("time_range", "1y")
print(f"[โ‘ข] ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ์ค‘ (ticker={ticker}, period={period})...")
price_data = {}
fundamentals = {}
technicals = {}
news_snippets = []
earnings_data = {}
web_search_results = []
if ticker:
if "price" in tools:
price_data = fetch_price_data(ticker, period)
print(f" โ†’ ๊ฐ€๊ฒฉ ๋ฐ์ดํ„ฐ: {len(price_data)}๊ฐœ ์ง€ํ‘œ")
if "fundamentals" in tools:
fundamentals = fetch_fundamentals(ticker)
print(f" โ†’ ํŽ€๋”๋ฉ˜ํ„ธ: {len(fundamentals)}๊ฐœ ์ง€ํ‘œ")
if "technicals" in tools:
technicals = fetch_technicals(ticker, "6mo")
print(f" โ†’ ๊ธฐ์ˆ ์ง€ํ‘œ: {len(technicals)}๊ฐœ ์ง€ํ‘œ")
if "news" in tools:
news_snippets = fetch_news(ticker)
print(f" โ†’ ๋‰ด์Šค: {len(news_snippets)}๊ฐœ ํ—ค๋“œ๋ผ์ธ")
if "earnings" in tools:
earnings_data = fetch_earnings_data(
ticker,
target_year=intent.get("target_year"),
target_quarter=intent.get("target_quarter")
)
# fetch_web_search๋Š” ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.
# if "web_search" in tools:
# company_name = fundamentals.get("company_name", ticker) if fundamentals else ticker
# web_search_results = fetch_web_search(
# client=client,
# ticker=ticker,
# company_name=company_name,
# analysis_type=intent.get("analysis_type", "general"),
# language=intent.get("language", "ko"),
# target_year=intent.get("target_year"),
# target_quarter=intent.get("target_quarter"),
# )
return MarketData(
ticker=ticker,
price_data=price_data,
fundamentals=fundamentals,
technicals=technicals,
news_snippets=news_snippets,
earnings_data=earnings_data,
web_search_results=web_search_results,
)