# 行业信息推送 · v0.1 定稿说明

> 定稿日期：2026-10-13 ｜ 状态：**试跑版（只落档，不推送）** ｜ 归属：宝锐营销中心 · 客户情报线
> 底座来源：MiniMax Code M1–M5 交付（已验收 + 3 处修正）＋ 我方实测校正

---

## 一、v0.1 是什么

一条**每日可跑**的行业信息采集底座，三路并行，产出结构化条目 + 可读摘要：

| 路 | 内容 | 数据源 | 状态 |
|---|---|---|---|
| **R1** | 客户体系 + 竞品**公告** | 巨潮资讯公告接口（**必须 POST**，GET 返回 500） | 🟢 正常（11 主体） |
| **R2** | 竞品官网**新闻** | 诺唯赞 / 翌圣 / 全式金 / 赛默飞 / 罗氏 / 菲鹏 官网列表页 | 🟢 正常（6/8 家） |
| **R3** | **招投标**信号 | ggzy 全国平台（待接入）＋ 检索源兜底 | 🟡 部分（检索源 live） |

**不做的事**：不推送、不写入任何外部系统、不采集登录墙/付费/验证码后内容。

---

## 二、目录与文件

```
数据/market_intel/
├── v01/
│   ├── sources_v01.json          ← 采集配置（源、参数、命中标签、修正记录）
│   └── README_v0.1.md            ← 本文档
├── runs/
│   ├── <日期>_items.jsonl        ← 本轮全部条目（结构化，每行一条）
│   ├── <日期>_status.json        ← 各源运行状态
│   ├── <日期>_search.json        ← 检索源原始结果
│   ├── <日期>_v01试跑.md         ← 可读摘要（digest）
│   └── latest_digest.md          ← 最新摘要副本
└── minimax_2026-10-13/           ← MiniMax 交付原件 + 验收记录；v2/ 为修正后可用版
```

脚本（工作区 `脚本/`）：

| 脚本 | 作用 | 解释器要求 |
|---|---|---|
| `intel_collect_v01.py` | 采集三路 → items.jsonl | 需 requests + bs4 + lxml |
| `intel_digest_v01.py` | 条目 → digest 摘要 | 同上 |
| `fix_minimax_round2.py` | v2 修正（已完成） | 需 pandas/标准库 |
| `verify_minimax_round2.py` / `_urls.py` | 验收复测 | 同上 |

> **解释器钉死**：cron 的 PATH 首位是 Hermes installs venv（无 bs4）。本线专用 venv：
> `~/.hermes/profiles/zone-b/cache/scratch/mm/venv/bin/python`（已装 requests / beautifulsoup4 / lxml / typing_extensions）。
> 长期化时应迁到工作区固定路径（见「待办」）。

---

## 三、时间窗逻辑（v0.1 定稿新增）

| 场景 | 窗口 | 实现 |
|---|---|---|
| **首次调研（建库）** | **近三年（1095 天）** | 采集器 `--mode first`：巨潮公告逐页翻取（上限 200 条/主体，遇窗口外即停）；全式金翻 12 页；罗氏 sitemap 按 `lastmod` 取窗口内最多 200 条 |
| **每日推送（常态）** | **仅前一天（T-1）** | 采集器 `--mode daily`：各源只保留发布日 = 昨日的条目（无日期条目按源策略处理，标注「日期缺」） |

**边界规则**：

1. 日期取源页面/接口的**发布日**；取不到日期时计入并在摘要标注「日期缺」。
2. **跨日去重**：同一链接已推送过则不再重复（按 `(链接, 标题前 40 字)` 键）。
3. 首次调研产出按**「时间线 + 里程碑」**组织；每日推送按**「当天新增」**组织。
4. 各源窗口可行性（实测）：巨潮任意年限 ✅／全式金服务端分页 ✅／罗氏 sitemap+lastmod ✅／赛默飞列表 ✅；
   **翌圣（robots 禁 query，仅最新页）与诺唯赞（列表前端渲染）三年回溯受限 → v0.2 处理**。

## 四、数据口径（硬规则）

1. **每条必须有**：来源、主体、标题、链接、抓取时间；日期尽力回填，缺失标「日期缺」。
2. **不编造**：解不出标题就留 slug，不生成内容；源失败如实记为 `fail`，不静默跳过。
3. **去重**：`(链接, 标题前 40 字)` 为键。
4. **标签体系**（`sources_v01.json → 命中标签`）：客户体系 19 词 / 竞品 16 词 / 产品线 21 词。
   产品线标签命中者在「要闻速览」中优先展示。
5. **客户公告分级**：标题含`注册证|批准|中标|合同|产能|专利|临床|GMP|收购|增资|投资|业绩|年报|半年报|季度|新品|上市|合作|签约|扩产|获证|CE|FDA|IVDR`→ 标 ★ 业务相关；
   其余（H股月报表、董事会日期、人事变动等）折叠为「常规公告 N 条」。
