---
name: pharma-daily-report
description: >
  生成 A 股医药行业日报：从新浪财经抓取 20 只核心医药股实时行情，分析 7 大细分赛道排名、涨跌榜 TOP 3、资金流向，然后通过飞书发送富文本日报。
  覆盖恒瑞医药、百济神州、智飞生物、药明康德、迈瑞医疗、片仔癀、云南白药等 20 只核心标的。
  当用户需要 医药日报、医药行业日报、pharma daily report、
  新浪财经医药数据、A 股医药板块分析、飞书推送医药数据、
  制药行业快报 时触发。也适用于"帮我看一下今天医药板块"、
  "给飞书发一份今天的医药数据"等口语化请求。
---

# 医药行业日报

从新浪财经免费公开接口抓取 A 股医药板块实时行情，分析后通过飞书发送日报。

## 这个 skill 做什么

1. 抓取 20 只核心医药股实时数据（新浪 `hq.sinajs.cn`，GBK 编码，免费无需认证）
2. 计算赛道排名、涨跌榜 TOP 3、资金流向估算
3. 生成飞书富文本日报（含涨跌颜色、赛道奖牌）
4. 通过 lark-cli 发送到指定飞书对话
5. 在原始数据目录保存当日快照 JSON

## 能力边界

**能做的：**
- A 股医药行业 20 只核心标的的实时快照
- 7 大细分赛道对比（创新药 / CXO / 医疗器械 / 中药 / 综合医药 / 医疗服务 / 生物制品）
- 飞书 markdown 美化的日报输出

**不能做的：**
- 不提供投资建议（日报自带免责声明）
- 不抓取付费/Paywall 内容（只用新浪免费接口）
- 不保证数据无误（来源标注为新浪，交易决策请多方交叉验证）

## 前置条件

- Python 3.8+（只用 stdlib 的 `urllib`，无需 pip 装任何包）
- lark-cli 已安装且已登录飞书账号
- 能访问 `hq.sinajs.cn`

如果用户没装 lark-cli：
```bash
npm install -g @larksuite/cli
lark-cli auth login --recommend
```
注意：飞书是国内服务，lark-cli 命令行前必须加 `LARK_CLI_NO_PROXY=1`。

## 使用流程

### Step 1：确认参数

问用户确认：
- **飞书 profile**：用哪个飞书账号发？如果不清楚自己有哪些 profile，运行 `lark-cli profile list` 查看（详见 `references/feishu_profiles.md`）
- **飞书对话**：发到哪个群/人？用户如果不清楚自己的 chat_id，帮他查：
  ```bash
  LARK_CLI_NO_PROXY=1 lark-cli im +chat-search --query " " --page-size 20
  ```
  发给自己就用 Feishu Assistant 对话。发给群就搜群名。
- **股票池**：默认用 20 只医药核心标的（见 `references/stock_pool.md`）。用户可以说"只看创新药"或"加上某某股票"来定制。

### Step 2：运行数据管线

直接执行 `scripts/daily_pipeline.py`：

```bash
python3 scripts/daily_pipeline.py \
  --feishu-profile <你的飞书profile名> \
  --feishu-chat-id <你的飞书chat_id>
```

脚本一气呵成：抓数据 → 分析 → 生成日报 → 发飞书 → 存快照。

### Step 3：向用户汇报结果

告诉用户关键数据：
- 几只上涨 / 几只下跌 / 平均涨跌幅
- 最强赛道和最弱赛道
- 领涨和领跌 TOP 3
- 飞书是否发送成功

## 数据管线详解

### 新浪财经实时行情接口

```
http://hq.sinajs.cn/list=sh600276,sz300122,...
```

返回 GBK 编码文本，每行格式：
```
var hq_str_sh600276="股票名称,今开,昨收,现价,最高,最低,...,成交金额,...,日期,时间"
```

32 个逗号分隔字段。关键字段（从 0 开始数）：
| 位置 | 含义 | 示例 |
|------|------|------|
| 0 | 股票名称 | 恒瑞医药 |
| 2 | 昨收 | 45.60 |
| 3 | 现价 | 46.10 |
| 4 | 今日最高 | 46.50 |
| 5 | 今日最低 | 45.30 |
| 9 | 成交金额（元） | 850000000 |

**代码前缀规则**：6 开头 = `sh`，其他 = `sz`。

完整字段速查见 `references/sina_api.md`。

### 赛道分类

20 只股票分为 7 个赛道（见 `references/stock_pool.md`），分析时按赛道聚合涨跌幅和成交额。

### 资金流向估算

新浪免费接口不提供买卖方向数据。脚本用"涨的股票的成交额 - 跌的股票的成交额"粗略估算净流向，报告中标注为"估算"。

## 常见问题

### 股票名称出现空格

新浪返回的个别名称带空格（如"新 和 成"），脚本内置归一化。

### 飞书消息太长

飞书 markdown 消息有约 4096 字节限制。超长自动截断并标注。

### 非交易时段

交易时间 9:30-15:00 外，新浪返回上一个收盘价，涨跌幅接近 0。报告仍会显示，但数据时间可以判断是否实时。

### 网络问题

新浪不可达时脚本报错退出，不使用缓存（金融数据宁可没有也不能是旧的）。


## Next Step: 定时发送

日报做好后，用户可能想每天自动发送。建议：

> 日报测试发送成功！要不要设置每天早上 9:03 自动发到飞书？
> 
> A) 设工作日 9:03 — 每个交易日开盘前收到（推荐）
> B) 设每天 9:03 — 周末也发（数据不动但能看到）
> C) 暂时不设，手动跑就行
