"""事件驱动情报数据层 - Event Intelligence Data Layer (LLM-Driven)

事件因果链完全由LLM从新闻内容中推理，不再依赖本地字典。
本地只保留股票代码查询等轻量工具。

MIT license - no GPL dependencies.
"""

import logging
from typing import Dict, List, Optional, Tuple

logger = logging.getLogger(__name__)


# ============================================================================
# 仅保留：股票代码查询工具（轻量，纯工具函数，不含业务逻辑）
# ============================================================================

STOCK_CODE_MAP: Dict[str, str] = {
    "沪深300": "000300", "创业板": "399006",
    "中证500": "000905", "科创50": "000688",
}


def get_stock_code(ticker: str) -> str:
    """将股票名称转换为A股代码（优先使用 eastmoney_guba 权威映射）。"""
    if ticker.isdigit():
        return ticker
    try:
        from tradingagents.dataflows.eastmoney_guba import _get_stock_code_from_ticker
        result = _get_stock_code_from_ticker(ticker)
        if result:
            return result
    except Exception:
        pass
    return STOCK_CODE_MAP.get(ticker, "")


def get_ticker_stock_code_mapping(stock_names: List[str]) -> Dict[str, str]:
    """将股票名称列表批量转为代码。"""
    return {name: get_stock_code(name) for name in stock_names}


# ============================================================================
# LLM 提示词模板（给LLM看的，LLM从这里读取指令来推理因果链）
# ============================================================================

EVENT_ANALYSIS_PROMPT_TEMPLATE = """
你是一个专注于中国A股的事件驱动分析师。

当前分析日期：{trade_date}（新闻覆盖范围：{start_date} 至 {end_date}）

你的任务是：
1. 识别新闻中的所有重大事件
2. 为每个事件构建因果链：事件 → 直接影响 → 供应链 → A股/港股/美股相关股票
3. 输出完整的事件影响报告

## 新闻内容
---
{news_content}
---

## 输出要求

按以下格式输出（严格使用Markdown）：

### 一、识别到的关键事件（按重要性排序）

对于每个事件，提供：
- **事件名称**：简明扼要
- **事件类型**：人物访华/政策发布/财报发布/行业动态/地缘政治/公司公告
- **直接受益/受损方**：谁直接受影响
- **因果链**：
  ```
  [事件]
     ↓
  [直接影响（公司/行业）]
     ↓
  [供应链影响（A/H股）]
     ↓
  [板块情绪影响]
  ```
- **情绪方向**：正面 / 负面 / 中性
- **影响持续时间**：短期(1-3天) / 中期(1-4周) / 长期
- **置信度**：高 / 中 / 低

### 二、股票影响矩阵

| 股票/代码 | 市场 | 受益逻辑 | 情绪 | 风险等级 |
|---------|------|---------|------|---------|
| ... | A股/港股/美股 | ... | 正面/负面/中性 | 高/中/低 |

### 三、板块影响

| 板块 | 影响方向 | 逻辑 | 强度 |
|-----|---------|------|------|
| ... | ↑受益/↓受损/—中性 | ... | 强/中/弱 |

### 四、指数影响

| 指数 | 预计方向 | 逻辑 |
|-----|---------|------|
| 沪深300 | ↑/↓/— | ... |
| 创业板 | ... | ... |
| 科创50 | ... | ... |
| 恒生科技 | ... | ... |

### 五、A股特有交易风险提示

- 涨跌停板风险：是否可能触发涨停/跌停？
- T+1限制：当日买入无法卖出
- 散户情绪：A股散户主导可能放大波动
- 流动性风险：涨停时无法买入，跌停时无法卖出

### 六、综合结论

- 最重要的3个事件是什么？
- 整体市场情绪方向：看多 / 看空 / 中性
- 最值得关注的前5只股票
- 交易时机建议

---

## 重要原则

1. **因果链要完整**：不能只说"利好"，要说明"谁→通过什么机制→影响到→哪只股票"
2. **区分直接/间接**：特斯拉上海工厂 vs 特斯拉供应商，是不同的影响路径
3. **A股特殊性**：涨跌停板、T+1、散户情绪都是A股独有的重要因素
4. **不猜代码**：如果不确定某只A股的具体代码，写出公司名即可
5. **覆盖多市场**：A股 + 港股 + 美股，三个市场都要分析
6. **推理要大胆**：你基于新闻内容做合理的因果推理，不需要100%确定
"""


__all__ = [
    "STOCK_CODE_MAP",
    "get_stock_code",
    "get_ticker_stock_code_mapping",
    "EVENT_ANALYSIS_PROMPT_TEMPLATE",
]
