# Workflow Schema

## workflows.json

```json
{
  "workflows": [
    {
      "WorkflowId": "DISPENSE_GUIDE",
      "WorkflowName": "燈號導引 + Sensor 驗證",
      "Version": "0.1.0",
      "StartNodeId": "N001",
      "Nodes": [
        {
          "NodeId": "N001",
          "NodeName": "檢查設備連線",
          "TimeoutMs": 3000,
          "RetryCount": 1,
          "ExecuteCommand": "CheckDeviceOnline",
          "DeviceId": "LED_001",
          "SuccessNextNodeId": "N002",
          "FailNextNodeId": "ERR001"
        }
      ]
    }
  ]
}
```

## 驗證規則

- `WorkflowId` 必填。
- `WorkflowName` 必填。
- `Version` 必填。
- `StartNodeId` 必填，且必須存在於 Nodes。
- `Nodes` 不可為空。
- 同一 Workflow 中 `NodeId` 不可重複。
- `TimeoutMs` 必須大於 0。
- `RetryCount` 不可小於 0。
- `SuccessNextNodeId` / `FailNextNodeId` 若有值，必須指向存在 NodeId 或明確結束代號。
- 節點不得直接寫死設備連線資訊。

