cache_data_structure.json 8.06 KB
{
  // ==================== 地图缓存数据结构 (IMapCacheService) ====================
  "MapCacheData": {
    // 地图唯一标识符
    "MapId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    // 地图编码
    "MapCode": "MAP001",
    // 地图名称
    "MapName": "一号仓库地图",
    // 地图类型 (0=未知, 1=2D平面, 2=3D立体)
    "MapType": 1,
    // 地图版本号
    "Version": "1.0.0",
    // 是否启用
    "Active": true,

    // 节点列表
    "Nodes": [
      {
        // 节点唯一标识符
        "NodeId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
        // 节点编码
        "NodeCode": "N001",
        // X坐标 (米)
        "X": 10.5,
        // Y坐标 (米)
        "Y": 20.3,
        // 角度 (弧度, 可选)
        "Theta": 1.57,
        // 节点类型 (0=普通点, 1=充电点, 2=停靠点, 3=工作点)
        "Type": 0,
        // 是否启用
        "Active": true,
        // 是否倒车进入
        "IsReverseParking": false,
        // 是否允许旋转
        "AllowRotate": true
      },
      {
        "NodeId": "8d7f5680-8536-51ef-c4gd-f18gd2g01bf8",
        "NodeCode": "N002",
        "X": 15.8,
        "Y": 25.6,
        "Theta": null,
        "Type": 1,
        "Active": true,
        "IsReverseParking": true,
        "AllowRotate": false
      }
    ],

    // 边列表
    "Edges": [
      {
        // 边唯一标识符
        "EdgeId": "9e8f7791-9647-62fg-d5he-g29he3h12cg9",
        // 边编码
        "EdgeCode": "E001",
        // 起始节点ID
        "FromNode": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
        // 目标节点ID
        "ToNode": "8d7f5680-8536-51ef-c4gd-f18gd2g01bf8",
        // 边长度 (米)
        "Length": 7.5,
        // 代价权重 (可选, 用于路径规划)
        "Cost": 1.2,
        // 是否启用
        "Active": true,
        // 允许的行驶夹角角度列表 (度, 可选)
        "OrientationAngles": [0, 90, 180, 270],
        // 最大速度 (米/秒, 可选)
        "MaxSpeed": 2.5,
        // 最大角度偏差 (度, 可选)
        "MaxAngleDeviation": 5.0,
        // 是否为曲线
        "IsCurve": false,
        // NURBS控制点 (曲线时使用, 可选)
        "ControlPoints": null
      },
      {
        "EdgeId": "af9g8802-a758-73gh-e6if-h3aif4i23dha",
        "EdgeCode": "E002",
        "FromNode": "8d7f5680-8536-51ef-c4gd-f18gd2g01bf8",
        "ToNode": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
        "Length": 7.5,
        "Cost": 1.0,
        "Active": true,
        "OrientationAngles": [45, 135, 225, 315],
        "MaxSpeed": 3.0,
        "MaxAngleDeviation": 10.0,
        "IsCurve": true,
        "ControlPoints": [
          {
            "X": 12.0,
            "Y": 22.0
          },
          {
            "X": 13.5,
            "Y": 24.0
          }
        ]
      }
    ],

    // 资源区域列表
    "Resources": [
      {
        // 资源唯一标识符
        "ResourceId": "bga0991-b869-84hi-f7jg-i4bjg5j34eib",
        // 资源编码
        "ResourceCode": "RES001",
        // 资源类型 (0=未知, 1=充电区, 2=等待区, 3=作业区)
        "Type": 1,
        // 容量 (可同时容纳的机器人数量, 可选)
        "Capacity": 2,
        // 最大速度 (米/秒)
        "MaxSpeed": 1.0,
        // 能否旋转
        "CanRotate": true
      }
    ]
  },

  // ==================== 机器人缓存数据结构 (IRobotCacheService) ====================

  // 机器人基础信息缓存
  "RobotBasicCache": {
    // 机器人ID (数据库主键)
    "RobotId": "12345",
    // 机器人编码
    "RobotCode": "AGV001",
    // 机器人名称
    "RobotName": "一号AGV",
    // 机器人版本
    "RobotVersion": "2.1.0",
    // 协议名称
    "ProtocolName": "VDA5050",
    // 协议版本
    "ProtocolVersion": "2.0.0",
    // 协议类型 (0=未知, 1=VDA5050, 2=自定义)
    "ProtocolType": 1,
    // 机器人制造商
    "RobotManufacturer": "HuaHang",
    // 机器人序列号
    "RobotSerialNumber": "HH-AGV-20240101-001",
    // 机器人类型 (0=未知, 1=AGV, 2=AMR, 3=叉车)
    "RobotType": 1,
    // IP地址 (可选)
    "IpAddress": "192.168.1.100",
    // 坐标缩放比例
    "CoordinateScale": 1000.0,
    // 是否启用
    "Active": true
  },

  // 机器人状态缓存
  "RobotStatusCache": {
    // 机器人状态 (0=空闲, 1=执行中, 2=错误, 3=充电中, 4=维护中)
    "Status": 1,
    // 在线状态 (0=离线, 1=在线, 2=未知)
    "Online": 1,
    // 电池电量 (百分比, 0-100, 可选)
    "BatteryLevel": 85,
    // 是否正在行驶
    "Driving": true,
    // 是否暂停
    "Paused": false,
    // 是否正在充电
    "Charging": false,
    // 运行模式 (0=自动, 1=半自动, 2=手动, 3=服务, 4=教学)
    "OperatingMode": 0,
    // 错误列表 (可选)
    "Errors": [
      {
        // 错误类型
        "ErrorType": "warning",
        // 错误引用 (错误代码)
        "ErrorReferences": [
          {
            "referenceKey": "ERROR_CODE",
            "referenceValue": "E001"
          }
        ],
        // 错误描述
        "ErrorDescription": "电池电量低于20%",
        // 错误级别 (0=提示, 1=警告, 2=错误, 3=致命)
        "ErrorLevel": 1
      }
    ],
    // 最后更新时间 (ISO 8601格式)
    "UpdatedAt": "2026-01-19T15:23:45.1234567+08:00"
  },

  // 机器人位置缓存
  "RobotLocationCache": {
    // 当前所在地图ID (可选)
    "MapId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    // 当前所在节点ID (可选)
    "NodeId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    // X坐标 (米, 可选)
    "X": 10.5,
    // Y坐标 (米, 可选)
    "Y": 20.3,
    // 角度 (弧度, 可选)
    "Theta": 1.57,
    // 规划路径 (坐标点列表, 可选)
    "Path": [
      [10.5, 20.3],
      [12.0, 22.0],
      [15.8, 25.6]
    ],
    // 最后更新时间 (ISO 8601格式)
    "UpdatedAt": "2026-01-19T15:23:45.1234567+08:00"
  },

  // ==================== Redis存储键名规范 ====================
  "RedisKeys": {
    // 地图数据Hash键: rcs:map:{mapId}
    "MapDataKey": "rcs:map:3fa85f64-5717-4562-b3fc-2c963f66afa6",

    // 地图ID集合键: rcs:maps
    "MapSetKey": "rcs:maps",

    // 节点编码索引Hash键: rcs:map:{mapId}:node:index
    "NodeIndexKey": "rcs:map:3fa85f64-5717-4562-b3fc-2c963f66afa6:node:index",

    // 机器人状态Hash键: rcs:robot:{manufacturer}:{serialNumber}:status
    "RobotStatusKey": "rcs:robot:HuaHang:HH-AGV-20240101-001:status",

    // 机器人位置Hash键: rcs:robot:{manufacturer}:{serialNumber}:location
    "RobotLocationKey": "rcs:robot:HuaHang:HH-AGV-20240101-001:location",

    // 机器人基础信息Hash键: rcs:robot:{manufacturer}:{serialNumber}:basic
    "RobotBasicKey": "rcs:robot:HuaHang:HH-AGV-20240101-001:basic",

    // 所有机器人集合键: rcs:robots
    "RobotsSetKey": "rcs:robots",

    // 在线机器人集合键: rcs:robots:online
    "OnlineRobotsSetKey": "rcs:robots:online",

    // 空闲机器人集合键: rcs:robots:idle
    "IdleRobotsSetKey": "rcs:robots:idle"
  },

  // ==================== 完整示例:机器人完整缓存数据 ====================
  "CompleteRobotCache": {
    "Basic": {
      "RobotId": "12345",
      "RobotCode": "AGV001",
      "RobotName": "一号AGV",
      "RobotVersion": "2.1.0",
      "ProtocolName": "VDA5050",
      "ProtocolVersion": "2.0.0",
      "ProtocolType": 1,
      "RobotManufacturer": "HuaHang",
      "RobotSerialNumber": "HH-AGV-20240101-001",
      "RobotType": 1,
      "IpAddress": "192.168.1.100",
      "CoordinateScale": 1000.0,
      "Active": true
    },
    "Status": {
      "Status": 1,
      "Online": 1,
      "BatteryLevel": 85,
      "Driving": true,
      "Paused": false,
      "Charging": false,
      "OperatingMode": 0,
      "Errors": null,
      "UpdatedAt": "2026-01-19T15:23:45.1234567+08:00"
    },
    "Location": {
      "MapId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "NodeId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "X": 10.5,
      "Y": 20.3,
      "Theta": 1.57,
      "Path": [[10.5, 20.3], [12.0, 22.0], [15.8, 25.6]],
      "UpdatedAt": "2026-01-19T15:23:45.1234567+08:00"
    }
  }
}