가장 큰 고민은 역시 '비용'과 '정확성'이었다. 기존에 MCP(Model Context Protocol) 방식으로 ThisWeek / NextWeek 경제 데이터(Economic Data)를 참조하는 방식은 원하는 데이터를 정확하게 가져오지 못하는 문제가 있었고, 텍스트 형태의 데이터를 통째로 참조하다 보니 토큰 비용 부담이 너무 컸다.
MCP
특히 데이터가 몰리는 월요일에는 문제가 더 심각했다.(= 화요일부터 금요일까지의 데이터를 모두 가져와버림)
그래서 데이터 수집 로직(Economic Data)을 더 정교하게 다듬어 비용을 줄이는 방법을 고안했다.
🧱Economic Data
실제 Economic Data 수집 및 처리 과정은 다음과 같이 변경된다.
한국과 미국 시간차 때문에 어제 처리했던 데이터가 오늘 '어제' 탭으로 넘어가면서 중복으로 수집되는 문제가 발생했다.
데이터를 무작정 다 가져오는 대신, 여러 단계의 필터링을 거쳐 정제된 데이터만 사용하도록 전략을 수정했다.
데이터 참조 방식 변경 ThisWeek 데이터는 오늘 이후 발표될 것만 직접 참조하고, NextWeek 데이터는 기존 MCP 접근 방식을 유지하여 비용과 효용 사이의 균형을 맞춘다.
event_time = cols[0].get_text(strip=True)
# '오늘' 탭(#timeFrame_today)일 경우, 08:00를 초과하는 데이터는 무시하고 반복 중단
if tab_selector == "#timeFrame_today":
if event_time > "08:00":
print(f"✅ '오늘' 탭에서 08:00 이후 데이터({event_time})이므로 수집을 중단합니다.")
break
# '어제' 탭(#timeFrame_yesterday)일 경우, 08:00 이전 데이터는 건너뛰기 (중복 방지)
if tab_selector == "#timeFrame_yesterday":
if event_time <= "08:00":
# 이 시간대 데이터는 이전 실행 시 '오늘' 탭에서 이미 수집했으므로 건너뜁니다.
continue
미래 데이터 필터링 ThisWeek 데이터 중에서는 한국 시간 기준으로 하루 전 데이터까지는 제외하고, 앞으로 발표될 예정인 데이터만 남긴다.
중요도 필터링 1, 2단계에서 합쳐진 데이터에서 중요도(★★★ / ★★☆)가 높은 항목만 최종적으로 추출한다.
텍스트 정제 추출된 데이터에서 '중요도 설명' 부분을 제거하여 최종적으로 토큰 사용량을 최소화한다.
🚨문제발생
중간중간 사이트에서 경제 발표가 따로 업데이트가 되는것같다. 현재 월요일의 주간 경제 발표 데이터를 긁어오는데, 주간 도중에 추가로 경제 발표가 있을시 업데이트가 되는 듯하다. 이런 경우 날짜를 해당 날짜의 경제 발표 첫 행을 제외하고는 기록하지 않고 있는데, 이전에 발표된 내용이 계속 새로운 데이터처럼 쌓이는 문제가 있었다.(아래 4가지 발표는 토요일에 발표한 내용이 아니다.) 적재 데이터수치로 발표되는 경우엔 실제라는 Column에 업데이트가 되고 있는데, '연설'은 저장되는 특정 수치(실제 Column)가 없어서 이걸 어떻게 구분해서 한 번만 처리하게 할지가 관건이다.
업데이트 추적의 필요성 위 문제를 해결하려면 결국 각 데이터 항목이 언제 처음 수집되었는지 기록하고, 수치 업데이트가 없는 항목은 다시 처리하지 않도록 하는 별도의 추적 로직이 필요
❓ 다음 단계에서 고민 중인 것들
'연설'처럼 수치 업데이트가 없는 데이터의 최초 수집일을 기록하고 중복을 방지하는 코드 구현
댓글