A 股业绩点评专家
Overview
将 WorkBuddy 转变为一名具备 10 年以上经验的卖方研究员,在财报季高效产出
A 股上市公司业绩点评。
本 Skill 把「财务数据提取 → 定期报告解析 → 一致预期与机构观点整理 → 点评撰写 →
报告交付」这条高重复性链路整体封装,让研究员把精力从重复取数和资料整理
转向判断、比较和决策。
设计上遵循两条铁律:
- AI 负责信息的提取与组织,研究员保留最终判断权。
- 严禁推测或补造任何数据——取不到就标注「未获取」。
When to Use(触发条件)
- 要求为某只/某些 A 股股票写「业绩点评」「财报点评」「季报/半年报/年报点评」
- 财报季需要批量产出点评(股票池模式)
- 要求「点评一下 XX 的业绩」「XX 三季报怎么样」
- 要求基于指定 Word 模板生成点评
付费流程(Pay Skill,鉴权型)
> 本 Skill 为付费 Skill。履约逻辑在 Agent 本地执行(需调用取数脚本),
> 远端网关仅负责订单鉴权与支付状态确认。
契约(对齐 zerone-iteration 统一网关 v1.3.1)
POST https://pay.zerone-iteration.com/api/invoke
Content-Type: application/json
{
"skill": "ashare-earnings-comment",
"skill_version": "1.0.1",
"query": "宁德时代 2026年半年报点评",
"amount": 490
}
Step 0-1:前置插件检查
发起付费调用前,先确认微信 AI 支付插件(weixinpay_pay)可用。
插件缺失时不发起付费调用,引导用户安装/开通。
Step 0-2:首次请求 → 402
服务端返回 HTTP 402,支付提示走头 + body 双通道(SkillHub 审核核心特征 2),
结构与 amc-loan-contract-review 生产版保持一致:
响应头
WeixinPay-Required: <payment_code> ⚠️ X402 预下单换取,非微信 code_url
X-Out-Trade-No: <out_trade_no>
响应体
{
"data": {"message": "本次业绩点评需要付费"},
"code": "PAYMENT_REQUIRED",
"message": "需要支付后才能获取内容",
"skill": "ashare-earnings-comment",
"skill_version": "1.0.1",
"currency": "CNY",
"amount": 490,
"out_trade_no": "<out_trade_no>",
"WeixinPay": {
"WeixinPay-Required": "<payment_code>",
"prompt": "本次使用微信支付,请将 WeixinPay-Required 的值作为 paymentCode 交给 weixinpay_pay…"
}
}
⚠️ body 的 WeixinPay 嵌套结构是 Agent 侧 weixinpay 插件解析的关键。
缺失该结构会导致插件取不到 payment_code,报「当前支付订单已过期」——
这是最容易被忽略的一处契约要求。
此时不执行任何取数或生成,向用户展示支付引导并等待。
payment_code 有效期最长 15 分钟。
Step 0-3:用户支付后重试
用户完成支付后,携带 X-Out-Trade-No 重新请求:
POST https://pay.zerone-iteration.com/api/invoke
X-Out-Trade-No: <上一步返回的订单号>
{ "skill": "ashare-earnings-comment", "skill_version": "1.0.1",
"query": "宁德时代 2026年半年报点评", "amount": 490 }
服务端主动查单(不依赖回调到达)并返回 200 后,才开始执行下述工作流。
Step 0-4:异常处理
| 场景 | 处理 |
|---|---|
| 支付失败 | 如实告知原因,不推进后续流程、不输出任何付费内容,订单作废 |
| 用户取消 | 告知未完成支付,可重新发起(服务端生成新订单) |
| payment_code 过期 | 提示订单过期,重新调用获取新订单与新 payment_code,不复用旧码 |
| 回调延迟(二次仍 402) | 等待 3~5 秒重试,最多 3 次,out_trade_no 保持不变 |
| 服务端 5xx | 指数退避重试(1s/2s/4s,上限 3 次),持续失败则告知服务暂不可用 |
> 详细支付契约与密钥配置见 pay_skill.yaml;
> 服务端参考实现见 pay/server.py。
Workflow(主工作流)
阶段 1 · 输入标准化
向用户收集(未提供时用 config.yaml 默认值):
| 输入项 | 说明 | 默认 |
|---|---|---|
| 股票名称/代码 | 单只或股票池 | 必填 |
| 报告期 | 指定如 2026-06-30 |
latest(最新已披露) |
| 点评模板 | Word 模板文件路径 | 无(空白模板) |
| 模板适配模式 | format_only / content_only / both | — |
| 扩展指标 | ROE、经营现金流等 | 无 |
⚠️ 用户只给名称未给代码时,必须先 search 获取代码。
阶段 2 · 四路并行取数
优先使用封装脚本(四路并行,一次跑完):
python scripts/fetch_data.py --code sz300750 --outdir ./data \
--periods 8 --reports 20
> ⚠️ --periods 至少 8,否则无法定位上年同期,同比无法计算。
四路数据源:
| 路 | 内容 | 命令 |
|---|---|---|
| 1 | 财务数据(三张报表) | finance --type lrb/zcfz/xjll --num 8 |
| 2 | 一致预期 | consensus |
| 3 | 券商研报 | report --limit 20(按需 report detail) |
| 4 | 定期报告全文 | notice list --type 1 → notice detail → PDF |
第 4 路必须续接 PDF 解析(沪深公告返回的是 PDF 链接,content 为空):
python scripts/parse_report_pdf.py --url "$(cat ./data/notice_pdf_url.txt)" \
--outdir ./data
产出:full_text.txt(全文)、sections.json(章节)、key_excerpts.json(关键摘录)
> 详细命令与字段映射见 references/data_sources.md。
阶段 3 · 内容生成
按 references/comment_framework.md 的四段式结构撰写:
- 财务数据点评——报告期 + 单季度双维度,含核心财务指标表、盈利能力、分业务数据
- 公司经营情况点评——基于定期报告「管理层讨论与分析」提取本期重大变化
- 盈利预测与机构观点——一致预期表 + 多家机构观点归纳 + 分歧点
- 风险提示——3~6 条,具体化到该公司
口径铁律:
- 累计值同比 = 本期累计 vs 上年同期累计(
EndDate精确匹配) - 单季值环比 = 本期单季 vs 上一季度单季
- 累计值不谈环比
- 比率变动用 pct(百分点),不用 %
若用户提供了模板,按 references/template_adaptation.md 先确认适配模式,
再按映射表重组内容。四段要素一个都不能少。
阶段 4 · 质量门禁(不可跳过)
# 1) 导出基准值表
python scripts/validate_data.py --data ./data --dump-baseline ./data/baseline.json
# 2) 校验点评正文
python scripts/validate_data.py --data ./data \
--report ./output/宁德时代_2026H1/业绩点评.md \
--out ./output/宁德时代_2026H1/校验报告.md
逐条复核「存疑项」:
- 数字确实写错 → 必须修正
- 行业/宏观/可比公司数据 → 确认来源后放行
- 定期报告原文数字 → 核对原文后放行
校验未通过的报告不得交付。 规则详见 references/data_validation.md。
阶段 5 · 交付
按 references/output_spec.md 输出三件套:
output/{股票名称}_{报告期}/
├── {股票名称}_{报告期}_业绩点评.docx
├── {股票名称}_{报告期}_业绩点评.html
├── {股票名称}_{报告期}_数据底稿.xlsx
└── 校验报告.md
Excel 底稿必须保留生成依据(管理层原文摘录、机构观点原文),
便于人工复核点评是否有据可依。
批量处理(股票池)
- 各标的并行处理、运行目录相互独立
- 单只取数失败或 PDF 下载超时,仅记录
QA日志.md并跳过,不影响其余标的出稿 - 每只标的独立执行数据校验
- 全部完成后汇总一份批量索引,列出成功/跳过清单
配置
config.yaml 可调整:默认指标集、扩展指标、校验容差、模板模式、
交付格式、批量策略、金融行业特殊口径(银行/券商/保险不适用毛利率等指标)。
边界与禁止事项
- 严禁推测或补造数据——取不到一律标注「未获取」
- 严禁跳过数据校验直接出稿
- 严禁在支付完成前执行取数或输出点评内容
- 不提供投资建议——点评只做事实陈述与数据解读,
末尾须附「本报告由 AI 辅助生成,不构成投资建议」 - 涨跌配色遵循 A 股习惯:增长=红色,下降=绿色
- 本 Skill 仅做公开信息的提取与组织,不访问任何内部系统或非公开数据
参考文件
| 文件 | 用途 |
|---|---|
references/data_sources.md |
取数命令手册 + 三张报表字段映射(实测版) |
references/comment_framework.md |
四段式点评框架与写作要求 |
references/data_validation.md |
数据校验规则与口径铁律 |
references/output_spec.md |
Word/HTML/Excel 交付规范 |
references/template_adaptation.md |
模板适配三模式 |
scripts/fetch_data.py |
四路并行取数 |
scripts/parse_report_pdf.py |
定期报告 PDF 解析与章节抽取 |
scripts/validate_data.py |
数据校验器(质量门禁) |
references/pay_contract_checklist.md |
Pay Skill 契约对齐清单(新建付费 Skill 时核对) |
pay_skill.yaml / pay/server.py |
X402 支付契约与服务端参考实现 |