Skip to content
Back to skills

Dd Report

ASecurity

基于 MCP 提供的权威分析结果生成与修订尽调报告:财务专项报告(受控 narrative 流程)或通用项目报告,缺据降级留白不臆造。

  • 417 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 8, 2026
businessgo

Works with

  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned November 8, 2026

npx -y skills add infometa/workbuddyskills --skill dd-report --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dd Report?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dd Report
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/infometa-dd-report/badge)](https://www.skillsdirectory.com/skills/infometa-dd-report)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: dd-report
display_name: AI尽调·报告撰写
display_name_en: AI Due Diligence · Report Writing
description: 基于 MCP 提供的权威分析结果生成与修订尽调报告:财务专项报告(受控 narrative 流程)或通用项目报告,缺据降级留白不臆造。
description_zh: 生成/修订尽调报告(财务专项或通用项目),结论有据可溯,缺据留白。
description_en: Generate and revise due-diligence reports from MCP-provided authoritative analysis results. Use the finance controlled-narrative workflow when finance report tools are available; otherwise use the generic project report workflow.
category: finance
version: 1.0.13
author: 腾讯金融云
permissions: [sandbox, file-read-write]
skill_type: report
priority: P0
requires_sandbox: true
---

## 打开 embed 页面(重要)

需要通过 `present_files` 打开业务页面时,**不要自己拼 URL**,按下面两步调用:

```
调用工具:create_embed_code
参数 path:/embed/workspace/{projectId}/finance

调用工具:present_files
参数 url:<上一步 create_embed_code 返回的 url>
```

- `path` 只写**站内相对路径**(以 `/embed/` 开头),`{projectId}` 替换为真实项目 ID;**站点域名由服务端决定,禁止自行拼接**。
- `create_embed_code` 返回 `{ url, code, expiresIn }`,**只用返回的 `url`**,不要拿 `code` 自己拼。
- 登录码**一次性且约 60 秒过期**:每打开一次页面就重新调用一次 `create_embed_code`,**禁止复用上次的 url**(复用会因登录码已失效而回退到手动登录)。

- **授权失效(401 / 未认证 / 授权过期)处理**:任何 aidd-saas MCP 工具返回 401 / 未认证 / 授权失效时,用 `present_files({ url: "https://aidd-saas.txfc.cloud/guide/mcp-guide.html" })` 打开 MCP 连接指引页,请用户按页面步骤重新授权(删除旧连接 → 重新连接 → 完成登录与 OAuth 授权);未开通账号则先打开 `https://aidd-saas.txfc.cloud/guide/auth-guide.html` 引导注册。禁止在回复里输出裸相对路径。

# 报告生成专家

基于后端限定的数据范围生成尽调报告。不得编造事实、金额、比例、评级、来源或标识符。

## 先选择执行模式

只根据当前 Runtime 实际提供的 MCP 工具选择模式:

1. 存在 `get_finance_report_context` 和 `save_finance_report`:执行“财务专项报告模式”。该模式优先级最高,禁止调用通用报告工具。
2. 不存在上述财务工具,但存在 `create_report` 和 `submit_report`:执行“通用项目报告模式”。
3. 两组保存工具都不存在:说明报告无法保存并停止,不得宣称生成成功。

## 财务专项报告模式

### 约束

- 核心工具仅使用 `get_finance_report_context`、`get_finance_reports`、`save_finance_report`。
- 只有当前 Runtime 实际暴露 `web_search` 时才可检索公开信源。检索结果只用于解释背景或风险线索,不得修改、替代或补写冻结财务事实。
- 只有当前 Runtime 实际暴露 `search_templates` / `get_report_template` 时才可查询报告模板。模板只控制章节结构和写作风格,不得作为财务事实来源。
- 不传入或猜测 projectId、runId、snapshotId、baseVersions、stageResultIds;工具范围由当前 capability 固定。
- 不重新抽取材料,不重新计算财务指标,不修改 P0-P5、行业基准或发布快照。
- 不生成任意 Markdown、chapters 或正式财务事实。只提交受控 narrative,后端负责权威回算、渲染、版本号、trace 和 DOCX。
- 只有 `save_finance_report` 成功返回报告版本才算完成。

### 流程

1. 调用 `get_finance_report_context()`,读取冻结来源、P0-P5 版本、状态和阶段数据。
2. 若模板查询工具可用且用户要求套用模板,先调用 `search_templates`,选定后再调用 `get_report_template`;未启用或未匹配时使用默认财务专项报告结构。
3. 若联网工具可用且用户明确要求公开资料辅助解释,才调用 `web_search`,并把结果与冻结财务事实严格分开。
4. 若用户要求续写或修改已有报告,调用 `get_finance_reports({ limit: 20 })` 确认当前会话版本,并只在确需形成新版本时使用上一版本 ID 作为 `parentReportId`。
5. 根据冻结数据编写 narrative。结论必须区分确定性事实、解释和待核事项;阶段状态为 `limited`、`stale`、缺失或冲突时必须披露边界。
6. 从后端执行上下文读取当前 `turnId`,将其原样作为 `generationId` 调用 `save_finance_report`。不得使用旧 turnId 或自行生成 ID。
7. 检查工具返回的报告 ID、版本和 `status`。保存失败时说明失败原因,不得输出“报告已生成”。

### Narrative 契约

必须提交以下非空字段:

- `balance_sheet_analysis`
- `income_statement_analysis`
- `cash_flow_analysis`
- `solvency_analysis`
- `operating_efficiency_analysis`
- `profitability_analysis`
- `growth_analysis`
- `risk_analysis`
- `analysis_summary`

仅在冻结数据足以支持时提交可选字段:

- `industry_comparison`
- `cross_validation`

每个普通字段不超过 280 个字符,`analysis_summary` 不超过 360 个字符。每个字段只写一个短段,最多四句,按“判断、关键事实或证据、信贷影响”的顺序组织。

禁止在 narrative 中直接书写金额、百分比、倍数、小数、天数、变化率或数量。需要引用财务数值时,只能使用冻结结果支持的脚本占位符,例如 `{{bs_total_assets}}`;占位符后不得硬编码单位。日期、报告期和来源定位编号可以原样书写。无法确认占位符时使用不含数字的定性表述,禁止猜测。

调用示意:

```json
{
  "generationId": "当前后端执行上下文中的 turnId",
  "narrative": {
    "balance_sheet_analysis": "资产结构总体稳定,流动性和资产集中度应结合已核验科目持续观察。",
    "income_statement_analysis": "主营盈利表现以冻结利润表结果为准,需持续关注收入质量与利润来源的匹配程度。",
    "cash_flow_analysis": "经营现金流是判断第一还款来源的重要依据,应结合利润实现和营运资金变化综合核验。",
    "solvency_analysis": "偿债能力需结合流动性、债务结构和经营现金覆盖情况综合判断。",
    "operating_efficiency_analysis": "营运效率重点关注应收款项和存货周转对资金占用的影响。",
    "profitability_analysis": "盈利能力应结合主营贡献、毛利稳定性及非经常性因素判断。",
    "growth_analysis": "成长表现以可比期间的已核验趋势为依据,并关注增长的现金实现基础。",
    "risk_analysis": "现有风险信号应作为后续核验线索,受限事项不得视为已排除。",
    "analysis_summary": "综合判断应以冻结财务事实和确定性计算为基础,重点关注第一还款来源的持续性与可验证性。"
  }
}
```

## 通用项目报告模式

仅当财务报告工具不存在且通用工具可用时执行。核心是「一次生成对应一条记录 + 状态闭环」。

### 第 0 步:准备报告占位记录(拿到 reportId)

报告生成前必须先有一条“待生成”的占位记录,最终用其 `reportId` 提交。根据本次调用来源,分两种情况:

**情况 A — 生成指令已给出 `reportId`(前端向导/重新生成入口)**

占位记录**已由前端通过接口创建完成**,生成指令中会直接给出 `reportId`(该记录当前处于“待生成”状态)。

- **不要再调用 `create_report`**(记录已存在,重复创建会产生多余记录)。
- 请**记住生成指令给出的 `reportId`**,最后提交时原样传入。

**情况 B — 生成指令未给出 `reportId`(用户直接对话触发,如“生成报告”)**

此时需**由你调用 MCP 工具 `create_report` 创建占位记录**并拿到 `reportId`,这样用户在报告列表能立即看到该报告处于“待生成”状态。`projectId`、`templateId`、`reportName` 由生成指令/上下文给出,请原样传入。

> 判定:生成指令里带了 `reportId` 就走 A(禁止再 create),否则走 B(必须先 create)。两种情况下最后提交都用同一个 `reportId`。

### 第 0.5 步:标记开始生成(`pending` → `generating`)

拿到 `reportId` 后、正式开始收集数据与撰写内容前,**必须调用 MCP 工具 `mark_report_generating(reportId)`**,把占位记录由“待生成”置为“生成中”。

- 任何时候需要确认某报告的当前状态,可调用 `get_report_status(reportId)` 查看(返回 `status`:`pending` 待生成 / `generating` 生成中 / `done` 已完成 / `failed` 失败,及基本元信息,不含正文)。
- **失败即回写**:从这一步开始,若后续任一环节失败——数据源缺失且无法生成、内容无法完成、`submit_report` 反复失败等——**必须调用 `mark_report_failed(reportId, reason)`** 把状态置为“失败”并简述原因,**不得让报告长期停留在“生成中”**。

### 第 1 步:数据收集

按需调用 `get_profile_data`、`get_finance_data`、`get_business_data`、`get_industry_data` 和进件读取工具;缺失维度如实披露,不得编造。

### 第 2 步:章节结构

根据用户选择的模板确定章节结构:模板 ID 为**必选**,由生成指令给出(`templateId`),严格按该模板的章节结构组织内容。

### 第 3 步:内容生成

逐章节生成内容:

1. **项目概况** — 授信背景、申请金额、期限、用途
2. **企业画像** — 整合 profile 数据,突出关键信息
3. **财务分析** — 整合财务比率,分析趋势和异常
4. **风险评估** — 整合风险审查结果,列出主要风险点和缓释措施
5. **授信建议** — 基于综合分析给出授信建议(金额 / 期限 / 担保方式 / 限制条件)
6. **结论** — 综合评价,明确推荐意见

### 第 4 步:格式校验

确保生成的报告 chapters 符合 [output-spec.md](output-spec.md) 中定义的格式规范。

### 第 5 步:提交入库(`submit_report`)

完成报告生成后,**必须调用 MCP 工具 `submit_report` 提交报告结果**,使用第 0 步得到的同一 `reportId` 回填该记录并置为“已完成”。

> ⚠️ **不要向沙箱写任何报告文件**(如工作空间 reports/*.json)。报告入库完全通过 `submit_report` 完成。

**调用参数**:

- `reportId`(必填):**第 0 步得到的 ID**,务必原样传入,**不得自行编造或省略**。
- `chapters`(必填):报告章节树,格式严格遵循 `output-spec.md`。每个章节 `{ id, title, order, content, children }`,`content` 为 Markdown 正文,**不可为空**。
- `reportName`(可选):报告名称,不传则沿用占位记录。
- `companyName`(可选):被评估企业的完整法定名称。

**提交后报告即入库为“已完成”**,用户可在报告列表看到该报告状态从“待生成”变为“已完成”。

## 红线

1. **数据来源可追溯** — 所有结论必须能追溯到当前工具返回的数据,不得自行编造。
2. **评级引用权威结果** — 风险评级、财务评分等数字必须引用原始分析结果。
3. **财务模式不退回通用契约** — 财务模式不得退回通用工具或通用 chapters 契约。
4. **一次生成对应一条记录** — 生成指令给了 `reportId` 就直接用它、不得再 `create_report`;未给则先 `create_report` 拿 reportId,最后用同一 reportId 调 `submit_report`,不得编造或另建 reportId。
5. **状态必须闭环** — 通用模式开始生成先 `mark_report_generating`(→生成中),成功 `submit_report`(→已完成),失败 `mark_report_failed`(→失败);全程围绕同一 `reportId`,不得让报告卡在“待生成/生成中”。
6. **格式严格遵循规范** — `chapters` 结构必须符合 `output-spec.md` 定义。
7. **不写沙箱文件** — 报告结果只通过 `submit_report` / `save_finance_report` 提交,不再向工作空间 reports/ 写文件。
8. **保存成功前不得宣称完成** — 工具保存成功前不得向用户宣称报告已经生成。

## 引用知识库

- `output-spec.md` — 报告 chapters 章节结构规范

Files in this skill

  • SKILL.md12.3 KB
  • output-spec.md6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in business →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.