]> acesimba.cloud Git - StationBuilder.git/commitdiff
修复:领域方案 AI 资产补全未写入表格
authorwang.yu <wang.yu@advantech.com>
Thu, 20 Aug 2026 02:33:54 +0000 (10:33 +0800)
committerwang.yu <wang.yu@advantech.com>
Thu, 20 Aug 2026 02:33:54 +0000 (10:33 +0800)
- handleDomainCompleteAssets 在 emit 结果前,将解析后的资产按
  device_template_id 去重、sort_order 顺延追加写入 domain_template_assets
- 此前仅 emit result 未落库,前端 load() 重载后覆盖本地新增行,
  导致 AI 补全的设备建议不显示在资产表格中

db-sidecar.mjs

index 6d4a05c3f80d36991dad4a9584e4c118bedbdc14..06d13c88df0cd2e55b948dc09f946062824b35cf 100644 (file)
@@ -1794,6 +1794,16 @@ async function handleDomainCompleteAssets(req, res, tmplId) {
       if (r.created) createdNames.push(it.type);
       assets.push({ device_template_id: r.id, count: it.count, rule: it.rule });
     }
+    // 落库:追加写入 domain_template_assets(按 device_template_id 去重,避免覆盖用户手动已录入的行)
+    const maxSort = db.prepare("SELECT COALESCE(MAX(sort_order), -1) AS m FROM domain_template_assets WHERE domain_template_id=?").get(tmplId).m;
+    let so = maxSort + 1;
+    const ins = db.prepare("INSERT INTO domain_template_assets (domain_template_id, device_template_id, count, rule, sort_order) VALUES (?,?,?,?,?)");
+    const exists = db.prepare("SELECT 1 FROM domain_template_assets WHERE domain_template_id=? AND device_template_id=?");
+    for (const a of assets) {
+      if (!a || !a.device_template_id) continue;
+      if (exists.get(tmplId, a.device_template_id)) continue;
+      ins.run(tmplId, Number(a.device_template_id), Number(a.count) || 0, a.rule || "", so++);
+    }
     emit({ log: `\n✓ 已生成 ${assets.length} 类设备配置${createdNames.length ? `,并自动创建设备模板:${createdNames.join("、")}` : ""}\n` });
     emit({ result: assets, created: createdNames });
     emit({ task: "AI 资产补全", status: "done" });