diff --git a/CLAUDE.md b/CLAUDE.md index fdd0bf3..55c30cc 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -26,4 +26,4 @@ This is a React Native application for task management. The root component of the application is `App.tsx`, which sets up the `ThemeProvider`, `TasksProvider`, and `NavigationContainer`. -# 请你检查 读取文件后,是否发送请求给 AI 大模型了 +# 请你检查 读取文件,准备编辑文件后,是否发送请求给 AI 大模型了 diff --git a/config.json b/config.json index 3454c8e..da0e297 100644 --- a/config.json +++ b/config.json @@ -36,674 +36,10 @@ { "label": "充电", "value": "CHARGE" }, { "label": "清洁", "value": "CLEAN" } ], - "tasks": [ - { - "id": "task-001", - "name": "炉前缓存区到热处理上料交接区运输", - "status": "IDLE", - "createdAt": "2024-01-15T08:30:00.000Z", - "parameters": { - "startLocation": { - "label": "起点", - "type": "Select", - "value": "FURNACE_BUFFER", - "required": true, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "endLocation": { - "label": "终点", - "type": "Select", - "value": "HEAT_TREATMENT_LOADING", - "required": true, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "robotAction": { - "label": "机器人动作", - "type": "Select", - "value": "TRANSPORT", - "required": true, - "options": [ - { "label": "运输", "value": "TRANSPORT" }, - { "label": "取货", "value": "PICKUP" }, - { "label": "卸货", "value": "DROPOFF" }, - { "label": "等待", "value": "WAIT" }, - { "label": "充电", "value": "CHARGE" }, - { "label": "清洁", "value": "CLEAN" } - ] - }, - "payload": { - "label": "载荷", - "type": "Select", - "value": "满料架-A1", - "required": false, - "options": [ - { "label": "满料架-A1", "value": "满料架-A1" }, - { "label": "满料架-A2", "value": "满料架-A2" }, - { "label": "空料架-B1", "value": "空料架-B1" }, - { "label": "空料架-B2", "value": "空料架-B2" }, - { "label": "空车", "value": "空车" }, - { "label": "钢材-Q235", "value": "钢材-Q235" }, - { "label": "铝合金-6061", "value": "铝合金-6061" } - ] - }, - "locationBay": { - "label": "库位", - "type": "Select", - "value": "AS2_2_001", - "required": false, - "options": [ - { "label": "AS2_2_001", "value": "AS2_2_001" }, - { "label": "AS2_2_002", "value": "AS2_2_002" }, - { "label": "AS2_2_003", "value": "AS2_2_003" }, - { "label": "AS2_2_004", "value": "AS2_2_004" }, - { "label": "AS2_2_005", "value": "AS2_2_005" } - ] - } - } - }, - { - "id": "task-002", - "name": "原料仓库到质检区取货", - "status": "IDLE", - "createdAt": "2024-01-15T09:15:00.000Z", - "parameters": { - "startLocation": { - "label": "起点", - "type": "Select", - "value": "RAW_MATERIAL_WAREHOUSE", - "required": true, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "endLocation": { - "label": "终点", - "type": "Select", - "value": "QUALITY_INSPECTION", - "required": true, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "robotAction": { - "label": "机器人动作", - "type": "Select", - "value": "PICKUP", - "required": true, - "options": [ - { "label": "运输", "value": "TRANSPORT" }, - { "label": "取货", "value": "PICKUP" }, - { "label": "卸货", "value": "DROPOFF" }, - { "label": "等待", "value": "WAIT" }, - { "label": "充电", "value": "CHARGE" }, - { "label": "清洁", "value": "CLEAN" } - ] - }, - "payload": { - "label": "载荷", - "type": "Select", - "value": "钢材-Q235", - "required": false, - "options": [ - { "label": "满料架-A1", "value": "满料架-A1" }, - { "label": "满料架-A2", "value": "满料架-A2" }, - { "label": "空料架-B1", "value": "空料架-B1" }, - { "label": "空料架-B2", "value": "空料架-B2" }, - { "label": "空车", "value": "空车" }, - { "label": "钢材-Q235", "value": "钢材-Q235" }, - { "label": "铝合金-6061", "value": "铝合金-6061" } - ] - }, - "locationBay": { - "label": "库位", - "type": "Select", - "value": "AS2_2_002", - "required": false, - "options": [ - { "label": "AS2_2_001", "value": "AS2_2_001" }, - { "label": "AS2_2_002", "value": "AS2_2_002" }, - { "label": "AS2_2_003", "value": "AS2_2_003" }, - { "label": "AS2_2_004", "value": "AS2_2_004" }, - { "label": "AS2_2_005", "value": "AS2_2_005" } - ] - } - } - }, - { - "id": "task-003", - "name": "质检区到成品存储区卸货", - "status": "COMPLETED", - "createdAt": "2024-01-15T10:00:00.000Z", - "parameters": { - "startLocation": { - "label": "起点", - "type": "Select", - "value": "QUALITY_INSPECTION", - "required": true, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "endLocation": { - "label": "终点", - "type": "Select", - "value": "FINISHED_STORAGE", - "required": true, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "robotAction": { - "label": "机器人动作", - "type": "Select", - "value": "DROPOFF", - "required": true, - "options": [ - { "label": "运输", "value": "TRANSPORT" }, - { "label": "取货", "value": "PICKUP" }, - { "label": "卸货", "value": "DROPOFF" }, - { "label": "等待", "value": "WAIT" }, - { "label": "充电", "value": "CHARGE" }, - { "label": "清洁", "value": "CLEAN" } - ] - }, - "payload": { - "label": "载荷", - "type": "Select", - "value": "铝合金-6061", - "required": false, - "options": [ - { "label": "满料架-A1", "value": "满料架-A1" }, - { "label": "满料架-A2", "value": "满料架-A2" }, - { "label": "空料架-B1", "value": "空料架-B1" }, - { "label": "空料架-B2", "value": "空料架-B2" }, - { "label": "空车", "value": "空车" }, - { "label": "钢材-Q235", "value": "钢材-Q235" }, - { "label": "铝合金-6061", "value": "铝合金-6061" } - ] - }, - "locationBay": { - "label": "库位", - "type": "Select", - "value": "AS2_2_003", - "required": false, - "options": [ - { "label": "AS2_2_001", "value": "AS2_2_001" }, - { "label": "AS2_2_002", "value": "AS2_2_002" }, - { "label": "AS2_2_003", "value": "AS2_2_003" }, - { "label": "AS2_2_004", "value": "AS2_2_004" }, - { "label": "AS2_2_005", "value": "AS2_2_005" } - ] - } - } - }, - { - "id": "task-004", - "name": "AP-1到AP-2空车运输", - "status": "IDLE", - "createdAt": "2024-01-15T11:30:00.000Z", - "parameters": { - "startLocation": { - "label": "起点", - "type": "Select", - "value": "AP-1", - "required": true, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "endLocation": { - "label": "终点", - "type": "Select", - "value": "AP-2", - "required": true, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "robotAction": { - "label": "机器人动作", - "type": "Select", - "value": "TRANSPORT", - "required": true, - "options": [ - { "label": "运输", "value": "TRANSPORT" }, - { "label": "取货", "value": "PICKUP" }, - { "label": "卸货", "value": "DROPOFF" }, - { "label": "等待", "value": "WAIT" }, - { "label": "充电", "value": "CHARGE" }, - { "label": "清洁", "value": "CLEAN" } - ] - }, - "payload": { - "label": "载荷", - "type": "Select", - "value": "空车", - "required": false, - "options": [ - { "label": "满料架-A1", "value": "满料架-A1" }, - { "label": "满料架-A2", "value": "满料架-A2" }, - { "label": "空料架-B1", "value": "空料架-B1" }, - { "label": "空料架-B2", "value": "空料架-B2" }, - { "label": "空车", "value": "空车" }, - { "label": "钢材-Q235", "value": "钢材-Q235" }, - { "label": "铝合金-6061", "value": "铝合金-6061" } - ] - }, - "locationBay": { - "label": "库位", - "type": "Select", - "value": "AS2_2_004", - "required": false, - "options": [ - { "label": "AS2_2_001", "value": "AS2_2_001" }, - { "label": "AS2_2_002", "value": "AS2_2_002" }, - { "label": "AS2_2_003", "value": "AS2_2_003" }, - { "label": "AS2_2_004", "value": "AS2_2_004" }, - { "label": "AS2_2_005", "value": "AS2_2_005" } - ] - } - } - }, - { - "id": "task-005", - "name": "机器人充电任务", - "status": "IDLE", - "createdAt": "2024-01-15T12:00:00.000Z", - "parameters": { - "startLocation": { - "label": "起点", - "type": "Select", - "value": "AP-3", - "required": true, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "endLocation": { - "label": "终点", - "type": "Select", - "value": "AP-3", - "required": true, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "robotAction": { - "label": "机器人动作", - "type": "Select", - "value": "CHARGE", - "required": true, - "options": [ - { "label": "运输", "value": "TRANSPORT" }, - { "label": "取货", "value": "PICKUP" }, - { "label": "卸货", "value": "DROPOFF" }, - { "label": "等待", "value": "WAIT" }, - { "label": "充电", "value": "CHARGE" }, - { "label": "清洁", "value": "CLEAN" } - ] - }, - "payload": { - "label": "载荷", - "type": "Select", - "value": "空车", - "required": false, - "options": [ - { "label": "满料架-A1", "value": "满料架-A1" }, - { "label": "满料架-A2", "value": "满料架-A2" }, - { "label": "空料架-B1", "value": "空料架-B1" }, - { "label": "空料架-B2", "value": "空料架-B2" }, - { "label": "空车", "value": "空车" }, - { "label": "钢材-Q235", "value": "钢材-Q235" }, - { "label": "铝合金-6061", "value": "铝合金-6061" } - ] - } - } - }, - { - "id": "task-006", - "name": "成品存储区清洁任务", - "status": "RUNNING", - "createdAt": "2024-01-15T13:15:00.000Z", - "parameters": { - "startLocation": { - "label": "起点", - "type": "Select", - "value": "FINISHED_STORAGE", - "required": true, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "endLocation": { - "label": "终点", - "type": "Select", - "value": "FINISHED_STORAGE", - "required": true, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "robotAction": { - "label": "机器人动作", - "type": "Select", - "value": "CLEAN", - "required": true, - "options": [ - { "label": "运输", "value": "TRANSPORT" }, - { "label": "取货", "value": "PICKUP" }, - { "label": "卸货", "value": "DROPOFF" }, - { "label": "等待", "value": "WAIT" }, - { "label": "充电", "value": "CHARGE" }, - { "label": "清洁", "value": "CLEAN" } - ] - }, - "payload": { - "label": "载荷", - "type": "Select", - "value": "空车", - "required": false, - "options": [ - { "label": "满料架-A1", "value": "满料架-A1" }, - { "label": "满料架-A2", "value": "满料架-A2" }, - { "label": "空料架-B1", "value": "空料架-B1" }, - { "label": "空料架-B2", "value": "空料架-B2" }, - { "label": "空车", "value": "空车" }, - { "label": "钢材-Q235", "value": "钢材-Q235" }, - { "label": "铝合金-6061", "value": "铝合金-6061" } - ] - } - } - }, - { - "id": "task-007", - "name": "满料架A2从原料仓库到AP-4运输", - "status": "IDLE", - "createdAt": "2024-01-15T14:20:00.000Z", - "parameters": { - "startLocation": { - "label": "起点", - "type": "Select", - "value": "RAW_MATERIAL_WAREHOUSE", - "required": true, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "endLocation": { - "label": "终点", - "type": "Select", - "value": "AP-4", - "required": true, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "waypoint": { - "label": "途经点", - "type": "Select", - "value": "QUALITY_INSPECTION", - "required": false, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "robotAction": { - "label": "机器人动作", - "type": "Select", - "value": "TRANSPORT", - "required": true, - "options": [ - { "label": "运输", "value": "TRANSPORT" }, - { "label": "取货", "value": "PICKUP" }, - { "label": "卸货", "value": "DROPOFF" }, - { "label": "等待", "value": "WAIT" }, - { "label": "充电", "value": "CHARGE" }, - { "label": "清洁", "value": "CLEAN" } - ] - }, - "payload": { - "label": "载荷", - "type": "Select", - "value": "满料架-A2", - "required": false, - "options": [ - { "label": "满料架-A1", "value": "满料架-A1" }, - { "label": "满料架-A2", "value": "满料架-A2" }, - { "label": "空料架-B1", "value": "空料架-B1" }, - { "label": "空料架-B2", "value": "空料架-B2" }, - { "label": "空车", "value": "空车" }, - { "label": "钢材-Q235", "value": "钢材-Q235" }, - { "label": "铝合金-6061", "value": "铝合金-6061" } - ] - }, - "locationBay": { - "label": "库位", - "type": "Select", - "value": "AS2_2_005", - "required": false, - "options": [ - { "label": "AS2_2_001", "value": "AS2_2_001" }, - { "label": "AS2_2_002", "value": "AS2_2_002" }, - { "label": "AS2_2_003", "value": "AS2_2_003" }, - { "label": "AS2_2_004", "value": "AS2_2_004" }, - { "label": "AS2_2_005", "value": "AS2_2_005" } - ] - } - } - }, - { - "id": "task-008", - "name": "AP-5等待任务", - "status": "ERROR", - "createdAt": "2024-01-15T15:45:00.000Z", - "parameters": { - "startLocation": { - "label": "起点", - "type": "Select", - "value": "AP-5", - "required": true, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "endLocation": { - "label": "终点", - "type": "Select", - "value": "AP-5", - "required": true, - "options": [ - { "label": "AP-1", "value": "AP-1" }, - { "label": "AP-2", "value": "AP-2" }, - { "label": "AP-3", "value": "AP-3" }, - { "label": "AP-4", "value": "AP-4" }, - { "label": "AP-5", "value": "AP-5" }, - { "label": "炉前缓存区", "value": "FURNACE_BUFFER" }, - { "label": "热处理上料交接区", "value": "HEAT_TREATMENT_LOADING" }, - { "label": "成品存储区", "value": "FINISHED_STORAGE" }, - { "label": "原料仓库", "value": "RAW_MATERIAL_WAREHOUSE" }, - { "label": "质检区", "value": "QUALITY_INSPECTION" } - ] - }, - "robotAction": { - "label": "机器人动作", - "type": "Select", - "value": "WAIT", - "required": true, - "options": [ - { "label": "运输", "value": "TRANSPORT" }, - { "label": "取货", "value": "PICKUP" }, - { "label": "卸货", "value": "DROPOFF" }, - { "label": "等待", "value": "WAIT" }, - { "label": "充电", "value": "CHARGE" }, - { "label": "清洁", "value": "CLEAN" } - ] - }, - "payload": { - "label": "载荷", - "type": "Select", - "value": "空料架-B1", - "required": false, - "options": [ - { "label": "满料架-A1", "value": "满料架-A1" }, - { "label": "满料架-A2", "value": "满料架-A2" }, - { "label": "空料架-B1", "value": "空料架-B1" }, - { "label": "空料架-B2", "value": "空料架-B2" }, - { "label": "空车", "value": "空车" }, - { "label": "钢材-Q235", "value": "钢材-Q235" }, - { "label": "铝合金-6061", "value": "铝合金-6061" } - ] - } - } - } - ], - "serverUrl": "http://192.168.189.206:8000" + "serverUrl": "http://192.168.189.206:8000", + "apiEndpoints": { + "getTasks": "/api/vwed-task/list", + "getTaskDetail": "/api/vwed-task/{taskId}", + "runTask": "/api/vwed-task/execute/{taskId}" + } } diff --git a/src/components/TaskForm.tsx b/src/components/TaskForm.tsx index 58567fb..a5f0aa0 100644 --- a/src/components/TaskForm.tsx +++ b/src/components/TaskForm.tsx @@ -1,14 +1,7 @@ -import React, { useState, useRef, useEffect } from 'react'; -import { - StyleSheet, - ScrollView, - TouchableOpacity, - View, - Text, -} from 'react-native'; -import { Input, BottomSheet, ListItem, Button } from '@rneui/themed'; +import React, { useState, useEffect } from 'react'; +import { StyleSheet, ScrollView, Text, View } from 'react-native'; +import { Input } from '@rneui/themed'; import { Task, RobotAction, InputParam } from '../types/task'; -import { useTasks } from '../context/TasksContext'; interface TaskFormProps { task: Task; @@ -16,13 +9,6 @@ interface TaskFormProps { } const TaskForm: React.FC = ({ task, onTaskChange }) => { - const { locations, payloads, robotActions } = useTasks(); - const [isVisible, setIsVisible] = useState(false); - const [currentField, setCurrentField] = useState(''); - const [currentItems, setCurrentItems] = useState< - { label: string; value: string }[] - >([]); - useEffect(() => { console.log('TaskForm task prop updated:', task); }, [task]); @@ -42,38 +28,12 @@ const TaskForm: React.FC = ({ task, onTaskChange }) => { onTaskChange(updatedTask); }; - const openBottomSheet = ( - field: string, - items: { label: string; value: string }[], - ) => { - setCurrentField(field); - setCurrentItems(items); - setIsVisible(true); - }; - - const renderDropdown = ( - name: string, - label: string, - value: string, - items: { label: string; value: string }[], - ) => ( - openBottomSheet(name, items)}> - - - ); - const renderFormInput = (param: InputParam) => { const parameter = task.parameters?.[param.name]; const value = parameter?.value || param.defaultValue; - switch (param.type) { - case 'String': - case 'STRING': // + switch (param.type.toLowerCase()) { + case 'string': return ( = ({ task, onTaskChange }) => { {task.detail && task.detail.inputParams ? ( task.detail.inputParams.map(param => renderFormInput(param)) ) : ( - 正在加载任务参数... {task.detail} + + 正在加载任务参数... + )} - - setIsVisible(false)} - > - - {currentItems.map((item, index) => ( - { - handleParamChange(currentField, item.value); - setIsVisible(false); - }} - > - - {item.label} - - - ))} - - ); }; @@ -138,6 +79,12 @@ const styles = StyleSheet.create({ container: { padding: 16, }, + loadingContainer: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + padding: 20, + }, }); export default TaskForm; diff --git a/src/context/TasksContext.tsx b/src/context/TasksContext.tsx index be8ab8f..eb75c95 100644 --- a/src/context/TasksContext.tsx +++ b/src/context/TasksContext.tsx @@ -46,10 +46,10 @@ export const TasksProvider: React.FC<{ children: ReactNode }> = ({ const [isConfigLoaded, setIsConfigLoaded] = useState(false); const [serverUrl, setServerUrl] = useState(null); - const fetchTasks = async (url: string) => { + const fetchTasks = async (baseUrl: string, endpoint: string) => { try { - if (url) { - const fetchUrl = `${url}/api/vwed-task/list?pageNum=1&pageSize=100`; + if (baseUrl && endpoint) { + const fetchUrl = `${baseUrl}${endpoint}?pageNum=1&pageSize=100`; console.log('Fetching tasks from:', fetchUrl); const response = await fetch(fetchUrl); @@ -99,10 +99,10 @@ export const TasksProvider: React.FC<{ children: ReactNode }> = ({ await clearCachedConfig(); const config = await getConfig(); if (config) { - applyConfig(config, false); // Don't load tasks from config + applyConfig(config); // Don't load tasks from config setIsConfigLoaded(true); - if (config.serverUrl) { - await fetchTasks(config.serverUrl); + if (config.serverUrl && config.apiEndpoints) { + await fetchTasks(config.serverUrl, config.apiEndpoints.getTasks); } } else { console.log('没有找到配置文件,使用空数据'); @@ -117,17 +117,23 @@ export const TasksProvider: React.FC<{ children: ReactNode }> = ({ loadApp(); }, []); - const applyConfig = (config: AppConfig, loadTasks: boolean = true) => { + const [apiEndpoints, setApiEndpoints] = useState<{ + getTasks: string; + getTaskDetail: string; + runTask: string; + } | null>(null); + + const applyConfig = (config: AppConfig) => { setLocations(config.locations || []); setLocationsBays(config.locationsBays || []); setPayloads(config.payloads || []); setRobotActions(config.robotActions || []); - if (loadTasks && config.tasks) { - setTasks(config.tasks); - } if (config.serverUrl) { setServerUrl(config.serverUrl); } + if (config.apiEndpoints) { + setApiEndpoints(config.apiEndpoints); + } }; const refreshConfig = async () => { @@ -137,8 +143,8 @@ export const TasksProvider: React.FC<{ children: ReactNode }> = ({ if (config) { applyConfig(config, false); // Don't load tasks from config setIsConfigLoaded(true); - if (config.serverUrl) { - await fetchTasks(config.serverUrl); + if (config.serverUrl && config.apiEndpoints) { + await fetchTasks(config.serverUrl, config.apiEndpoints.getTasks); } } else { console.log('刷新配置时没有找到配置文件'); @@ -160,8 +166,9 @@ export const TasksProvider: React.FC<{ children: ReactNode }> = ({ const fetchTaskDetail = async (taskId: string) => { try { - if (serverUrl) { - const url = `${serverUrl}/api/vwed-task/${taskId}`; + if (serverUrl && apiEndpoints) { + const endpoint = apiEndpoints.getTaskDetail.replace('{taskId}', taskId); + const url = `${serverUrl}${endpoint}`; console.log('Fetching task detail from:', url); const response = await fetch(url); @@ -206,7 +213,7 @@ export const TasksProvider: React.FC<{ children: ReactNode }> = ({ const runTask = async (id: string) => { const task = getTaskById(id); - if (!task || !serverUrl) return; + if (!task || !serverUrl || !apiEndpoints) return; // 更新任务状态为运行中 setTasks(prevTasks => @@ -214,10 +221,22 @@ export const TasksProvider: React.FC<{ children: ReactNode }> = ({ ); try { + // 提取参数值 + const parameters = Object.entries(task.parameters).reduce( + (acc, [key, param]) => { + if (param) { + acc[key] = param.value; + } + return acc; + }, + {} as { [key: string]: any }, + ); + // 获取服务器设置并发送任务执行请求 - await executeTask(serverUrl, task.id, { + const endpoint = apiEndpoints.runTask.replace('{taskId}', task.id); + await executeTask(serverUrl, endpoint, { name: task.name, - parameters: task.parameters, + parameters: parameters, }); // 模拟任务完成(实际项目中应该通过WebSocket或轮询获取任务状态) diff --git a/src/services/configService.ts b/src/services/configService.ts index e33789b..6373a55 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -144,11 +144,11 @@ export const clearCachedConfig = async (): Promise => { // 向服务器发送任务执行请求 export const executeTask = async ( serverUrl: string, - taskId: string, + endpoint: string, taskData: any, ): Promise => { try { - const url = `${serverUrl.replace(/\/$/, '')}/execute-task`; + const url = `${serverUrl.replace(/\/$/, '')}${endpoint}`; console.log('执行任务请求:', url, taskData); const response = await fetch(url, { @@ -156,10 +156,7 @@ export const executeTask = async ( headers: { 'Content-Type': 'application/json', }, - body: JSON.stringify({ - taskId, - ...taskData, - }), + body: JSON.stringify(taskData), }); if (!response.ok) { diff --git a/src/types/config.ts b/src/types/config.ts index b8fd8eb..67762c1 100644 --- a/src/types/config.ts +++ b/src/types/config.ts @@ -25,8 +25,12 @@ export interface AppConfig { locationsBays: LocationOption[]; payloads: PayloadOption[]; robotActions: RobotActionOption[]; - tasks: Task[]; serverUrl?: string; // 服务器地址 + apiEndpoints?: { + getTasks: string; + getTaskDetail: string; + runTask: string; + }; } // 设置存储接口 diff --git a/src/types/task.ts b/src/types/task.ts index 11ef161..f75b383 100644 --- a/src/types/task.ts +++ b/src/types/task.ts @@ -16,10 +16,10 @@ export interface ParameterOption { // 动态参数配置接口 export interface DynamicParameter { - label: string; - type: 'Simple' | 'Select' | 'MultiSelect' | 'Text' | 'Number'; + label?: string; + type?: 'Simple' | 'Select' | 'MultiSelect' | 'Text' | 'Number'; value: string | string[] | number; - required: boolean; + required?: boolean; options?: ParameterOption[]; placeholder?: string; min?: number; @@ -28,12 +28,6 @@ export interface DynamicParameter { // 任务参数 - 支持动态配置 export interface TaskParameters { - startLocation: DynamicParameter; // 起点 - endLocation: DynamicParameter; // 终点 - waypoint?: DynamicParameter; // 途经点 (可选) - robotAction: DynamicParameter; // 机器人动作 - payload: DynamicParameter; // 载荷,比如 '空料架' 或具体的物料ID - locationBay?: DynamicParameter; // 库位 (可选) [key: string]: DynamicParameter | undefined; // 支持扩展参数 }