Diff & Approval
概要
Original / Modified 2 つの BuildingData を比較し、各変更を per-field で承認 する Git ライクな UI コンポーネントです。AI による生成や MCP 経由の編集結果を本番フローに通す前の 承認ゲート として使うことを意図しています。フォームはモードレスで、開いている間も Grasshopper は応答し続けます。
- グループ: 3. Validate & Diff
- ニックネーム:
DiffApprv - Exposure: Primary
- v5.5.0 新規 (旧
Comp_I09 AnalyticalMergeを全面刷新、ComponentGuid 流用)
性悪説原則 (Assume Guilty)
すべての変更は デフォルト「未承認」状態 で表示されます:
- ユーザーがチェックを入れた変更だけが Output に反映
- 一括承認 (
Approve All) は 2 段階確認 (Arm CheckBox → ボタン) - 監査ログ
.approved.jsonに承認 / 拒否 / 時刻 / ユーザー名を永続化 - Cancel で閉じても
status="cancelled"で記録
詳細: AI 機能 利用規約 §2
入力パラメータ
| パラメータ名 | 型 | デフォルト | 説明 |
|---|---|---|---|
| Original (Ori) | Generic | — | 比較元 (信頼できるバージョン) |
| Modified (Mod) | Generic | — | 比較対象 (AI 編集 or MCP 編集後) |
| OpenDialog (D) | Boolean | false | true の立ち上がりで承認フォームを開く(モードレス。false に戻すと外部から閉じられる) |
| AutoApprove (Auto) | Boolean | false(任意) | debug / CI 専用。フォームを経ずに全変更を承認。商用設計フローでは使用禁止 |
| AuditPath (P) | Text | ""(任意) | .approved.json 監査ログの保存先パス(空なら保存されず Warning) |
出力パラメータ
| パラメータ名 | 型 | 説明 |
|---|---|---|
| Approved (Out) | Generic | 承認済の変更のみが Original に適用された BuildingData(フォームが開いている間は Original と同一) |
| Diff (D) | Text (List) | 全変更の一覧(承認/拒否ステータス付き。GUID ではなく位置ベースの DisplayKey 例 X1-Y1 @ 1F を使用) |
| Stats (St) | Text | 統計(総数 / 承認 / 拒否件数と現在のステータス) |
| Pending (P) | Boolean | フォームが開いている、または未承認の変更が残っている(下流はこれが False になるまでゲートするのが基本) |
| Selected (Sel) | Generic | UI 上で選択中の Change (S06 でハイライト表示用。リアルタイム更新) |
| SelectedInfo (SI) | Text | 選択 Change の説明 (Category / Location / Kind / FieldPath) |
| ChangesList (ChL) | Generic (List) | 全 Change オブジェクト一覧(Comp_S06_DiffPreview で一括ハイライト等に使用) |
変更検知のカテゴリ
| カテゴリ | 検知される変更 | キー |
|---|---|---|
Global / Building_Metadata | Design_Phase 変更、Project_Name 変更 等 | フィールドパス |
Grids | 通り芯追加 / 削除 / Span | Axis/Label |
Grid_Nodes (v5.9.0) | 交点オフセットの追加 / 削除 / 変更 | "X2-Y3"(表示は X2-Y3 (+0, +300) のようにオフセット付き) |
Levels | 階追加 / 削除 / Height / Slab_On_Beam | Name |
Catalog_*(16 種) | エントリ追加 / 削除 / Type_ID 変更 / Revit_Family_Type / Material | Type_ID |
Layout_*(18 種) | Instance_ID 追加 / 削除 / Floor / Grid / Type_ID / Justification / End_Release_* / Is_Void | Instance_ID(表示は位置ベース) |
Grid_Nodes の変更も他カテゴリと同様に per-change で個別承認 できます(v5.9.0)。
指標記録 diff_metrics.tsv(v5.7.0)
差分計算・承認のたびに、件数のみの指標が TSV で追記記録されます(検証インフラ Metrics v0 の一部):
- 保存先:
%APPDATA%/MakeBuildingPro/diff_metrics.tsv - 列:
timestamp / event / building / total / added / removed / modified / approved / rejected / categories - イベント:
diff_computed(差分計算直後。approved/rejected は-)/approval_applied/approval_cancelled - 変更の中身(Before/After 値・プロンプト文)は記録されない(件数のみ・機密情報非保持)
- timestamp 以外が直前の記録と同一の行はスキップ(AutoApprove の solve 連発による重複抑止)
- 集計は MCP ツール
get_approval_statsからも参照可能
AutoApprove の警告
AutoApprove=true 設定時、毎回 GH Runtime Message に警告ログ が出力されます (suppress 不可)。商用設計フローでの使用は禁止されており、AI Terms of Use §2.5 に違反します。
ワークフロー例
Comp_I06 AI Building Generator (Modified)
↓
Comp_I09 Diff & Approval (Original = 信頼版、Modified = AI 出力)
↓ ユーザーが per-field 承認
Approved (BuildingData)
↓
Comp_S01 Build Model → 3D / Comp_E06 Speckle / 等関連
Comp_S06_DiffPreview— 選択 Change を 3D ハイライト表示Comp_S07_CatalogDiffPreview— Catalog 変更の cascade 影響範囲を可視化Comp_I06_AIBuildingGenerator— AI 生成側- MCP API 仕様 — MCP 経由の編集も最終的に I09 を通す運用推奨
更新履歴
- v5.9.0:
Grid_Nodesカテゴリを追加(キー"X2-Y3"・オフセット付き DisplayKey・per-change 承認可)— 交点移動の差分を可視化 - v5.7.0: 指標記録
diff_metrics.tsvを追加(セッション毎の差分/承認件数を TSV 追記。件数のみ・連続重複はスキップ)