Back to skills
SKILL.md
Dd Report
ASecurity基于 MCP 提供的权威分析结果生成与修订尽调报告:财务专项报告(受控 narrative 流程)或通用项目报告,缺据降级留白不臆造。
- 417 stars
- 0 votes
- 0 copies
- 0 views
- Added November 8, 2026
Works with
Security analysis
100/100Pro scans all 2 files and shows the line behind each finding
npx -y skills add infometa/workbuddyskills --skill dd-report --agent claude-codeAre you the author of Dd Report?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/infometa-dd-report)---
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.md
- output-spec.md
Attribution
Related skills
View all in business →Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.