타입에러 수정

This commit is contained in:
2026-02-26 13:21:58 +09:00
parent acf735f94b
commit cc236d3dac

View File

@@ -124,9 +124,11 @@ async def batch_analysis_scheduler():
"recommendations:latest", TTL_RECOMMENDATIONS, normalized
)
if ok:
rec_by_rule = normalized.get('recommendations_by_rule', [])
rec_count = len(rec_by_rule) if isinstance(rec_by_rule, (list, dict)) else 0
logger.info(
f"💾 [Batch] Redis 캐시 갱신 완료: recommendations:latest "
f"(rule 수: {len(normalized.get('recommendations_by_rule', {}))}, "
f"(rule 수: {rec_count}, "
f"TTL: {TTL_RECOMMENDATIONS}s)"
)
@@ -191,9 +193,11 @@ async def auto_trade_scheduler():
# ── Redis 캐시 확인 (10분 배치 결과, TTL 30분) ────────────────
rec = await get_json("recommendations:latest")
if rec:
rec_by_rule = rec.get('recommendations_by_rule', [])
rec_count = len(rec_by_rule) if isinstance(rec_by_rule, (list, dict)) else 0
logger.info(
"⚡ Redis cache hit: recommendations:latest "
f"(rule 수: {len(rec.get('recommendations_by_rule', {}))}) "
f"(rule 수: {rec_count}) "
"→ DB 조회 생략"
)
# 포맷 정규화 (다른 키 조합 대응)
@@ -205,15 +209,14 @@ async def auto_trade_scheduler():
if rec and rec.get("recommendations_by_rule"):
# ── MCP RISK_ASSESSMENT (공통 함수, 이슈 4) ──────────
recommendations = rec.get("recommendations_by_rule", {})
trade_plan = {
"action": "BUY",
"strategy": "rule_based_batch",
"recommendation_count": sum(
len(v) for v in recommendations.values()
),
"rules": list(recommendations.keys()),
"top_stocks": [
recommendations = rec.get("recommendations_by_rule", [])
# Handle both list and dict formats for backwards compatibility
if isinstance(recommendations, dict):
# Old format: {rule_name: [stocks]}
recommendation_count = sum(len(v) for v in recommendations.values())
rules_list = list(recommendations.keys())
top_stocks_list = [
item.get("stock_code") or item.get("code", "")
for rule_items in recommendations.values()
for item in (
@@ -221,12 +224,37 @@ async def auto_trade_scheduler():
if isinstance(rule_items, list)
else []
)
][:10],
][:10]
else:
# New format: [{rule_id, rule_name, stocks: [...]}]
recommendation_count = sum(
len(rule_group.get("stocks", []))
for rule_group in recommendations
if isinstance(rule_group, dict)
)
rules_list = [
rule_group.get("rule_name", rule_group.get("rule_id", ""))
for rule_group in recommendations
if isinstance(rule_group, dict)
]
top_stocks_list = [
item.get("stock_code") or item.get("code", "")
for rule_group in recommendations
if isinstance(rule_group, dict)
for item in rule_group.get("stocks", [])[:3]
][:10]
trade_plan = {
"action": "BUY",
"strategy": "rule_based_batch",
"recommendation_count": recommendation_count,
"rules": rules_list,
"top_stocks": top_stocks_list,
}
portfolio: dict = {}
signals = {
"source": "db_recommendations",
"rules_triggered": list(recommendations.keys()),
"rules_triggered": rules_list,
}
approve, reason = await request_mcp_risk_assessment(
trade_plan, portfolio, signals