{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$comment": "分析配置格式4；本地相对引用。字段结构由本规范检查，展开后的跨字段约束由计划模型检查。",
  "title": "Chronaxis 当前分析配置",
  "description": "当前分析配置版本4，兼容单位自动换算。默认采用真实记录间隔，按请求生成结果；引用、单位、驱动与时间范围由AnalysisPlan检查。",
  "type": "object",
  "properties": {
    "config_version": {
      "type": "integer",
      "description": "分析配置结构编号，只接受整数4；旧版本、缺失和错误类型均拒绝，不自动转换。",
      "const": 4
    },
    "transforms": {
      "type": "array",
      "maxItems": 64,
      "description": "版本4在原记录或指定输出时刻计算滚动数值和变化率。",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "用户给这一项起的名称，后续通过此名称引用它。"
          },
          "operation": {
            "enum": [
              "rolling_time_mean",
              "rolling_minimum",
              "rolling_maximum",
              "rolling_integral",
              "adjacent_rate",
              "window_rate",
              "sample_fit_slope"
            ],
            "description": "选择这项计算执行的具名操作。"
          },
          "expr": {
            "type": "string",
            "minLength": 1,
            "description": "从已绑定的信号或派生量计算此项的输入。"
          },
          "unit": {
            "type": "string",
            "minLength": 1,
            "description": "希望结果采用的单位，必须与计算量兼容。"
          },
          "window": {
            "type": "string",
            "pattern": "^\\s*[+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
            "description": "选择窗口范围；变换中的时长必须为正。"
          },
          "step": {
            "type": "string",
            "pattern": "^\\s*[+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
            "description": "两次定时输出之间的实际时间距离，必须为正。"
          },
          "origin": {
            "type": "string",
            "description": "用来对齐输出网格的实际时刻，使用本来源的时间坐标。"
          },
          "max_gap": {
            "type": "string",
            "pattern": "^\\s*[+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
            "description": "相邻两次实际更新允许相隔的最长时间。"
          },
          "partial_policy": {
            "enum": [
              "strict",
              "report"
            ],
            "description": "部分数据可用时，决定保留数值还是返回空值。"
          },
          "minimum_coverage": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "有效数据占所请求窗口的最低比例。"
          },
          "interval": {
            "$ref": "#/properties/calculations/items/properties/interval",
            "description": "选择以实测、固定或原始报文DBC周期计算间隔。"
          }
        },
        "required": [
          "name",
          "operation",
          "expr"
        ],
        "additionalProperties": false,
        "allOf": [
          {
            "if": {
              "required": [
                "operation"
              ],
              "properties": {
                "operation": {
                  "$ref": "#/properties/transforms/items/properties/operation",
                  "description": "选择这项计算执行的具名操作。"
                }
              }
            },
            "then": {
              "if": {
                "properties": {
                  "operation": {
                    "const": "adjacent_rate",
                    "description": "选择这项计算执行的具名操作。"
                  }
                }
              },
              "then": {
                "required": [
                  "max_gap"
                ],
                "properties": {
                  "window": {
                    "not": {},
                    "description": "在当前版本或操作下不能填写字段 window。"
                  },
                  "step": {
                    "not": {},
                    "description": "在当前版本或操作下不能填写字段 step。"
                  },
                  "origin": {
                    "not": {},
                    "description": "在当前版本或操作下不能填写字段 origin。"
                  },
                  "partial_policy": {
                    "not": {},
                    "description": "在当前版本或操作下不能填写字段 partial_policy。"
                  },
                  "minimum_coverage": {
                    "not": {},
                    "description": "在当前版本或操作下不能填写字段 minimum_coverage。"
                  }
                }
              },
              "else": {
                "required": [
                  "window",
                  "step"
                ],
                "properties": {
                  "max_gap": {
                    "not": {},
                    "description": "在当前版本或操作下不能填写字段 max_gap。"
                  }
                }
              }
            }
          }
        ]
      }
    },
    "aggregations": {
      "type": "array",
      "description": "按需汇总单次运行中的计算、配对、事件或窗口结果。",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
            "description": "用户给这一项起的名称，后续通过此名称引用它。"
          },
          "source": {
            "type": "object",
            "description": "选择本次运行要汇总的结果。只引用一个计算、配对、规则或窗口。",
            "properties": {
              "calculation": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "description": "引用要汇总的标量计算项的名称。"
              },
              "sequence": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "description": "引用产生请求和响应结果的配对规则名称。"
              },
              "rule": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "description": "引用产生待计数事件的已声明规则。"
              },
              "window": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "description": "引用生成待统计片段的窗口名称。"
              }
            },
            "minProperties": 1,
            "maxProperties": 1,
            "additionalProperties": false
          },
          "operation": {
            "enum": [
              "count",
              "sum",
              "mean",
              "variance",
              "quantile",
              "median"
            ],
            "description": "对引用的结果行执行的聚合。成功响应的延迟均值和P95只使用已成功配对的延迟。"
          },
          "field": {
            "enum": [
              "value",
              "delay_ns"
            ],
            "description": "可选数值字段；计算结果默认value，配对默认delay_ns。计数不需要数值字段。"
          },
          "group_by": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "enum": [
                "dataset_id",
                "entity_id",
                "session_id",
                "calculation_id",
                "parent_id",
                "sequence_id",
                "rule_id",
                "window_id"
              ],
              "description": "当前结果来源可用的分组字段；每个字段最多选一次。"
            },
            "description": "按这些稳定字段分组。省略时将本次引用结果合为一组。"
          },
          "unit": {
            "type": "string",
            "minLength": 1,
            "description": "汇总结果的显示单位。计数为1；配对延迟可用ms或s。"
          },
          "include_partial": {
            "type": "boolean",
            "description": "是否允许已有的部分数值参与。即使允许，汇总仍保留部分状态。"
          },
          "partial_policy": {
            "enum": [
              "report",
              "strict"
            ],
            "description": "总体不完整时，report可给出已知部分，strict不给出数值。"
          },
          "q": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "分位数位置，quantile必填。median固定取0.5，不填写q。"
          },
          "ddof": {
            "type": "integer",
            "enum": [
              0,
              1
            ],
            "description": "方差的自由度修正，省略为0。"
          }
        },
        "required": [
          "name",
          "source",
          "operation"
        ],
        "additionalProperties": false,
        "allOf": [
          {
            "if": {
              "required": [
                "operation"
              ],
              "properties": {
                "operation": {
                  "$ref": "#/properties/aggregations/items/properties/operation",
                  "description": "对引用的结果行执行的聚合。成功响应的延迟均值和P95只使用已成功配对的延迟。"
                }
              }
            },
            "then": {
              "allOf": [
                {
                  "if": {
                    "properties": {
                      "operation": {
                        "const": "quantile",
                        "description": "选择这项计算执行的具名操作。"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "q"
                    ]
                  },
                  "else": {
                    "properties": {
                      "q": {
                        "not": {},
                        "description": "在当前版本或操作下不能填写字段 q。"
                      }
                    }
                  }
                },
                {
                  "if": {
                    "properties": {
                      "operation": {
                        "const": "variance",
                        "description": "选择这项计算执行的具名操作。"
                      }
                    }
                  },
                  "else": {
                    "properties": {
                      "ddof": {
                        "not": {},
                        "description": "在当前版本或操作下不能填写字段 ddof。"
                      }
                    }
                  }
                },
                {
                  "if": {
                    "properties": {
                      "operation": {
                        "const": "count",
                        "description": "选择这项计算执行的具名操作。"
                      }
                    }
                  },
                  "then": {
                    "properties": {
                      "field": {
                        "not": {},
                        "description": "在当前版本或操作下不能填写字段 field。"
                      },
                      "unit": {
                        "const": "1",
                        "description": "希望结果采用的单位，必须与计算量兼容。"
                      }
                    }
                  }
                },
                {
                  "if": {
                    "required": [
                      "source"
                    ],
                    "properties": {
                      "source": {
                        "$ref": "#/properties/aggregations/items/properties/source",
                        "description": "选择本次运行要汇总的结果。只引用一个计算、配对、规则或窗口。"
                      }
                    }
                  },
                  "then": {
                    "if": {
                      "properties": {
                        "source": {
                          "required": [
                            "sequence"
                          ],
                          "description": "指定聚合所用的一种结果及其名称。"
                        }
                      }
                    },
                    "then": {
                      "properties": {
                        "group_by": {
                          "items": {
                            "enum": [
                              "dataset_id",
                              "entity_id",
                              "session_id",
                              "sequence_id"
                            ],
                            "description": "当前结果来源可用的分组字段；每个字段最多选一次。"
                          },
                          "description": "用选定来源已有的标识对结果行分组。"
                        },
                        "field": {
                          "const": "delay_ns",
                          "description": "指定这项统计从结果行读取的数值列。"
                        }
                      }
                    }
                  }
                },
                {
                  "if": {
                    "required": [
                      "source"
                    ],
                    "properties": {
                      "source": {
                        "$ref": "#/properties/aggregations/items/properties/source",
                        "description": "选择本次运行要汇总的结果。只引用一个计算、配对、规则或窗口。"
                      }
                    }
                  },
                  "then": {
                    "if": {
                      "properties": {
                        "source": {
                          "required": [
                            "calculation"
                          ],
                          "description": "指定聚合所用的一种结果及其名称。"
                        }
                      }
                    },
                    "then": {
                      "properties": {
                        "group_by": {
                          "items": {
                            "enum": [
                              "dataset_id",
                              "entity_id",
                              "session_id",
                              "calculation_id",
                              "parent_id"
                            ],
                            "description": "当前结果来源可用的分组字段；每个字段最多选一次。"
                          },
                          "description": "用选定来源已有的标识对结果行分组。"
                        },
                        "field": {
                          "const": "value",
                          "description": "指定这项统计从结果行读取的数值列。"
                        }
                      }
                    }
                  }
                },
                {
                  "if": {
                    "required": [
                      "source"
                    ],
                    "properties": {
                      "source": {
                        "$ref": "#/properties/aggregations/items/properties/source",
                        "description": "选择本次运行要汇总的结果。只引用一个计算、配对、规则或窗口。"
                      }
                    }
                  },
                  "then": {
                    "if": {
                      "properties": {
                        "source": {
                          "required": [
                            "rule"
                          ],
                          "description": "指定聚合所用的一种结果及其名称。"
                        }
                      }
                    },
                    "then": {
                      "properties": {
                        "group_by": {
                          "items": {
                            "enum": [
                              "dataset_id",
                              "entity_id",
                              "session_id",
                              "rule_id"
                            ],
                            "description": "当前结果来源可用的分组字段；每个字段最多选一次。"
                          },
                          "description": "用选定来源已有的标识对结果行分组。"
                        },
                        "operation": {
                          "const": "count",
                          "description": "选择这项计算执行的具名操作。"
                        },
                        "field": {
                          "not": {},
                          "description": "在当前版本或操作下不能填写字段 field。"
                        }
                      }
                    }
                  }
                },
                {
                  "if": {
                    "required": [
                      "source"
                    ],
                    "properties": {
                      "source": {
                        "$ref": "#/properties/aggregations/items/properties/source",
                        "description": "选择本次运行要汇总的结果。只引用一个计算、配对、规则或窗口。"
                      }
                    }
                  },
                  "then": {
                    "if": {
                      "properties": {
                        "source": {
                          "required": [
                            "window"
                          ],
                          "description": "指定聚合所用的一种结果及其名称。"
                        }
                      }
                    },
                    "then": {
                      "properties": {
                        "group_by": {
                          "items": {
                            "enum": [
                              "dataset_id",
                              "entity_id",
                              "session_id",
                              "window_id"
                            ],
                            "description": "当前结果来源可用的分组字段；每个字段最多选一次。"
                          },
                          "description": "用选定来源已有的标识对结果行分组。"
                        },
                        "operation": {
                          "const": "count",
                          "description": "选择这项计算执行的具名操作。"
                        },
                        "field": {
                          "not": {},
                          "description": "在当前版本或操作下不能填写字段 field。"
                        }
                      }
                    }
                  }
                }
              ]
            }
          }
        ]
      }
    },
    "lookups": {
      "type": "array",
      "maxItems": 64,
      "description": "版本4的一维标定表，供lookup函数按名称引用。输入轴在其声明单位中严格递增，步骤模式保留表值的定宽类型。",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "points",
          "input_unit",
          "unit"
        ],
        "properties": {
          "name": {
            "$ref": "#/properties/dataset/properties/name",
            "description": "表达式引用的唯一表名。"
          },
          "input_unit": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "标定轴单位，兼容的查询输入按此单位换算。"
          },
          "unit": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "希望结果采用的单位，必须与计算量兼容。"
          },
          "points": {
            "type": "array",
            "minItems": 2,
            "maxItems": 4096,
            "description": "按输入从小到大排列的[输入,输出]数值对。有限轴、定宽整数和精度由加载器核验。",
            "items": {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "items": {
                "type": "number"
              }
            }
          }
        }
      }
    },
    "dataset": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
          "not": {
            "enum": [
              "abs",
              "isclose",
              "False",
              "None",
              "True",
              "and",
              "as",
              "assert",
              "async",
              "await",
              "break",
              "class",
              "continue",
              "def",
              "del",
              "elif",
              "else",
              "except",
              "finally",
              "for",
              "from",
              "global",
              "if",
              "import",
              "in",
              "is",
              "lambda",
              "nonlocal",
              "not",
              "or",
              "pass",
              "raise",
              "return",
              "try",
              "while",
              "with",
              "yield"
            ],
            "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
          },
          "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
        },
        "entity": {
          "type": "string",
          "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
          "not": {
            "enum": [
              "abs",
              "isclose",
              "False",
              "None",
              "True",
              "and",
              "as",
              "assert",
              "async",
              "await",
              "break",
              "class",
              "continue",
              "def",
              "del",
              "elif",
              "else",
              "except",
              "finally",
              "for",
              "from",
              "global",
              "if",
              "import",
              "in",
              "is",
              "lambda",
              "nonlocal",
              "not",
              "or",
              "pass",
              "raise",
              "return",
              "try",
              "while",
              "with",
              "yield"
            ],
            "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
          },
          "description": "被分析对象的标识，例如设备或实验编号；通用核心不预设车辆含义。 省略时使用dataset.name。"
        },
        "session": {
          "type": "string",
          "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
          "not": {
            "enum": [
              "abs",
              "isclose",
              "False",
              "None",
              "True",
              "and",
              "as",
              "assert",
              "async",
              "await",
              "break",
              "class",
              "continue",
              "def",
              "del",
              "elif",
              "else",
              "except",
              "finally",
              "for",
              "from",
              "global",
              "if",
              "import",
              "in",
              "is",
              "lambda",
              "nonlocal",
              "not",
              "or",
              "pass",
              "raise",
              "return",
              "try",
              "while",
              "with",
              "yield"
            ],
            "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
          },
          "description": "本次共同分析会话的标识。同会话联合信号必须有明确可比较的时间基准。 省略时使用dataset.name，运行状态按任务隔离。"
        },
        "domain": {
          "type": "object",
          "properties": {
            "start": {
              "type": "string",
              "anyOf": [
                {
                  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$"
                },
                {
                  "pattern": "^\\s*\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}"
                }
              ],
              "description": "分析范围的起点，使用带单位相对时间或明确时区的绝对时刻。"
            },
            "end": {
              "type": "string",
              "anyOf": [
                {
                  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$"
                },
                {
                  "pattern": "^\\s*\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}"
                }
              ],
              "description": "分析范围不包含的终点，必须与起点使用相同时间坐标且不早于起点。"
            }
          },
          "required": [
            "start",
            "end"
          ],
          "additionalProperties": false,
          "description": "请求分析的半开时间范围[start,end)，包含起点、不包含终点。普通分析与逐消息累计均可省略，由实际观测确定范围；显式填写时必须同时给出start和end，null或空对象不等于省略。"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": true,
          "description": "附加说明对象；允许自定义JSON原生值，但不参与隐藏转换、模板执行或业务参数推断。"
        }
      },
      "required": [
        "name"
      ],
      "additionalProperties": false,
      "description": "本次分析对象、会话与请求时间范围。请求范围不等于实际采集覆盖。"
    },
    "sources": {
      "type": "array",
      "minItems": 1,
      "items": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "来源在本计划内的名称；省略时按声明位置生成source_1、source_2等。后续source引用使用此名称，不用于猜测原字段或同步。"
              },
              "time": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "unit": {
                        "enum": [
                          "s",
                          "ms",
                          "us",
                          "ns"
                        ],
                        "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。可选值：\"s\"：秒；\"ms\"：毫秒；\"us\"：微秒；\"ns\"：纳秒。"
                      },
                      "offset": {
                        "type": "string",
                        "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                        "description": "应用到来源时间的固定偏移，可正可负，必须带s/ms/us/ns单位；不是时区或日期。",
                        "default": "0s"
                      },
                      "time_type": {
                        "const": "relative",
                        "description": "时间坐标类型：相对公共起点，或带时区依据的绝对时间。 固定值：\"relative\"（相对明确公共起点的时间）。"
                      },
                      "clock": {
                        "type": "string",
                        "minLength": 1,
                        "pattern": "\\S",
                        "description": "相对时间起点的共享名称；仅对确实共用起点的数据填写同一个值，省略不自动同步。"
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "unit": {
                        "enum": [
                          "s",
                          "ms",
                          "us",
                          "ns",
                          "ISO8601"
                        ],
                        "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。可选值：\"s\"：秒；\"ms\"：毫秒；\"us\"：微秒；\"ns\"：纳秒；\"ISO8601\"：包含日期和时区依据的时间文本。"
                      },
                      "offset": {
                        "type": "string",
                        "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                        "description": "应用到来源时间的固定偏移，可正可负，必须带s/ms/us/ns单位；不是时区或日期。",
                        "default": "0s"
                      },
                      "timezone": {
                        "type": "string",
                        "minLength": 1,
                        "pattern": "\\S",
                        "description": "绝对时间缺少自身时区时采用的明确时区，例如UTC或IANA名称；不读取机器默认时区作为配置。"
                      },
                      "time_type": {
                        "const": "absolute",
                        "description": "时间坐标类型：相对公共起点，或带时区依据的绝对时间。 固定值：\"absolute\"（有时区依据的绝对时间）。"
                      }
                    },
                    "required": [
                      "time_type"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "来源时间的类型、单位、时钟和偏移设置。time_type省略为relative，clock省略生成来源独立起点；只有有同步依据的多来源才填写共同clock。"
              },
              "metadata": {
                "type": "object",
                "additionalProperties": true,
                "description": "附加说明对象；允许自定义JSON原生值，但不参与隐藏转换、模板执行或业务参数推断。"
              },
              "rows": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "time": {
                      "type": "string",
                      "anyOf": [
                        {
                          "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$"
                        },
                        {
                          "pattern": "^\\s*\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}"
                        }
                      ],
                      "description": "来源时间的类型、单位、时钟和偏移设置。time_type省略为relative，clock省略生成来源独立起点；只有有同步依据的多来源才填写共同clock。"
                    },
                    "values": {
                      "type": "object",
                      "additionalProperties": {
                        "type": [
                          "number",
                          "string",
                          "boolean",
                          "null"
                        ]
                      },
                      "description": "本条内存记录的原字段到原生值的映射。原字段可含点号，表达式通过signals别名引用。"
                    }
                  },
                  "required": [
                    "time",
                    "values"
                  ],
                  "additionalProperties": false
                },
                "description": "内存来源的有序记录数组，每条含time和原字段values；不会自动排序掩盖乱序。"
              },
              "source_type": {
                "const": "memory",
                "description": "数据来源类型，决定使用哪个读取器及其必需字段。 固定值：\"memory\"（配置内有序内存记录）。"
              }
            },
            "required": [
              "source_type",
              "rows"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "来源在本计划内的名称；省略时按声明位置生成source_1、source_2等。后续source引用使用此名称，不用于猜测原字段或同步。"
              },
              "time": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "unit": {
                        "enum": [
                          "s",
                          "ms",
                          "us",
                          "ns"
                        ],
                        "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。可选值：\"s\"：秒；\"ms\"：毫秒；\"us\"：微秒；\"ns\"：纳秒。"
                      },
                      "offset": {
                        "type": "string",
                        "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                        "description": "应用到来源时间的固定偏移，可正可负，必须带s/ms/us/ns单位；不是时区或日期。",
                        "default": "0s"
                      },
                      "time_type": {
                        "const": "relative",
                        "description": "时间坐标类型：相对公共起点，或带时区依据的绝对时间。 固定值：\"relative\"（相对明确公共起点的时间）。"
                      },
                      "clock": {
                        "type": "string",
                        "minLength": 1,
                        "pattern": "\\S",
                        "description": "相对时间起点的共享名称；仅对确实共用起点的数据填写同一个值，省略不自动同步。"
                      }
                    },
                    "required": [
                      "unit"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "unit": {
                        "enum": [
                          "s",
                          "ms",
                          "us",
                          "ns",
                          "ISO8601"
                        ],
                        "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。可选值：\"s\"：秒；\"ms\"：毫秒；\"us\"：微秒；\"ns\"：纳秒；\"ISO8601\"：包含日期和时区依据的时间文本。"
                      },
                      "offset": {
                        "type": "string",
                        "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                        "description": "应用到来源时间的固定偏移，可正可负，必须带s/ms/us/ns单位；不是时区或日期。",
                        "default": "0s"
                      },
                      "timezone": {
                        "type": "string",
                        "minLength": 1,
                        "pattern": "\\S",
                        "description": "绝对时间缺少自身时区时采用的明确时区，例如UTC或IANA名称；不读取机器默认时区作为配置。"
                      },
                      "time_type": {
                        "const": "absolute",
                        "description": "时间坐标类型：相对公共起点，或带时区依据的绝对时间。 固定值：\"absolute\"（有时区依据的绝对时间）。"
                      }
                    },
                    "required": [
                      "time_type",
                      "unit"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "来源时间的类型、单位、时钟和偏移设置。time_type省略为relative，clock省略生成来源独立起点；只有有同步依据的多来源才填写共同clock。"
              },
              "metadata": {
                "type": "object",
                "additionalProperties": true,
                "description": "附加说明对象；允许自定义JSON原生值，但不参与隐藏转换、模板执行或业务参数推断。"
              },
              "path": {
                "oneOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "文件、目录或通配符路径。"
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "path"
                    ],
                    "properties": {
                      "path": {
                        "type": "string",
                        "minLength": 1,
                        "description": "本项文件、目录或通配符路径。"
                      },
                      "offset": {
                        "type": "string",
                        "minLength": 1,
                        "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                      }
                    }
                  },
                  {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 4096,
                    "items": {
                      "oneOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "文件、目录或通配符路径。"
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "path"
                          ],
                          "properties": {
                            "path": {
                              "type": "string",
                              "minLength": 1,
                              "description": "本项文件、目录或通配符路径。"
                            },
                            "offset": {
                              "type": "string",
                              "minLength": 1,
                              "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                            }
                          }
                        }
                      ],
                      "description": "路径文字，或带自身offset的文件声明。"
                    },
                    "description": "保持声明顺序的路径列表；各目录匹配集合内部自然排序。"
                  }
                ],
                "description": "输入文件、目录或通配符，支持单项及列表。path和paths不能同时填写。"
              },
              "paths": {
                "oneOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "文件、目录或通配符路径。"
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "path"
                    ],
                    "properties": {
                      "path": {
                        "type": "string",
                        "minLength": 1,
                        "description": "本项文件、目录或通配符路径。"
                      },
                      "offset": {
                        "type": "string",
                        "minLength": 1,
                        "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                      }
                    }
                  },
                  {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 4096,
                    "items": {
                      "oneOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "文件、目录或通配符路径。"
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "path"
                          ],
                          "properties": {
                            "path": {
                              "type": "string",
                              "minLength": 1,
                              "description": "本项文件、目录或通配符路径。"
                            },
                            "offset": {
                              "type": "string",
                              "minLength": 1,
                              "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                            }
                          }
                        }
                      ],
                      "description": "路径文字，或带自身offset的文件声明。"
                    },
                    "description": "保持声明顺序的路径列表；各目录匹配集合内部自然排序。"
                  }
                ],
                "description": "输入文件、目录或通配符，支持单项及列表。path和paths不能同时填写。"
              },
              "time_column": {
                "type": "string",
                "minLength": 1,
                "pattern": "\\S",
                "description": "已解码信号CSV的时间列名，按来源time的单位和坐标解释。"
              },
              "source_type": {
                "const": "signal_csv",
                "description": "数据来源类型，决定使用哪个读取器及其必需字段。 固定值：\"signal_csv\"（已解码信号CSV）。"
              },
              "reader": {
                "type": "object",
                "properties": {
                  "encoding": {
                    "type": "string",
                    "minLength": 1,
                    "pattern": "\\S",
                    "description": "输入文本编码。用于真实读取；静态检查不据此判断文件可读。 已解码CSV默认utf-8-sig，兼容文件开头带BOM或不带BOM的UTF-8；显式编码优先，不删除文件中间的U+FEFF字符。",
                    "default": "utf-8-sig"
                  },
                  "delimiter": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1,
                    "pattern": "^[^\\r\\n]$",
                    "description": "已解码信号CSV的单字符分隔符，不能使用换行符。",
                    "default": ","
                  },
                  "missing_values": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "uniqueItems": true,
                    "description": "显式视为缺失的文本列表；缺失不会自动转换为零。",
                    "default": [
                      ""
                    ]
                  }
                },
                "required": [],
                "additionalProperties": false,
                "description": "与本来源格式有关的读取、文本解析和解码选项；省略适用参数时采用已说明的默认值。"
              }
            },
            "required": [
              "source_type",
              "time",
              "time_column"
            ],
            "additionalProperties": false,
            "oneOf": [
              {
                "required": [
                  "path"
                ],
                "not": {
                  "required": [
                    "paths"
                  ]
                }
              },
              {
                "required": [
                  "paths"
                ],
                "not": {
                  "required": [
                    "path"
                  ]
                }
              }
            ]
          },
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "来源在本计划内的名称；省略时按声明位置生成source_1、source_2等。后续source引用使用此名称，不用于猜测原字段或同步。"
              },
              "time": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "unit": {
                        "const": "s",
                        "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。 固定值：\"s\"（秒）。"
                      },
                      "offset": {
                        "type": "string",
                        "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                        "description": "应用到来源时间的固定偏移，可正可负，必须带s/ms/us/ns单位；不是时区或日期。",
                        "default": "0s"
                      },
                      "time_type": {
                        "const": "relative",
                        "description": "时间坐标类型：相对公共起点，或带时区依据的绝对时间。 固定值：\"relative\"（相对明确公共起点的时间）。"
                      },
                      "clock": {
                        "type": "string",
                        "minLength": 1,
                        "pattern": "\\S",
                        "description": "相对时间起点的共享名称；仅对确实共用起点的数据填写同一个值，省略不自动同步。"
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "unit": {
                        "const": "s",
                        "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。 固定值：\"s\"（秒）。"
                      },
                      "offset": {
                        "type": "string",
                        "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                        "description": "应用到来源时间的固定偏移，可正可负，必须带s/ms/us/ns单位；不是时区或日期。",
                        "default": "0s"
                      },
                      "time_type": {
                        "const": "absolute",
                        "description": "时间坐标类型：相对公共起点，或带时区依据的绝对时间。 固定值：\"absolute\"（有时区依据的绝对时间）。"
                      }
                    },
                    "required": [
                      "time_type"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "来源时间的类型、单位、时钟和偏移设置。time_type省略为relative，clock省略生成来源独立起点；只有有同步依据的多来源才填写共同clock。"
              },
              "legacy_profile": {
                "const": "sclicer-functions-v1",
                "description": "BLF既有读取/解码实现标识，可省略，默认sclicer-functions-v1；显式提供时只接受该已接入实现。"
              },
              "path": {
                "oneOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "文件、目录或通配符路径。"
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "path"
                    ],
                    "properties": {
                      "path": {
                        "type": "string",
                        "minLength": 1,
                        "description": "本项文件、目录或通配符路径。"
                      },
                      "offset": {
                        "type": "string",
                        "minLength": 1,
                        "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                      }
                    }
                  },
                  {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 4096,
                    "items": {
                      "oneOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "文件、目录或通配符路径。"
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "path"
                          ],
                          "properties": {
                            "path": {
                              "type": "string",
                              "minLength": 1,
                              "description": "本项文件、目录或通配符路径。"
                            },
                            "offset": {
                              "type": "string",
                              "minLength": 1,
                              "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                            }
                          }
                        }
                      ],
                      "description": "路径文字，或带自身offset的文件声明。"
                    },
                    "description": "保持声明顺序的路径列表；各目录匹配集合内部自然排序。"
                  }
                ],
                "description": "输入文件、目录或通配符，支持单项及列表。path和paths不能同时填写。"
              },
              "paths": {
                "oneOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "文件、目录或通配符路径。"
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "path"
                    ],
                    "properties": {
                      "path": {
                        "type": "string",
                        "minLength": 1,
                        "description": "本项文件、目录或通配符路径。"
                      },
                      "offset": {
                        "type": "string",
                        "minLength": 1,
                        "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                      }
                    }
                  },
                  {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 4096,
                    "items": {
                      "oneOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "文件、目录或通配符路径。"
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "path"
                          ],
                          "properties": {
                            "path": {
                              "type": "string",
                              "minLength": 1,
                              "description": "本项文件、目录或通配符路径。"
                            },
                            "offset": {
                              "type": "string",
                              "minLength": 1,
                              "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                            }
                          }
                        }
                      ],
                      "description": "路径文字，或带自身offset的文件声明。"
                    },
                    "description": "保持声明顺序的路径列表；各目录匹配集合内部自然排序。"
                  }
                ],
                "description": "输入文件、目录或通配符，支持单项及列表。path和paths不能同时填写。"
              },
              "dbc_by_channel": {
                "type": "object",
                "minProperties": 1,
                "maxProperties": 1,
                "propertyNames": {
                  "pattern": "^[1-9][0-9]*(?![\\s\\S])"
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1,
                  "pattern": "\\S"
                },
                "description": "唯一目标通道到DBC文件的显式映射；通道键使用从1开始、无前导零的正整数文本，DBC路径按声明文件定位。"
              },
              "metadata": {
                "type": "object",
                "additionalProperties": true,
                "description": "附加说明对象；允许自定义JSON原生值，但不参与隐藏转换、模板执行或业务参数推断。"
              },
              "source_type": {
                "const": "can_blf",
                "description": "数据来源类型，决定使用哪个读取器及其必需字段。 固定值：\"can_blf\"（原始CAN二进制BLF）。"
              },
              "reader": {
                "type": "object",
                "properties": {
                  "decode_policy": {
                    "enum": [
                      "strict",
                      "partial",
                      "legacy"
                    ],
                    "default": "strict",
                    "description": "已选CAN报文的载荷长度检查政策，默认strict。strict：实际载荷与DBC长度相同，且DLC与字节数一致；partial：允许载荷短于DBC，但不能超过DBC长度或出现DLC与实际字节数不一致，实际解码仍沿现有实现；legacy：保留原实现的解码调用和长度处理。"
                  },
                  "decode_scope": {
                    "type": "string",
                    "enum": [
                      "all",
                      "requested"
                    ],
                    "default": "requested",
                    "description": "CAN解码尝试范围。默认requested，只解码当前分析需要的报文/字段；all扩大尝试解码的范围。对纯BLF串行接续，strict/partial跳过远程帧和错误帧。all不保证每帧有DBC定义、解码成功或生成逐帧诊断；选择all本身不要求填写dataset.domain。文件并行和time_order只支持requested。"
                  },
                  "input_check": {
                    "type": "string",
                    "enum": [
                      "auto",
                      "full"
                    ],
                    "default": "auto",
                    "description": "CAN输入检查范围。auto按消费者选择必要检查，full检查全部原帧和时间，不强制解码无关信号。可选值：\"auto\"：按实际消费者选择必要检查；\"full\"：检查全部原帧和时间。"
                  }
                },
                "required": [],
                "additionalProperties": false,
                "description": "与本来源格式有关的读取、文本解析和解码选项；省略适用参数时采用已说明的默认值。"
              },
              "file_merge": {
                "enum": [
                  "concatenate",
                  "time_order"
                ],
                "default": "concatenate",
                "description": "控制同一来源的多个文件如何衔接。concatenate按paths顺序读取，仅在任务要求检查的时间范围内拒绝回退；time_order要求各文件中参与排序的记录时间有序，按记录时间、文件位置、原记录顺序稳定归并。保留重叠报文，不自动平移时间或去重。该选择与进程数无关。"
              }
            },
            "required": [
              "source_type",
              "dbc_by_channel"
            ],
            "oneOf": [
              {
                "required": [
                  "path"
                ],
                "not": {
                  "required": [
                    "paths"
                  ]
                }
              },
              {
                "required": [
                  "paths"
                ],
                "not": {
                  "required": [
                    "path"
                  ]
                }
              }
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "来源在本计划内的名称；省略时按声明位置生成source_1、source_2等。后续source引用使用此名称，不用于猜测原字段或同步。"
              },
              "time": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "unit": {
                        "const": "s",
                        "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。 固定值：\"s\"（秒）。"
                      },
                      "offset": {
                        "type": "string",
                        "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                        "description": "应用到来源时间的固定偏移，可正可负，必须带s/ms/us/ns单位；不是时区或日期。",
                        "default": "0s"
                      },
                      "time_type": {
                        "const": "relative",
                        "description": "时间坐标类型：相对公共起点，或带时区依据的绝对时间。 固定值：\"relative\"（相对明确公共起点的时间）。"
                      },
                      "clock": {
                        "type": "string",
                        "minLength": 1,
                        "pattern": "\\S",
                        "description": "相对时间起点的共享名称；仅对确实共用起点的数据填写同一个值，省略不自动同步。"
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "unit": {
                        "const": "s",
                        "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。 固定值：\"s\"（秒）。"
                      },
                      "offset": {
                        "type": "string",
                        "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                        "description": "应用到来源时间的固定偏移，可正可负，必须带s/ms/us/ns单位；不是时区或日期。",
                        "default": "0s"
                      },
                      "time_type": {
                        "const": "absolute",
                        "description": "时间坐标类型：相对公共起点，或带时区依据的绝对时间。 固定值：\"absolute\"（有时区依据的绝对时间）。"
                      },
                      "timezone": {
                        "type": "string",
                        "description": "采集时间的固定时区，填写UTC或带符号小时分钟，例如+08:00。"
                      }
                    },
                    "required": [
                      "time_type"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "来源时间的类型、单位、时钟和偏移设置。time_type省略为relative，clock省略生成来源独立起点；只有有同步依据的多来源才填写共同clock。"
              },
              "path": {
                "oneOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "文件、目录或通配符路径。"
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "path"
                    ],
                    "properties": {
                      "path": {
                        "type": "string",
                        "minLength": 1,
                        "description": "本项文件、目录或通配符路径。"
                      },
                      "offset": {
                        "type": "string",
                        "minLength": 1,
                        "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                      }
                    }
                  },
                  {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 4096,
                    "items": {
                      "oneOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "文件、目录或通配符路径。"
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "path"
                          ],
                          "properties": {
                            "path": {
                              "type": "string",
                              "minLength": 1,
                              "description": "本项文件、目录或通配符路径。"
                            },
                            "offset": {
                              "type": "string",
                              "minLength": 1,
                              "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                            }
                          }
                        }
                      ],
                      "description": "路径文字，或带自身offset的文件声明。"
                    },
                    "description": "保持声明顺序的路径列表；各目录匹配集合内部自然排序。"
                  }
                ],
                "description": "输入文件、目录或通配符，支持单项及列表。path和paths不能同时填写。"
              },
              "paths": {
                "oneOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "文件、目录或通配符路径。"
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "path"
                    ],
                    "properties": {
                      "path": {
                        "type": "string",
                        "minLength": 1,
                        "description": "本项文件、目录或通配符路径。"
                      },
                      "offset": {
                        "type": "string",
                        "minLength": 1,
                        "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                      }
                    }
                  },
                  {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 4096,
                    "items": {
                      "oneOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "文件、目录或通配符路径。"
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "path"
                          ],
                          "properties": {
                            "path": {
                              "type": "string",
                              "minLength": 1,
                              "description": "本项文件、目录或通配符路径。"
                            },
                            "offset": {
                              "type": "string",
                              "minLength": 1,
                              "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                            }
                          }
                        }
                      ],
                      "description": "路径文字，或带自身offset的文件声明。"
                    },
                    "description": "保持声明顺序的路径列表；各目录匹配集合内部自然排序。"
                  }
                ],
                "description": "输入文件、目录或通配符，支持单项及列表。path和paths不能同时填写。"
              },
              "offsets": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                  "description": "固定时间偏移，只接受数值与s/ms/us/ns单位，不接受日期。"
                },
                "minItems": 1,
                "maxItems": 4096,
                "description": "按输入文件顺序提供的时间偏移，数量须匹配文件列表，不能借偏移默默重排文件。"
              },
              "dbc_by_channel": {
                "type": "object",
                "minProperties": 1,
                "maxProperties": 1,
                "patternProperties": {
                  "^[1-9][0-9]*(?![\\s\\S])": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "additionalProperties": false,
                "description": "唯一目标通道到DBC文件的显式映射；通道键使用从1开始、无前导零的正整数文本，DBC路径按声明文件定位。"
              },
              "metadata": {
                "type": "object",
                "description": "附加说明对象；允许自定义JSON原生值，但不参与隐藏转换、模板执行或业务参数推断。"
              },
              "source_type": {
                "const": "can_asc",
                "description": "数据来源类型，决定使用哪个读取器及其必需字段。 固定值：\"can_asc\"（原始CAN文本ASC）。"
              },
              "reader": {
                "type": "object",
                "properties": {
                  "version": {
                    "enum": [
                      "vector-asc-v1",
                      "vector-asc-statistics-v1",
                      "sclicer-asc-v1"
                    ],
                    "description": "选择ASC行布局。默认vector-asc-v1读取标准Vector ASC及可选的Length/BitCount/ID统计尾，字段顺序、数值和ID仍严格检查。vector-asc-statistics-v1保留显式标准统计入口；sclicer-asc-v1用于Sclicer的不同FD排列，不自动混猜。"
                  },
                  "encoding": {
                    "type": "string",
                    "minLength": 1,
                    "description": "输入文本编码。用于真实读取；静态检查不据此判断文件可读。 CAN文本解析默认utf-8-sig。",
                    "default": "utf-8-sig"
                  },
                  "decode_policy": {
                    "enum": [
                      "strict",
                      "partial",
                      "legacy"
                    ],
                    "default": "strict",
                    "description": "已选CAN报文的载荷长度检查政策，默认strict。strict：实际载荷与DBC长度相同，且DLC与字节数一致；partial：允许载荷短于DBC，但不能超过DBC长度或出现DLC与实际字节数不一致，实际解码仍沿现有实现；legacy：保留原实现的解码调用和长度处理。"
                  },
                  "input_check": {
                    "type": "string",
                    "enum": [
                      "auto",
                      "full"
                    ],
                    "default": "auto",
                    "description": "auto按实际消费者检查时间顺序；ASC普通分析仅检查所需通道/ID，来源范围仍取同次全部记录的最早/最晚时间。full或原帧导出检查全部记录顺序；任何模式都不自动排序或修改时间。"
                  }
                },
                "required": [],
                "additionalProperties": false,
                "description": "与本来源格式有关的读取、文本解析和解码选项；省略适用参数时采用已说明的默认值。"
              },
              "file_merge": {
                "enum": [
                  "concatenate",
                  "time_order"
                ],
                "default": "concatenate",
                "description": "控制同一来源的多个文件如何衔接。concatenate按paths顺序读取，仅在任务要求检查的时间范围内拒绝回退；time_order要求各文件中参与排序的记录时间有序，按记录时间、文件位置、原记录顺序稳定归并。保留重叠报文，不自动平移时间或去重。该选择与进程数无关。"
              }
            },
            "required": [
              "source_type",
              "dbc_by_channel"
            ],
            "oneOf": [
              {
                "required": [
                  "path"
                ],
                "not": {
                  "required": [
                    "paths"
                  ]
                }
              },
              {
                "required": [
                  "paths"
                ],
                "not": {
                  "required": [
                    "path"
                  ]
                }
              }
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "来源在本计划内的名称；省略时按声明位置生成source_1、source_2等。后续source引用使用此名称，不用于猜测原字段或同步。"
              },
              "time": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "unit": {
                        "enum": [
                          "s",
                          "ms",
                          "us",
                          "ns",
                          "ISO8601"
                        ],
                        "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。可选值：\"s\"：秒；\"ms\"：毫秒；\"us\"：微秒；\"ns\"：纳秒；\"ISO8601\"：包含日期和时区依据的时间文本。"
                      },
                      "offset": {
                        "type": "string",
                        "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                        "description": "应用到来源时间的固定偏移，可正可负，必须带s/ms/us/ns单位；不是时区或日期。",
                        "default": "0s"
                      },
                      "time_type": {
                        "const": "relative",
                        "description": "时间坐标类型：相对公共起点，或带时区依据的绝对时间。 固定值：\"relative\"（相对明确公共起点的时间）。"
                      },
                      "clock": {
                        "type": "string",
                        "minLength": 1,
                        "pattern": "\\S",
                        "description": "相对时间起点的共享名称；仅对确实共用起点的数据填写同一个值，省略不自动同步。"
                      }
                    },
                    "required": [
                      "unit"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "unit": {
                        "enum": [
                          "s",
                          "ms",
                          "us",
                          "ns",
                          "ISO8601"
                        ],
                        "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。可选值：\"s\"：秒；\"ms\"：毫秒；\"us\"：微秒；\"ns\"：纳秒；\"ISO8601\"：包含日期和时区依据的时间文本。"
                      },
                      "offset": {
                        "type": "string",
                        "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                        "description": "应用到来源时间的固定偏移，可正可负，必须带s/ms/us/ns单位；不是时区或日期。",
                        "default": "0s"
                      },
                      "time_type": {
                        "const": "absolute",
                        "description": "时间坐标类型：相对公共起点，或带时区依据的绝对时间。 固定值：\"absolute\"（有时区依据的绝对时间）。"
                      },
                      "timezone": {
                        "type": "string",
                        "description": "采集时间的固定时区，填写UTC或带符号小时分钟，例如+08:00。"
                      }
                    },
                    "required": [
                      "time_type",
                      "unit"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "来源时间的类型、单位、时钟和偏移设置。time_type省略为relative，clock省略生成来源独立起点；只有有同步依据的多来源才填写共同clock。"
              },
              "path": {
                "oneOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "文件、目录或通配符路径。"
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "path"
                    ],
                    "properties": {
                      "path": {
                        "type": "string",
                        "minLength": 1,
                        "description": "本项文件、目录或通配符路径。"
                      },
                      "offset": {
                        "type": "string",
                        "minLength": 1,
                        "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                      }
                    }
                  },
                  {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 4096,
                    "items": {
                      "oneOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "文件、目录或通配符路径。"
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "path"
                          ],
                          "properties": {
                            "path": {
                              "type": "string",
                              "minLength": 1,
                              "description": "本项文件、目录或通配符路径。"
                            },
                            "offset": {
                              "type": "string",
                              "minLength": 1,
                              "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                            }
                          }
                        }
                      ],
                      "description": "路径文字，或带自身offset的文件声明。"
                    },
                    "description": "保持声明顺序的路径列表；各目录匹配集合内部自然排序。"
                  }
                ],
                "description": "输入文件、目录或通配符，支持单项及列表。path和paths不能同时填写。"
              },
              "paths": {
                "oneOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "文件、目录或通配符路径。"
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "path"
                    ],
                    "properties": {
                      "path": {
                        "type": "string",
                        "minLength": 1,
                        "description": "本项文件、目录或通配符路径。"
                      },
                      "offset": {
                        "type": "string",
                        "minLength": 1,
                        "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                      }
                    }
                  },
                  {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 4096,
                    "items": {
                      "oneOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "文件、目录或通配符路径。"
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "path"
                          ],
                          "properties": {
                            "path": {
                              "type": "string",
                              "minLength": 1,
                              "description": "本项文件、目录或通配符路径。"
                            },
                            "offset": {
                              "type": "string",
                              "minLength": 1,
                              "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                            }
                          }
                        }
                      ],
                      "description": "路径文字，或带自身offset的文件声明。"
                    },
                    "description": "保持声明顺序的路径列表；各目录匹配集合内部自然排序。"
                  }
                ],
                "description": "输入文件、目录或通配符，支持单项及列表。path和paths不能同时填写。"
              },
              "offsets": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                  "description": "固定时间偏移，只接受数值与s/ms/us/ns单位，不接受日期。"
                },
                "minItems": 1,
                "maxItems": 4096,
                "description": "按输入文件顺序提供的时间偏移，数量须匹配文件列表，不能借偏移默默重排文件。"
              },
              "dbc_by_channel": {
                "type": "object",
                "minProperties": 1,
                "maxProperties": 1,
                "patternProperties": {
                  "^[1-9][0-9]*(?![\\s\\S])": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "additionalProperties": false,
                "description": "唯一目标通道到DBC文件的显式映射；通道键使用从1开始、无前导零的正整数文本，DBC路径按声明文件定位。"
              },
              "metadata": {
                "type": "object",
                "description": "附加说明对象；允许自定义JSON原生值，但不参与隐藏转换、模板执行或业务参数推断。"
              },
              "source_type": {
                "const": "raw_can_csv",
                "description": "数据来源类型，决定使用哪个读取器及其必需字段。 固定值：\"raw_can_csv\"（显式布局的原始CAN帧CSV）。"
              },
              "reader": {
                "type": "object",
                "properties": {
                  "layout": {
                    "type": "object",
                    "properties": {
                      "fields": {
                        "type": "object",
                        "properties": {
                          "timestamp": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "column": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 4096
                                      }
                                    ],
                                    "description": "读取的列名或列索引，与fixed二选一；必须与has_header及实际布局一致。"
                                  },
                                  "fixed": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "maxLength": 16384
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": -9223372036854775808,
                                        "maximum": 18446744073709551615
                                      },
                                      {
                                        "type": "boolean"
                                      }
                                    ],
                                    "description": "该语义字段的显式固定值，与column二选一；不是缺失时的自动补值。"
                                  },
                                  "strip": {
                                    "type": "boolean",
                                    "description": "是否清除输入字段两侧空白，不改变中间字符。"
                                  },
                                  "value_map": {
                                    "type": [
                                      "object",
                                      "null"
                                    ],
                                    "additionalProperties": {
                                      "oneOf": [
                                        {
                                          "type": "string",
                                          "maxLength": 256
                                        },
                                        {
                                          "type": "integer",
                                          "minimum": -9223372036854775808,
                                          "maximum": 18446744073709551615
                                        },
                                        {
                                          "type": "boolean"
                                        }
                                      ]
                                    },
                                    "maxProperties": 256,
                                    "description": "可省略或null表示不映射；对象须有1至256项，原文本键和字符串目标均不超过256字符。与fixed的文本长度限制不同。",
                                    "minProperties": 1,
                                    "propertyNames": {
                                      "maxLength": 256
                                    }
                                  }
                                },
                                "required": [],
                                "additionalProperties": false,
                                "oneOf": [
                                  {
                                    "required": [
                                      "column"
                                    ],
                                    "not": {
                                      "required": [
                                        "fixed"
                                      ]
                                    }
                                  },
                                  {
                                    "required": [
                                      "fixed"
                                    ],
                                    "not": {
                                      "required": [
                                        "column"
                                      ]
                                    }
                                  }
                                ],
                                "description": "报文时间字段的列或固定值映射，按time_format和来源时间声明转换。"
                              },
                              {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 4096
                              }
                            ],
                            "description": "报文时间字段的列或固定值映射，按time_format和来源时间声明转换。 可直接填写列名或从1开始的列号；固定值仍用fixed对象。"
                          },
                          "frame_id": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "column": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 4096
                                      }
                                    ],
                                    "description": "读取的列名或列索引，与fixed二选一；必须与has_header及实际布局一致。"
                                  },
                                  "fixed": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "maxLength": 16384
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": -9223372036854775808,
                                        "maximum": 18446744073709551615
                                      },
                                      {
                                        "type": "boolean"
                                      }
                                    ],
                                    "description": "该语义字段的显式固定值，与column二选一；不是缺失时的自动补值。"
                                  },
                                  "strip": {
                                    "type": "boolean",
                                    "description": "是否清除输入字段两侧空白，不改变中间字符。"
                                  },
                                  "value_map": {
                                    "type": [
                                      "object",
                                      "null"
                                    ],
                                    "additionalProperties": {
                                      "oneOf": [
                                        {
                                          "type": "string",
                                          "maxLength": 256
                                        },
                                        {
                                          "type": "integer",
                                          "minimum": -9223372036854775808,
                                          "maximum": 18446744073709551615
                                        },
                                        {
                                          "type": "boolean"
                                        }
                                      ]
                                    },
                                    "maxProperties": 256,
                                    "description": "可省略或null表示不映射；对象须有1至256项，原文本键和字符串目标均不超过256字符。与fixed的文本长度限制不同。",
                                    "minProperties": 1,
                                    "propertyNames": {
                                      "maxLength": 256
                                    }
                                  }
                                },
                                "required": [],
                                "additionalProperties": false,
                                "oneOf": [
                                  {
                                    "required": [
                                      "column"
                                    ],
                                    "not": {
                                      "required": [
                                        "fixed"
                                      ]
                                    }
                                  },
                                  {
                                    "required": [
                                      "fixed"
                                    ],
                                    "not": {
                                      "required": [
                                        "column"
                                      ]
                                    }
                                  }
                                ],
                                "description": "CAN报文仲裁ID的列或固定值映射，按id_base解释。"
                              },
                              {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 4096
                              }
                            ],
                            "description": "CAN报文仲裁ID的列或固定值映射，按id_base解释。 可直接填写列名或从1开始的列号；固定值仍用fixed对象。"
                          },
                          "channel": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "column": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 4096
                                      }
                                    ],
                                    "description": "读取的列名或列索引，与fixed二选一；必须与has_header及实际布局一致。"
                                  },
                                  "fixed": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "maxLength": 16384
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": -9223372036854775808,
                                        "maximum": 18446744073709551615
                                      },
                                      {
                                        "type": "boolean"
                                      }
                                    ],
                                    "description": "该语义字段的显式固定值，与column二选一；不是缺失时的自动补值。"
                                  },
                                  "strip": {
                                    "type": "boolean",
                                    "description": "是否清除输入字段两侧空白，不改变中间字符。"
                                  },
                                  "value_map": {
                                    "type": [
                                      "object",
                                      "null"
                                    ],
                                    "additionalProperties": {
                                      "oneOf": [
                                        {
                                          "type": "string",
                                          "maxLength": 256
                                        },
                                        {
                                          "type": "integer",
                                          "minimum": -9223372036854775808,
                                          "maximum": 18446744073709551615
                                        },
                                        {
                                          "type": "boolean"
                                        }
                                      ]
                                    },
                                    "maxProperties": 256,
                                    "description": "可省略或null表示不映射；对象须有1至256项，原文本键和字符串目标均不超过256字符。与fixed的文本长度限制不同。",
                                    "minProperties": 1,
                                    "propertyNames": {
                                      "maxLength": 256
                                    }
                                  }
                                },
                                "required": [],
                                "additionalProperties": false,
                                "oneOf": [
                                  {
                                    "required": [
                                      "column"
                                    ],
                                    "not": {
                                      "required": [
                                        "fixed"
                                      ]
                                    }
                                  },
                                  {
                                    "required": [
                                      "fixed"
                                    ],
                                    "not": {
                                      "required": [
                                        "column"
                                      ]
                                    }
                                  }
                                ],
                                "description": "原始CSV通道列映射，固定值保持文件编号；channel_origin指定文件从0或1开始。"
                              },
                              {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 4096
                              }
                            ],
                            "description": "原始CSV通道列映射，固定值保持文件编号；channel_origin指定文件从0或1开始。 可直接填写列名或从1开始的列号；固定值仍用fixed对象。 省略时继承来源唯一DBC通道。"
                          },
                          "is_rx": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "column": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 4096
                                      }
                                    ],
                                    "description": "读取的列名或列索引，与fixed二选一；必须与has_header及实际布局一致。"
                                  },
                                  "fixed": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "maxLength": 16384
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": -9223372036854775808,
                                        "maximum": 18446744073709551615
                                      },
                                      {
                                        "type": "boolean"
                                      }
                                    ],
                                    "description": "该语义字段的显式固定值，与column二选一；不是缺失时的自动补值。"
                                  },
                                  "strip": {
                                    "type": "boolean",
                                    "description": "是否清除输入字段两侧空白，不改变中间字符。"
                                  },
                                  "value_map": {
                                    "type": [
                                      "object",
                                      "null"
                                    ],
                                    "additionalProperties": {
                                      "oneOf": [
                                        {
                                          "type": "string",
                                          "maxLength": 256
                                        },
                                        {
                                          "type": "integer",
                                          "minimum": -9223372036854775808,
                                          "maximum": 18446744073709551615
                                        },
                                        {
                                          "type": "boolean"
                                        }
                                      ]
                                    },
                                    "maxProperties": 256,
                                    "description": "可省略或null表示不映射；对象须有1至256项，原文本键和字符串目标均不超过256字符。与fixed的文本长度限制不同。",
                                    "minProperties": 1,
                                    "propertyNames": {
                                      "maxLength": 256
                                    }
                                  }
                                },
                                "required": [],
                                "additionalProperties": false,
                                "oneOf": [
                                  {
                                    "required": [
                                      "column"
                                    ],
                                    "not": {
                                      "required": [
                                        "fixed"
                                      ]
                                    }
                                  },
                                  {
                                    "required": [
                                      "fixed"
                                    ],
                                    "not": {
                                      "required": [
                                        "column"
                                      ]
                                    }
                                  }
                                ],
                                "description": "接收/发送方向的输入映射，值必须能明确解释为方向标志。"
                              },
                              {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 4096
                              }
                            ],
                            "description": "接收/发送方向的输入映射，值必须能明确解释为方向标志。 可直接填写列名或从1开始的列号；固定值仍用fixed对象。 可省略；省略时方向未知，仅原帧导出或重建需要补充。Rx/Tx、接收/发送可直接识别。"
                          },
                          "is_extended": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "column": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 4096
                                      }
                                    ],
                                    "description": "读取的列名或列索引，与fixed二选一；必须与has_header及实际布局一致。"
                                  },
                                  "fixed": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "maxLength": 16384
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": -9223372036854775808,
                                        "maximum": 18446744073709551615
                                      },
                                      {
                                        "type": "boolean"
                                      }
                                    ],
                                    "description": "该语义字段的显式固定值，与column二选一；不是缺失时的自动补值。"
                                  },
                                  "strip": {
                                    "type": "boolean",
                                    "description": "是否清除输入字段两侧空白，不改变中间字符。"
                                  },
                                  "value_map": {
                                    "type": [
                                      "object",
                                      "null"
                                    ],
                                    "additionalProperties": {
                                      "oneOf": [
                                        {
                                          "type": "string",
                                          "maxLength": 256
                                        },
                                        {
                                          "type": "integer",
                                          "minimum": -9223372036854775808,
                                          "maximum": 18446744073709551615
                                        },
                                        {
                                          "type": "boolean"
                                        }
                                      ]
                                    },
                                    "maxProperties": 256,
                                    "description": "可省略或null表示不映射；对象须有1至256项，原文本键和字符串目标均不超过256字符。与fixed的文本长度限制不同。",
                                    "minProperties": 1,
                                    "propertyNames": {
                                      "maxLength": 256
                                    }
                                  }
                                },
                                "required": [],
                                "additionalProperties": false,
                                "oneOf": [
                                  {
                                    "required": [
                                      "column"
                                    ],
                                    "not": {
                                      "required": [
                                        "fixed"
                                      ]
                                    }
                                  },
                                  {
                                    "required": [
                                      "fixed"
                                    ],
                                    "not": {
                                      "required": [
                                        "column"
                                      ]
                                    }
                                  }
                                ],
                                "description": "可选原始帧类型列或常量；有列时以真实字段为准。省略后由本次绑定与DBC唯一识别，不能识别时要求补充。小ID不能单独证明标准帧。"
                              },
                              {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 4096
                              }
                            ],
                            "description": "可选原始帧类型列或常量；有列时以真实字段为准。省略后由本次绑定与DBC唯一识别，不能识别时要求补充。小ID不能单独证明标准帧。 可直接填写列名或从1开始的列号；固定值仍用fixed对象。"
                          },
                          "is_fd": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "column": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 4096
                                      }
                                    ],
                                    "description": "读取的列名或列索引，与fixed二选一；必须与has_header及实际布局一致。"
                                  },
                                  "fixed": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "maxLength": 16384
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": -9223372036854775808,
                                        "maximum": 18446744073709551615
                                      },
                                      {
                                        "type": "boolean"
                                      }
                                    ],
                                    "description": "该语义字段的显式固定值，与column二选一；不是缺失时的自动补值。"
                                  },
                                  "strip": {
                                    "type": "boolean",
                                    "description": "是否清除输入字段两侧空白，不改变中间字符。"
                                  },
                                  "value_map": {
                                    "type": [
                                      "object",
                                      "null"
                                    ],
                                    "additionalProperties": {
                                      "oneOf": [
                                        {
                                          "type": "string",
                                          "maxLength": 256
                                        },
                                        {
                                          "type": "integer",
                                          "minimum": -9223372036854775808,
                                          "maximum": 18446744073709551615
                                        },
                                        {
                                          "type": "boolean"
                                        }
                                      ]
                                    },
                                    "maxProperties": 256,
                                    "description": "可省略或null表示不映射；对象须有1至256项，原文本键和字符串目标均不超过256字符。与fixed的文本长度限制不同。",
                                    "minProperties": 1,
                                    "propertyNames": {
                                      "maxLength": 256
                                    }
                                  }
                                },
                                "required": [],
                                "additionalProperties": false,
                                "oneOf": [
                                  {
                                    "required": [
                                      "column"
                                    ],
                                    "not": {
                                      "required": [
                                        "fixed"
                                      ]
                                    }
                                  },
                                  {
                                    "required": [
                                      "fixed"
                                    ],
                                    "not": {
                                      "required": [
                                        "column"
                                      ]
                                    }
                                  }
                                ],
                                "description": "可选CAN/FD列或常量；有列时以真实字段为准。省略后按绑定及DBC识别；DBC声明FD仍可能是实际经典CAN，无法唯一判断时必须补充，不按短载荷猜测。"
                              },
                              {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 4096
                              }
                            ],
                            "description": "可选CAN/FD列或常量；有列时以真实字段为准。省略后按绑定及DBC识别；DBC声明FD仍可能是实际经典CAN，无法唯一判断时必须补充，不按短载荷猜测。 可直接填写列名或从1开始的列号；固定值仍用fixed对象。"
                          },
                          "frame_kind": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "column": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 4096
                                      }
                                    ],
                                    "description": "读取的列名或列索引，与fixed二选一；必须与has_header及实际布局一致。"
                                  },
                                  "fixed": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "maxLength": 16384
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": -9223372036854775808,
                                        "maximum": 18446744073709551615
                                      },
                                      {
                                        "type": "boolean"
                                      }
                                    ],
                                    "description": "该语义字段的显式固定值，与column二选一；不是缺失时的自动补值。"
                                  },
                                  "strip": {
                                    "type": "boolean",
                                    "description": "是否清除输入字段两侧空白，不改变中间字符。"
                                  },
                                  "value_map": {
                                    "type": [
                                      "object",
                                      "null"
                                    ],
                                    "additionalProperties": {
                                      "oneOf": [
                                        {
                                          "type": "string",
                                          "maxLength": 256
                                        },
                                        {
                                          "type": "integer",
                                          "minimum": -9223372036854775808,
                                          "maximum": 18446744073709551615
                                        },
                                        {
                                          "type": "boolean"
                                        }
                                      ]
                                    },
                                    "maxProperties": 256,
                                    "description": "可省略或null表示不映射；对象须有1至256项，原文本键和字符串目标均不超过256字符。与fixed的文本长度限制不同。",
                                    "minProperties": 1,
                                    "propertyNames": {
                                      "maxLength": 256
                                    }
                                  }
                                },
                                "required": [],
                                "additionalProperties": false,
                                "oneOf": [
                                  {
                                    "required": [
                                      "column"
                                    ],
                                    "not": {
                                      "required": [
                                        "fixed"
                                      ]
                                    }
                                  },
                                  {
                                    "required": [
                                      "fixed"
                                    ],
                                    "not": {
                                      "required": [
                                        "column"
                                      ]
                                    }
                                  }
                                ],
                                "description": "CAN帧种类的输入映射，用于区分数据、远程或错误帧等已支持格式。"
                              },
                              {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 4096
                              }
                            ],
                            "description": "CAN帧种类的输入映射，用于区分数据、远程或错误帧等已支持格式。 可直接填写列名或从1开始的列号；固定值仍用fixed对象。 省略时为普通数据帧；远程或错误帧须显式提供。"
                          },
                          "data": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "column": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 4096
                                      }
                                    ],
                                    "description": "读取的列名或列索引，与fixed二选一；必须与has_header及实际布局一致。"
                                  },
                                  "fixed": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "maxLength": 16384
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": -9223372036854775808,
                                        "maximum": 18446744073709551615
                                      },
                                      {
                                        "type": "boolean"
                                      }
                                    ],
                                    "description": "该语义字段的显式固定值，与column二选一；不是缺失时的自动补值。"
                                  },
                                  "strip": {
                                    "type": "boolean",
                                    "description": "是否清除输入字段两侧空白，不改变中间字符。"
                                  },
                                  "value_map": {
                                    "type": [
                                      "object",
                                      "null"
                                    ],
                                    "additionalProperties": {
                                      "oneOf": [
                                        {
                                          "type": "string",
                                          "maxLength": 256
                                        },
                                        {
                                          "type": "integer",
                                          "minimum": -9223372036854775808,
                                          "maximum": 18446744073709551615
                                        },
                                        {
                                          "type": "boolean"
                                        }
                                      ]
                                    },
                                    "maxProperties": 256,
                                    "description": "可省略或null表示不映射；对象须有1至256项，原文本键和字符串目标均不超过256字符。与fixed的文本长度限制不同。",
                                    "minProperties": 1,
                                    "propertyNames": {
                                      "maxLength": 256
                                    }
                                  }
                                },
                                "required": [],
                                "additionalProperties": false,
                                "oneOf": [
                                  {
                                    "required": [
                                      "column"
                                    ],
                                    "not": {
                                      "required": [
                                        "fixed"
                                      ]
                                    }
                                  },
                                  {
                                    "required": [
                                      "fixed"
                                    ],
                                    "not": {
                                      "required": [
                                        "column"
                                      ]
                                    }
                                  }
                                ],
                                "description": "CAN负载字节的输入映射，按payload_style解析，不把缺少负载补成零。"
                              },
                              {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 4096
                              }
                            ],
                            "description": "CAN负载字节的输入映射，按payload_style解析，不把缺少负载补成零。 可直接填写列名或从1开始的列号；固定值仍用fixed对象。"
                          },
                          "payload_length": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "column": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 4096
                                      }
                                    ],
                                    "description": "读取的列名或列索引，与fixed二选一；必须与has_header及实际布局一致。"
                                  },
                                  "fixed": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "maxLength": 16384
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": -9223372036854775808,
                                        "maximum": 18446744073709551615
                                      },
                                      {
                                        "type": "boolean"
                                      }
                                    ],
                                    "description": "该语义字段的显式固定值，与column二选一；不是缺失时的自动补值。"
                                  },
                                  "strip": {
                                    "type": "boolean",
                                    "description": "是否清除输入字段两侧空白，不改变中间字符。"
                                  },
                                  "value_map": {
                                    "type": [
                                      "object",
                                      "null"
                                    ],
                                    "additionalProperties": {
                                      "oneOf": [
                                        {
                                          "type": "string",
                                          "maxLength": 256
                                        },
                                        {
                                          "type": "integer",
                                          "minimum": -9223372036854775808,
                                          "maximum": 18446744073709551615
                                        },
                                        {
                                          "type": "boolean"
                                        }
                                      ]
                                    },
                                    "maxProperties": 256,
                                    "description": "可省略或null表示不映射；对象须有1至256项，原文本键和字符串目标均不超过256字符。与fixed的文本长度限制不同。",
                                    "minProperties": 1,
                                    "propertyNames": {
                                      "maxLength": 256
                                    }
                                  }
                                },
                                "required": [],
                                "additionalProperties": false,
                                "oneOf": [
                                  {
                                    "required": [
                                      "column"
                                    ],
                                    "not": {
                                      "required": [
                                        "fixed"
                                      ]
                                    }
                                  },
                                  {
                                    "required": [
                                      "fixed"
                                    ],
                                    "not": {
                                      "required": [
                                        "column"
                                      ]
                                    }
                                  }
                                ],
                                "description": "实际负载字节数的输入映射，与DLC编码区别处理。"
                              },
                              {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 4096
                              }
                            ],
                            "description": "实际负载字节数的输入映射，与DLC编码区别处理。 可直接填写列名或从1开始的列号；固定值仍用fixed对象。 省略时按数据字节数推导。"
                          },
                          "dlc_code": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "column": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 4096
                                      }
                                    ],
                                    "description": "读取的列名或列索引，与fixed二选一；必须与has_header及实际布局一致。"
                                  },
                                  "fixed": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "maxLength": 16384
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": -9223372036854775808,
                                        "maximum": 18446744073709551615
                                      },
                                      {
                                        "type": "boolean"
                                      }
                                    ],
                                    "description": "该语义字段的显式固定值，与column二选一；不是缺失时的自动补值。"
                                  },
                                  "strip": {
                                    "type": "boolean",
                                    "description": "是否清除输入字段两侧空白，不改变中间字符。"
                                  },
                                  "value_map": {
                                    "type": [
                                      "object",
                                      "null"
                                    ],
                                    "additionalProperties": {
                                      "oneOf": [
                                        {
                                          "type": "string",
                                          "maxLength": 256
                                        },
                                        {
                                          "type": "integer",
                                          "minimum": -9223372036854775808,
                                          "maximum": 18446744073709551615
                                        },
                                        {
                                          "type": "boolean"
                                        }
                                      ]
                                    },
                                    "maxProperties": 256,
                                    "description": "可省略或null表示不映射；对象须有1至256项，原文本键和字符串目标均不超过256字符。与fixed的文本长度限制不同。",
                                    "minProperties": 1,
                                    "propertyNames": {
                                      "maxLength": 256
                                    }
                                  }
                                },
                                "required": [],
                                "additionalProperties": false,
                                "oneOf": [
                                  {
                                    "required": [
                                      "column"
                                    ],
                                    "not": {
                                      "required": [
                                        "fixed"
                                      ]
                                    }
                                  },
                                  {
                                    "required": [
                                      "fixed"
                                    ],
                                    "not": {
                                      "required": [
                                        "column"
                                      ]
                                    }
                                  }
                                ],
                                "description": "CAN DLC编码的输入映射；CAN FD的DLC编码不等同于字节数。"
                              },
                              {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 4096
                              }
                            ],
                            "description": "CAN DLC编码的输入映射；CAN FD的DLC编码不等同于字节数。 可直接填写列名或从1开始的列号；固定值仍用fixed对象。"
                          },
                          "bitrate_switch": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "column": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 4096
                                      }
                                    ],
                                    "description": "读取的列名或列索引，与fixed二选一；必须与has_header及实际布局一致。"
                                  },
                                  "fixed": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "maxLength": 16384
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": -9223372036854775808,
                                        "maximum": 18446744073709551615
                                      },
                                      {
                                        "type": "boolean"
                                      }
                                    ],
                                    "description": "该语义字段的显式固定值，与column二选一；不是缺失时的自动补值。"
                                  },
                                  "strip": {
                                    "type": "boolean",
                                    "description": "是否清除输入字段两侧空白，不改变中间字符。"
                                  },
                                  "value_map": {
                                    "type": [
                                      "object",
                                      "null"
                                    ],
                                    "additionalProperties": {
                                      "oneOf": [
                                        {
                                          "type": "string",
                                          "maxLength": 256
                                        },
                                        {
                                          "type": "integer",
                                          "minimum": -9223372036854775808,
                                          "maximum": 18446744073709551615
                                        },
                                        {
                                          "type": "boolean"
                                        }
                                      ]
                                    },
                                    "maxProperties": 256,
                                    "description": "可省略或null表示不映射；对象须有1至256项，原文本键和字符串目标均不超过256字符。与fixed的文本长度限制不同。",
                                    "minProperties": 1,
                                    "propertyNames": {
                                      "maxLength": 256
                                    }
                                  }
                                },
                                "required": [],
                                "additionalProperties": false,
                                "oneOf": [
                                  {
                                    "required": [
                                      "column"
                                    ],
                                    "not": {
                                      "required": [
                                        "fixed"
                                      ]
                                    }
                                  },
                                  {
                                    "required": [
                                      "fixed"
                                    ],
                                    "not": {
                                      "required": [
                                        "column"
                                      ]
                                    }
                                  }
                                ],
                                "description": "CAN FD是否切换位速率的输入映射。"
                              },
                              {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 4096
                              }
                            ],
                            "description": "CAN FD是否切换位速率的输入映射。 可直接填写列名或从1开始的列号；固定值仍用fixed对象。"
                          },
                          "error_state_indicator": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "column": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 4096
                                      }
                                    ],
                                    "description": "读取的列名或列索引，与fixed二选一；必须与has_header及实际布局一致。"
                                  },
                                  "fixed": {
                                    "oneOf": [
                                      {
                                        "type": "string",
                                        "maxLength": 16384
                                      },
                                      {
                                        "type": "integer",
                                        "minimum": -9223372036854775808,
                                        "maximum": 18446744073709551615
                                      },
                                      {
                                        "type": "boolean"
                                      }
                                    ],
                                    "description": "该语义字段的显式固定值，与column二选一；不是缺失时的自动补值。"
                                  },
                                  "strip": {
                                    "type": "boolean",
                                    "description": "是否清除输入字段两侧空白，不改变中间字符。"
                                  },
                                  "value_map": {
                                    "type": [
                                      "object",
                                      "null"
                                    ],
                                    "additionalProperties": {
                                      "oneOf": [
                                        {
                                          "type": "string",
                                          "maxLength": 256
                                        },
                                        {
                                          "type": "integer",
                                          "minimum": -9223372036854775808,
                                          "maximum": 18446744073709551615
                                        },
                                        {
                                          "type": "boolean"
                                        }
                                      ]
                                    },
                                    "maxProperties": 256,
                                    "description": "可省略或null表示不映射；对象须有1至256项，原文本键和字符串目标均不超过256字符。与fixed的文本长度限制不同。",
                                    "minProperties": 1,
                                    "propertyNames": {
                                      "maxLength": 256
                                    }
                                  }
                                },
                                "required": [],
                                "additionalProperties": false,
                                "oneOf": [
                                  {
                                    "required": [
                                      "column"
                                    ],
                                    "not": {
                                      "required": [
                                        "fixed"
                                      ]
                                    }
                                  },
                                  {
                                    "required": [
                                      "fixed"
                                    ],
                                    "not": {
                                      "required": [
                                        "column"
                                      ]
                                    }
                                  }
                                ],
                                "description": "CAN FD错误状态标志的输入映射。"
                              },
                              {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 4096
                              }
                            ],
                            "description": "CAN FD错误状态标志的输入映射。 可直接填写列名或从1开始的列号；固定值仍用fixed对象。"
                          }
                        },
                        "required": [
                          "timestamp",
                          "frame_id",
                          "data"
                        ],
                        "additionalProperties": false,
                        "description": "原始CAN语义字段到输入列或固定值的显式映射。"
                      },
                      "encoding": {
                        "type": "string",
                        "minLength": 1,
                        "description": "输入文本编码。用于真实读取；静态检查不据此判断文件可读。 CAN文本解析默认utf-8-sig。"
                      },
                      "delimiter": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 1,
                        "description": "原始CAN CSV的分隔符，必须与文件实际格式一致。"
                      },
                      "has_header": {
                        "type": "boolean",
                        "description": "原始CSV是否有标题行。使用列名时需要标题，列索引则按明确布局解释。"
                      },
                      "skip_rows": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "正式读取前跳过的行数，非负整数；用于文件中已有的说明行。"
                      },
                      "layout_version": {
                        "const": "raw-can-csv-layout-v1",
                        "description": "原始CAN CSV字段布局的固定版本标识。 固定值：\"raw-can-csv-layout-v1\"。"
                      }
                    },
                    "required": [
                      "fields"
                    ],
                    "additionalProperties": false,
                    "description": "原始CAN CSV的字段布局，显式说明分隔符、列/固定值映射、时间和数值表示。"
                  },
                  "time_format": {
                    "enum": [
                      "numeric",
                      "clock",
                      "clock-ms-us-v1",
                      "iso8601"
                    ],
                    "description": "原始CAN时间字段的文本表示方式，必须与实际文件一致。可选值：\"numeric\"：带来源单位的数值时间；\"clock\"：时分秒时钟文本；\"clock-ms-us-v1\"：旧格式的时钟/毫秒/微秒表示；\"iso8601\"：ISO 8601日期时间。"
                  },
                  "id_base": {
                    "enum": [
                      "auto",
                      10,
                      16
                    ],
                    "description": "默认auto：0x前缀十六进制、0b前缀二进制、无前缀十进制。裸十六进制表可显式选择16。"
                  },
                  "length_base": {
                    "enum": [
                      10,
                      16
                    ],
                    "description": "报文长度文本的进制，支持10或16；与DLC编码是否存在分别声明。可选值：10：十进制；16：十六进制。"
                  },
                  "channel_origin": {
                    "enum": [
                      0,
                      1
                    ],
                    "description": "原始文件通道编号起点，0表示从0计数，1表示从1计数；规范化后使用0基通道。可选值：0：原文件从通道0开始编号；1：原文件从通道1开始编号。"
                  },
                  "payload_style": {
                    "enum": [
                      "spaced",
                      "contiguous"
                    ],
                    "description": "报文数据字节的文本排列方式：用空格分隔，或连续十六进制文本。可选值：\"spaced\"：字节之间用空格分隔；\"contiguous\"：连续十六进制字节文本。"
                  },
                  "rollover_min_drop": {
                    "type": "string",
                    "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                    "description": "允许识别跨日回绕的最小时间下降量，必须带单位；不能把任意乱序当作跨日。"
                  },
                  "decode_policy": {
                    "enum": [
                      "strict",
                      "partial",
                      "legacy"
                    ],
                    "default": "strict",
                    "description": "已选CAN报文的载荷长度检查政策，默认strict。strict：实际载荷与DBC长度相同，且DLC与字节数一致；partial：允许载荷短于DBC，但不能超过DBC长度或出现DLC与实际字节数不一致，实际解码仍沿现有实现；legacy：保留原实现的解码调用和长度处理。"
                  },
                  "input_check": {
                    "type": "string",
                    "enum": [
                      "auto",
                      "full"
                    ],
                    "default": "auto",
                    "description": "auto按实际消费者检查时间顺序；ASC普通分析仅检查所需通道/ID，来源范围仍取同次全部记录的最早/最晚时间。full或原帧导出检查全部记录顺序；任何模式都不自动排序或修改时间。"
                  }
                },
                "required": [
                  "layout",
                  "time_format"
                ],
                "additionalProperties": false,
                "description": "与本来源格式有关的读取、文本解析和解码选项；省略适用参数时采用已说明的默认值。"
              }
            },
            "required": [
              "source_type",
              "time",
              "dbc_by_channel",
              "reader"
            ],
            "oneOf": [
              {
                "required": [
                  "path"
                ],
                "not": {
                  "required": [
                    "paths"
                  ]
                }
              },
              {
                "required": [
                  "paths"
                ],
                "not": {
                  "required": [
                    "path"
                  ]
                }
              }
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "来源在本计划内的名称；省略时按声明位置生成source_1、source_2等。后续source引用使用此名称，不用于猜测原字段或同步。"
              },
              "time": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "unit": {
                        "const": "s",
                        "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。 固定值：\"s\"（秒）。"
                      },
                      "offset": {
                        "type": "string",
                        "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                        "description": "应用到来源时间的固定偏移，可正可负，必须带s/ms/us/ns单位；不是时区或日期。",
                        "default": "0s"
                      },
                      "time_type": {
                        "const": "relative",
                        "description": "时间坐标类型：相对公共起点，或带时区依据的绝对时间。 固定值：\"relative\"（相对明确公共起点的时间）。"
                      },
                      "clock": {
                        "type": "string",
                        "minLength": 1,
                        "pattern": "\\S",
                        "description": "相对时间起点的共享名称；仅对确实共用起点的数据填写同一个值，省略不自动同步。"
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "unit": {
                        "const": "s",
                        "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。 固定值：\"s\"（秒）。"
                      },
                      "offset": {
                        "type": "string",
                        "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                        "description": "应用到来源时间的固定偏移，可正可负，必须带s/ms/us/ns单位；不是时区或日期。",
                        "default": "0s"
                      },
                      "time_type": {
                        "const": "absolute",
                        "description": "时间坐标类型：相对公共起点，或带时区依据的绝对时间。 固定值：\"absolute\"（有时区依据的绝对时间）。"
                      },
                      "timezone": {
                        "type": "string",
                        "description": "采集时间的固定时区，填写UTC或带符号小时分钟，例如+08:00。"
                      }
                    },
                    "required": [
                      "time_type"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "来源时间的类型、单位、时钟和偏移设置。time_type省略为relative，clock省略生成来源独立起点；只有有同步依据的多来源才填写共同clock。"
              },
              "legacy_profile": {
                "const": "sclicer-functions-v1",
                "description": "BLF既有读取/解码实现标识，可省略，默认sclicer-functions-v1；显式提供时只接受该已接入实现。"
              },
              "path": {
                "oneOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "文件、目录或通配符路径。"
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "path"
                    ],
                    "properties": {
                      "path": {
                        "type": "string",
                        "minLength": 1,
                        "description": "本项文件、目录或通配符路径。"
                      },
                      "offset": {
                        "type": "string",
                        "minLength": 1,
                        "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                      }
                    }
                  },
                  {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 4096,
                    "items": {
                      "oneOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "文件、目录或通配符路径。"
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "path"
                          ],
                          "properties": {
                            "path": {
                              "type": "string",
                              "minLength": 1,
                              "description": "本项文件、目录或通配符路径。"
                            },
                            "offset": {
                              "type": "string",
                              "minLength": 1,
                              "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                            }
                          }
                        }
                      ],
                      "description": "路径文字，或带自身offset的文件声明。"
                    },
                    "description": "保持声明顺序的路径列表；各目录匹配集合内部自然排序。"
                  }
                ],
                "description": "输入文件、目录或通配符，支持单项及列表。path和paths不能同时填写。"
              },
              "paths": {
                "oneOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "文件、目录或通配符路径。"
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "path"
                    ],
                    "properties": {
                      "path": {
                        "type": "string",
                        "minLength": 1,
                        "description": "本项文件、目录或通配符路径。"
                      },
                      "offset": {
                        "type": "string",
                        "minLength": 1,
                        "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                      }
                    }
                  },
                  {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 4096,
                    "items": {
                      "oneOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "文件、目录或通配符路径。"
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "path"
                          ],
                          "properties": {
                            "path": {
                              "type": "string",
                              "minLength": 1,
                              "description": "本项文件、目录或通配符路径。"
                            },
                            "offset": {
                              "type": "string",
                              "minLength": 1,
                              "description": "该文件的带单位时间偏移，与来源总偏移相加。"
                            }
                          }
                        }
                      ],
                      "description": "路径文字，或带自身offset的文件声明。"
                    },
                    "description": "保持声明顺序的路径列表；各目录匹配集合内部自然排序。"
                  }
                ],
                "description": "输入文件、目录或通配符，支持单项及列表。path和paths不能同时填写。"
              },
              "dbc_by_channel": {
                "type": "object",
                "minProperties": 1,
                "maxProperties": 1,
                "propertyNames": {
                  "pattern": "^[1-9][0-9]*(?![\\s\\S])"
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1,
                  "pattern": "\\S"
                },
                "description": "唯一目标通道到DBC文件的显式映射；通道键使用从1开始、无前导零的正整数文本，DBC路径按声明文件定位。"
              },
              "metadata": {
                "type": "object",
                "additionalProperties": true,
                "description": "附加说明对象；允许自定义JSON原生值，但不参与隐藏转换、模板执行或业务参数推断。"
              },
              "source_type": {
                "enum": [
                  "asc_or_blf"
                ],
                "description": "省略时按ASC/BLF扩展名识别，可在同一来源按原序混合；CSV与内存需显式选择。"
              },
              "offsets": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                  "description": "固定时间偏移，只接受数值与s/ms/us/ns单位，不接受日期。"
                },
                "minItems": 1,
                "maxItems": 4096,
                "description": "按输入文件顺序提供的时间偏移，数量须匹配文件列表，不能借偏移默默重排文件。"
              },
              "reader": {
                "type": "object",
                "properties": {
                  "version": {
                    "enum": [
                      "vector-asc-v1",
                      "vector-asc-statistics-v1",
                      "sclicer-asc-v1"
                    ],
                    "description": "选择ASC行布局。默认vector-asc-v1读取标准Vector ASC及可选的Length/BitCount/ID统计尾，字段顺序、数值和ID仍严格检查。vector-asc-statistics-v1保留显式标准统计入口；sclicer-asc-v1用于Sclicer的不同FD排列，不自动混猜。"
                  },
                  "encoding": {
                    "type": "string",
                    "minLength": 1,
                    "description": "输入文本编码。用于真实读取；静态检查不据此判断文件可读。 CAN文本解析默认utf-8-sig。",
                    "default": "utf-8-sig"
                  },
                  "decode_policy": {
                    "enum": [
                      "strict",
                      "partial",
                      "legacy"
                    ],
                    "default": "strict",
                    "description": "已选CAN报文的载荷长度检查政策，默认strict。strict：实际载荷与DBC长度相同，且DLC与字节数一致；partial：允许载荷短于DBC，但不能超过DBC长度或出现DLC与实际字节数不一致，实际解码仍沿现有实现；legacy：保留原实现的解码调用和长度处理。"
                  },
                  "decode_scope": {
                    "type": "string",
                    "enum": [
                      "all",
                      "requested"
                    ],
                    "default": "requested",
                    "description": "CAN解码尝试范围。默认requested，只解码当前分析需要的报文/字段；all扩大尝试解码的范围。对纯BLF串行接续，strict/partial跳过远程帧和错误帧。all不保证每帧有DBC定义、解码成功或生成逐帧诊断；选择all本身不要求填写dataset.domain。文件并行和time_order只支持requested。"
                  },
                  "input_check": {
                    "type": "string",
                    "enum": [
                      "auto",
                      "full"
                    ],
                    "default": "auto",
                    "description": "auto按实际消费者检查时间顺序；ASC普通分析仅检查所需通道/ID，来源范围仍取同次全部记录的最早/最晚时间。full或原帧导出检查全部记录顺序；任何模式都不自动排序或修改时间。"
                  }
                },
                "required": [],
                "additionalProperties": false,
                "description": "与本来源格式有关的读取、文本解析和解码选项；省略适用参数时采用已说明的默认值。"
              },
              "file_merge": {
                "enum": [
                  "concatenate",
                  "time_order"
                ],
                "default": "concatenate",
                "description": "控制同一来源的多个文件如何衔接。concatenate按paths顺序读取，仅在任务要求检查的时间范围内拒绝回退；time_order要求各文件中参与排序的记录时间有序，按记录时间、文件位置、原记录顺序稳定归并。保留重叠报文，不自动平移时间或去重。该选择与进程数无关。"
              }
            },
            "required": [
              "dbc_by_channel"
            ],
            "oneOf": [
              {
                "required": [
                  "path"
                ],
                "not": {
                  "required": [
                    "paths"
                  ]
                }
              },
              {
                "required": [
                  "paths"
                ],
                "not": {
                  "required": [
                    "path"
                  ]
                }
              }
            ],
            "additionalProperties": false,
            "description": "自动选择ASC或BLF读取；格式特有参数由实际来源检查。"
          }
        ]
      },
      "description": "按声明顺序列出数据来源。连续文件放在同一来源的paths中；加载时可按声明枚举文件名，并按缺省信号信息读取DBC；不读取业务记录。"
    },
    "signals": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "当前来源或信号的简单名称，供后续声明引用；不是对原数据字段的猜测或重命名。"
              },
              "source": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "已声明来源的name。引用必须存在，不按同名字段或语义名称自动寻找来源。"
              },
              "field": {
                "oneOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "pattern": "\\S"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "channel": {
                        "type": "integer",
                        "minimum": 1,
                        "description": "用户配置CAN通道从1开始，1对应内部0；省略时继承来源唯一通道。"
                      },
                      "signal": {
                        "type": "string",
                        "minLength": 1,
                        "description": "DBC中该信号的原始名称，与frame_id一起定位同一报文内的信号；这里不是分析别名。"
                      },
                      "frame_id": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 536870911
                          },
                          {
                            "type": "string",
                            "pattern": "^(?:[0-9]+|0[xX][0-9a-fA-F]+|0[bB][01]+)(?![\\s\\S])",
                            "minLength": 1
                          }
                        ],
                        "description": "CAN报文ID；整数或字符串均可。0x前缀为十六进制，0b为二进制，无前缀为十进制；解析后须在0至536870911内，显式标准帧最多2047。"
                      },
                      "is_extended": {
                        "type": "boolean",
                        "description": "标准／扩展帧可选约束。省略时根据DBC和实际报文识别；只有歧义时要求补充。显式null无效。"
                      },
                      "is_fd": {
                        "type": "boolean",
                        "description": "CAN／CAN FD可选约束。省略时根据DBC和实际报文识别；只有歧义时要求补充。显式null无效。"
                      }
                    },
                    "required": [
                      "signal",
                      "frame_id"
                    ],
                    "additionalProperties": false,
                    "allOf": [
                      {
                        "if": {
                          "properties": {
                            "is_extended": {
                              "const": false,
                              "description": "显式选择标准帧时，整数ID不得超过11位范围。"
                            }
                          },
                          "required": [
                            "is_extended"
                          ]
                        },
                        "then": {
                          "properties": {
                            "frame_id": {
                              "maximum": 2047,
                              "description": "标准帧的整数报文ID上限为2047；字符串转换后的范围由计划加载器核实。"
                            }
                          }
                        }
                      }
                    ]
                  }
                ],
                "description": "来源中的真实字段。信号表/内存使用原字段名，CAN使用完整通道和报文信号定位对象。"
              },
              "dtype": {
                "enum": [
                  "int64",
                  "uint64",
                  "float64",
                  "bool",
                  "enum"
                ],
                "description": "分析信号类型：int64、uint64、float64、bool或enum。CAN省略时按DBC解码值推导数值类型，不因DBC存在枚举表自动改为enum；明确手工choices为文字或布尔标签时可确定enum或bool。已解析数据仍需声明dtype。"
              },
              "unit": {
                "type": "string",
                "minLength": 1,
                "pattern": "\\S",
                "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。 CAN省略时读取DBC单位；DBC未定义则使用unknown并标为未核实，逻辑类型用1。已解析数据仍需填写。"
              },
              "valid_for": {
                "type": "string",
                "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                "description": "有效样本最多沿用的实际时长。可省略，默认取当前信号周期的3倍；用户period优先，否则取DBC所属报文周期。均无法取得时需补充period或valid_for。显式填写覆盖默认值。",
                "examples": [
                  "500ms",
                  "2s"
                ]
              },
              "sample_policy": {
                "const": "backward_hold",
                "description": "样本沿用政策。当前仅支持backward_hold，即在有效期内使用最近的有效样本。 固定值：\"backward_hold\"。",
                "default": "backward_hold"
              },
              "same_time_policy": {
                "enum": [
                  "error",
                  "last_by_sequence"
                ],
                "description": "同一信号同一时刻出现多个更新时的处理方式；不忽略冲突或任意重排记录。可选值：\"error\"：同刻更新冲突时失败；\"last_by_sequence\"：按原顺序取最后一次更新。",
                "default": "error"
              },
              "code_dtype": {
                "enum": [
                  "int64",
                  "uint64"
                ],
                "description": "v4 枚举的原始整数类型。enum_code 使用；CAN 可由无缩放整数 DBC 确定。"
              },
              "choices": {
                "type": "array",
                "items": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": [
                        "integer",
                        "boolean",
                        "string"
                      ]
                    },
                    {
                      "type": [
                        "string",
                        "boolean"
                      ]
                    }
                  ],
                  "minItems": 2,
                  "maxItems": 2,
                  "items": false
                },
                "description": "枚举的[原编码,标签]二元数组；保留编码原生类型，不能用对象键把整数或布尔编码字符串化。 dtype=enum且省略时读取DBC枚举表；显式映射优先。缩放产生浮点枚举码时明确报错，不截断为整数。"
              },
              "valid_range": {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "minItems": 2,
                "maxItems": 2,
                "description": "允许的规范数值范围，低值到高值；超界按质量政策处理，不自动裁剪到边界。"
              },
              "invalid_values": {
                "type": "array",
                "items": {
                  "type": [
                    "number",
                    "string",
                    "boolean",
                    "null"
                  ]
                },
                "description": "明确标记为无效的原始编码列表；无效更新会覆盖前值，不当作没有更新。",
                "default": []
              },
              "semantic_id": {
                "type": [
                  "string",
                  "null"
                ],
                "minLength": 1,
                "pattern": "\\S",
                "description": "可选业务含义标识，用于说明或角色契约；相同标识本身不会自动绑定信号。 可省略或显式null；非null时必须为非空文本。"
              },
              "semantic_contract_version": {
                "type": [
                  "string",
                  "null"
                ],
                "minLength": 1,
                "pattern": "\\S",
                "description": "本信号semantic_id所指业务含义的版本，与分析配置版本独立；不表示实际输入已核验。可省略或显式null；任意非null值必须为非空文本，并同时填写本信号的semantic_id。"
              },
              "mapping_version": {
                "type": [
                  "string",
                  "null"
                ],
                "minLength": 1,
                "pattern": "\\S",
                "description": "调用方信号映射的版本标识，便于追溯明确绑定。 可省略或显式null；非null时必须为非空文本。"
              },
              "sign_convention": {
                "type": [
                  "string",
                  "null"
                ],
                "minLength": 1,
                "pattern": "\\S",
                "description": "规范信号正负方向的明确含义，例如流入为正；不同位置或方向不应仅凭名字合并。 可省略或显式null；非null时必须为非空文本。"
              },
              "measurement_location": {
                "type": [
                  "string",
                  "null"
                ],
                "minLength": 1,
                "pattern": "\\S",
                "description": "信号的测量位置声明，供业务角色契约核对。 可省略或显式null；非null时必须为非空文本。"
              },
              "metadata": {
                "type": "object",
                "additionalProperties": true,
                "description": "附加说明对象；允许自定义JSON原生值，但不参与隐藏转换、模板执行或业务参数推断。"
              },
              "period": {
                "type": "string",
                "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                "description": "当前信号的固定周期，正的带单位时长，例如100ms。显式周期优先于DBC报文周期；valid_for省略时取周期的3倍。",
                "examples": [
                  "100ms",
                  "0.1s"
                ]
              },
              "conversion": {
                "type": "object",
                "properties": {
                  "input_unit": {
                    "type": "string",
                    "minLength": 1,
                    "pattern": "\\S",
                    "description": "读取或DBC解码后的单位。原始CAN报文省略时从DBC取得；已解析信号CSV和内存省略时沿用目标unit。显式null无效，请省略字段。"
                  },
                  "scale": {
                    "type": "number",
                    "description": "乘法系数。两系数均省略时自动推导；只有offset显式填写时本项取1。显式系数须符合单位关系。"
                  },
                  "offset": {
                    "type": "number",
                    "description": "乘法之后加上的数值，单位为目标unit。两系数均省略时自动推导；只有scale显式填写时本项取0。"
                  }
                },
                "additionalProperties": false,
                "description": "额外单位换算。scale和offset均省略时按输入与目标单位自动推导；显式填写任一项则校验完整系数，不重复应用DBC缩放。"
              }
            },
            "required": [
              "name",
              "field"
            ],
            "additionalProperties": false,
            "allOf": [
              {
                "if": {
                  "properties": {
                    "dtype": {
                      "const": "enum",
                      "description": "显式enum使用文字标签；CAN可从DBC补枚举表，已解析数据需提供choices。"
                    }
                  },
                  "required": [
                    "dtype"
                  ]
                },
                "then": {
                  "properties": {
                    "choices": {
                      "minItems": 1,
                      "description": "枚举的[原编码,标签]二元数组；保留编码原生类型，不能用对象键把整数或布尔编码字符串化。"
                    }
                  },
                  "allOf": [
                    {
                      "if": {
                        "properties": {
                          "field": {
                            "type": "string",
                            "description": "已解析信号的列名没有DBC类型和单位元数据，需由配置明确声明。"
                          }
                        },
                        "required": [
                          "field"
                        ]
                      },
                      "then": {
                        "required": [
                          "choices"
                        ]
                      }
                    }
                  ]
                }
              },
              {
                "if": {
                  "properties": {
                    "field": {
                      "type": "string",
                      "description": "已解析信号的列名没有DBC类型和单位元数据，需由配置明确声明。"
                    }
                  },
                  "required": [
                    "field"
                  ]
                },
                "then": {
                  "required": [
                    "dtype",
                    "unit"
                  ]
                }
              }
            ]
          },
          {
            "type": "object",
            "properties": {
              "frame_id": {
                "oneOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 536870911
                  },
                  {
                    "type": "string",
                    "pattern": "^(?:[0-9]+|0[xX][0-9a-fA-F]+|0[bB][01]+)(?![\\s\\S])",
                    "minLength": 1
                  }
                ],
                "description": "CAN报文ID；整数或字符串均可。0x前缀为十六进制，0b为二进制，无前缀为十进制；解析后须在0至536870911内，显式标准帧最多2047。"
              },
              "channel": {
                "type": "integer",
                "minimum": 1,
                "description": "用户配置CAN通道从1开始，1对应内部0；省略时继承来源唯一通道。"
              },
              "is_extended": {
                "type": "boolean",
                "description": "标准／扩展帧可选约束。省略时根据DBC和实际报文识别；只有歧义时要求补充。显式null无效。"
              },
              "is_fd": {
                "type": "boolean",
                "description": "CAN／CAN FD可选约束。省略时根据DBC和实际报文识别；只有歧义时要求补充。显式null无效。"
              },
              "source": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "已声明来源的name。引用必须存在，不按同名字段或语义名称自动寻找来源。"
              },
              "period": {
                "type": "string",
                "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                "description": "当前信号的固定周期，正的带单位时长，例如100ms。显式周期优先于DBC报文周期；valid_for省略时取周期的3倍。",
                "examples": [
                  "100ms",
                  "0.1s"
                ]
              },
              "valid_for": {
                "type": "string",
                "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                "description": "有效样本最多沿用的实际时长。可省略，默认取当前信号周期的3倍；用户period优先，否则取DBC所属报文周期。均无法取得时需补充period或valid_for。显式填写覆盖默认值。",
                "examples": [
                  "500ms",
                  "2s"
                ]
              },
              "same_time_policy": {
                "enum": [
                  "error",
                  "last_by_sequence"
                ],
                "description": "同一信号同一时刻出现多个更新时的处理方式；不忽略冲突或任意重排记录。可选值：\"error\"：同刻更新冲突时失败；\"last_by_sequence\"：按原顺序取最后一次更新。",
                "default": "error"
              },
              "signals": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                      "not": {
                        "enum": [
                          "abs",
                          "isclose",
                          "False",
                          "None",
                          "True",
                          "and",
                          "as",
                          "assert",
                          "async",
                          "await",
                          "break",
                          "class",
                          "continue",
                          "def",
                          "del",
                          "elif",
                          "else",
                          "except",
                          "finally",
                          "for",
                          "from",
                          "global",
                          "if",
                          "import",
                          "in",
                          "is",
                          "lambda",
                          "nonlocal",
                          "not",
                          "or",
                          "pass",
                          "raise",
                          "return",
                          "try",
                          "while",
                          "with",
                          "yield"
                        ],
                        "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                      },
                      "description": "当前来源或信号的简单名称，供后续声明引用；不是对原数据字段的猜测或重命名。"
                    },
                    "dtype": {
                      "enum": [
                        "int64",
                        "uint64",
                        "float64",
                        "bool",
                        "enum"
                      ],
                      "description": "分析信号类型：int64、uint64、float64、bool或enum。CAN省略时按DBC解码值推导数值类型，不因DBC存在枚举表自动改为enum；明确手工choices为文字或布尔标签时可确定enum或bool。已解析数据仍需声明dtype。"
                    },
                    "unit": {
                      "type": "string",
                      "minLength": 1,
                      "pattern": "\\S",
                      "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。 CAN省略时读取DBC单位；DBC未定义则使用unknown并标为未核实，逻辑类型用1。已解析数据仍需填写。"
                    },
                    "valid_for": {
                      "type": "string",
                      "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                      "description": "有效样本最多沿用的实际时长。可省略，默认取当前信号周期的3倍；用户period优先，否则取DBC所属报文周期。均无法取得时需补充period或valid_for。显式填写覆盖默认值。",
                      "examples": [
                        "500ms",
                        "2s"
                      ]
                    },
                    "sample_policy": {
                      "const": "backward_hold",
                      "description": "样本沿用政策。当前仅支持backward_hold，即在有效期内使用最近的有效样本。 固定值：\"backward_hold\"。",
                      "default": "backward_hold"
                    },
                    "same_time_policy": {
                      "enum": [
                        "error",
                        "last_by_sequence"
                      ],
                      "description": "同一信号同一时刻出现多个更新时的处理方式；不忽略冲突或任意重排记录。可选值：\"error\"：同刻更新冲突时失败；\"last_by_sequence\"：按原顺序取最后一次更新。",
                      "default": "error"
                    },
                    "code_dtype": {
                      "enum": [
                        "int64",
                        "uint64"
                      ],
                      "description": "v4 枚举映射前的整数类型，enum_code 按需读取。"
                    },
                    "choices": {
                      "type": "array",
                      "items": {
                        "type": "array",
                        "prefixItems": [
                          {
                            "type": [
                              "integer",
                              "boolean",
                              "string"
                            ]
                          },
                          {
                            "type": [
                              "string",
                              "boolean"
                            ]
                          }
                        ],
                        "minItems": 2,
                        "maxItems": 2,
                        "items": false
                      },
                      "description": "枚举的[原编码,标签]二元数组；保留编码原生类型，不能用对象键把整数或布尔编码字符串化。 dtype=enum且省略时读取DBC枚举表；显式映射优先。缩放产生浮点枚举码时明确报错，不截断为整数。"
                    },
                    "valid_range": {
                      "type": "array",
                      "items": {
                        "type": "number"
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "description": "允许的规范数值范围，低值到高值；超界按质量政策处理，不自动裁剪到边界。"
                    },
                    "invalid_values": {
                      "type": "array",
                      "items": {
                        "type": [
                          "number",
                          "string",
                          "boolean",
                          "null"
                        ]
                      },
                      "description": "明确标记为无效的原始编码列表；无效更新会覆盖前值，不当作没有更新。",
                      "default": []
                    },
                    "semantic_id": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "minLength": 1,
                      "pattern": "\\S",
                      "description": "可选业务含义标识，用于说明或角色契约；相同标识本身不会自动绑定信号。 可省略或显式null；非null时必须为非空文本。"
                    },
                    "semantic_contract_version": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "minLength": 1,
                      "pattern": "\\S",
                      "description": "本信号semantic_id所指业务含义的版本，与分析配置版本独立；不表示实际输入已核验。可省略或显式null；任意非null值必须为非空文本，并同时填写本信号的semantic_id。"
                    },
                    "mapping_version": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "minLength": 1,
                      "pattern": "\\S",
                      "description": "调用方信号映射的版本标识，便于追溯明确绑定。 可省略或显式null；非null时必须为非空文本。"
                    },
                    "sign_convention": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "minLength": 1,
                      "pattern": "\\S",
                      "description": "规范信号正负方向的明确含义，例如流入为正；不同位置或方向不应仅凭名字合并。 可省略或显式null；非null时必须为非空文本。"
                    },
                    "measurement_location": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "minLength": 1,
                      "pattern": "\\S",
                      "description": "信号的测量位置声明，供业务角色契约核对。 可省略或显式null；非null时必须为非空文本。"
                    },
                    "metadata": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "附加说明对象；允许自定义JSON原生值，但不参与隐藏转换、模板执行或业务参数推断。"
                    },
                    "period": {
                      "type": "string",
                      "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                      "description": "当前信号的固定周期，正的带单位时长，例如100ms。显式周期优先于DBC报文周期；valid_for省略时取周期的3倍。",
                      "examples": [
                        "100ms",
                        "0.1s"
                      ]
                    },
                    "signal": {
                      "type": "string",
                      "minLength": 1,
                      "description": "计算输入的已绑定信号名，或CAN定位中的原DBC信号名；两种上下文分别检查。"
                    },
                    "conversion": {
                      "type": "object",
                      "properties": {
                        "input_unit": {
                          "type": "string",
                          "minLength": 1,
                          "pattern": "\\S",
                          "description": "读取或DBC解码后的单位。原始CAN报文省略时从DBC取得；已解析信号CSV和内存省略时沿用目标unit。显式null无效，请省略字段。"
                        },
                        "scale": {
                          "type": "number",
                          "description": "乘法系数。两系数均省略时自动推导；只有offset显式填写时本项取1。显式系数须符合单位关系。"
                        },
                        "offset": {
                          "type": "number",
                          "description": "乘法之后加上的数值，单位为目标unit。两系数均省略时自动推导；只有scale显式填写时本项取0。"
                        }
                      },
                      "additionalProperties": false,
                      "description": "额外单位换算。scale和offset均省略时按输入与目标单位自动推导；显式填写任一项则校验完整系数，不重复应用DBC缩放。"
                    }
                  },
                  "required": [
                    "name",
                    "signal"
                  ],
                  "additionalProperties": false,
                  "allOf": [
                    {
                      "if": {
                        "properties": {
                          "dtype": {
                            "const": "enum",
                            "description": "显式enum使用文字标签；CAN可从DBC补枚举表，已解析数据需提供choices。"
                          }
                        },
                        "required": [
                          "dtype"
                        ]
                      },
                      "then": {
                        "properties": {
                          "choices": {
                            "minItems": 1,
                            "description": "枚举的[原编码,标签]二元数组；保留编码原生类型，不能用对象键把整数或布尔编码字符串化。"
                          }
                        },
                        "allOf": [
                          {
                            "if": {
                              "properties": {
                                "field": {
                                  "type": "string",
                                  "description": "已解析信号的列名没有DBC类型和单位元数据，需由配置明确声明。"
                                }
                              },
                              "required": [
                                "field"
                              ]
                            },
                            "then": {
                              "required": [
                                "choices"
                              ]
                            }
                          }
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "field": {
                            "type": "string",
                            "description": "已解析信号的列名没有DBC类型和单位元数据，需由配置明确声明。"
                          }
                        },
                        "required": [
                          "field"
                        ]
                      },
                      "then": {
                        "required": [
                          "dtype",
                          "unit"
                        ]
                      }
                    }
                  ]
                },
                "description": "同一报文内的信号声明；只填各信号名称和所需的独立覆盖参数。"
              }
            },
            "required": [
              "frame_id",
              "signals"
            ],
            "additionalProperties": false,
            "allOf": [
              {
                "if": {
                  "properties": {
                    "is_extended": {
                      "const": false,
                      "description": "显式选择标准帧时，整数ID不得超过11位范围。"
                    }
                  },
                  "required": [
                    "is_extended"
                  ]
                },
                "then": {
                  "properties": {
                    "frame_id": {
                      "maximum": 2047,
                      "description": "标准帧的整数报文ID上限为2047；字符串转换后的范围由计划加载器核实。"
                    }
                  }
                }
              }
            ]
          }
        ]
      },
      "description": "把来源的原始字段绑定为分析使用的简单信号名，明确类型、单位和有效期。"
    },
    "derived": {
      "type": "object",
      "propertyNames": {
        "type": "string",
        "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
        "not": {
          "enum": [
            "abs",
            "isclose",
            "False",
            "None",
            "True",
            "and",
            "as",
            "assert",
            "async",
            "await",
            "break",
            "class",
            "continue",
            "def",
            "del",
            "elif",
            "else",
            "except",
            "finally",
            "for",
            "from",
            "global",
            "if",
            "import",
            "in",
            "is",
            "lambda",
            "nonlocal",
            "not",
            "or",
            "pass",
            "raise",
            "return",
            "try",
            "while",
            "with",
            "yield"
          ],
          "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
        }
      },
      "additionalProperties": {
        "type": "object",
        "properties": {
          "expr": {
            "type": "string",
            "minLength": 1,
            "pattern": "\\S",
            "description": "受限表达式，只引用明确绑定名称和已支持运算；不执行Python、属性访问或任意函数。"
          },
          "unit": {
            "type": "string",
            "minLength": 1,
            "pattern": "\\S",
            "description": "可选结果单位；省略时按表达式已支持的单位关系推导，无法确定时明确报错。"
          },
          "semantic_id": {
            "type": "string",
            "minLength": 1,
            "pattern": "\\S",
            "description": "可选业务含义标识，用于说明或角色契约；相同标识本身不会自动绑定信号。"
          },
          "semantic_contract_version": {
            "type": "string",
            "minLength": 1,
            "pattern": "\\S",
            "description": "该语义契约的版本，与分析配置版本独立；不表示实际输入已核验。"
          },
          "sign_convention": {
            "type": "string",
            "minLength": 1,
            "pattern": "\\S",
            "description": "规范信号正负方向的明确含义，例如流入为正；不同位置或方向不应仅凭名字合并。"
          },
          "measurement_location": {
            "type": "string",
            "minLength": 1,
            "pattern": "\\S",
            "description": "信号的测量位置声明，供业务角色契约核对。"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true,
            "description": "附加说明对象；允许自定义JSON原生值，但不参与隐藏转换、模板执行或业务参数推断。"
          }
        },
        "required": [
          "expr"
        ],
        "additionalProperties": false
      },
      "description": "派生信号名称到表达式声明的映射。只使用已绑定信号和受限表达式，检查单位与依赖循环。",
      "default": {}
    },
    "rules": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
              },
              "condition": {
                "type": "string",
                "minLength": 1,
                "pattern": "\\S",
                "description": "布尔条件表达式。未知值按三值逻辑处理，不把非零数值隐式当真。"
              },
              "selection_origin": {
                "enum": [
                  "onset",
                  "confirmed"
                ],
                "description": "持续条件事件的统计起点，选择首次成立时刻或持续时间得到确认的时刻。可选值：\"onset\"：从条件首次成立时刻计算；\"confirmed\"：从持续条件确认时刻计算。",
                "default": "onset"
              },
              "rule_type": {
                "const": "condition_duration",
                "description": "事件规则类型，决定条件、时长、阈值及其他字段的含义。 固定值：\"condition_duration\"（条件连续成立达到最短时长后确认活动）。"
              },
              "minimum_duration": {
                "type": "string",
                "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                "description": "条件连续成立的最短确认时长，必须带单位；不是样本有效期或等待上限。",
                "examples": [
                  "0s",
                  "500ms"
                ]
              },
              "duration_comparison": {
                "type": "string",
                "enum": [
                  ">=",
                  ">"
                ],
                "description": "持续时间与minimum_duration的比较，必须明确填写：>=达到，>严格超过。60秒整仅符合>=；不更改活动起点，selection_origin仍默认onset。"
              },
              "interval": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "actual",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"actual\"。"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "fixed",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"fixed\"。"
                      },
                      "value": {
                        "type": "string",
                        "minLength": 2,
                        "description": "fixed计算间隔的带单位正时长，例如100ms；actual/dbc不接受此字段。"
                      },
                      "driver": {
                        "type": "string",
                        "minLength": 1,
                        "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                      }
                    },
                    "required": [
                      "mode",
                      "value"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "dbc",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"dbc\"。"
                      },
                      "driver": {
                        "type": "string",
                        "minLength": 1,
                        "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "此节点采用的间隔来源；省略则继承全局default，多个驱动候选时须明确driver。"
              }
            },
            "required": [
              "name",
              "rule_type",
              "condition",
              "minimum_duration",
              "duration_comparison"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
              },
              "condition": {
                "type": "string",
                "minLength": 1,
                "pattern": "\\S",
                "description": "布尔条件表达式。未知值按三值逻辑处理，不把非零数值隐式当真。"
              },
              "emit_initial": {
                "type": "boolean",
                "description": "第一次已知条件已经成立时是否触发。默认值按规则类型确定，下降沿不允许开启。",
                "default": false
              },
              "rule_type": {
                "const": "rising_edge",
                "description": "事件规则类型，决定条件、时长、阈值及其他字段的含义。 固定值：\"rising_edge\"（条件由假变真时产生点事件）。"
              },
              "interval": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "actual",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"actual\"。"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "fixed",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"fixed\"。"
                      },
                      "value": {
                        "type": "string",
                        "minLength": 2,
                        "description": "fixed计算间隔的带单位正时长，例如100ms；actual/dbc不接受此字段。"
                      },
                      "driver": {
                        "type": "string",
                        "minLength": 1,
                        "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                      }
                    },
                    "required": [
                      "mode",
                      "value"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "dbc",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"dbc\"。"
                      },
                      "driver": {
                        "type": "string",
                        "minLength": 1,
                        "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "此节点采用的间隔来源；省略则继承全局default，多个驱动候选时须明确driver。"
              }
            },
            "required": [
              "name",
              "rule_type",
              "condition"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
              },
              "condition": {
                "type": "string",
                "minLength": 1,
                "pattern": "\\S",
                "description": "布尔条件表达式。未知值按三值逻辑处理，不把非零数值隐式当真。"
              },
              "emit_initial": {
                "const": false,
                "description": "第一次已知条件已经成立时是否触发。默认值按规则类型确定，下降沿不允许开启。 固定值：false。",
                "default": false
              },
              "rule_type": {
                "const": "falling_edge",
                "description": "事件规则类型，决定条件、时长、阈值及其他字段的含义。 固定值：\"falling_edge\"（条件由真变假时产生点事件）。"
              },
              "interval": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "actual",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"actual\"。"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "fixed",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"fixed\"。"
                      },
                      "value": {
                        "type": "string",
                        "minLength": 2,
                        "description": "fixed计算间隔的带单位正时长，例如100ms；actual/dbc不接受此字段。"
                      },
                      "driver": {
                        "type": "string",
                        "minLength": 1,
                        "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                      }
                    },
                    "required": [
                      "mode",
                      "value"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "dbc",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"dbc\"。"
                      },
                      "driver": {
                        "type": "string",
                        "minLength": 1,
                        "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "此节点采用的间隔来源；省略则继承全局default，多个驱动候选时须明确driver。"
              }
            },
            "required": [
              "name",
              "rule_type",
              "condition"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
              },
              "condition": {
                "type": "string",
                "minLength": 1,
                "pattern": "\\S",
                "description": "布尔条件表达式。未知值按三值逻辑处理，不把非零数值隐式当真。"
              },
              "window_duration": {
                "type": "string",
                "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                "description": "start_only触发后的固定窗口长度，必须是正时长；窗口结束不因持续为真而自动重触发。"
              },
              "emit_initial": {
                "type": "boolean",
                "description": "第一次已知条件已经成立时是否触发。默认值按规则类型确定，下降沿不允许开启。",
                "default": false
              },
              "rule_type": {
                "const": "start_only",
                "description": "事件规则类型，决定条件、时长、阈值及其他字段的含义。 固定值：\"start_only\"（触发后生成固定窗口并抑制窗口内重复触发）。"
              },
              "interval": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "actual",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"actual\"。"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "fixed",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"fixed\"。"
                      },
                      "value": {
                        "type": "string",
                        "minLength": 2,
                        "description": "fixed计算间隔的带单位正时长，例如100ms；actual/dbc不接受此字段。"
                      },
                      "driver": {
                        "type": "string",
                        "minLength": 1,
                        "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                      }
                    },
                    "required": [
                      "mode",
                      "value"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "dbc",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"dbc\"。"
                      },
                      "driver": {
                        "type": "string",
                        "minLength": 1,
                        "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "此节点采用的间隔来源；省略则继承全局default，多个驱动候选时须明确driver。"
              }
            },
            "required": [
              "name",
              "rule_type",
              "condition",
              "window_duration"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
              },
              "signal": {
                "type": "string",
                "minLength": 1,
                "pattern": "\\S",
                "description": "window_delta检查的数值信号名或白名单数值表达式；不是DBC原名称，也不是布尔条件。"
              },
              "window": {
                "type": "string",
                "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                "description": "变化量计算的完整回看窗口长度，必须为带单位正时长；不是窗口id。"
              },
              "direction": {
                "enum": [
                  "rise",
                  "fall",
                  "any"
                ],
                "description": "窗口变化量的比较方向：上升、下降或绝对变化。可选值：\"rise\"：末值减首值；\"fall\"：首值减末值；\"any\"：首末差值的绝对值。"
              },
              "threshold": {
                "type": "number",
                "minimum": 0,
                "description": "变化量门槛，与输入信号单位一致，非负且包含等于门槛；不能猜业务阈值。"
              },
              "monotonic": {
                "type": "boolean",
                "description": "是否要求回看窗口内保持单调，默认false；方向仍由direction决定。",
                "default": false
              },
              "coverage_policy": {
                "const": "full",
                "description": "窗口变化量的观测覆盖政策，当前仅接受full，必须覆盖完整回看窗口。 固定值：\"full\"。",
                "default": "full"
              },
              "emit_initial": {
                "type": "boolean",
                "description": "第一次已知条件已经成立时是否触发。默认值按规则类型确定，下降沿不允许开启。",
                "default": false
              },
              "retrigger": {
                "enum": [
                  "edge",
                  "once"
                ],
                "description": "窗口变化量事件的再次触发方式，edge要求条件重新由假变真，once每个会话最多一次。可选值：\"edge\"：条件重新由假变真后可再次触发；\"once\"：每个会话最多触发一次。",
                "default": "edge"
              },
              "rule_type": {
                "const": "window_delta",
                "description": "事件规则类型，决定条件、时长、阈值及其他字段的含义。 固定值：\"window_delta\"（检查完整回看窗口内的变化量）。"
              },
              "interval": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "actual",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"actual\"。"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "fixed",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"fixed\"。"
                      },
                      "value": {
                        "type": "string",
                        "minLength": 2,
                        "description": "fixed计算间隔的带单位正时长，例如100ms；actual/dbc不接受此字段。"
                      },
                      "driver": {
                        "type": "string",
                        "minLength": 1,
                        "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                      }
                    },
                    "required": [
                      "mode",
                      "value"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "dbc",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"dbc\"。"
                      },
                      "driver": {
                        "type": "string",
                        "minLength": 1,
                        "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "此节点采用的间隔来源；省略则继承全局default，多个驱动候选时须明确driver。"
              }
            },
            "required": [
              "name",
              "rule_type",
              "signal",
              "window",
              "direction",
              "threshold"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "name",
              "rule_type",
              "condition"
            ],
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
              },
              "condition": {
                "type": "string",
                "minLength": 1,
                "description": "布尔条件表达式。未知值按三值逻辑处理，不把非零数值隐式当真。"
              },
              "enter_delay": {
                "type": "string",
                "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                "description": "进入条件连续满足多久才进入活动，带单位非负时长，省略为0s。",
                "default": "0s"
              },
              "exit_delay": {
                "type": "string",
                "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                "description": "退出条件连续满足多久才退出或合并片段的退出延迟；由所在规则/窗口明确含义，必须带单位。",
                "default": "0s"
              },
              "rule_type": {
                "const": "debounce",
                "description": "事件规则类型，决定条件、时长、阈值及其他字段的含义。 固定值：\"debounce\"（条件稳定达到延迟后切换活动状态）。"
              },
              "interval": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "actual",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"actual\"。"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "fixed",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"fixed\"。"
                      },
                      "value": {
                        "type": "string",
                        "minLength": 2,
                        "description": "fixed计算间隔的带单位正时长，例如100ms；actual/dbc不接受此字段。"
                      },
                      "driver": {
                        "type": "string",
                        "minLength": 1,
                        "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                      }
                    },
                    "required": [
                      "mode",
                      "value"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "dbc",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"dbc\"。"
                      },
                      "driver": {
                        "type": "string",
                        "minLength": 1,
                        "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "此节点采用的间隔来源；省略则继承全局default，多个驱动候选时须明确driver。"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "name",
              "rule_type",
              "enter_condition",
              "exit_condition"
            ],
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
              },
              "enter_condition": {
                "type": "string",
                "minLength": 1,
                "description": "迟滞进入活动的布尔表达式，与退出条件分开声明。"
              },
              "exit_condition": {
                "type": "string",
                "minLength": 1,
                "description": "迟滞退出活动的布尔表达式，不默认等于进入条件取反。"
              },
              "enter_delay": {
                "type": "string",
                "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                "description": "进入条件连续满足多久才进入活动，带单位非负时长，省略为0s。",
                "default": "0s"
              },
              "exit_delay": {
                "type": "string",
                "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                "description": "退出条件连续满足多久才退出或合并片段的退出延迟；由所在规则/窗口明确含义，必须带单位。",
                "default": "0s"
              },
              "rule_type": {
                "const": "hysteresis",
                "description": "事件规则类型，决定条件、时长、阈值及其他字段的含义。 固定值：\"hysteresis\"（分别声明进入和退出条件及稳定时间）。"
              },
              "interval": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "actual",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"actual\"。"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "fixed",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"fixed\"。"
                      },
                      "value": {
                        "type": "string",
                        "minLength": 2,
                        "description": "fixed计算间隔的带单位正时长，例如100ms；actual/dbc不接受此字段。"
                      },
                      "driver": {
                        "type": "string",
                        "minLength": 1,
                        "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                      }
                    },
                    "required": [
                      "mode",
                      "value"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "dbc",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"dbc\"。"
                      },
                      "driver": {
                        "type": "string",
                        "minLength": 1,
                        "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "此节点采用的间隔来源；省略则继承全局default，多个驱动候选时须明确driver。"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "name",
              "rule_type",
              "start_condition",
              "end_condition"
            ],
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
              },
              "start_condition": {
                "type": "string",
                "minLength": 1,
                "description": "开始活动的布尔表达式；与end_condition形成开始/结束规则。"
              },
              "end_condition": {
                "type": "string",
                "minLength": 1,
                "description": "结束当前活动的布尔表达式；条件未知不等同于已知结束。"
              },
              "timeout": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "开始后允许等待的正时长上限。null或省略表示不限时；与valid_for样本有效期不同。",
                "default": null
              },
              "emit_initial": {
                "type": "boolean",
                "description": "第一次已知条件已经成立时是否触发。默认值按规则类型确定，下降沿不允许开启。",
                "default": true
              },
              "rule_type": {
                "const": "start_end",
                "description": "事件规则类型，决定条件、时长、阈值及其他字段的含义。 固定值：\"start_end\"（明确开始/结束条件，可设置等待上限）。"
              },
              "interval": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "actual",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"actual\"。"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "fixed",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"fixed\"。"
                      },
                      "value": {
                        "type": "string",
                        "minLength": 2,
                        "description": "fixed计算间隔的带单位正时长，例如100ms；actual/dbc不接受此字段。"
                      },
                      "driver": {
                        "type": "string",
                        "minLength": 1,
                        "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                      }
                    },
                    "required": [
                      "mode",
                      "value"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "const": "dbc",
                        "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"dbc\"。"
                      },
                      "driver": {
                        "type": "string",
                        "minLength": 1,
                        "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "此节点采用的间隔来源；省略则继承全局default，多个驱动候选时须明确driver。"
              }
            },
            "description": "开始条件启动活动，结束条件正常结束；可判断却达到时限时标timeout。"
          }
        ]
      },
      "description": "识别事件的规则列表。规则name与窗口、计算项和序列共享唯一名称空间。",
      "default": []
    },
    "windows": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
            "not": {
              "enum": [
                "abs",
                "isclose",
                "False",
                "None",
                "True",
                "and",
                "as",
                "assert",
                "async",
                "await",
                "break",
                "class",
                "continue",
                "def",
                "del",
                "elif",
                "else",
                "except",
                "finally",
                "for",
                "from",
                "global",
                "if",
                "import",
                "in",
                "is",
                "lambda",
                "nonlocal",
                "not",
                "or",
                "pass",
                "raise",
                "return",
                "try",
                "while",
                "with",
                "yield"
              ],
              "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
            },
            "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
          },
          "rule": {
            "type": "string",
            "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
            "not": {
              "enum": [
                "abs",
                "isclose",
                "False",
                "None",
                "True",
                "and",
                "as",
                "assert",
                "async",
                "await",
                "break",
                "class",
                "continue",
                "def",
                "del",
                "elif",
                "else",
                "except",
                "finally",
                "for",
                "from",
                "global",
                "if",
                "import",
                "in",
                "is",
                "lambda",
                "nonlocal",
                "not",
                "or",
                "pass",
                "raise",
                "return",
                "try",
                "while",
                "with",
                "yield"
              ],
              "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
            },
            "description": "生成此窗口的已声明事件规则name。"
          },
          "anchor": {
            "enum": [
              "point",
              "activity"
            ],
            "description": "窗口按点事件还是活动区间定位，必须与引用规则产生的事件类型一致。可选值：\"point\"：以点事件为中心；\"activity\"：以活动起止区间为基础。 省略时由关联规则推导。"
          },
          "pre": {
            "type": "string",
            "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
            "description": "事件之前扩展的非负带单位时长，省略为0s。"
          },
          "post": {
            "type": "string",
            "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
            "description": "事件之后扩展的非负带单位时长。通常省略为0s；start_only沿用对应规则window_duration，合并规则仍检查组合约束。"
          },
          "merge": {
            "enum": [
              "none",
              "overlap",
              "overlap_and_adjacent",
              "exit_delay"
            ],
            "description": "相邻事件生成片段的合并方式，不改变原事件本身。可选值：\"none\"：每个片段分别保留；\"overlap\"：合并重叠片段；\"overlap_and_adjacent\"：合并重叠或相邻片段；\"exit_delay\"：在退出延迟内将重入合并为同一片段。",
            "default": "none"
          },
          "exit_delay": {
            "type": "string",
            "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
            "description": "退出条件连续满足多久才退出或合并片段的退出延迟；由所在规则/窗口明确含义，必须带单位。"
          },
          "interval": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "const": "actual",
                    "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"actual\"。"
                  }
                },
                "required": [
                  "mode"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "const": "fixed",
                    "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"fixed\"。"
                  },
                  "value": {
                    "type": "string",
                    "minLength": 2,
                    "description": "fixed计算间隔的带单位正时长，例如100ms；actual/dbc不接受此字段。"
                  },
                  "driver": {
                    "type": "string",
                    "minLength": 1,
                    "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                  }
                },
                "required": [
                  "mode",
                  "value"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "const": "dbc",
                    "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"dbc\"。"
                  },
                  "driver": {
                    "type": "string",
                    "minLength": 1,
                    "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                  }
                },
                "required": [
                  "mode"
                ],
                "additionalProperties": false
              }
            ],
            "description": "此节点采用的间隔来源；省略则继承全局default，多个驱动候选时须明确driver。"
          }
        },
        "required": [
          "name",
          "rule"
        ],
        "additionalProperties": false,
        "allOf": [
          {
            "if": {
              "properties": {
                "merge": {
                  "const": "exit_delay",
                  "description": "相邻事件生成片段的合并方式，不改变原事件本身。 固定值：\"exit_delay\"（在退出延迟内将重入合并为同一片段）。"
                }
              },
              "required": [
                "merge"
              ]
            },
            "then": {
              "required": [
                "exit_delay"
              ],
              "properties": {
                "anchor": {
                  "const": "activity",
                  "description": "窗口按点事件还是活动区间定位，必须与引用规则产生的事件类型一致。 固定值：\"activity\"（以活动起止区间为基础）。"
                }
              }
            },
            "else": {
              "not": {
                "required": [
                  "exit_delay"
                ]
              }
            }
          }
        ]
      },
      "description": "由事件生成的取数片段，指定前后扩展及片段合并方式。",
      "default": []
    },
    "calculations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
            "not": {
              "enum": [
                "abs",
                "isclose",
                "False",
                "None",
                "True",
                "and",
                "as",
                "assert",
                "async",
                "await",
                "break",
                "class",
                "continue",
                "def",
                "del",
                "elif",
                "else",
                "except",
                "finally",
                "for",
                "from",
                "global",
                "if",
                "import",
                "in",
                "is",
                "lambda",
                "nonlocal",
                "not",
                "or",
                "pass",
                "raise",
                "return",
                "try",
                "while",
                "with",
                "yield"
              ],
              "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
            },
            "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
          },
          "scope": {
            "oneOf": [
              {
                "const": "session",
                "description": "分析或导出整个会话的可用范围。"
              },
              {
                "type": "object",
                "properties": {
                  "rule": {
                    "type": "string",
                    "minLength": 1,
                    "description": "所引用的规则或窗口名称，必须在同一配置中已经声明。"
                  }
                },
                "required": [
                  "rule"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "window": {
                    "type": "string",
                    "minLength": 1,
                    "description": "所引用的规则或窗口名称，必须在同一配置中已经声明。"
                  }
                },
                "required": [
                  "window"
                ],
                "additionalProperties": false
              }
            ],
            "description": "计算范围，省略为session；{rule: 名称}逐事件计算，{window: 名称}逐窗口计算，引用须已声明。"
          },
          "operation": {
            "enum": [
              "select",
              "sample_minimum",
              "sample_maximum",
              "sample_mean",
              "min_time",
              "max_time",
              "time_weighted_mean",
              "duration",
              "integral",
              "sample_count",
              "point_event_count",
              "activity_count",
              "segment_count",
              "sample_variance",
              "sample_stddev",
              "time_variance",
              "time_stddev",
              "sample_rms",
              "time_rms",
              "sample_quantile",
              "sample_median"
            ],
            "description": "计算操作。明确区分样本统计和时间加权统计，不接受含义不明的mean/min/max。可选值：\"select\"：选择符合条件的记录；\"sample_minimum\"：有效样本最小值；\"sample_maximum\"：有效样本最大值；\"sample_mean\"：有效样本等权均值；\"min_time\"：有效持续区间内的最小值；\"max_time\"：有效持续区间内的最大值；\"time_weighted_mean\"：按有效持续时间加权的均值；\"duration\"：条件为真的累计时长；\"integral\"：按前值保持计算积分。 版本4另支持计数：sample_count计有效样本，point_event_count计点事件，activity_count计活动，segment_count计最终片段。"
          },
          "condition": {
            "type": "string",
            "minLength": 1,
            "pattern": "\\S",
            "description": "布尔条件表达式。未知值按三值逻辑处理，不把非零数值隐式当真。"
          },
          "unit": {
            "type": "string",
            "minLength": 1,
            "pattern": "\\S",
            "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。"
          },
          "method": {
            "const": "zoh",
            "description": "积分方法。当前只支持zoh，按前值保持的有效时间累计，不自动线性插值。 固定值：\"zoh\"。"
          },
          "partial_policy": {
            "enum": [
              "report",
              "strict"
            ],
            "description": "有效覆盖不足时的处理政策；计算项省略则继承execution，预设按自身参数契约检查。可选值：\"report\"：报告可得的部分结果及覆盖信息；\"strict\"：按严格完整性要求处理部分结果。"
          },
          "minimum_coverage": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "需要的最小有效覆盖比例，范围0到1；不通过补零或延长有效期达到门槛。",
            "default": 0
          },
          "expr": {
            "type": "string",
            "minLength": 1,
            "description": "统计输入的信号名称或白名单表达式；编译时检查依赖、类型与单位。"
          },
          "interval": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "const": "actual",
                    "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"actual\"。"
                  }
                },
                "required": [
                  "mode"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "const": "fixed",
                    "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"fixed\"。"
                  },
                  "value": {
                    "type": "string",
                    "minLength": 2,
                    "description": "fixed计算间隔的带单位正时长，例如100ms；actual/dbc不接受此字段。"
                  },
                  "driver": {
                    "type": "string",
                    "minLength": 1,
                    "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                  }
                },
                "required": [
                  "mode",
                  "value"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "const": "dbc",
                    "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"dbc\"。"
                  },
                  "driver": {
                    "type": "string",
                    "minLength": 1,
                    "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                  }
                },
                "required": [
                  "mode"
                ],
                "additionalProperties": false
              }
            ],
            "description": "此节点采用的间隔来源；省略则继承全局default，多个驱动候选时须明确driver。"
          },
          "rule": {
            "type": "string",
            "minLength": 1,
            "description": "要计数的点事件或活动规则名称，仅用于对象计数。"
          },
          "window": {
            "type": "string",
            "minLength": 1,
            "description": "要计数的最终片段来自哪个窗口，仅用于segment_count。"
          },
          "ddof": {
            "type": "integer",
            "enum": [
              0,
              1
            ],
            "description": "样本方差和标准差的自由度修正：0表示总体，1表示按N−1计算；时间加权只允许0。"
          },
          "q": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "精确分位数的位置，0表示最小值、1最大值、0.95表示P95。仅sample_quantile填写。"
          }
        },
        "required": [
          "name",
          "operation"
        ],
        "additionalProperties": false,
        "allOf": [
          {
            "if": {
              "required": [
                "operation"
              ],
              "properties": {
                "operation": {
                  "$ref": "#/properties/calculations/items/properties/operation",
                  "description": "计算操作。明确区分样本统计和时间加权统计，不接受含义不明的mean/min/max。可选值：\"select\"：选择符合条件的记录；\"sample_minimum\"：有效样本最小值；\"sample_maximum\"：有效样本最大值；\"sample_mean\"：有效样本等权均值；\"min_time\"：有效持续区间内的最小值；\"max_time\"：有效持续区间内的最大值；\"time_weighted_mean\"：按有效持续时间加权的均值；\"duration\"：条件为真的累计时长；\"integral\"：按前值保持计算积分。 版本4另支持计数：sample_count计有效样本，point_event_count计点事件，activity_count计活动，segment_count计最终片段。"
                }
              }
            },
            "then": {
              "allOf": [
                {
                  "if": {
                    "properties": {
                      "operation": {
                        "const": "duration",
                        "description": "计算操作。明确区分样本统计和时间加权统计，不接受含义不明的mean/min/max。 固定值：\"duration\"（条件为真的累计时长）。"
                      }
                    }
                  },
                  "then": {
                    "oneOf": [
                      {
                        "required": [
                          "expr"
                        ],
                        "not": {
                          "required": [
                            "condition"
                          ]
                        }
                      },
                      {
                        "required": [
                          "condition"
                        ],
                        "not": {
                          "required": [
                            "expr"
                          ]
                        }
                      }
                    ]
                  },
                  "else": {
                    "if": {
                      "properties": {
                        "operation": {
                          "enum": [
                            "point_event_count",
                            "activity_count",
                            "segment_count"
                          ],
                          "description": "选择这项计算执行的具名操作。"
                        }
                      }
                    },
                    "else": {
                      "required": [
                        "expr"
                      ]
                    }
                  }
                },
                {
                  "if": {
                    "properties": {
                      "operation": {
                        "const": "integral",
                        "description": "计算操作。明确区分样本统计和时间加权统计，不接受含义不明的mean/min/max。 固定值：\"integral\"（按前值保持计算积分）。"
                      }
                    }
                  },
                  "else": {
                    "not": {
                      "required": [
                        "method"
                      ]
                    }
                  }
                },
                {
                  "if": {
                    "properties": {
                      "operation": {
                        "enum": [
                          "point_event_count",
                          "activity_count"
                        ],
                        "description": "选择这项计算执行的具名操作。"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "rule"
                    ]
                  },
                  "else": {
                    "properties": {
                      "rule": {
                        "not": {},
                        "description": "在当前版本或操作下不能填写字段 rule。"
                      }
                    }
                  }
                },
                {
                  "if": {
                    "properties": {
                      "operation": {
                        "enum": [
                          "segment_count"
                        ],
                        "description": "选择这项计算执行的具名操作。"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "window"
                    ]
                  },
                  "else": {
                    "properties": {
                      "window": {
                        "not": {},
                        "description": "在当前版本或操作下不能填写字段 window。"
                      }
                    }
                  }
                },
                {
                  "if": {
                    "properties": {
                      "operation": {
                        "enum": [
                          "sample_count",
                          "point_event_count",
                          "activity_count",
                          "segment_count"
                        ],
                        "description": "选择这项计算执行的具名操作。"
                      }
                    }
                  },
                  "then": {
                    "properties": {
                      "unit": {
                        "const": "1",
                        "description": "希望结果采用的单位，必须与计算量兼容。"
                      }
                    }
                  }
                },
                {
                  "if": {
                    "properties": {
                      "operation": {
                        "enum": [
                          "point_event_count",
                          "activity_count",
                          "segment_count"
                        ],
                        "description": "选择这项计算执行的具名操作。"
                      }
                    }
                  },
                  "then": {
                    "properties": {
                      "scope": {
                        "const": "session",
                        "description": "选择本次计算所用的会话、事件或窗口范围。"
                      },
                      "expr": {
                        "not": {},
                        "description": "在当前版本或操作下不能填写字段 expr。"
                      },
                      "condition": {
                        "not": {},
                        "description": "在当前版本或操作下不能填写字段 condition。"
                      },
                      "method": {
                        "not": {},
                        "description": "在当前版本或操作下不能填写字段 method。"
                      },
                      "minimum_coverage": {
                        "not": {},
                        "description": "在当前版本或操作下不能填写字段 minimum_coverage。"
                      },
                      "interval": {
                        "not": {},
                        "description": "在当前版本或操作下不能填写字段 interval。"
                      }
                    }
                  }
                },
                {
                  "if": {
                    "properties": {
                      "operation": {
                        "enum": [
                          "sample_variance",
                          "sample_stddev",
                          "time_variance",
                          "time_stddev"
                        ],
                        "description": "选择这项计算执行的具名操作。"
                      }
                    }
                  },
                  "else": {
                    "properties": {
                      "ddof": {
                        "not": {},
                        "description": "在当前版本或操作下不能填写字段 ddof。"
                      }
                    }
                  }
                },
                {
                  "if": {
                    "properties": {
                      "operation": {
                        "enum": [
                          "time_variance",
                          "time_stddev"
                        ],
                        "description": "选择这项计算执行的具名操作。"
                      }
                    }
                  },
                  "then": {
                    "properties": {
                      "ddof": {
                        "const": 0,
                        "description": "方差或标准差分母使用的自由度修正。"
                      }
                    }
                  }
                },
                {
                  "if": {
                    "properties": {
                      "operation": {
                        "const": "sample_quantile",
                        "description": "选择这项计算执行的具名操作。"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "q"
                    ]
                  },
                  "else": {
                    "properties": {
                      "q": {
                        "not": {},
                        "description": "在当前版本或操作下不能填写字段 q。"
                      }
                    }
                  }
                }
              ]
            }
          }
        ]
      },
      "description": "统计、积分、时长或记录选择的计算项。每项明确操作、作用范围和输入。",
      "default": []
    },
    "presets": {
      "type": "array",
      "description": "预设把明确绑定的角色和参数展开为普通规则、窗口与计算；不按信号名称猜角色或阈值。",
      "items": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "name",
              "preset_type",
              "parameters"
            ],
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
              },
              "version": {
                "const": "1",
                "description": "预设契约版本，可省略，默认字符串1；与分析文件的整数config_version=4分别控制不同对象。"
              },
              "role_bindings": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "mode": {
                    "type": "string",
                    "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                    "not": {
                      "enum": [
                        "abs",
                        "isclose",
                        "False",
                        "None",
                        "True",
                        "and",
                        "as",
                        "assert",
                        "async",
                        "await",
                        "break",
                        "class",
                        "continue",
                        "def",
                        "del",
                        "elif",
                        "else",
                        "except",
                        "finally",
                        "for",
                        "from",
                        "global",
                        "if",
                        "import",
                        "in",
                        "is",
                        "lambda",
                        "nonlocal",
                        "not",
                        "or",
                        "pass",
                        "raise",
                        "return",
                        "try",
                        "while",
                        "with",
                        "yield"
                      ],
                      "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                    },
                    "description": "业务模式角色的绑定信号名，或计算间隔/导出周期的选择方式；按所在对象解释。"
                  },
                  "current": {
                    "type": "string",
                    "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                    "not": {
                      "enum": [
                        "abs",
                        "isclose",
                        "False",
                        "None",
                        "True",
                        "and",
                        "as",
                        "assert",
                        "async",
                        "await",
                        "break",
                        "class",
                        "continue",
                        "def",
                        "del",
                        "elif",
                        "else",
                        "except",
                        "finally",
                        "for",
                        "from",
                        "global",
                        "if",
                        "import",
                        "in",
                        "is",
                        "lambda",
                        "nonlocal",
                        "not",
                        "or",
                        "pass",
                        "raise",
                        "return",
                        "try",
                        "while",
                        "with",
                        "yield"
                      ],
                      "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                    },
                    "description": "充电预设中电流角色绑定的信号名，必须明确单位、方向和测量位置。"
                  },
                  "voltage": {
                    "type": "string",
                    "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                    "not": {
                      "enum": [
                        "abs",
                        "isclose",
                        "False",
                        "None",
                        "True",
                        "and",
                        "as",
                        "assert",
                        "async",
                        "await",
                        "break",
                        "class",
                        "continue",
                        "def",
                        "del",
                        "elif",
                        "else",
                        "except",
                        "finally",
                        "for",
                        "from",
                        "global",
                        "if",
                        "import",
                        "in",
                        "is",
                        "lambda",
                        "nonlocal",
                        "not",
                        "or",
                        "pass",
                        "raise",
                        "return",
                        "try",
                        "while",
                        "with",
                        "yield"
                      ],
                      "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                    },
                    "description": "充电预设中电压角色绑定的信号名，不能仅因名字含voltage就自动选择。"
                  }
                },
                "description": "预设角色到已绑定信号的显式映射；角色名称不代表原数据字段名。"
              },
              "parameters": {
                "type": "object",
                "required": [
                  "mode_value",
                  "current_min",
                  "minimum_duration"
                ],
                "additionalProperties": false,
                "properties": {
                  "mode_value": {
                    "type": "integer",
                    "minimum": -9223372036854775808,
                    "maximum": 18446744073709551615,
                    "description": "表示目标工作模式的明确整数编码，与角色信号的choices/类型相符。"
                  },
                  "current_min": {
                    "type": "number",
                    "description": "明确电流门槛，单位A；不采用车型或设备的猜测默认值。"
                  },
                  "compute_energy": {
                    "type": "boolean",
                    "default": false,
                    "description": "是否生成充电能量计算，默认false；开启时需要相应角色及单位满足契约。"
                  },
                  "compute_charge": {
                    "type": "boolean",
                    "default": false,
                    "description": "是否生成电量计算，默认false；开启后沿明确电流方向和有效覆盖处理。"
                  },
                  "minimum_coverage": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1,
                    "default": 0,
                    "description": "需要的最小有效覆盖比例，范围0到1；不通过补零或延长有效期达到门槛。"
                  },
                  "partial_policy": {
                    "enum": [
                      "report",
                      "strict"
                    ],
                    "description": "有效覆盖不足时的处理政策；计算项省略则继承execution，预设按自身参数契约检查。可选值：\"report\"：报告可得的部分结果及覆盖信息；\"strict\"：按严格完整性要求处理部分结果。"
                  },
                  "minimum_duration": {
                    "type": "string",
                    "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                    "description": "条件连续成立的最短确认时长，必须带单位；不是样本有效期或等待上限。"
                  }
                },
                "description": "预设所需的业务参数，或逐消息表达式的有单位数值参数；不使用未声明车型默认值。"
              },
              "preset_type": {
                "const": "charge_session",
                "description": "预设场景类型，先检查角色契约，再生成可检查的普通节点。 固定值：\"charge_session\"（充电活动及可选能量/电量计算）。"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "name",
              "preset_type",
              "parameters"
            ],
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
              },
              "version": {
                "const": "1",
                "description": "预设契约版本，可省略，默认字符串1；与分析文件的整数config_version=4分别控制不同对象。"
              },
              "role_bindings": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "alarm": {
                    "type": "string",
                    "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                    "not": {
                      "enum": [
                        "abs",
                        "isclose",
                        "False",
                        "None",
                        "True",
                        "and",
                        "as",
                        "assert",
                        "async",
                        "await",
                        "break",
                        "class",
                        "continue",
                        "def",
                        "del",
                        "elif",
                        "else",
                        "except",
                        "finally",
                        "for",
                        "from",
                        "global",
                        "if",
                        "import",
                        "in",
                        "is",
                        "lambda",
                        "nonlocal",
                        "not",
                        "or",
                        "pass",
                        "raise",
                        "return",
                        "try",
                        "while",
                        "with",
                        "yield"
                      ],
                      "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                    },
                    "description": "故障上下文预设中报警角色绑定的布尔信号名。"
                  }
                },
                "description": "预设角色到已绑定信号的显式映射；角色名称不代表原数据字段名。"
              },
              "parameters": {
                "type": "object",
                "required": [],
                "additionalProperties": false,
                "properties": {
                  "pre": {
                    "type": "string",
                    "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                    "description": "在事件之前扩展的非负时长，必须带单位。"
                  },
                  "post": {
                    "type": "string",
                    "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                    "description": "在事件之后扩展的非负时长，必须带单位；特定合并/固定窗口规则有额外限制。"
                  },
                  "emit_initial": {
                    "type": "boolean",
                    "default": false,
                    "description": "第一次已知条件已经成立时是否触发。默认值按规则类型确定，下降沿不允许开启。"
                  }
                },
                "description": "预设所需的业务参数，或逐消息表达式的有单位数值参数；不使用未声明车型默认值。"
              },
              "preset_type": {
                "const": "fault_context",
                "description": "预设场景类型，先检查角色契约，再生成可检查的普通节点。 固定值：\"fault_context\"（报警前后上下文片段）。"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "name",
              "preset_type",
              "parameters"
            ],
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
              },
              "version": {
                "const": "1",
                "description": "预设契约版本，可省略，默认字符串1；与分析文件的整数config_version=4分别控制不同对象。"
              },
              "role_bindings": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "request": {
                    "type": "string",
                    "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                    "not": {
                      "enum": [
                        "abs",
                        "isclose",
                        "False",
                        "None",
                        "True",
                        "and",
                        "as",
                        "assert",
                        "async",
                        "await",
                        "break",
                        "class",
                        "continue",
                        "def",
                        "del",
                        "elif",
                        "else",
                        "except",
                        "finally",
                        "for",
                        "from",
                        "global",
                        "if",
                        "import",
                        "in",
                        "is",
                        "lambda",
                        "nonlocal",
                        "not",
                        "or",
                        "pass",
                        "raise",
                        "return",
                        "try",
                        "while",
                        "with",
                        "yield"
                      ],
                      "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                    },
                    "description": "请求响应预设中请求角色绑定的信号名。"
                  },
                  "response": {
                    "type": "string",
                    "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                    "not": {
                      "enum": [
                        "abs",
                        "isclose",
                        "False",
                        "None",
                        "True",
                        "and",
                        "as",
                        "assert",
                        "async",
                        "await",
                        "break",
                        "class",
                        "continue",
                        "def",
                        "del",
                        "elif",
                        "else",
                        "except",
                        "finally",
                        "for",
                        "from",
                        "global",
                        "if",
                        "import",
                        "in",
                        "is",
                        "lambda",
                        "nonlocal",
                        "not",
                        "or",
                        "pass",
                        "raise",
                        "return",
                        "try",
                        "while",
                        "with",
                        "yield"
                      ],
                      "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                    },
                    "description": "绑定到响应角色的已声明信号名；这是预设的信号绑定，不是sequences中的规则引用。"
                  }
                },
                "description": "预设角色到已绑定信号的显式映射；角色名称不代表原数据字段名。"
              },
              "parameters": {
                "type": "object",
                "required": [
                  "max_delay"
                ],
                "additionalProperties": false,
                "properties": {
                  "min_delay": {
                    "type": "string",
                    "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                    "description": "允许的最小响应延迟，非负带单位时长，包含端点。"
                  },
                  "max_delay": {
                    "type": "string",
                    "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                    "description": "允许的最大响应延迟，不得小于min_delay，包含端点；到期未响应会得到明确配对状态。"
                  },
                  "emit_initial": {
                    "type": "boolean",
                    "default": false,
                    "description": "第一次已知条件已经成立时是否触发。默认值按规则类型确定，下降沿不允许开启。"
                  },
                  "max_pending": {
                    "type": "integer",
                    "minimum": 1,
                    "default": 65536,
                    "description": "同时等待响应的请求数上限，正整数，默认65536；不是输入文件总行数。"
                  }
                },
                "description": "预设所需的业务参数，或逐消息表达式的有单位数值参数；不使用未声明车型默认值。"
              },
              "preset_type": {
                "const": "command_response",
                "description": "预设场景类型，先检查角色契约，再生成可检查的普通节点。 固定值：\"command_response\"（请求与响应延迟配对）。"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "name",
              "preset_type",
              "role_bindings",
              "parameters"
            ],
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
              },
              "version": {
                "const": "1",
                "description": "预设契约版本，可省略，默认字符串1；与分析文件的整数config_version=4分别控制不同对象。"
              },
              "role_bindings": {
                "type": "object",
                "required": [
                  "signal"
                ],
                "additionalProperties": false,
                "properties": {
                  "signal": {
                    "type": "string",
                    "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                    "not": {
                      "enum": [
                        "abs",
                        "isclose",
                        "False",
                        "None",
                        "True",
                        "and",
                        "as",
                        "assert",
                        "async",
                        "await",
                        "break",
                        "class",
                        "continue",
                        "def",
                        "del",
                        "elif",
                        "else",
                        "except",
                        "finally",
                        "for",
                        "from",
                        "global",
                        "if",
                        "import",
                        "in",
                        "is",
                        "lambda",
                        "nonlocal",
                        "not",
                        "or",
                        "pass",
                        "raise",
                        "return",
                        "try",
                        "while",
                        "with",
                        "yield"
                      ],
                      "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                    },
                    "description": "阈值预设的signal角色使用的分析信号name；必须满足该角色的数值与单位要求。"
                  }
                },
                "description": "预设角色到已绑定信号的显式映射；角色名称不代表原数据字段名。"
              },
              "parameters": {
                "type": "object",
                "required": [
                  "enter_threshold",
                  "exit_threshold"
                ],
                "additionalProperties": false,
                "properties": {
                  "unit": {
                    "type": "string",
                    "minLength": 1,
                    "description": "阈值单位，可省略并使用signal角色所绑定信号的单位；显式填写时必须与该信号一致，不触发额外换算。"
                  },
                  "enter_threshold": {
                    "type": "number",
                    "description": "阈值活动的进入门槛，单位与角色信号一致；与退出门槛的先后关系由方向语义检查。"
                  },
                  "exit_threshold": {
                    "type": "number",
                    "description": "阈值活动的退出门槛，不能为消除抖动而擅自猜测数值。"
                  },
                  "enter_delay": {
                    "type": "string",
                    "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                    "description": "进入条件连续满足多久才进入活动，带单位非负时长，省略为0s。"
                  },
                  "exit_delay": {
                    "type": "string",
                    "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                    "description": "退出条件连续满足多久才退出或合并片段的退出延迟；由所在规则/窗口明确含义，必须带单位。"
                  }
                },
                "description": "预设所需的业务参数，或逐消息表达式的有单位数值参数；不使用未声明车型默认值。"
              },
              "preset_type": {
                "const": "threshold_excursion",
                "description": "预设场景类型，先检查角色契约，再生成可检查的普通节点。 固定值：\"threshold_excursion\"（越限进入和恢复退出的阈值活动）。"
              }
            }
          }
        ]
      },
      "default": []
    },
    "message_calculations": {
      "type": "array",
      "description": "针对指定CAN消息的逐消息累计。每次实际消息独立求值，不施普通信号保持、不额外乘时间差。",
      "items": {
        "type": "object",
        "required": [
          "name",
          "update_message",
          "expr",
          "unit"
        ],
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
            "not": {
              "enum": [
                "abs",
                "isclose",
                "False",
                "None",
                "True",
                "and",
                "as",
                "assert",
                "async",
                "await",
                "break",
                "class",
                "continue",
                "def",
                "del",
                "elif",
                "else",
                "except",
                "finally",
                "for",
                "from",
                "global",
                "if",
                "import",
                "in",
                "is",
                "lambda",
                "nonlocal",
                "not",
                "or",
                "pass",
                "raise",
                "return",
                "try",
                "while",
                "with",
                "yield"
              ],
              "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
            },
            "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
          },
          "source": {
            "type": "string",
            "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
            "not": {
              "enum": [
                "abs",
                "isclose",
                "False",
                "None",
                "True",
                "and",
                "as",
                "assert",
                "async",
                "await",
                "break",
                "class",
                "continue",
                "def",
                "del",
                "elif",
                "else",
                "except",
                "finally",
                "for",
                "from",
                "global",
                "if",
                "import",
                "in",
                "is",
                "lambda",
                "nonlocal",
                "not",
                "or",
                "pass",
                "raise",
                "return",
                "try",
                "while",
                "with",
                "yield"
              ],
              "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
            },
            "description": "逐消息累计使用的原始CAN来源name；只有一个适用来源时可省略，多候选时必须明确选择。"
          },
          "profile": {
            "enum": [
              "sclicer-functions-v1",
              "can-text-v1"
            ],
            "description": "消息读取/解码实现标识，可省略并由来源确定：既有BLF路径使用sclicer-functions-v1，ASC、原始CAN CSV及混合来源使用can-text-v1。显式值必须与实际来源一致。"
          },
          "operation": {
            "const": "legacy_sum",
            "description": "逐消息计算的累计方法，可省略，当前默认且仅支持legacy_sum；每条符合条件的消息独立贡献一次。"
          },
          "message_policy": {
            "const": "current_message-v1",
            "description": "可省略，默认current_message-v1；每次只取当前目标消息的解码值，不沿用上条消息缓存。"
          },
          "expr": {
            "type": "string",
            "pattern": "\\S",
            "description": "受限表达式，只引用明确绑定名称和已支持运算；不执行Python、属性访问或任意函数。"
          },
          "unit": {
            "type": "string",
            "pattern": "\\S",
            "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。"
          },
          "update_message": {
            "type": "object",
            "required": [
              "frame_id"
            ],
            "additionalProperties": false,
            "properties": {
              "channel": {
                "type": "integer",
                "minimum": 1,
                "description": "用户配置CAN通道从1开始，1对应内部0；省略时继承来源唯一通道。"
              },
              "frame_id": {
                "oneOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 536870911
                  },
                  {
                    "type": "string",
                    "pattern": "^(?:[0-9]+|0[xX][0-9a-fA-F]+|0[bB][01]+)(?![\\s\\S])",
                    "minLength": 1
                  }
                ],
                "description": "CAN报文ID；整数或字符串均可。0x前缀为十六进制，0b为二进制，无前缀为十进制；解析后须在0至536870911内，显式标准帧最多2047。"
              },
              "is_extended": {
                "type": "boolean",
                "description": "标准／扩展帧可选约束。省略时根据DBC和实际报文识别；只有歧义时要求补充。显式null无效。"
              },
              "is_fd": {
                "type": "boolean",
                "description": "CAN／CAN FD可选约束。省略时根据DBC和实际报文识别；只有歧义时要求补充。显式null无效。"
              }
            },
            "allOf": [
              {
                "if": {
                  "properties": {
                    "is_extended": {
                      "const": false,
                      "description": "是否扩展帧，必须是布尔值；标准帧ID与扩展帧ID有不同范围。 固定值：false。"
                    }
                  },
                  "required": [
                    "is_extended"
                  ]
                },
                "then": {
                  "properties": {
                    "frame_id": {
                      "maximum": 2047,
                      "description": "CAN报文ID，非负整数；范围由标准帧/扩展帧标志进一步约束。"
                    }
                  }
                }
              }
            ],
            "description": "触发求值的CAN报文定位；frame_id必填，channel省略采用来源通道，标准/扩展及CAN/FD限制可省略并按实际输入识别。"
          },
          "split_by_sign": {
            "type": "object",
            "description": "按当前原解码字段的正负选择累计桶，不施额外归一化，也不沿用其他消息的旧值。",
            "required": [
              "signal",
              "bucket"
            ],
            "additionalProperties": false,
            "properties": {
              "signal": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                "not": {
                  "enum": [
                    "abs",
                    "isclose",
                    "False",
                    "None",
                    "True",
                    "and",
                    "as",
                    "assert",
                    "async",
                    "await",
                    "break",
                    "class",
                    "continue",
                    "def",
                    "del",
                    "elif",
                    "else",
                    "except",
                    "finally",
                    "for",
                    "from",
                    "global",
                    "if",
                    "import",
                    "in",
                    "is",
                    "lambda",
                    "nonlocal",
                    "not",
                    "or",
                    "pass",
                    "raise",
                    "return",
                    "try",
                    "while",
                    "with",
                    "yield"
                  ],
                  "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                },
                "description": "用于区分正负方向的分析信号name，须来自同一目标报文；允许独立于贡献expr。"
              },
              "bucket": {
                "enum": [
                  "positive",
                  "negative"
                ],
                "description": "正值桶或负值桶的选择；方向判断依据当前指定原解码字段。可选值：\"positive\"：正向累计桶；\"negative\"：负向累计桶。"
              },
              "value_policy": {
                "const": "raw_decoded-v1",
                "description": "分组使用的值，可省略，默认raw_decoded-v1；使用本条消息的原解码方向值，不额外换算、不沿用旧值。"
              }
            }
          },
          "parameters": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
              "not": {
                "enum": [
                  "abs",
                  "isclose",
                  "False",
                  "None",
                  "True",
                  "and",
                  "as",
                  "assert",
                  "async",
                  "await",
                  "break",
                  "class",
                  "continue",
                  "def",
                  "del",
                  "elif",
                  "else",
                  "except",
                  "finally",
                  "for",
                  "from",
                  "global",
                  "if",
                  "import",
                  "in",
                  "is",
                  "lambda",
                  "nonlocal",
                  "not",
                  "or",
                  "pass",
                  "raise",
                  "return",
                  "try",
                  "while",
                  "with",
                  "yield"
                ],
                "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
              }
            },
            "additionalProperties": {
              "type": "object",
              "required": [
                "value",
                "unit"
              ],
              "additionalProperties": false,
              "properties": {
                "value": {
                  "type": "number",
                  "description": "带单位的间隔文本，或有独立unit声明的表达式数值参数；按所在对象检查类型。"
                },
                "unit": {
                  "type": "string",
                  "pattern": "\\S",
                  "description": "数值所用单位。参与表达式和转换时核对单位；不能从字段名或文件名猜测。"
                }
              }
            },
            "description": "预设所需的业务参数，或逐消息表达式的有单位数值参数；不使用未声明车型默认值。"
          }
        }
      },
      "default": []
    },
    "execution": {
      "type": "object",
      "properties": {
        "backend": {
          "enum": [
            "numpy",
            "reference",
            "auto"
          ],
          "description": "数值计算实现选择。auto按已验证的整个计划类别选择reference或numpy，不预读或试跑；numpy采用NumPy数值实现；reference采用独立参考实现。显式选择保持，不因运行错误切换后端。",
          "default": "auto"
        },
        "batch_rows": {
          "type": "integer",
          "minimum": 1,
          "description": "每批读取的记录/样本上限，正整数，默认65536；不等于独立任务并行数。",
          "default": 65536
        },
        "memory_budget_bytes": {
          "type": "integer",
          "minimum": 1,
          "description": "新分析层内存预算，正整数字节数，默认268435456；不是整个Python进程或旧读取器的RSS上限。",
          "default": 268435456
        },
        "result_buffer_rows": {
          "type": "integer",
          "minimum": 1,
          "description": "写出结果前的缓冲行数上限，正整数，默认4096。",
          "default": 4096
        },
        "partial_policy": {
          "enum": [
            "report",
            "strict"
          ],
          "description": "有效覆盖不足时的处理政策；计算项省略则继承execution，预设按自身参数契约检查。可选值：\"report\"：报告可得的部分结果及覆盖信息；\"strict\"：按严格完整性要求处理部分结果。",
          "default": "report"
        },
        "on_budget_exceeded": {
          "const": "error",
          "description": "超过预算的处理方式，当前只接受error，明确失败而不丢数据或增加旧输入扫描。 固定值：\"error\"。",
          "default": "error"
        },
        "spool_quota_bytes": {
          "anyOf": [
            {
              "type": "null"
            },
            {
              "type": "integer",
              "minimum": 1
            }
          ],
          "description": "暂存磁盘配额，正整数字节数；null或省略表示未设置配额。",
          "default": null
        },
        "process_count": {
          "type": "integer",
          "minimum": 1,
          "default": 1,
          "description": "控制本次分析最多使用多少个读取和DBC解码工作进程，不包含主分析进程。填写大于等于1的整数；默认1保留串行读取。API或CLI显式参数优先于配置。多个文件仍属于同一个连续会话。"
        }
      },
      "required": [],
      "additionalProperties": false,
      "description": "执行后端及分析层资源限制。预算是声明，静态检查不测量实际内存峰值。",
      "default": {}
    },
    "outputs": {
      "type": "object",
      "properties": {
        "contributions": {
          "enum": [
            "none",
            "full"
          ],
          "description": "是否保存逐消息贡献明细。none默认只保留汇总，full显式逐条保存。可选值：\"none\"：不保存逐条贡献明细；\"full\"：明确保存逐条贡献。",
          "default": "none"
        },
        "tables": {
          "enum": [
            "readable_csv",
            "csv",
            "jsonl"
          ],
          "description": "结果表格式；省略时使用readable_csv，中文列名、精确秒、同区间指标合并。csv保留程序交换用平坦表和整数纳秒；jsonl保留逐行JSON。只生成所选的一套表，不决定配置文件格式。",
          "default": "readable_csv"
        },
        "manifest": {
          "const": "json",
          "description": "运行清单文件格式，当前固定json。 固定值：\"json\"。",
          "default": "json"
        },
        "signal_csv": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "object",
              "properties": {
                "signals": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                    "not": {
                      "enum": [
                        "abs",
                        "isclose",
                        "False",
                        "None",
                        "True",
                        "and",
                        "as",
                        "assert",
                        "async",
                        "await",
                        "break",
                        "class",
                        "continue",
                        "def",
                        "del",
                        "elif",
                        "else",
                        "except",
                        "finally",
                        "for",
                        "from",
                        "global",
                        "if",
                        "import",
                        "in",
                        "is",
                        "lambda",
                        "nonlocal",
                        "not",
                        "or",
                        "pass",
                        "raise",
                        "return",
                        "try",
                        "while",
                        "with",
                        "yield"
                      ],
                      "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                    }
                  },
                  "minItems": 1,
                  "maxItems": 4096,
                  "uniqueItems": true,
                  "description": "显式选择要导出的原信号别名列表；必须已在分析signals中声明，不默认导出全部信号。"
                },
                "scope": {
                  "oneOf": [
                    {
                      "const": "session",
                      "description": "分析或导出整个会话的可用范围。"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "window": {
                          "type": "string",
                          "minLength": 1,
                          "description": "所引用的规则或窗口名称，必须在同一配置中已经声明。"
                        }
                      },
                      "required": [
                        "window"
                      ],
                      "additionalProperties": false
                    }
                  ],
                  "description": "明确选择整个会话、某条规则的事件范围或某个窗口的范围。"
                },
                "resampling": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "continuous": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                            "not": {
                              "enum": [
                                "abs",
                                "isclose",
                                "False",
                                "None",
                                "True",
                                "and",
                                "as",
                                "assert",
                                "async",
                                "await",
                                "break",
                                "class",
                                "continue",
                                "def",
                                "del",
                                "elif",
                                "else",
                                "except",
                                "finally",
                                "for",
                                "from",
                                "global",
                                "if",
                                "import",
                                "in",
                                "is",
                                "lambda",
                                "nonlocal",
                                "not",
                                "or",
                                "pass",
                                "raise",
                                "return",
                                "try",
                                "while",
                                "with",
                                "yield"
                              ],
                              "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                            }
                          },
                          "minItems": 1,
                          "maxItems": 4096,
                          "uniqueItems": true,
                          "description": "明确允许线性重采样的数值信号子集。状态、计数或枚举不能仅因数值类型就被当成连续量。"
                        },
                        "max_gap": {
                          "type": "string",
                          "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                          "description": "允许插值或重建的最大实际样本间隔，必须带单位且为正；不是固定时间偏移。"
                        },
                        "period": {
                          "oneOf": [
                            {
                              "type": "string",
                              "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                              "description": "固定时间偏移，只接受数值与s/ms/us/ns单位，不接受日期。"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "mode": {
                                  "const": "dbc",
                                  "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"dbc\"。"
                                },
                                "driver": {
                                  "type": "string",
                                  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                                  "not": {
                                    "enum": [
                                      "abs",
                                      "isclose",
                                      "False",
                                      "None",
                                      "True",
                                      "and",
                                      "as",
                                      "assert",
                                      "async",
                                      "await",
                                      "break",
                                      "class",
                                      "continue",
                                      "def",
                                      "del",
                                      "elif",
                                      "else",
                                      "except",
                                      "finally",
                                      "for",
                                      "from",
                                      "global",
                                      "if",
                                      "import",
                                      "in",
                                      "is",
                                      "lambda",
                                      "nonlocal",
                                      "not",
                                      "or",
                                      "pass",
                                      "raise",
                                      "return",
                                      "try",
                                      "while",
                                      "with",
                                      "yield"
                                    ],
                                    "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                                  },
                                  "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                                }
                              },
                              "required": [
                                "mode"
                              ],
                              "additionalProperties": false
                            }
                          ],
                          "description": "导出网格周期。固定周期使用正时长文本，DBC周期使用mode: dbc对象；不从文件名猜周期。"
                        },
                        "start": {
                          "type": "string",
                          "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                          "description": "重采样时间网格的起点，省略为0ns；不改变分析范围或原始报文时间。"
                        }
                      },
                      "required": [
                        "continuous",
                        "period",
                        "max_gap"
                      ],
                      "additionalProperties": false
                    }
                  ],
                  "description": "本次导出的独立重采样设置。省略或null保留原始采样；不能借导出网格改变计算间隔。"
                }
              },
              "required": [
                "signals"
              ],
              "additionalProperties": false
            }
          ],
          "description": "可选的信号CSV导出。省略或null表示关闭；开启时必须明确选择信号及范围。",
          "default": null
        },
        "can_frames": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "object",
              "properties": {
                "source": {
                  "type": "string",
                  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
                  "not": {
                    "enum": [
                      "abs",
                      "isclose",
                      "False",
                      "None",
                      "True",
                      "and",
                      "as",
                      "assert",
                      "async",
                      "await",
                      "break",
                      "class",
                      "continue",
                      "def",
                      "del",
                      "elif",
                      "else",
                      "except",
                      "finally",
                      "for",
                      "from",
                      "global",
                      "if",
                      "import",
                      "in",
                      "is",
                      "lambda",
                      "nonlocal",
                      "not",
                      "or",
                      "pass",
                      "raise",
                      "return",
                      "try",
                      "while",
                      "with",
                      "yield"
                    ],
                    "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
                  },
                  "description": "已声明来源的name。引用必须存在，不按同名字段或语义名称自动寻找来源。"
                },
                "format": {
                  "enum": [
                    "asc",
                    "blf"
                  ],
                  "description": "CAN输出格式，asc或blf；与结果表csv/jsonl选项分开。可选值：\"asc\"：ASC文本帧文件；\"blf\"：BLF二进制帧文件。"
                },
                "scope": {
                  "oneOf": [
                    {
                      "const": "session",
                      "description": "分析或导出整个会话的可用范围。"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "window": {
                          "type": "string",
                          "minLength": 1,
                          "description": "所引用的规则或窗口名称，必须在同一配置中已经声明。"
                        }
                      },
                      "required": [
                        "window"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "windows": {
                          "const": "all",
                          "description": "使用所有已配置窗口生成的范围，不把all当作某个窗口名。"
                        }
                      },
                      "required": [
                        "windows"
                      ],
                      "additionalProperties": false
                    }
                  ],
                  "description": "明确选择整个会话、某条规则的事件范围或某个窗口的范围。"
                },
                "source_time_reference": {
                  "enum": [
                    "relative",
                    "epoch"
                  ],
                  "description": "导出时间以相对起点还是Unix纪元表示。原始时间解释必须明确。可选值：\"relative\"：相对起点时间；\"epoch\"：Unix纪元绝对时间。"
                },
                "capture_date": {
                  "type": "string",
                  "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                  "description": "显式捕获日期，用于需要日期头的导出；不能把运行日期冒充采集日期。"
                },
                "output_offset": {
                  "type": "string",
                  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                  "description": "导出时间轴的显式固定偏移，带s/ms/us/ns单位，不改变分析时钟。"
                },
                "resampling": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "max_gap": {
                          "type": "string",
                          "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                          "description": "允许插值或重建的最大实际样本间隔，必须带单位且为正；不是固定时间偏移。"
                        },
                        "messages": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "channel": {
                                "type": "integer",
                                "minimum": 1,
                                "description": "用户配置CAN通道从1开始，1对应内部0；省略时继承来源唯一通道。"
                              },
                              "frame_id": {
                                "oneOf": [
                                  {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 536870911
                                  },
                                  {
                                    "type": "string",
                                    "pattern": "^(?:[0-9]+|0[xX][0-9a-fA-F]+|0[bB][01]+)(?![\\s\\S])",
                                    "minLength": 1
                                  }
                                ],
                                "description": "CAN报文ID；整数或字符串均可。0x前缀为十六进制，0b为二进制，无前缀为十进制；解析后须在0至536870911内，显式标准帧最多2047。"
                              },
                              "is_extended": {
                                "type": "boolean",
                                "description": "标准／扩展帧可选约束。省略时根据DBC和实际报文识别；只有歧义时要求补充。显式null无效。"
                              },
                              "is_fd": {
                                "type": "boolean",
                                "description": "CAN／CAN FD可选约束。省略时根据DBC和实际报文识别；只有歧义时要求补充。显式null无效。"
                              },
                              "continuous": {
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "minItems": 1,
                                "maxItems": 4096,
                                "uniqueItems": true,
                                "description": "明确允许线性重采样的数值信号子集。状态、计数或枚举不能仅因数值类型就被当成连续量。"
                              },
                              "protected": {
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "minItems": 0,
                                "maxItems": 4096,
                                "uniqueItems": true,
                                "description": "重建时必须保留原值的DBC信号列表，例如计数器或校验字段；不自动重算未知算法。"
                              },
                              "same_time_policy": {
                                "enum": [
                                  "error",
                                  "last_by_sequence"
                                ],
                                "description": "同一信号同一时刻出现多个更新时的处理方式；不忽略冲突或任意重排记录。可选值：\"error\"：同刻更新冲突时失败；\"last_by_sequence\"：按原顺序取最后一次更新。"
                              }
                            },
                            "required": [
                              "frame_id",
                              "continuous"
                            ],
                            "additionalProperties": false,
                            "allOf": [
                              {
                                "if": {
                                  "properties": {
                                    "is_extended": {
                                      "const": false,
                                      "description": "显式选择标准帧时，整数ID不得超过11位范围。"
                                    }
                                  },
                                  "required": [
                                    "is_extended"
                                  ]
                                },
                                "then": {
                                  "properties": {
                                    "frame_id": {
                                      "maximum": 2047,
                                      "description": "标准帧的整数报文ID上限为2047；字符串转换后的范围由计划加载器核实。"
                                    }
                                  }
                                }
                              }
                            ]
                          },
                          "minItems": 0,
                          "maxItems": 4096,
                          "description": "CAN重建规则列表，按精确报文定位声明连续字段和受保护字段。"
                        },
                        "unknown_policy": {
                          "enum": [
                            "passthrough",
                            "nearest"
                          ],
                          "description": "没有匹配重建规则的报文如何输出：按原时间透传，或按明确距离选择最近原帧。可选值：\"passthrough\"：不匹配重建规则的帧按原时刻透传；\"nearest\"：按明确时间距离选最近原帧。"
                        },
                        "max_distance": {
                          "type": "string",
                          "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                          "description": "选择最近原帧时允许的最大时间距离，必须为非负时长；0s仅接受恰好同刻的原帧。"
                        },
                        "period": {
                          "oneOf": [
                            {
                              "type": "string",
                              "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                              "description": "固定时间偏移，只接受数值与s/ms/us/ns单位，不接受日期。"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "mode": {
                                  "const": "dbc",
                                  "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"dbc\"。"
                                }
                              },
                              "required": [
                                "mode"
                              ],
                              "additionalProperties": false
                            }
                          ],
                          "description": "导出网格周期。固定周期使用正时长文本，DBC周期使用mode: dbc对象；不从文件名猜周期。"
                        },
                        "start": {
                          "type": "string",
                          "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
                          "description": "重采样时间网格的起点，省略为0ns；不改变分析范围或原始报文时间。"
                        }
                      },
                      "required": [
                        "period",
                        "max_gap",
                        "messages"
                      ],
                      "additionalProperties": false
                    }
                  ],
                  "description": "本次导出的独立重采样设置。省略或null保留原始采样；不能借导出网格改变计算间隔。"
                },
                "timezone": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "采集地点的固定时区，例如+08:00或UTC；相对时间导出BLF时与capture_date同时填写。"
                }
              },
              "required": [
                "format"
              ],
              "additionalProperties": false,
              "allOf": [
                {
                  "if": {
                    "required": [
                      "capture_date"
                    ]
                  },
                  "then": {
                    "required": [
                      "timezone"
                    ]
                  }
                },
                {
                  "if": {
                    "required": [
                      "timezone"
                    ]
                  },
                  "then": {
                    "required": [
                      "capture_date"
                    ]
                  }
                },
                {
                  "if": {
                    "properties": {
                      "source_time_reference": {
                        "const": "epoch",
                        "description": "导出时间以相对起点还是Unix纪元表示。原始时间解释必须明确。 固定值：\"epoch\"（Unix纪元绝对时间）。"
                      }
                    },
                    "required": [
                      "source_time_reference"
                    ]
                  },
                  "then": {
                    "not": {
                      "anyOf": [
                        {
                          "required": [
                            "capture_date"
                          ]
                        },
                        {
                          "required": [
                            "timezone"
                          ]
                        }
                      ]
                    }
                  }
                }
              ]
            }
          ],
          "description": "可选的CAN原帧/重建帧导出。省略或null表示关闭，开启不会替代分析结果表。",
          "default": null
        }
      },
      "additionalProperties": false,
      "description": "结果表及可选信号/CAN导出。正式结果目录可复用，每次使用独立时间文件名，并由本次完成清单定位。",
      "default": {}
    },
    "metadata": {
      "type": "object",
      "additionalProperties": true,
      "description": "附加说明对象；允许自定义JSON原生值，但不参与隐藏转换、模板执行或业务参数推断。",
      "default": {}
    },
    "sequences": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
            "not": {
              "enum": [
                "abs",
                "isclose",
                "False",
                "None",
                "True",
                "and",
                "as",
                "assert",
                "async",
                "await",
                "break",
                "class",
                "continue",
                "def",
                "del",
                "elif",
                "else",
                "except",
                "finally",
                "for",
                "from",
                "global",
                "if",
                "import",
                "in",
                "is",
                "lambda",
                "nonlocal",
                "not",
                "or",
                "pass",
                "raise",
                "return",
                "try",
                "while",
                "with",
                "yield"
              ],
              "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
            },
            "description": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称；不能重复。"
          },
          "start": {
            "type": "string",
            "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
            "not": {
              "enum": [
                "abs",
                "isclose",
                "False",
                "None",
                "True",
                "and",
                "as",
                "assert",
                "async",
                "await",
                "break",
                "class",
                "continue",
                "def",
                "del",
                "elif",
                "else",
                "except",
                "finally",
                "for",
                "from",
                "global",
                "if",
                "import",
                "in",
                "is",
                "lambda",
                "nonlocal",
                "not",
                "or",
                "pass",
                "raise",
                "return",
                "try",
                "while",
                "with",
                "yield"
              ],
              "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
            },
            "description": "请求开始点规则的id，必须已在rules中声明，不能引用活动规则。"
          },
          "response": {
            "type": "string",
            "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
            "not": {
              "enum": [
                "abs",
                "isclose",
                "False",
                "None",
                "True",
                "and",
                "as",
                "assert",
                "async",
                "await",
                "break",
                "class",
                "continue",
                "def",
                "del",
                "elif",
                "else",
                "except",
                "finally",
                "for",
                "from",
                "global",
                "if",
                "import",
                "in",
                "is",
                "lambda",
                "nonlocal",
                "not",
                "or",
                "pass",
                "raise",
                "return",
                "try",
                "while",
                "with",
                "yield"
              ],
              "description": "禁止使用以下保留名称：\"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"。"
            },
            "description": "响应点规则的id，必须引用rules中已定义的rising_edge、falling_edge或start_only规则；不能填信号名或sequences中的id。"
          },
          "min_delay": {
            "type": "string",
            "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
            "description": "允许的最小响应延迟，非负带单位时长，包含端点。"
          },
          "max_delay": {
            "type": "string",
            "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
            "description": "允许的最大响应延迟，不得小于min_delay，包含端点；到期未响应会得到明确配对状态。"
          },
          "max_pending": {
            "type": "integer",
            "minimum": 1,
            "description": "同时等待响应的请求数上限，正整数，默认65536；不是输入文件总行数。",
            "default": 65536
          },
          "interval": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "const": "actual",
                    "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"actual\"。"
                  }
                },
                "required": [
                  "mode"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "const": "fixed",
                    "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"fixed\"。"
                  },
                  "value": {
                    "type": "string",
                    "minLength": 2,
                    "description": "fixed计算间隔的带单位正时长，例如100ms；actual/dbc不接受此字段。"
                  },
                  "driver": {
                    "type": "string",
                    "minLength": 1,
                    "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                  }
                },
                "required": [
                  "mode",
                  "value"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "const": "dbc",
                    "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"dbc\"。"
                  },
                  "driver": {
                    "type": "string",
                    "minLength": 1,
                    "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                  }
                },
                "required": [
                  "mode"
                ],
                "additionalProperties": false
              }
            ],
            "description": "此节点采用的间隔来源；省略则继承全局default，多个驱动候选时须明确driver。"
          }
        },
        "required": [
          "name",
          "start",
          "response",
          "max_delay"
        ],
        "additionalProperties": false
      },
      "description": "将请求点事件与响应点事件按FIFO配对，指定允许延迟和最多等待的请求数。",
      "default": []
    },
    "intervals": {
      "type": "object",
      "properties": {
        "default": {
          "oneOf": [
            {
              "type": "object",
              "properties": {
                "mode": {
                  "const": "actual",
                  "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"actual\"。"
                }
              },
              "required": [
                "mode"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "mode": {
                  "const": "fixed",
                  "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"fixed\"。"
                },
                "value": {
                  "type": "string",
                  "minLength": 2,
                  "description": "fixed计算间隔的带单位正时长，例如100ms；actual/dbc不接受此字段。"
                },
                "driver": {
                  "type": "string",
                  "minLength": 1,
                  "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                }
              },
              "required": [
                "mode",
                "value"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "mode": {
                  "const": "dbc",
                  "description": "间隔来源：actual使用实际记录时间差，fixed使用显式value，dbc在运行时读取驱动报文周期；导出周期对象仅允许dbc。 固定值：\"dbc\"。"
                },
                "driver": {
                  "type": "string",
                  "minLength": 1,
                  "description": "明确推进此计算或DBC周期选择的原信号名；仅在唯一可判断的声明中允许省略。"
                }
              },
              "required": [
                "mode"
              ],
              "additionalProperties": false
            }
          ],
          "description": "未单独覆盖的消费者采用的计算间隔，省略时为actual真实时间差。"
        }
      },
      "additionalProperties": false,
      "description": "普通时序计算使用的计时间隔。默认真实记录时间差，可对指定消费者覆盖；不改变信号有效期。",
      "default": {}
    },
    "diagnostics": {
      "type": "object",
      "properties": {
        "trace": {
          "type": "boolean",
          "default": false,
          "description": "是否生成额外详细追溯，默认false；关闭时仍保留必要结果和错误处理。"
        },
        "integrity": {
          "type": "boolean",
          "default": false,
          "description": "是否执行额外完整性诊断，默认false；不取消普通分析所必需的输入检查。"
        },
        "retain_work": {
          "type": "boolean",
          "default": false,
          "description": "是否保留本次自有工作现场，默认false；不授权删除或保留无关用户文件。"
        }
      },
      "additionalProperties": false,
      "description": "按需开启额外追溯、完整性检查或现场保留。三项独立，默认均关闭。",
      "default": {}
    },
    "imports": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "pattern": "^(?!.*://)(?!.*[\\*?\\[\\]])[\\s\\S]+$",
        "description": "明确的本地.json/.yaml/.yml文件路径；相对主配置目录解释，不支持URL或通配符。"
      },
      "description": "可选公共定义文件，按列表顺序导入sources/signals/derived，再追加本文件声明；重名报错，仅允许一层。省略或空数组表示没有外部定义。"
    },
    "overrides": {
      "type": "object",
      "properties": {
        "sources": {
          "type": "object",
          "additionalProperties": {
            "type": "object"
          },
          "description": "按已有定义名称填写允许覆盖的字段；不能新增目标、改名或覆盖自由元数据。"
        },
        "signals": {
          "type": "object",
          "additionalProperties": {
            "type": "object"
          },
          "description": "按已有定义名称填写允许覆盖的字段；不能新增目标、改名或覆盖自由元数据。"
        },
        "derived": {
          "type": "object",
          "additionalProperties": {
            "type": "object"
          },
          "description": "按已有定义名称填写允许覆盖的字段；不能新增目标、改名或覆盖自由元数据。"
        }
      },
      "additionalProperties": false,
      "description": "公共定义的显式局部覆盖；必须同时声明imports，未知目标与不允许字段会报错。"
    }
  },
  "required": [
    "config_version",
    "dataset"
  ],
  "additionalProperties": false,
  "allOf": [
    {
      "properties": {
        "signals": {
          "items": {
            "dependentSchemas": {
              "code_dtype": {
                "properties": {
                  "dtype": {
                    "const": "enum",
                    "description": "信号值的类型，决定该信号可用的附加字段。"
                  }
                }
              }
            },
            "properties": {
              "signals": {
                "items": {
                  "dependentSchemas": {
                    "code_dtype": {
                      "properties": {
                        "dtype": {
                          "const": "enum",
                          "description": "信号值的类型，决定该信号可用的附加字段。"
                        }
                      }
                    }
                  }
                },
                "description": "约束当前版本可以使用的信号声明字段。"
              }
            }
          },
          "description": "约束当前版本可以使用的信号声明字段。"
        }
      }
    },
    {
      "$comment": "省略domain时由同次读取确定实际观测范围，普通分析与按需导出均可使用。"
    },
    {
      "if": {
        "properties": {
          "sources": {
            "items": {
              "properties": {
                "source_type": {
                  "enum": [
                    "memory",
                    "signal_csv"
                  ],
                  "description": "数据来源类型，决定使用哪个读取器及其必需字段。可选值：\"memory\"：配置内有序内存记录；\"signal_csv\"：已解码信号CSV。"
                }
              },
              "required": [
                "source_type"
              ]
            },
            "description": "按声明顺序列出数据来源。连续文件放在同一来源的paths中；加载时可按声明枚举文件名，并按缺省信号信息读取DBC；不读取业务记录。"
          }
        },
        "required": [
          "sources"
        ],
        "not": {
          "required": [
            "imports"
          ]
        }
      },
      "then": {
        "properties": {
          "signals": {
            "items": {
              "properties": {
                "field": {
                  "type": "string",
                  "minLength": 1,
                  "pattern": "\\S",
                  "description": "来源中的真实字段。信号表/内存使用原字段名，CAN使用完整通道和报文信号定位对象。"
                }
              },
              "not": {
                "required": [
                  "signals"
                ]
              }
            },
            "description": "把来源的原始字段绑定为分析使用的简单信号名，明确类型、单位和有效期。"
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "sources": {
            "items": {
              "properties": {
                "source_type": {
                  "enum": [
                    "can_blf",
                    "can_asc",
                    "raw_can_csv"
                  ],
                  "description": "数据来源类型，决定使用哪个读取器及其必需字段。可选值：\"can_blf\"：原始CAN二进制BLF；\"can_asc\"：原始CAN文本ASC；\"raw_can_csv\"：显式布局的原始CAN帧CSV。"
                }
              },
              "required": [
                "source_type"
              ]
            },
            "description": "按声明顺序列出数据来源。连续文件放在同一来源的paths中；加载时可按声明枚举文件名，并按缺省信号信息读取DBC；不读取业务记录。"
          }
        },
        "required": [
          "sources"
        ],
        "not": {
          "required": [
            "imports"
          ]
        }
      },
      "then": {
        "properties": {
          "signals": {
            "items": {
              "properties": {
                "field": {
                  "type": "object",
                  "properties": {
                    "channel": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "用户配置CAN通道从1开始，1对应内部0；省略时继承来源唯一通道。"
                    },
                    "signal": {
                      "type": "string",
                      "minLength": 1,
                      "description": "DBC中该信号的原始名称，与frame_id一起定位同一报文内的信号；这里不是分析别名。"
                    },
                    "frame_id": {
                      "oneOf": [
                        {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 536870911
                        },
                        {
                          "type": "string",
                          "pattern": "^(?:[0-9]+|0[xX][0-9a-fA-F]+|0[bB][01]+)(?![\\s\\S])",
                          "minLength": 1
                        }
                      ],
                      "description": "CAN报文ID；整数或字符串均可。0x前缀为十六进制，0b为二进制，无前缀为十进制；解析后须在0至536870911内，显式标准帧最多2047。"
                    },
                    "is_extended": {
                      "type": "boolean",
                      "description": "标准／扩展帧可选约束。省略时根据DBC和实际报文识别；只有歧义时要求补充。显式null无效。"
                    },
                    "is_fd": {
                      "type": "boolean",
                      "description": "CAN／CAN FD可选约束。省略时根据DBC和实际报文识别；只有歧义时要求补充。显式null无效。"
                    }
                  },
                  "required": [
                    "signal",
                    "frame_id"
                  ],
                  "additionalProperties": false,
                  "description": "来源中的真实字段。信号表/内存使用原字段名，CAN使用完整通道和报文信号定位对象。",
                  "allOf": [
                    {
                      "if": {
                        "properties": {
                          "is_extended": {
                            "const": false,
                            "description": "显式选择标准帧时，整数ID不得超过11位范围。"
                          }
                        },
                        "required": [
                          "is_extended"
                        ]
                      },
                      "then": {
                        "properties": {
                          "frame_id": {
                            "maximum": 2047,
                            "description": "标准帧的整数报文ID上限为2047；字符串转换后的范围由计划加载器核实。"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            },
            "description": "把来源的原始字段绑定为分析使用的简单信号名，明确类型、单位和有效期。"
          }
        }
      }
    }
  ],
  "anyOf": [
    {
      "required": [
        "imports"
      ]
    },
    {
      "required": [
        "sources",
        "signals"
      ]
    }
  ],
  "dependentRequired": {
    "overrides": [
      "imports"
    ]
  }
}
