Discord 장전분석 알림을 morning.py --send-discord로 이동

Headless Claude가 one-liner 실행을 건너뛰고 텍스트만 출력하는 문제 수정.
daily_context.json을 읽어 전송하는 send_discord() 함수를 morning.py에 추가.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-21 08:26:37 +09:00
parent 7bcb570497
commit adf755624a
2 changed files with 38 additions and 18 deletions
+36 -3
View File
@@ -60,6 +60,7 @@ logger = logging.getLogger(__name__)
import aiohttp
from app.execution.kis_client import KISClient
from app.monitor.notifier import send as discord_send
TODAY = datetime.now().strftime("%Y-%m-%d")
NEWS_PATH = f"data/news/{TODAY}.json"
@@ -225,8 +226,11 @@ async def main(print_mode: bool = False):
# 1. RSS 뉴스 수집 (4개 언론사)
news = await fetch_rss_news()
# 2. KIS 시장 데이터
# 2. KIS 시장 데이터 — 데이터 수집 전용이므로 실거래 API 사용 (주문 없음)
_orig_mock = os.environ.get("KIS_MOCK", "true")
os.environ["KIS_MOCK"] = "false"
kis = KISClient()
os.environ["KIS_MOCK"] = _orig_mock
market: dict = {"volume_rank": [], "foreign_buy": [], "institution_buy": [], "sectors": []}
try:
await kis.get_access_token()
@@ -265,6 +269,35 @@ async def main(print_mode: bool = False):
))
async def send_discord():
"""daily_context.json을 읽어 Discord로 장전 분석 요약 전송"""
ctx_path = Path("data/daily_context.json")
if not ctx_path.exists():
logger.error("daily_context.json 없음 — Discord 전송 스킵")
return
ctx = json.loads(ctx_path.read_text(encoding="utf-8"))
hot = ", ".join(ctx.get("hot_sectors", [])) or "없음"
avoid = ", ".join(ctx.get("avoid_sectors", [])) or "없음"
boosted = ", ".join(ctx.get("boosted_tickers", [])) or "없음"
flag = "✅ 거래허용" if ctx.get("trade_allowed", True) else "🚫 거래중단"
msg = (
f"[장전분석] {ctx['date']} {ctx.get('generated_at', '')}\n"
f"시장: {ctx['market_sentiment']}({ctx['sentiment_score']}점) | 리스크: {ctx['risk_level']} | {flag}\n"
f"주목 섹터: {hot}\n"
f"회피 섹터: {avoid}\n"
f"관심 종목: {boosted}\n"
f"비중 배율: x{ctx.get('position_size_multiplier', 1.0)}\n"
f"📝 {ctx.get('reason', '')}"
)
await discord_send(msg)
logger.info("Discord 장전 분석 전송 완료")
print("Discord 알림 전송 완료.")
if __name__ == "__main__":
print_mode = "--print" in sys.argv
asyncio.run(main(print_mode=print_mode))
print_mode = "--print" in sys.argv
discord_mode = "--send-discord" in sys.argv
if discord_mode:
asyncio.run(send_discord())
else:
asyncio.run(main(print_mode=print_mode))