# 小果独立扫描线 — 全市场主动发现

## 概述

不依赖趋势信号触发，小果自己盯着各种排行榜，主动发现可能有料的股票，搜新闻判断后喂给知微。

## 时序

```
每5分钟（独立cron，不碰现有管道）
小果扫描  → 榜单采样 → 搜索新闻 → LLM判断 → signal_news
                                           ↓
知微在下一轮15分钟cron中读到 → 一起分析
```

## 数据源：三榜交集

每轮同时拉：

| 榜单 | 来源 | 速度 | 内容 |
|------|------|------|------|
| 东方财富热榜 | `stock_hot_rank_em()` | <5秒 | 全市场关注度前30 |
| 同花顺轮流榜 | 以下5个轮流，一轮一个 | ~30秒 | 各前15只 |

同花顺轮流拉的榜单（每轮换一个，5轮一个循环）：

| 榜名 | 函数 | 说明 |
|------|------|------|
| 创新高 | `stock_rank_cxg_ths()` | 股价突破N日内新高 |
| 量价齐升 | `stock_rank_ljqs_ths()` | 成交量+价格同步上涨 |
| 向上突破 | `stock_rank_xstp_ths()` | 技术形态突破关键位 |
| 连续上涨 | `stock_rank_cxd_ths()` | 连续N天上涨 |
| 连续放量 | `stock_rank_cxfl_ths()` | 连续N天放量 |

**为什么这样组合：** 东方财富热榜代表"大家都在看"，同花顺榜单代表"技术面有信号"。一只股票同时上两个榜，比只上一个榜更值得关注。

## 去重策略

每搜完一只股票，记录搜索时间到 `xiaoguo_scan_tracker` 表：
- 同一股票60分钟内不重复搜索
- 如果该股票今日已有 signal_news（来源='xiaoguo'），也不再重复

## 有料判断

合并同一只股票的多篇新闻，一次LLM调用判断整个股票。

```
输入：{name}({code}) 的3篇新闻标题
     该股上了今日人气热榜/技术榜单
输出：有关（利好/利空/中性）或 无关
```

**时序控制：**
- 单只股票1次LLM调用（约15秒）
- 每轮最多15只 → 最长4分钟，5分钟窗口内跑完
- 超时未跑的股票下一轮继续

## 去重

新增 source 字段：

| source | 含义 |
|--------|------|
| trend | 现有管道，由 trend_detector 触发 |
| xiaoguo | 小果扫描，由榜单发现 |

两类信号在 signal_news 里共存。知微判断时可以看到来源，后续可以用来评估哪个渠道更有效。

## 新增表：xiaoguo_scan_tracker

```sql
CREATE TABLE IF NOT EXISTS xiaoguo_scan_tracker (
    code TEXT PRIMARY KEY,
    name TEXT,
    last_scanned_at TEXT,
    found_count INTEGER DEFAULT 0
);
```
