--- name: bkn-report description: 生成阶段报告或最终归档报告。 --- # 报告生成 公约:`../_shared/contract.md` ## 做什么 汇总 pipeline 各阶段产物,生成结构化报告并归档。 ## 输入 - `pipeline`:当前流程类型 - `artifacts`:各阶段产物(建模清单、绑定结果、测试结果、推送结果等) - `network_dir`:归档目录 ## 报告类型 | 类型 | 触发时机 | 内容 | |------|---------|------| | 阶段报告 | pipeline 中间节点 | 当前阶段摘要 + 下一步 | | 最终报告 | pipeline 完成 | 全流程回顾 + 产物清单 + 质量评分 | | 测试报告 | bkn-test 完成后 | 测试结果 + 覆盖率 + 通过率 | | 诊断报告 | validate pipeline 完成 | 检查结果 + 问题清单 + 修复建议 | ## 最终报告结构 ``` 1. 网络概览:名称、领域、对象数、关系数 2. 建模摘要:路径(A/B/C)、收敛轮数 3. 绑定摘要:绑定率、覆盖率、风险项 4. 对象类详情:每个对象的属性列表、主键、映射状态(关键内容) 5. 测试摘要:通过率、关键失败项 6. 业务规则:规则数、锚定对象数 7. Q&A 验证:通过率、验证路径 8. 问题与修复:pipeline 执行中遇到的问题及解决方案 9. 产物清单:文件路径列表 ``` ## 诊断报告结构 当 `report_type: diagnosis` 时生成,输出文件为 `DIAGNOSIS_REPORT.md` / `DIAGNOSIS_REPORT.html`: ``` 1. 网络概览:名称、kn_id、来源(本地/pulled)、检查时间 2. 检查摘要:各阶段状态总览(pass/fail/skipped) 3. 门禁检查详情:每条门禁结果 + 不达标项明细 4. 预检详情:关系映射/动作绑定/concept_group 检查结果 5. 静态检查详情:schema_review 结果(如有) 6. 质量评分:综合分 + 各维度分 + 降级说明 7. 问题清单:按严重度排序的问题列表(critical/warning/info) 8. 修复建议:每条建议 + 目标 skill + 预估工作量 9. 后续行动:推荐路由(update/feedback)+ 用户可选路径 ``` 诊断报告输入来源: - `pipeline_state.yaml` 中的 `validation_result` 字段 - 各阶段检查结果(gate_check、prepush_validation、static_check、quality_score) - `diagnosis` 字段中的问题清单和修复建议 ## 输出 ### 1. Markdown 报告(必须) - 文件:`{network_dir}/reports/REPORT.md` - 用途:版本控制友好、方便 diff - 内容:完整报告(上述 1–9 节) ### 2. HTML 报告(可选) - 生成条件:`references/report-template.html` 模板存在时生成,不存在时跳过 - 模板:`references/report-template.html` - 文件:`{network_dir}/reports/REPORT.html` - 用途:可视化展示、直接浏览器打开 - 生成方式:读取模板,替换 `{{placeholder}}` 占位符 - 占位符映射: | 占位符 | 数据来源 | |--------|---------| | `{{network_name}}` | network.bkn → name | | `{{domain}}` | network_context.domain | | `{{timestamp}}` | 当前时间 | | `{{trace_id}}` | ARCHIVE_ID | | `{{quality_score}}` | bkn-review 评分(未执行写 N/A) | | `{{verdict_class}}` | score >= 80 → pass, >= 60 → warn, < 60 → fail | | `{{score_rows}}` | 各维度评分行 `维度分数权重` | | `{{object_count}}` | 对象类数量 | | `{{relation_count}}` | 关系类数量 | | `{{binding_rate}}` | 绑定率 | | `{{mapping_coverage}}` | 映射覆盖率 | | `{{object_detail_rows}}` | 对象类属性详情(每对象一节,含属性表格 + Keys) | | `{{test_rows}}` | 测试结果行 | | `{{rule_count}}` | 业务规则数 | | `{{anchor_count}}` | 锚定对象数 | | `{{qa_pass_rate}}` | Q&A 通过率 | | `{{artifact_list}}` | 产物路径 `
  • ` 列表 | ### 诊断报告 HTML 占位符映射 当生成诊断报告(`report_type: diagnosis`)时,使用以下占位符: | 占位符 | 数据来源 | |--------|---------| | `{{network_name}}` | network.bkn → name 或平台查询结果 | | `{{kn_id}}` | network.bkn → kn_id 或平台查询结果 | | `{{source}}` | pipeline_state.yaml → source(local / pulled_from_platform) | | `{{check_timestamp}}` | 检查执行时间 | | `{{trace_id}}` | ARCHIVE_ID | | `{{gate_status}}` | gate_check.status(pass/fail) | | `{{gate_rows}}` | 门禁检查结果行 | | `{{prepush_status}}` | prepush_validation.status(pass/fail) | | `{{prepush_errors}}` | 预检错误列表 | | `{{static_check_status}}` | static_check.status(pass/fail/blocked/skipped) | | `{{quality_score}}` | bkn-review 评分 | | `{{verdict_class}}` | score >= 80 → pass, >= 60 → warn, < 60 → fail | | `{{score_rows}}` | 各维度评分行 | | `{{problem_rows}}` | 问题清单行(按严重度排序) | | `{{fix_rows}}` | 修复建议行 | | `{{routing_primary}}` | diagnosis.routing_suggestion.primary | | `{{routing_reason}}` | diagnosis.routing_suggestion.reason | ### `{{object_detail_rows}}` 生成格式 每个对象类生成如下 HTML 片段: ```html

    {{object_name}} {{存储位置}}

    NameDisplay NameTypeMapped FieldStatus
    {{property_name}}{{display_name}}{{type}}{{mapped_field}}{{status}}

    Primary Key: {{primary_key}} | Display Key: {{display_key}}

    ``` 字段说明: | 字段 | 来源 | |------|------| | `{{object_name}}` | object_types/*.bkn → frontmatter.name | | `{{存储位置}}` | 对象清单 → 存储位置(platform / local),local 对象标注灰色 | | `{{property_name}}` | Data Properties 表格 → Name 列 | | `{{display_name}}` | Data Properties 表格 → Display Name 列 | | `{{type}}` | Data Properties 表格 → Type 列 | | `{{mapped_field}}` | Data Properties 表格 → Mapped Field 列(无映射写 `-`) | | `{{status}}` | bkn-map 输出 → 映射状态(mapped / waived / blocked),仅 platform 对象显示 | | `{{status_class}}` | mapped → pass, waived → warn, blocked → fail | | `{{primary_key}}` | object_types/*.bkn → Keys → Primary Keys | | `{{display_key}}` | object_types/*.bkn → Keys → Display Key | **local 对象处理**:存储位置为 `local` 的对象,`Mapped Field` 列显示 `-`,`Status` 列不显示(无数据视图绑定),整体标注灰色样式。 ## 约束 - 报告不编造数据,数值必须来自实际产物 - 归档路径遵循 `_shared/contract.md` 中的归档规则 - Markdown 报告为必须产物;HTML 报告在模板可用时生成,不可用时跳过并在 Markdown 报告末尾注明 - HTML 报告必须基于 `references/report-template.html` 模板生成,不可自行编写 HTML