$npx -y skills add kweaver-ai/kweaver-dip --skill bkn-report生成阶段报告或最终归档报告。
| 1 | # 报告生成 |
| 2 | |
| 3 | 公约:`../_shared/contract.md` |
| 4 | |
| 5 | ## 做什么 |
| 6 | |
| 7 | 汇总 pipeline 各阶段产物,生成结构化报告并归档。 |
| 8 | |
| 9 | ## 输入 |
| 10 | |
| 11 | - `pipeline`:当前流程类型 |
| 12 | - `artifacts`:各阶段产物(建模清单、绑定结果、测试结果、推送结果等) |
| 13 | - `network_dir`:归档目录 |
| 14 | |
| 15 | ## 报告类型 |
| 16 | |
| 17 | | 类型 | 触发时机 | 内容 | |
| 18 | |------|---------|------| |
| 19 | | 阶段报告 | pipeline 中间节点 | 当前阶段摘要 + 下一步 | |
| 20 | | 最终报告 | pipeline 完成 | 全流程回顾 + 产物清单 + 质量评分 | |
| 21 | | 测试报告 | bkn-test 完成后 | 测试结果 + 覆盖率 + 通过率 | |
| 22 | | 诊断报告 | validate pipeline 完成 | 检查结果 + 问题清单 + 修复建议 | |
| 23 | |
| 24 | ## 最终报告结构 |
| 25 | |
| 26 | ``` |
| 27 | 1. 网络概览:名称、领域、对象数、关系数 |
| 28 | 2. 建模摘要:路径(A/B/C)、收敛轮数 |
| 29 | 3. 绑定摘要:绑定率、覆盖率、风险项 |
| 30 | 4. 对象类详情:每个对象的属性列表、主键、映射状态(关键内容) |
| 31 | 5. 测试摘要:通过率、关键失败项 |
| 32 | 6. 业务规则:规则数、锚定对象数 |
| 33 | 7. Q&A 验证:通过率、验证路径 |
| 34 | 8. 问题与修复:pipeline 执行中遇到的问题及解决方案 |
| 35 | 9. 产物清单:文件路径列表 |
| 36 | ``` |
| 37 | |
| 38 | ## 诊断报告结构 |
| 39 | |
| 40 | 当 `report_type: diagnosis` 时生成,输出文件为 `DIAGNOSIS_REPORT.md` / `DIAGNOSIS_REPORT.html`: |
| 41 | |
| 42 | ``` |
| 43 | 1. 网络概览:名称、kn_id、来源(本地/pulled)、检查时间 |
| 44 | 2. 检查摘要:各阶段状态总览(pass/fail/skipped) |
| 45 | 3. 门禁检查详情:每条门禁结果 + 不达标项明细 |
| 46 | 4. 预检详情:关系映射/动作绑定/concept_group 检查结果 |
| 47 | 5. 静态检查详情:schema_review 结果(如有) |
| 48 | 6. 质量评分:综合分 + 各维度分 + 降级说明 |
| 49 | 7. 问题清单:按严重度排序的问题列表(critical/warning/info) |
| 50 | 8. 修复建议:每条建议 + 目标 skill + 预估工作量 |
| 51 | 9. 后续行动:推荐路由(update/feedback)+ 用户可选路径 |
| 52 | ``` |
| 53 | |
| 54 | 诊断报告输入来源: |
| 55 | - `pipeline_state.yaml` 中的 `validation_result` 字段 |
| 56 | - 各阶段检查结果(gate_check、prepush_validation、static_check、quality_score) |
| 57 | - `diagnosis` 字段中的问题清单和修复建议 |
| 58 | |
| 59 | ## 输出 |
| 60 | |
| 61 | ### 1. Markdown 报告(必须) |
| 62 | |
| 63 | - 文件:`{network_dir}/reports/REPORT.md` |
| 64 | - 用途:版本控制友好、方便 diff |
| 65 | - 内容:完整报告(上述 1–9 节) |
| 66 | |
| 67 | ### 2. HTML 报告(可选) |
| 68 | |
| 69 | - 生成条件:`references/report-template.html` 模板存在时生成,不存在时跳过 |
| 70 | - 模板:`references/report-template.html` |
| 71 | - 文件:`{network_dir}/reports/REPORT.html` |
| 72 | - 用途:可视化展示、直接浏览器打开 |
| 73 | - 生成方式:读取模板,替换 `{{placeholder}}` 占位符 |
| 74 | - 占位符映射: |
| 75 | |
| 76 | | 占位符 | 数据来源 | |
| 77 | |--------|---------| |
| 78 | | `{{network_name}}` | network.bkn → name | |
| 79 | | `{{domain}}` | network_context.domain | |
| 80 | | `{{timestamp}}` | 当前时间 | |
| 81 | | `{{trace_id}}` | ARCHIVE_ID | |
| 82 | | `{{quality_score}}` | bkn-review 评分(未执行写 N/A) | |
| 83 | | `{{verdict_class}}` | score >= 80 → pass, >= 60 → warn, < 60 → fail | |
| 84 | | `{{score_rows}}` | 各维度评分行 `<tr><td>维度</td><td>分数</td><td>权重</td></tr>` | |
| 85 | | `{{object_count}}` | 对象类数量 | |
| 86 | | `{{relation_count}}` | 关系类数量 | |
| 87 | | `{{binding_rate}}` | 绑定率 | |
| 88 | | `{{mapping_coverage}}` | 映射覆盖率 | |
| 89 | | `{{object_detail_rows}}` | 对象类属性详情(每对象一节,含属性表格 + Keys) | |
| 90 | | `{{test_rows}}` | 测试结果行 | |
| 91 | | `{{rule_count}}` | 业务规则数 | |
| 92 | | `{{anchor_count}}` | 锚定对象数 | |
| 93 | | `{{qa_pass_rate}}` | Q&A 通过率 | |
| 94 | | `{{artifact_list}}` | 产物路径 `<li>` 列表 | |
| 95 | |
| 96 | ### 诊断报告 HTML 占位符映射 |
| 97 | |
| 98 | 当生成诊断报告(`report_type: diagnosis`)时,使用以下占位符: |
| 99 | |
| 100 | | 占位符 | 数据来源 | |
| 101 | |--------|---------| |
| 102 | | `{{network_name}}` | network.bkn → name 或平台查询结果 | |
| 103 | | `{{kn_id}}` | network.bkn → kn_id 或平台查询结果 | |
| 104 | | `{{source}}` | pipeline_state.yaml → source(local / pulled_from_platform) | |
| 105 | | `{{check_timestamp}}` | 检查执行时间 | |
| 106 | | `{{trace_id}}` | ARCHIVE_ID | |
| 107 | | `{{gate_status}}` | gate_check.status(pass/fail) | |
| 108 | | `{{gate_rows}}` | 门禁检查结果行 | |
| 109 | | `{{prepush_status}}` | prepush_validation.status(pass/fail) | |
| 110 | | `{{prepush_errors}}` | 预检错误列表 | |
| 111 | | `{{static_check_status}}` | static_check.status(pass/fail/blocked/skipped) | |
| 112 | | `{{quality_score}}` | bkn-review 评分 | |
| 113 | | `{{verdict_class}}` | score >= 80 → pass, >= 60 → warn, < 60 → fail | |
| 114 | | `{{score_rows}}` | 各维度评分行 | |
| 115 | | `{{problem_rows}}` | 问题清单行(按严重度排序) | |
| 116 | | `{{fix_rows}}` | 修复建议行 | |
| 117 | | `{{routing_primary}}` | diagnosis.routing_suggestion.primary | |
| 118 | | `{{routing_reason}}` | diagnosis.routing_suggestion.reason | |
| 119 | |
| 120 | ### `{{object_detail_rows}}` 生成格式 |
| 121 | |
| 122 | 每个对象类生成如下 HTML 片段: |
| 123 | |
| 124 | ```html |
| 125 | <div class="object-section"> |
| 126 | <h3>{{object_name}} <small class="meta">{{存储位置}}</small></h3> |
| 127 | <table class="properties-table"> |
| 128 | <tr><th>Name</th><th>Display Name</th><th>Type</th><th>Mapped Field</th><th>Status</th></tr> |
| 129 | <!-- 每个属性一行 --> |
| 130 | <tr><td>{{property_name}}</td><td>{{display_name}}</td><td>{{type}}</td><td>{{mapped_field}}</td><td class="{{status_class}}">{{status}}</td></tr> |
| 131 | </table> |
| 132 | <p class="keys">Primary Key: {{primary_key}} | Display Key: {{display_key}}</p> |
| 133 | </div> |
| 134 | ``` |
| 135 | |
| 136 | 字段说明: |
| 137 | |
| 138 | | 字段 | 来源 | |
| 139 | |------|------| |
| 140 | | `{{object_name}}` | object_types/*.bkn → frontmatter.name | |
| 141 | | `{{存储位置}}` | 对象清单 → 存储位置(platform / local),local 对象标注灰色 | |
| 142 | | `{{property_name}}` | Data Properties 表格 → Name 列 | |
| 143 | | `{{display_name}}` | Data Properties 表格 → Display Name 列 | |
| 144 | | `{{type}}` | Data Properties 表格 → Type 列 | |
| 145 | | `{{mapped_field}}` | Data Properties 表格 → Mapped Field 列(无映射写 `-`) | |
| 146 | | `{{status}}` | bkn-map 输出 → 映射状态(mapped / waived / blocked),仅 platform 对象显示 | |
| 147 | | `{{status_class}}` | mapped → pass, waived → warn, blocked → fail | |
| 148 | | `{{primary_key}}` | object_types/*.bkn → Keys → Primary Keys | |
| 149 | | `{{display_key}}` | object_types/*.bkn → Keys → Display Key | |
| 150 | |
| 151 | **local 对象处理**:存储位置为 `local` 的对象,`Mapped Field` 列显示 `-`,`Status` 列不显示(无数据视图绑定),整体标注灰色样式。 |
| 152 | |
| 153 | ## 约束 |
| 154 | |
| 155 | - 报告不编造数据,数值必须来自实际产物 |
| 156 | - 归档路径遵循 `_shared/contract.md` 中的归档规则 |
| 157 | - Markdown 报告为必须产物;HTML 报告在模板可用时生成,不可用时跳过并在 Markdown 报告末尾注明 |
| 158 | - HTML 报告必须基于 `references/report-template.html` 模板生成,不可自行编写 HTML |