6. **巨潮参数**：`POST`，`tabName=fulltext`，`pageSize=30`，`column=sse`，`category=''`（全类别）；
   定期报告类目：年报 `category_ndbg_szsh`、半年报 `category_bndbg_szsh`（v0.2 用于白名单过滤）。

---

## 五、完整运行序列（v0.1）

```bash
# 解释器（已装 requests/bs4/lxml/typing_extensions）
PY=~/.hermes/profiles/zone-b/cache/scratch/mm/venv/bin/python

# ① 采集：首次=近三年；后续=仅前一天
$PY 脚本/intel_collect_v01.py first      # 或 daily
# ② 提炼五要素（DeepSeek；first 模式竞品全量+客户业务相关，上限 700）
env -u PYTHONPATH /opt/homebrew/bin/python3 脚本/intel_enrich_v01.py first
# ③ 失败补跑（正文取首页 1400 字 + 提额；**并发安全，按 URL 哈希命名临时文件**）
env -u PYTHONPATH /opt/homebrew/bin/python3 脚本/intel_enrich_retry.py first
env -u PYTHONPATH /opt/homebrew/bin/python3 脚本/intel_enrich_retry.py daily "巨潮公告"   # 定向重跑某来源
# ④ 渲染
env -u PYTHONPATH /opt/homebrew/bin/python3 脚本/intel_digest_v01b.py        # 增强版（五要素）
env -u PYTHONPATH /opt/homebrew/bin/python3 脚本/intel_timeline_v01.py       # 首次三年版（时间线）
$PY 脚本/intel_push_text_v01.py                                             # 每日速览文案
```

**验收必做**：渲染后跑一次**串味校验**（话题关键词与主体不匹配即报错）+ 抽样复测 URL 状态码。

## 六、源状态（v0.1 实测）

| 源 | 状态 | 备注 |
|---|---|---|
| 巨潮公告（11 主体） | 🟢 | 诺唯赞 688105 + 丽珠/海尔施/复星/新产业/科华/之江/艾德/东方生物/迪安/科华体系 |
| 诺唯赞官网新闻 | 🟢 | `div.Newscon .p_item`（`e_text-5` 标题 / `e_timeFormat-7` 日期） |
| 翌圣官网新闻 | 🟢 | `/news/detail/<id>`，标题含浏览量需清理 |
| 全式金官网新闻 | 🟢 | `/news/<id>.html`，10 条/页，附日期 |
| 赛默飞中国新闻 | 🟢 | `/news-gallery/press-release-china/<日期>` |
| 罗氏诊断新闻 | 🟢 | sitemap.xml（2240 条，带 `lastmod`）→ 日期取 lastmod，标题回填页面 title |
| 菲鹏 | 🟠 | 官网新闻停在 2024（站点更新慢），站点为唯一入口 |
| 迈迪安 | ⚪ | Cloudflare 挑战 403，v0.1 不采集 |
| 宝生物 | 🟠 | takara.co.jp 首页取 0 条（新闻路径待定位）；中文站 takara.com.cn 可用 |
| ggzy 招投标 | 🟡 | 列表页 JS 渲染；`getTradList` 404；站内搜索 POST → 405；含 captcha 端点 → v0.2 接入 |
| 招投标检索源 | 🟢 | web_search 4 组词，命中 23/32（二级来源，已标注） |
| NMPA 注册证 | 🔴 | 主站 412 风控，无稳定公开入口（v0.2 探索 `zwfw.nmpa.gov.cn`） |

---

## 七、修正记录（相对 MiniMax 交付）

| # | 修正 | 依据 |
|---|---|---|
| 1 | 诺唯赞产品页：**无后缀 403**，必须 `.html` / 尾斜杠 | 我方实测覆盖其原结论 |
| 2 | 财报类关键词只挂**体系内上市主体**（移除 4 家非上市主体 48 行） | 避免每日噪声 |
| 3 | 安瑞科**归属天隆集团**（内部确认）；公开侧说明并列保留 | 用户 2026-10-13 确认 |
| 4 | 陕西平台走 `http`（https 000） | 实测 |
| 5 | 巨潮 query 标注**仅 POST** | 实测 GET=500 |

---

## 八、v0.2 待办（按优先级）

1. **招投标结构化接入**（ggzy SPA 复刻 / 省级平台 / 比地招标网）——当前靠检索源兜底
2. **客户公告类目白名单**：`category` 参数过滤定期报告与重大事项，减少 ~70% 噪声
3. **NMPA 注册证入口**：试 `zwfw.nmpa.gov.cn` 或地方药监公开目录
4. **宝生物 / 迈迪安**：定位可用新闻路径
5. **解释器固化**：把 venv 迁到工作区固定路径，写进 cron 脚本（避免 PATH 陷阱）
6. **翌圣/诺唯赞三年回溯**：sitemap 或逐条详情页方案，补齐首次调研的时间深度
7. **接入 cron**：定稿后按「工作日 08:30 速览 + 周一深读」排期（**待用户确认推送口径**）
