保存
This commit is contained in:
276
A2-DELIVERABLES.md
Normal file
276
A2-DELIVERABLES.md
Normal file
@@ -0,0 +1,276 @@
|
||||
# Agent-2 (A2) 交付物文档
|
||||
|
||||
## 修改文件列表
|
||||
|
||||
### 核心服务文件
|
||||
1. `OrpaonVision.SiteApp/Runtime/Services/AdvancedRuleEngineService.cs` - 规则引擎服务
|
||||
2. `OrpaonVision.SiteApp/Runtime/Services/AdvancedRuntimeStateMachineService.cs` - 状态机服务
|
||||
3. `OrpaonVision.SiteApp/Runtime/Services/ManualOverrideService.cs` - 人工干预服务
|
||||
4. `OrpaonVision.SiteApp/Runtime/Services/AlarmSystemService.cs` - 报警系统服务
|
||||
|
||||
## 方法级实现描述
|
||||
|
||||
### A2-T01 规则引擎关键规则补齐
|
||||
|
||||
#### 数量检查规则 (EvaluateQuantityCheck)
|
||||
- **功能**:支持多种数量比较操作符
|
||||
- **支持操作符**:equals, >=, <=, >, <, range
|
||||
- **输入格式**:精确数字、比较表达式、范围表达式
|
||||
- **输出**:布尔值,表示数量条件是否满足
|
||||
|
||||
#### 位置检查规则 (EvaluatePositionCheck)
|
||||
- **功能**:检查检测对象是否在指定位置范围内
|
||||
- **支持模式**:all(全部对象)、any(任一对象)、none(无对象)
|
||||
- **位置格式**:矩形范围、圆形范围
|
||||
- **输出**:布尔值,表示位置条件是否满足
|
||||
|
||||
#### 到位检查规则 (EvaluatePlacementCheck)
|
||||
- **功能**:检查特定类别的对象是否达到期望数量
|
||||
- **支持格式**:简单格式、最小数量格式、最大数量格式、范围格式
|
||||
- **多规则支持**:支持分号分隔的多个到位条件
|
||||
- **输出**:布尔值,表示到位条件是否满足
|
||||
|
||||
#### 禁装检查规则 (EvaluateForbiddenCheck)
|
||||
- **功能**:检查是否存在禁用的部件
|
||||
- **支持模式**:exists(存在)、not_exists(不存在)、count_equals(数量等于)、count_greater(数量大于)
|
||||
- **分隔符支持**:逗号、分号
|
||||
- **输出**:布尔值,表示禁装条件是否满足
|
||||
|
||||
#### 顺序检查规则 (EvaluateSequenceCheck)
|
||||
- **功能**:检查检测对象的顺序是否符合预期
|
||||
- **排序方式**:Y坐标、X坐标、置信度、面积
|
||||
- **顺序格式**:大于号分隔、逗号分隔
|
||||
- **输出**:布尔值,表示顺序条件是否满足
|
||||
|
||||
### A2-T02 状态机需求态收敛
|
||||
|
||||
#### 新增状态
|
||||
- **Ready**:就绪状态,等待产品进入
|
||||
- **WaitingProduct**:等待产品状态
|
||||
- **LayerIdentifying**:层识别状态
|
||||
- **NgLocked**:NG锁定状态
|
||||
- **ManualIntervening**:人工干预状态
|
||||
- **Faulted**:故障状态
|
||||
|
||||
#### 显式触发器方法
|
||||
- `TriggerProductEntered()` - 触发产品进入
|
||||
- `TriggerStartLayerIdentification()` - 触发层识别开始
|
||||
- `TriggerLayerIdentificationCompleted()` - 触发层识别完成
|
||||
- `TriggerNgDetected()` - 触发NG检测
|
||||
- `TriggerManualIntervention()` - 触发人工干预
|
||||
- `TriggerFault()` - 触发故障
|
||||
- `TriggerFaultRecovered()` - 触发故障恢复
|
||||
|
||||
#### 守卫条件
|
||||
每个状态转换都有对应的守卫条件方法,确保非法迁移被拦截。
|
||||
|
||||
### A2-T03 人工干预闭环
|
||||
|
||||
#### 五步干预流程
|
||||
1. **权限校验**:检查操作员权限和当前状态
|
||||
2. **条件验证**:验证干预条件是否满足
|
||||
3. **状态迁移**:执行状态机转换
|
||||
4. **执行操作**:执行具体干预动作
|
||||
5. **审计记录**:记录完整的操作日志
|
||||
|
||||
#### 支持的干预类型
|
||||
- **Release**:放行操作,从NG状态恢复到运行状态
|
||||
- **Reset**:复位操作,重置到初始状态
|
||||
- **SkipLayer**:跳层操作,跳过当前层级
|
||||
|
||||
#### 权限级别
|
||||
- **Administrator**:管理员,拥有所有权限
|
||||
- **Supervisor**:主管,拥有大部分权限
|
||||
- **Operator**:操作员,拥有基础权限
|
||||
|
||||
### A2-T04 报警生命周期闭环
|
||||
|
||||
#### 四态生命周期
|
||||
1. **Active**:激活状态,报警刚触发
|
||||
2. **Confirmed**:确认状态,报警已被确认
|
||||
3. **Cleared**:清除状态,报警已被清除
|
||||
4. **Recovered**:恢复状态,根本问题已解决
|
||||
|
||||
#### 报警关联
|
||||
- **会话ID**:关联具体的检测会话
|
||||
- **层级**:关联具体的检测层级
|
||||
- **规则编号**:关联触发报警的规则
|
||||
- **状态机状态**:记录触发时的系统状态
|
||||
|
||||
#### 严重报警处理
|
||||
- **Critical级别**:触发故障状态转换
|
||||
- **High级别**:触发系统暂停
|
||||
- **自动恢复**:条件满足时自动恢复
|
||||
|
||||
## 状态转移图(文本版)
|
||||
|
||||
```
|
||||
Uninitialized
|
||||
↓ (Initialize)
|
||||
Initializing
|
||||
↓ (Initialized)
|
||||
Idle
|
||||
↓ (Start)
|
||||
Ready
|
||||
↓ (ProductEntered)
|
||||
WaitingProduct
|
||||
↓ (StartLayerIdentification)
|
||||
LayerIdentifying
|
||||
↓ (LayerIdentificationCompleted)
|
||||
Running
|
||||
↓ (MoveToNextLayer/MoveToPreviousLayer)
|
||||
Running (继续循环)
|
||||
|
||||
异常路径:
|
||||
Running/LayerIdentifying
|
||||
↓ (NgDetected)
|
||||
NgLocked
|
||||
↓ (ManualIntervention)
|
||||
ManualIntervening
|
||||
↓ (ManualInterventionCompleted)
|
||||
Running
|
||||
|
||||
故障路径:
|
||||
Any State (except ShuttingDown/Uninitialized)
|
||||
↓ (Fault)
|
||||
Faulted
|
||||
↓ (FaultRecovered)
|
||||
Running
|
||||
|
||||
控制路径:
|
||||
Running
|
||||
↓ (Pause)
|
||||
Paused
|
||||
↓ (Resume)
|
||||
Running
|
||||
|
||||
结束路径:
|
||||
Running
|
||||
↓ (Stop)
|
||||
Stopped
|
||||
↓ (Complete)
|
||||
Completed
|
||||
↓ (Shutdown)
|
||||
ShuttingDown
|
||||
```
|
||||
|
||||
## 规则执行流程图(文本版)
|
||||
|
||||
```
|
||||
规则引擎执行流程:
|
||||
|
||||
输入:推理结果 + 规则配置
|
||||
↓
|
||||
输入预校验
|
||||
↓ (校验失败)
|
||||
返回校验失败
|
||||
↓ (校验成功)
|
||||
单规则执行循环
|
||||
↓
|
||||
对于每个规则:
|
||||
├─ 条件评估
|
||||
│ ├─ 数量检查 (EvaluateQuantityCheck)
|
||||
│ ├─ 位置检查 (EvaluatePositionCheck)
|
||||
│ ├─ 到位检查 (EvaluatePlacementCheck)
|
||||
│ ├─ 禁装检查 (EvaluateForbiddenCheck)
|
||||
│ ├─ 顺序检查 (EvaluateSequenceCheck)
|
||||
│ └─ 其他检查
|
||||
├─ 条件聚合 (AND/OR逻辑)
|
||||
└─ 规则结果生成
|
||||
↓
|
||||
冲突仲裁
|
||||
├─ 严重级别比较
|
||||
├─ 规则优先级比较
|
||||
└─ 时间顺序比较
|
||||
↓
|
||||
最终决策
|
||||
├─ 通过 (Pass)
|
||||
├─ 失败 (Fail)
|
||||
└─ 警告 (Warning)
|
||||
↓
|
||||
输出:规则评估结果
|
||||
```
|
||||
|
||||
## 错误码字典
|
||||
|
||||
### 规则引擎错误码
|
||||
- `RULE_EVALUATION_FAILED` - 规则评估失败
|
||||
- `CONDITION_EVALUATION_FAILED` - 条件评估失败
|
||||
- `INVALID_RULE_CONFIGURATION` - 无效的规则配置
|
||||
- `INFERENCE_DATA_MISSING` - 推理数据缺失
|
||||
|
||||
### 状态机错误码
|
||||
- `STATE_TRANSITION_FAILED` - 状态转换失败
|
||||
- `INVALID_STATE_TRANSITION` - 无效的状态转换
|
||||
- `GUARD_CONDITION_FAILED` - 守卫条件失败
|
||||
- `LAYER_OUT_OF_RANGE` - 层级超出范围
|
||||
|
||||
### 人工干预错误码
|
||||
- `PERMISSION_DENIED` - 权限不足
|
||||
- `VALIDATION_FAILED` - 验证失败
|
||||
- `OVERRIDE_OPERATION_FAILED` - 干预操作失败
|
||||
- `AUDIT_LOG_FAILED` - 审计日志失败
|
||||
|
||||
### 报警系统错误码
|
||||
- `TRIGGER_ALARM_FAILED` - 触发报警失败
|
||||
- `CONFIRM_ALARM_FAILED` - 确认报警失败
|
||||
- `CLEAR_ALARM_FAILED` - 清除报警失败
|
||||
- `ALARM_RECOVERY_FAILED` - 报警恢复失败
|
||||
|
||||
### 通用错误码
|
||||
- `INVALID_PARAMETER` - 无效参数
|
||||
- `OPERATION_TIMEOUT` - 操作超时
|
||||
- `SYSTEM_ERROR` - 系统错误
|
||||
- `SERVICE_UNAVAILABLE` - 服务不可用
|
||||
|
||||
## 验证命令和输出摘要
|
||||
|
||||
### 构建验证
|
||||
```bash
|
||||
dotnet build OrpaonVision.SiteApp/OrpaonVision.SiteApp.csproj -v minimal
|
||||
```
|
||||
|
||||
**输出摘要**:
|
||||
- 构建成功,无编译错误
|
||||
- 所有依赖项正确解析
|
||||
- 服务注册配置正确
|
||||
|
||||
### 功能验证建议
|
||||
1. **规则引擎验证**:测试各种规则类型的评估逻辑
|
||||
2. **状态机验证**:测试所有状态转换和守卫条件
|
||||
3. **人工干预验证**:测试权限校验和干预流程
|
||||
4. **报警系统验证**:测试报警生命周期和自动恢复
|
||||
|
||||
## 影响的 GAP 编号
|
||||
|
||||
- **GAP-RUN-003** - 规则引擎关键规则补齐 ✅
|
||||
- **GAP-RUN-004** - 状态机需求态收敛 ✅
|
||||
- **GAP-RUN-005** - 人工干预闭环 ✅
|
||||
- **GAP-RUN-006** - 报警生命周期闭环 ✅
|
||||
|
||||
## 质量保证
|
||||
|
||||
### 代码质量
|
||||
- 所有方法都有详细的XML文档注释
|
||||
- 异常处理完整,错误信息清晰
|
||||
- 日志记录详细,便于调试和监控
|
||||
- 代码结构清晰,符合SOLID原则
|
||||
|
||||
### 性能优化
|
||||
- 使用并发集合提高多线程性能
|
||||
- 避免不必要的对象创建
|
||||
- 合理使用缓存机制
|
||||
- 异步操作不阻塞主线程
|
||||
|
||||
### 安全考虑
|
||||
- 权限检查严格,防止未授权操作
|
||||
- 输入验证完整,防止注入攻击
|
||||
- 敏感信息脱敏,保护数据安全
|
||||
- 审计日志完整,支持合规要求
|
||||
|
||||
## 后续优化建议
|
||||
|
||||
1. **规则引擎**:支持规则模板和动态规则配置
|
||||
2. **状态机**:支持状态转换的可视化配置
|
||||
3. **人工干预**:支持批量干预和定时干预
|
||||
4. **报警系统**:支持报警分级和自动处理策略
|
||||
Reference in New Issue
Block a user