我的错误记录

我的错误记录

记录我在修复过程中犯的错误,防止重复犯错

更新日期: 2026-05-31


错误1:违背v3.2架构,在Create面板调用后端规则引擎

错误描述

在 StaffCapabilities.vue 的 Create 流程中,我添加了调用 /api/rule-engine/execute/create_pre 的代码,违背了v3.2架构设计。

错误代码

// 我错误添加的代码(已撤销)
const ruleEngineResp = await fetch('/api/rule-engine/execute/create_pre', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({...})
})

为什么错

根据 rules-templates-prompts-system.md v3.2 架构:

  • Create 场景已改为前端自主完成,不再调用后端规则引擎的 /api/rule-engine/create-item/api/rule-engine/execute/*
  • 前端负责:字段修正 → AML组装 → SCSAI提交
  • 后端只负责:SQLite数据存取 + SCSAI透明代理

正确做法

Create 面板应该:

  1. 调用 /api/aml/unified/schema/:type 获取Schema
  2. 调用 /api/sciot/type-template/:type 获取模板
  3. 调用 /api/aml/sciot/prompts 获取提示词
  4. 前端 sanitizeProperties() 做字段修正
  5. 前端 buildAML() 组装AML
  6. 前端 _SCSAIApiRequest() 提交SCSAI

修复

已撤销错误代码,恢复为符合v3.2架构的实现。


错误2:未仔细阅读文档就擅自修改

错误描述

在没有完全理解 rules-templates-prompts-system.md v3.2 架构的情况下,就擅自修改代码。

为什么错

  • 文档v3.2明确说明了Create场景的架构变更
  • 我没有先仔细阅读文档的"5.2 场景一:Create(对象创建)"章节
  • 看到"规则引擎"就以为要调用规则引擎API,没有理解架构演进

正确做法

任何修改前必须先阅读相关文档,特别是:

  1. rules-templates-prompts-system.md 的架构章节
  2. 要修改的代码的注释(StaffCapabilities.vue 第1624-1628行明确说明了架构原则)
  3. 先检查现状,理解当前实现,再决定是否需要修改

错误3:混淆了不同面板的职责

错误描述

以为所有面板都应该调用规则引擎,混淆了Create面板和其他面板的区别。

为什么错

| 面板 | 架构 | 是否调用规则引擎 |

|------|------|-----------------|

| Create | v3.2 前端自主 | ❌ 不调用 |

| Repair | v3.2 规则引擎 | ✅ 调用 /api/rule-engine/repair |

| Optimize | v3.2 规则引擎 | ✅ 调用 /api/rule-engine/optimize |

| Compare | v3.2 规则引擎 | ✅ 调用 /api/rule-engine/compare |

| Identify | v3.2 规则引擎 | ✅ 调用 /api/rule-engine/identify |

Create面板是特殊的,v3.2明确改为前端自主完成。


我的改进措施

  1. 修改前必查文档
  • 先阅读 rules-templates-prompts-system.md
  • 理解架构设计意图
  • 确认当前代码是否符合架构
  1. 先检查后修改
  • 使用 Task/Explore 工具检查现状
  • 理解当前实现逻辑
  • 确认需要修改的地方
  1. 修改后验证
  • 验证修改是否符合架构
  • 构建测试
  • 不擅自添加功能
  1. 不确定时询问
  • 不猜测架构意图
  • 不确定时先问清楚再行动

关键文档章节备忘

v3.2 Create场景架构(必须牢记)

调用链(v3.2 架构):
  前端 Create 面板(StaffCapabilities.vue: runCreate())
    → Step 1: GET /api/aml/unified/schema/:type  → 获取对象Schema
    → Step 2: GET /api/sciot/type-template/:type → 获取模板
    → Step 3: GET /api/aml/sciot/prompts         → 获取预生成的提示词
    → Step 4: 构建 Prompt
    → Step 5: POST /api/llm/chat                 → 调用大模型
    → Step 6: 前端完成全部业务逻辑(不调用后端规则引擎)
      6.1 sanitizeProperties()     → 字段修正
      6.2 分离 item_properties
      6.3 _SCSAIApiRequest()        → 预创建嵌套 Item
      6.4 补充默认值
      6.5 buildAML()               → 前端组装AML
      6.6 _SCSAIApiRequest()        → 提交SCSAI

核心原则:后端只负责 SQLite 数据存取 + SCSAI 透明代理,前端负责全部业务逻辑。



错误4:直接执行 action_script(后端 new Function)

错误描述

在后端规则引擎中用 new Function('context', 'rule', 'options', rule.action_script) 直接执行数据库中的 action_script。还在文档中写了"架构例外"允许这样做。

为什么错

  • SCSAI 客户端 JS 与 UI 深度绑定,不能脱离 UI 环境直接执行
  • action_script 是从客户端方法分析理解后转化为的规则描述,不是可执行代码
  • 直接执行可能是错误的,因为缺少 UI 上下文

正确做法

  • 客户端方法 → 分析理解 → 转化为规则定义(condition + action_type + action_config)
  • 前端获取规则定义,根据规则自己编写对应的前端逻辑
  • action_script 仅作为规则意图的参考文档

修复

  • 撤销了 StaffCapabilities.vue 中调用 /api/rule-engine/execute/create_pre 的代码
  • 修正了文档中的"架构例外"描述

错误5:反复违背架构原则

错误描述

在同一个问题上反复犯错:

  1. 第一次:擅自添加调用后端规则引擎
  2. 第二次:撤销后理解了v3.2架构
  3. 第三次:又添加了调用后端规则引擎("架构例外")
  4. 第四次:被指出 action_script 不能直接执行

根本原因

  • 没有真正理解"客户端方法 → 规则定义 → 前端自己实现"的转化过程
  • 看到规则引擎API就想调用,没有思考架构设计意图

正确理解

SCSAI客户端JS方法(与UI绑定,不可直接执行)
    ↓ 分析理解
规则定义(condition + action_type + action_config + action_script描述)
    ↓ 存入数据库
前端获取规则定义
    ↓ 根据规则自己编写逻辑
前端实现(sanitizeProperties、buildAML等)

当前代码状态(已修正)

  • ✅ Create面板符合v3.2架构(前端自主完成)
  • ✅ 不调用后端 /api/rule-engine/execute
  • ✅ action_script 仅作为参考文档,不直接执行
  • ✅ 前端 sanitizeProperties() 自己实现字段修正
  • ✅ 前端 buildAML() 自己实现AML组装
← 返回案例列表
分享:
🤖 Try Now →
🤖
🎁