Skip to main content

bkn-backfill

将绑定/映射结果写回 .bkn 文件。

Zur Installation springen

Quellinformationen

Repository
openbkn-ai/bkn-engineering
Letzte Quellaktivität
11. September 2026 um 05:47
Erkannte Sprache von SKILL.md
Chinesisch
Sterne
17
Forks
4

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
bkn-backfill
description
将绑定/映射结果写回 .bkn 文件。
# BKN 回填 公约:`../_shared/contract.md` ## 做什么 把 `bkn-bind` 和 `bkn-map` 的结果合并,写回 `.bkn` 文件,完成资源绑定闭环。 ## 输入 - `binding_decision_list`:对象级绑定结果 - `property_mapping_draft`:属性级映射结果 - `relation_binding_result`:`bkn-relation-bind` 的输出(关系类型 + 中间视图) - `relation_mapping_draft`:`bkn-map` 的关系类映射结果 - `network_dir`:网络目录(`.bkn` 文件位于 `{network_dir}/bkn/`) ## 流程 1. **属性回灌门禁**(P1-2): - 读取 `{network_dir}/pipeline_state.yaml`(文件不存在时视为 `map_completed` 缺失) - **`map_completed == true`** → 继续 - **`map_completed == skipped`**(`bind_mode == deferred` 场景)→ 记录 `map_status: skipped (deferred)`,继续 - **`map_completed` 不存在或为 false**: - 用户明确要求跳过 → 在 `pipeline_state.yaml` 中追加 `skipped_steps: [bkn-map]`,输出警告后继续 - 否则,**阻断并回交 pipeline 调度**,输出: `"bkn-backfill 需要 bkn-map 先执行完成(map_completed 未就绪)。请 pipeline 调度 bkn-map 后再调用本 skill。"` 2. 合并绑定变更 + 属性变更 + 映射状态为统一差异清单 3. **存储位置过滤**: - 跳过 `存储位置: local` 的对象(本地对象无需资源绑定,不参与回填) - 在输出摘要中单独列出被跳过的 local 对象 4. **对象类回填**(仅 platform 对象): - Data Source 绑定值替换(名称/技术名 → 稳定 `resource_id`) - Mapped Field 更新为资源真实属性名 - 数据视图中不存在的属性:默认标注 Mapped Field 为 `-`(保留属性定义,便于后续补绑);用户可指定删除该行 - 不改动 Description 或其他业务语义字段 5. **级联修正**(关键改进): - 构建 `rename_map`:`{object_id: {old_property_name → new_property_name}}` - 来源 1:`bkn-map` 的 `property_regen_summary.rename` 动作(draft 属性名 → 视图字段名) - 来源 2:用户手动指定的属性重命名 - 扫描 `{network_dir}/bkn/relation_types/*.bkn` 的 Mapping Rules,将 Source Property / Target Property 中引用了已重命名属性的值替换 - 扫描 `{network_dir}/bkn/action_types/*.bkn` 的 Parameter Binding / Pre-conditions,将 Binding 列中引用了已重命名属性的值替换 - 级联修正只改引用名,不改语义 6. **关系类回填**(新增): - 仅处理 `relation_binding_result` 中 `status: confirmed` 的关系 - **direct 类型**: - 回填 Endpoint 表的 Type 列为 `direct` - 回填 Mapping Rules 表(Source Property → Target Property) - **indirect 类型**: - 回填 Endpoint 表的 Type 列为 `indirect` - 回填 Backing Resource 表(Type = resource, ID = backing_resource_id) - 回填 Source Mapping 表(Source Property → Resource Property) - 回填 Target Mapping 表(Resource Property → Target Property) - **pending 关系**: - 仅回填 Endpoint 表(Type 列保留占位符或留空) - Backing Resource / Source/Target Mapping 段不生成 - 跳过 `relation_mapping_quality: blocked` 的关系(在输出中标记) 7. **推送前关系映射完整性预检**(执行 `../_shared/prepush-validation.md`): - 检查所有 `relation_types` 的 Source/Target Property 是否存在于对应对象的 Data Properties - 检查所有 `action_types` 的 Parameter Binding 属性是否存在于绑定对象的 Data Properties - 检查 Concept Group 成员和 Network Overview 一致性 - 检查 indirect 类型关系的 Backing Resource ID 是否非空 - 检查 indirect 类型关系的 Source/Target Mapping 属性是否存在于对应资源 schema - `local` 对象跳过属性存在性检查,但仍参与对象存在性检查 - `pending` 关系仅 warning,不阻断 - **预检失败 → 阻断写入,列出全部错误**,提示修复后重试 8. 执行写入(写入 `{network_dir}/bkn/` 下对应的 `.bkn` 文件) 9. 回读校验(文件存在、关键字段已替换、级联引用一致、关系类结构完整) 10. 输出精简摘要,提示用户检查 ## 输出 ```yaml backfill_plan: binding_replacements: [{object, old_value, new_resource_id}] property_changes: [{object, property, action, layer}] cascade_renames: [{file, table, old_ref, new_ref}] # 新增:关系类回填计划 relation_replacements: - 关系ID: "" 关系名称: "" 关系类型: direct | indirect actions: - action: "" # fill_endpoint_type / fill_mapping_view / fill_source_mapping / fill_target_mapping target_section: "" # Endpoint / Backing Resource / Source Mapping / Target Mapping old_value: "" new_value: "" skipped_local_objects: [对象名] skipped_pending_relations: [关系名] # pending 关系,跳过回填 map_gate: {map_completed: true|false|skipped, user_skipped_map: true|false, blocked_for_map: true|false} prepush_validation: {status, errors} # 写入前预检结果 backfill_status: success | partial | failed verification: files_checked: 0 fields_replaced: 0 cascade_refs_fixed: 0 relations_filled: 0 # 新增:已回填的关系数量 pending_relations: 0 # 新增:pending 关系数量 issues: [] ``` ## 约束 - 只写 Data Source、Mapped Field 和级联引用,不改业务语义字段 - 级联修正仅限属性名引用,不修改关系方向或动作语义 - **写入前必须执行 `../_shared/prepush-validation.md` 预检,失败则阻断写入** - **执行回填前必须确认 `map_completed == true` 或 `skipped`,否则阻断并回交 pipeline 调度** - 写入后必须回读校验,包括级联引用一致性 - 回填失败时保留差异清单,可重试
Auf GitHub ansehen