| name | look-04-business-market-distribution |
| description | 七看八问规则4:四看业务构成与市场分布。Use when: 规则4, 四看业务构成与市场分布, 主营业务收入占比, 海外销售占比, 区域风险, 单一客户依赖, 同行业对比。适合单独迭代、单独排查、单独实测。 |
| argument-hint | 输入股票代码、分析日期、回看年数,可选提供年报全文文本包,用于提取业务构成、海外销售和客户集中度证据。 |
| user-invocable | true |
规则4独立 Skill
本 skill 只负责七看八问的第 4 条规则:四看业务构成与市场分布。
目标是识别企业是否过度依赖单一业务或市场,并用申万三级行业同行池做横向对比。
适用场景
- 单独执行规则4
- 判断企业是否存在业务结构或市场结构单一化风险
- 对规则4做 SQL 复核、样本实测、code review
- 需要基于申万 L3 同行业视图快速挑选可比公司
- 需要从年报全文中补抽分产品、分地区、客户集中度证据
输入参数
- 股票代码
- 分析日期,可选,默认今天
- 回看年数,可选,默认最近 3 年
- 可选年报文本包
--report-bundle,JSON 文件,供脚本从全文提取证据
当前口径
- 先做公司类型前检;金融类公司不适用。
- 结构化数据库当前可直接提供:
stk_info 的基础画像,以及 idx_sw_l3_peers 的申万三级同行池。
- 当前数据库不直接提供分产品收入、分区域收入、海外销售占比、单一客户销售占比等年报附注数据。
- 因此规则4默认是“结构化上下文 + human-in-loop 年报文本取证”的工作流。
- 若没有提供年报全文文本包,脚本应直接返回
human-in-loop-required,并明确要求用户补充最近 3 年年报全文或全文地址。
- 若只提供部分年报,或文本里未出现海外销售、单一客户、业务构成等证据,脚本应返回
partial,并继续列出缺失输入请求。
- 同行池使用
idx_sw_l3_peers 标准视图;默认取同一 L3 分类下的前若干只同行作为对比样本。
- 证据提取不强行得出定量结论;只输出原文片段、命中关键词和数值候选。
年报文本包格式
脚本参数 --report-bundle 接收 JSON 文件,支持以下两种顶层格式:
{
"reports": [
{
"ts_code": "000002.SZ",
"name": "万科A",
"year": 2025,
"url": "https://example.com/report-2025",
"text": "年报全文文本"
}
]
}
或直接传数组:
[
{
"ts_code": "000002.SZ",
"name": "万科A",
"year": 2025,
"text": "年报全文文本"
}
]
如果用户只提供 URL,则由 agent 先抓取网页正文,再写入 text 字段后交给脚本分析。
核心证据
- 结构化上下文:
stk_info, idx_sw_l3_peers
- 业务构成证据:主营业务、分产品、分地区、收入构成相关原文片段
- 市场分布证据:境外、海外、出口、国际市场、境内外收入相关原文片段
- 客户集中度证据:前五大客户、单一客户、客户集中度、销售额占比相关原文片段
- 同行对比:同一申万 L3 分类下同行年报的同类证据
执行实现
- 脚本入口:./scripts/look_04_business_market_distribution.py
- 公司类型前检:./scripts/common.py
输出要求
- 目标公司的结构化画像与申万 L3 分类
- 同行池列表与对比样本
- 目标公司最近 N 年年报中的业务构成、海外销售、客户集中度证据
- 同行公司的同类证据对比表
- 明确列出任何缺失输入,并触发 human-in-loop
何时暂停并讨论
- 用户希望从 PDF、图片或扫描件直接做 OCR 抽取
- 用户希望把“单一市场依赖”或“单一客户依赖”升级为严格量化结论
- 用户希望同行样本不是申万 L3,而是更细颗粒度的自定义公司池