Chronaxis用户手册English
本页目录$$.allOf[0].properties.signals$.allOf[0].properties.signals.items$.allOf[0].properties.signals.items.properties.signals$.allOf[0].properties.signals.items.properties.signals.items$.allOf[1]$.allOf[2]$.allOf[3]$.anyOf[0]$.anyOf[1]$.properties.config_version$.properties.transforms$.properties.transforms.items$.properties.transforms.items.allOf[0]$.properties.transforms.items.properties.name$.properties.transforms.items.properties.operation$.properties.transforms.items.properties.expr$.properties.transforms.items.properties.unit$.properties.transforms.items.properties.window$.properties.transforms.items.properties.step$.properties.transforms.items.properties.origin$.properties.transforms.items.properties.max_gap$.properties.transforms.items.properties.partial_policy$.properties.transforms.items.properties.minimum_coverage$.properties.transforms.items.properties.interval$.properties.aggregations$.properties.aggregations.items$.properties.aggregations.items.allOf[0]$.properties.aggregations.items.properties.name$.properties.aggregations.items.properties.source$.properties.aggregations.items.properties.source.properties.calculation$.properties.aggregations.items.properties.source.properties.sequence$.properties.aggregations.items.properties.source.properties.rule$.properties.aggregations.items.properties.source.properties.window$.properties.aggregations.items.properties.operation$.properties.aggregations.items.properties.field$.properties.aggregations.items.properties.group_by$.properties.aggregations.items.properties.group_by.items$.properties.aggregations.items.properties.unit$.properties.aggregations.items.properties.include_partial$.properties.aggregations.items.properties.partial_policy$.properties.aggregations.items.properties.q$.properties.aggregations.items.properties.ddof$.properties.lookups$.properties.lookups.items$.properties.lookups.items.properties.name$.properties.lookups.items.properties.input_unit$.properties.lookups.items.properties.unit$.properties.lookups.items.properties.points$.properties.lookups.items.properties.points.items$.properties.lookups.items.properties.points.items.items$.properties.dataset$.properties.dataset.properties.name$.properties.dataset.properties.entity$.properties.dataset.properties.session$.properties.dataset.properties.domain$.properties.dataset.properties.domain.properties.start$.properties.dataset.properties.domain.properties.start.anyOf[0]$.properties.dataset.properties.domain.properties.start.anyOf[1]$.properties.dataset.properties.domain.properties.end$.properties.dataset.properties.domain.properties.end.anyOf[0]$.properties.dataset.properties.domain.properties.end.anyOf[1]$.properties.dataset.properties.metadata$.properties.sources$.properties.sources.items.oneOf[0]$.properties.sources.items.oneOf[0].properties.name$.properties.sources.items.oneOf[0].properties.time$.properties.sources.items.oneOf[0].properties.time.oneOf[0]$.properties.sources.items.oneOf[0].properties.time.oneOf[0].properties.unit$.properties.sources.items.oneOf[0].properties.time.oneOf[0].properties.offset$.properties.sources.items.oneOf[0].properties.time.oneOf[0].properties.time_type$.properties.sources.items.oneOf[0].properties.time.oneOf[0].properties.clock$.properties.sources.items.oneOf[0].properties.time.oneOf[1]$.properties.sources.items.oneOf[0].properties.time.oneOf[1].properties.unit$.properties.sources.items.oneOf[0].properties.time.oneOf[1].properties.offset$.properties.sources.items.oneOf[0].properties.time.oneOf[1].properties.timezone$.properties.sources.items.oneOf[0].properties.time.oneOf[1].properties.time_type$.properties.sources.items.oneOf[0].properties.metadata$.properties.sources.items.oneOf[0].properties.rows$.properties.sources.items.oneOf[0].properties.rows.items$.properties.sources.items.oneOf[0].properties.rows.items.properties.time$.properties.sources.items.oneOf[0].properties.rows.items.properties.time.anyOf[0]$.properties.sources.items.oneOf[0].properties.rows.items.properties.time.anyOf[1]$.properties.sources.items.oneOf[0].properties.rows.items.properties.values$.properties.sources.items.oneOf[0].properties.source_type$.properties.sources.items.oneOf[1]$.properties.sources.items.oneOf[1].oneOf[0]$.properties.sources.items.oneOf[1].oneOf[1]$.properties.sources.items.oneOf[1].properties.name$.properties.sources.items.oneOf[1].properties.time$.properties.sources.items.oneOf[1].properties.time.oneOf[0]$.properties.sources.items.oneOf[1].properties.time.oneOf[0].properties.unit$.properties.sources.items.oneOf[1].properties.time.oneOf[0].properties.offset$.properties.sources.items.oneOf[1].properties.time.oneOf[0].properties.time_type$.properties.sources.items.oneOf[1].properties.time.oneOf[0].properties.clock$.properties.sources.items.oneOf[1].properties.time.oneOf[1]$.properties.sources.items.oneOf[1].properties.time.oneOf[1].properties.unit$.properties.sources.items.oneOf[1].properties.time.oneOf[1].properties.offset$.properties.sources.items.oneOf[1].properties.time.oneOf[1].properties.timezone$.properties.sources.items.oneOf[1].properties.time.oneOf[1].properties.time_type$.properties.sources.items.oneOf[1].properties.metadata$.properties.sources.items.oneOf[1].properties.path$.properties.sources.items.oneOf[1].properties.path.oneOf[0]$.properties.sources.items.oneOf[1].properties.path.oneOf[1]$.properties.sources.items.oneOf[1].properties.path.oneOf[1].properties.path$.properties.sources.items.oneOf[1].properties.path.oneOf[1].properties.offset$.properties.sources.items.oneOf[1].properties.path.oneOf[2]$.properties.sources.items.oneOf[1].properties.path.oneOf[2].items$.properties.sources.items.oneOf[1].properties.path.oneOf[2].items.oneOf[0]$.properties.sources.items.oneOf[1].properties.path.oneOf[2].items.oneOf[1]$.properties.sources.items.oneOf[1].properties.path.oneOf[2].items.oneOf[1].properties.path$.properties.sources.items.oneOf[1].properties.path.oneOf[2].items.oneOf[1].properties.offset$.properties.sources.items.oneOf[1].properties.paths$.properties.sources.items.oneOf[1].properties.paths.oneOf[0]$.properties.sources.items.oneOf[1].properties.paths.oneOf[1]$.properties.sources.items.oneOf[1].properties.paths.oneOf[1].properties.path$.properties.sources.items.oneOf[1].properties.paths.oneOf[1].properties.offset$.properties.sources.items.oneOf[1].properties.paths.oneOf[2]$.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items$.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items.oneOf[0]$.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items.oneOf[1]$.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items.oneOf[1].properties.path$.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items.oneOf[1].properties.offset$.properties.sources.items.oneOf[1].properties.time_column$.properties.sources.items.oneOf[1].properties.source_type$.properties.sources.items.oneOf[1].properties.reader$.properties.sources.items.oneOf[1].properties.reader.properties.encoding$.properties.sources.items.oneOf[1].properties.reader.properties.delimiter$.properties.sources.items.oneOf[1].properties.reader.properties.missing_values$.properties.sources.items.oneOf[1].properties.reader.properties.missing_values.items$.properties.sources.items.oneOf[2]$.properties.sources.items.oneOf[2].oneOf[0]$.properties.sources.items.oneOf[2].oneOf[1]$.properties.sources.items.oneOf[2].properties.name$.properties.sources.items.oneOf[2].properties.time$.properties.sources.items.oneOf[2].properties.time.oneOf[0]$.properties.sources.items.oneOf[2].properties.time.oneOf[0].properties.unit$.properties.sources.items.oneOf[2].properties.time.oneOf[0].properties.offset$.properties.sources.items.oneOf[2].properties.time.oneOf[0].properties.time_type$.properties.sources.items.oneOf[2].properties.time.oneOf[0].properties.clock$.properties.sources.items.oneOf[2].properties.time.oneOf[1]$.properties.sources.items.oneOf[2].properties.time.oneOf[1].properties.unit$.properties.sources.items.oneOf[2].properties.time.oneOf[1].properties.offset$.properties.sources.items.oneOf[2].properties.time.oneOf[1].properties.time_type$.properties.sources.items.oneOf[2].properties.legacy_profile$.properties.sources.items.oneOf[2].properties.path$.properties.sources.items.oneOf[2].properties.path.oneOf[0]$.properties.sources.items.oneOf[2].properties.path.oneOf[1]$.properties.sources.items.oneOf[2].properties.path.oneOf[1].properties.path$.properties.sources.items.oneOf[2].properties.path.oneOf[1].properties.offset$.properties.sources.items.oneOf[2].properties.path.oneOf[2]$.properties.sources.items.oneOf[2].properties.path.oneOf[2].items$.properties.sources.items.oneOf[2].properties.path.oneOf[2].items.oneOf[0]$.properties.sources.items.oneOf[2].properties.path.oneOf[2].items.oneOf[1]$.properties.sources.items.oneOf[2].properties.path.oneOf[2].items.oneOf[1].properties.path$.properties.sources.items.oneOf[2].properties.path.oneOf[2].items.oneOf[1].properties.offset$.properties.sources.items.oneOf[2].properties.paths$.properties.sources.items.oneOf[2].properties.paths.oneOf[0]$.properties.sources.items.oneOf[2].properties.paths.oneOf[1]$.properties.sources.items.oneOf[2].properties.paths.oneOf[1].properties.path$.properties.sources.items.oneOf[2].properties.paths.oneOf[1].properties.offset$.properties.sources.items.oneOf[2].properties.paths.oneOf[2]$.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items$.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items.oneOf[0]$.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items.oneOf[1]$.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items.oneOf[1].properties.path$.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items.oneOf[1].properties.offset$.properties.sources.items.oneOf[2].properties.dbc_by_channel$.properties.sources.items.oneOf[2].properties.metadata$.properties.sources.items.oneOf[2].properties.source_type$.properties.sources.items.oneOf[2].properties.reader$.properties.sources.items.oneOf[2].properties.reader.properties.decode_policy$.properties.sources.items.oneOf[2].properties.reader.properties.decode_scope$.properties.sources.items.oneOf[2].properties.reader.properties.input_check$.properties.sources.items.oneOf[2].properties.file_merge$.properties.sources.items.oneOf[3]$.properties.sources.items.oneOf[3].oneOf[0]$.properties.sources.items.oneOf[3].oneOf[1]$.properties.sources.items.oneOf[3].properties.name$.properties.sources.items.oneOf[3].properties.time$.properties.sources.items.oneOf[3].properties.time.oneOf[0]$.properties.sources.items.oneOf[3].properties.time.oneOf[0].properties.unit$.properties.sources.items.oneOf[3].properties.time.oneOf[0].properties.offset$.properties.sources.items.oneOf[3].properties.time.oneOf[0].properties.time_type$.properties.sources.items.oneOf[3].properties.time.oneOf[0].properties.clock$.properties.sources.items.oneOf[3].properties.time.oneOf[1]$.properties.sources.items.oneOf[3].properties.time.oneOf[1].properties.unit$.properties.sources.items.oneOf[3].properties.time.oneOf[1].properties.offset$.properties.sources.items.oneOf[3].properties.time.oneOf[1].properties.time_type$.properties.sources.items.oneOf[3].properties.time.oneOf[1].properties.timezone$.properties.sources.items.oneOf[3].properties.path$.properties.sources.items.oneOf[3].properties.path.oneOf[0]$.properties.sources.items.oneOf[3].properties.path.oneOf[1]$.properties.sources.items.oneOf[3].properties.path.oneOf[1].properties.path$.properties.sources.items.oneOf[3].properties.path.oneOf[1].properties.offset$.properties.sources.items.oneOf[3].properties.path.oneOf[2]$.properties.sources.items.oneOf[3].properties.path.oneOf[2].items$.properties.sources.items.oneOf[3].properties.path.oneOf[2].items.oneOf[0]$.properties.sources.items.oneOf[3].properties.path.oneOf[2].items.oneOf[1]$.properties.sources.items.oneOf[3].properties.path.oneOf[2].items.oneOf[1].properties.path$.properties.sources.items.oneOf[3].properties.path.oneOf[2].items.oneOf[1].properties.offset$.properties.sources.items.oneOf[3].properties.paths$.properties.sources.items.oneOf[3].properties.paths.oneOf[0]$.properties.sources.items.oneOf[3].properties.paths.oneOf[1]$.properties.sources.items.oneOf[3].properties.paths.oneOf[1].properties.path$.properties.sources.items.oneOf[3].properties.paths.oneOf[1].properties.offset$.properties.sources.items.oneOf[3].properties.paths.oneOf[2]$.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items$.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items.oneOf[0]$.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items.oneOf[1]$.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items.oneOf[1].properties.path$.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items.oneOf[1].properties.offset$.properties.sources.items.oneOf[3].properties.offsets$.properties.sources.items.oneOf[3].properties.offsets.items$.properties.sources.items.oneOf[3].properties.dbc_by_channel$.properties.sources.items.oneOf[3].properties.metadata$.properties.sources.items.oneOf[3].properties.source_type$.properties.sources.items.oneOf[3].properties.reader$.properties.sources.items.oneOf[3].properties.reader.properties.version$.properties.sources.items.oneOf[3].properties.reader.properties.encoding$.properties.sources.items.oneOf[3].properties.reader.properties.decode_policy$.properties.sources.items.oneOf[3].properties.reader.properties.input_check$.properties.sources.items.oneOf[3].properties.file_merge$.properties.sources.items.oneOf[4]$.properties.sources.items.oneOf[4].oneOf[0]$.properties.sources.items.oneOf[4].oneOf[1]$.properties.sources.items.oneOf[4].properties.name$.properties.sources.items.oneOf[4].properties.time$.properties.sources.items.oneOf[4].properties.time.oneOf[0]$.properties.sources.items.oneOf[4].properties.time.oneOf[0].properties.unit$.properties.sources.items.oneOf[4].properties.time.oneOf[0].properties.offset$.properties.sources.items.oneOf[4].properties.time.oneOf[0].properties.time_type$.properties.sources.items.oneOf[4].properties.time.oneOf[0].properties.clock$.properties.sources.items.oneOf[4].properties.time.oneOf[1]$.properties.sources.items.oneOf[4].properties.time.oneOf[1].properties.unit$.properties.sources.items.oneOf[4].properties.time.oneOf[1].properties.offset$.properties.sources.items.oneOf[4].properties.time.oneOf[1].properties.time_type$.properties.sources.items.oneOf[4].properties.time.oneOf[1].properties.timezone$.properties.sources.items.oneOf[4].properties.path$.properties.sources.items.oneOf[4].properties.path.oneOf[0]$.properties.sources.items.oneOf[4].properties.path.oneOf[1]$.properties.sources.items.oneOf[4].properties.path.oneOf[1].properties.path$.properties.sources.items.oneOf[4].properties.path.oneOf[1].properties.offset$.properties.sources.items.oneOf[4].properties.path.oneOf[2]$.properties.sources.items.oneOf[4].properties.path.oneOf[2].items$.properties.sources.items.oneOf[4].properties.path.oneOf[2].items.oneOf[0]$.properties.sources.items.oneOf[4].properties.path.oneOf[2].items.oneOf[1]$.properties.sources.items.oneOf[4].properties.path.oneOf[2].items.oneOf[1].properties.path$.properties.sources.items.oneOf[4].properties.path.oneOf[2].items.oneOf[1].properties.offset$.properties.sources.items.oneOf[4].properties.paths$.properties.sources.items.oneOf[4].properties.paths.oneOf[0]$.properties.sources.items.oneOf[4].properties.paths.oneOf[1]$.properties.sources.items.oneOf[4].properties.paths.oneOf[1].properties.path$.properties.sources.items.oneOf[4].properties.paths.oneOf[1].properties.offset$.properties.sources.items.oneOf[4].properties.paths.oneOf[2]$.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items$.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items.oneOf[0]$.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items.oneOf[1]$.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items.oneOf[1].properties.path$.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items.oneOf[1].properties.offset$.properties.sources.items.oneOf[4].properties.offsets$.properties.sources.items.oneOf[4].properties.offsets.items$.properties.sources.items.oneOf[4].properties.dbc_by_channel$.properties.sources.items.oneOf[4].properties.metadata$.properties.sources.items.oneOf[4].properties.source_type$.properties.sources.items.oneOf[4].properties.reader$.properties.sources.items.oneOf[4].properties.reader.properties.layout$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.column$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.column.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.column.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.fixed$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.fixed.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.fixed.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.fixed.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.strip$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.value_map$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.column$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.column.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.column.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.fixed$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.fixed.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.fixed.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.fixed.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.strip$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.value_map$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.column$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.column.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.column.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.fixed$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.fixed.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.fixed.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.fixed.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.strip$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.value_map$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.column$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.column.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.column.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.fixed$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.fixed.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.fixed.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.fixed.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.strip$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.value_map$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.column$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.column.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.column.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.fixed$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.fixed.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.fixed.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.fixed.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.strip$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.value_map$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.column$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.column.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.column.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.fixed$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.fixed.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.fixed.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.fixed.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.strip$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.value_map$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.column$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.column.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.column.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.fixed$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.fixed.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.fixed.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.fixed.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.strip$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.value_map$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.column$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.column.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.column.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.fixed$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.fixed.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.fixed.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.fixed.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.strip$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.value_map$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.column$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.column.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.column.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.fixed$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.fixed.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.fixed.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.fixed.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.strip$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.value_map$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.column$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.column.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.column.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.fixed$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.fixed.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.fixed.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.fixed.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.strip$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.value_map$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.column$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.column.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.column.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.fixed$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.fixed.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.fixed.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.fixed.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.strip$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.value_map$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.column$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.column.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.column.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.fixed$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.fixed.oneOf[0]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.fixed.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.fixed.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.strip$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.value_map$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[1]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[2]$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.encoding$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.delimiter$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.has_header$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.skip_rows$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.layout_version$.properties.sources.items.oneOf[4].properties.reader.properties.time_format$.properties.sources.items.oneOf[4].properties.reader.properties.id_base$.properties.sources.items.oneOf[4].properties.reader.properties.length_base$.properties.sources.items.oneOf[4].properties.reader.properties.channel_origin$.properties.sources.items.oneOf[4].properties.reader.properties.payload_style$.properties.sources.items.oneOf[4].properties.reader.properties.rollover_min_drop$.properties.sources.items.oneOf[4].properties.reader.properties.decode_policy$.properties.sources.items.oneOf[4].properties.reader.properties.input_check$.properties.sources.items.oneOf[5]$.properties.sources.items.oneOf[5].oneOf[0]$.properties.sources.items.oneOf[5].oneOf[1]$.properties.sources.items.oneOf[5].properties.name$.properties.sources.items.oneOf[5].properties.time$.properties.sources.items.oneOf[5].properties.time.oneOf[0]$.properties.sources.items.oneOf[5].properties.time.oneOf[0].properties.unit$.properties.sources.items.oneOf[5].properties.time.oneOf[0].properties.offset$.properties.sources.items.oneOf[5].properties.time.oneOf[0].properties.time_type$.properties.sources.items.oneOf[5].properties.time.oneOf[0].properties.clock$.properties.sources.items.oneOf[5].properties.time.oneOf[1]$.properties.sources.items.oneOf[5].properties.time.oneOf[1].properties.unit$.properties.sources.items.oneOf[5].properties.time.oneOf[1].properties.offset$.properties.sources.items.oneOf[5].properties.time.oneOf[1].properties.time_type$.properties.sources.items.oneOf[5].properties.time.oneOf[1].properties.timezone$.properties.sources.items.oneOf[5].properties.legacy_profile$.properties.sources.items.oneOf[5].properties.path$.properties.sources.items.oneOf[5].properties.path.oneOf[0]$.properties.sources.items.oneOf[5].properties.path.oneOf[1]$.properties.sources.items.oneOf[5].properties.path.oneOf[1].properties.path$.properties.sources.items.oneOf[5].properties.path.oneOf[1].properties.offset$.properties.sources.items.oneOf[5].properties.path.oneOf[2]$.properties.sources.items.oneOf[5].properties.path.oneOf[2].items$.properties.sources.items.oneOf[5].properties.path.oneOf[2].items.oneOf[0]$.properties.sources.items.oneOf[5].properties.path.oneOf[2].items.oneOf[1]$.properties.sources.items.oneOf[5].properties.path.oneOf[2].items.oneOf[1].properties.path$.properties.sources.items.oneOf[5].properties.path.oneOf[2].items.oneOf[1].properties.offset$.properties.sources.items.oneOf[5].properties.paths$.properties.sources.items.oneOf[5].properties.paths.oneOf[0]$.properties.sources.items.oneOf[5].properties.paths.oneOf[1]$.properties.sources.items.oneOf[5].properties.paths.oneOf[1].properties.path$.properties.sources.items.oneOf[5].properties.paths.oneOf[1].properties.offset$.properties.sources.items.oneOf[5].properties.paths.oneOf[2]$.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items$.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items.oneOf[0]$.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items.oneOf[1]$.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items.oneOf[1].properties.path$.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items.oneOf[1].properties.offset$.properties.sources.items.oneOf[5].properties.dbc_by_channel$.properties.sources.items.oneOf[5].properties.metadata$.properties.sources.items.oneOf[5].properties.source_type$.properties.sources.items.oneOf[5].properties.offsets$.properties.sources.items.oneOf[5].properties.offsets.items$.properties.sources.items.oneOf[5].properties.reader$.properties.sources.items.oneOf[5].properties.reader.properties.version$.properties.sources.items.oneOf[5].properties.reader.properties.encoding$.properties.sources.items.oneOf[5].properties.reader.properties.decode_policy$.properties.sources.items.oneOf[5].properties.reader.properties.decode_scope$.properties.sources.items.oneOf[5].properties.reader.properties.input_check$.properties.sources.items.oneOf[5].properties.file_merge$.properties.signals$.properties.signals.items.oneOf[0]$.properties.signals.items.oneOf[0].allOf[0]$.properties.signals.items.oneOf[0].allOf[1]$.properties.signals.items.oneOf[0].properties.name$.properties.signals.items.oneOf[0].properties.source$.properties.signals.items.oneOf[0].properties.field$.properties.signals.items.oneOf[0].properties.field.oneOf[0]$.properties.signals.items.oneOf[0].properties.field.oneOf[1]$.properties.signals.items.oneOf[0].properties.field.oneOf[1].allOf[0]$.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.channel$.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.signal$.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.frame_id$.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.frame_id.oneOf[0]$.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.frame_id.oneOf[1]$.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.is_extended$.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.is_fd$.properties.signals.items.oneOf[0].properties.dtype$.properties.signals.items.oneOf[0].properties.unit$.properties.signals.items.oneOf[0].properties.valid_for$.properties.signals.items.oneOf[0].properties.sample_policy$.properties.signals.items.oneOf[0].properties.same_time_policy$.properties.signals.items.oneOf[0].properties.code_dtype$.properties.signals.items.oneOf[0].properties.choices$.properties.signals.items.oneOf[0].properties.choices.items$.properties.signals.items.oneOf[0].properties.valid_range$.properties.signals.items.oneOf[0].properties.valid_range.items$.properties.signals.items.oneOf[0].properties.invalid_values$.properties.signals.items.oneOf[0].properties.invalid_values.items$.properties.signals.items.oneOf[0].properties.semantic_id$.properties.signals.items.oneOf[0].properties.semantic_contract_version$.properties.signals.items.oneOf[0].properties.mapping_version$.properties.signals.items.oneOf[0].properties.sign_convention$.properties.signals.items.oneOf[0].properties.measurement_location$.properties.signals.items.oneOf[0].properties.metadata$.properties.signals.items.oneOf[0].properties.period$.properties.signals.items.oneOf[0].properties.conversion$.properties.signals.items.oneOf[0].properties.conversion.properties.input_unit$.properties.signals.items.oneOf[0].properties.conversion.properties.scale$.properties.signals.items.oneOf[0].properties.conversion.properties.offset$.properties.signals.items.oneOf[1]$.properties.signals.items.oneOf[1].allOf[0]$.properties.signals.items.oneOf[1].properties.frame_id$.properties.signals.items.oneOf[1].properties.frame_id.oneOf[0]$.properties.signals.items.oneOf[1].properties.frame_id.oneOf[1]$.properties.signals.items.oneOf[1].properties.channel$.properties.signals.items.oneOf[1].properties.is_extended$.properties.signals.items.oneOf[1].properties.is_fd$.properties.signals.items.oneOf[1].properties.source$.properties.signals.items.oneOf[1].properties.period$.properties.signals.items.oneOf[1].properties.valid_for$.properties.signals.items.oneOf[1].properties.same_time_policy$.properties.signals.items.oneOf[1].properties.signals$.properties.signals.items.oneOf[1].properties.signals.items$.properties.signals.items.oneOf[1].properties.signals.items.allOf[0]$.properties.signals.items.oneOf[1].properties.signals.items.allOf[1]$.properties.signals.items.oneOf[1].properties.signals.items.properties.name$.properties.signals.items.oneOf[1].properties.signals.items.properties.dtype$.properties.signals.items.oneOf[1].properties.signals.items.properties.unit$.properties.signals.items.oneOf[1].properties.signals.items.properties.valid_for$.properties.signals.items.oneOf[1].properties.signals.items.properties.sample_policy$.properties.signals.items.oneOf[1].properties.signals.items.properties.same_time_policy$.properties.signals.items.oneOf[1].properties.signals.items.properties.code_dtype$.properties.signals.items.oneOf[1].properties.signals.items.properties.choices$.properties.signals.items.oneOf[1].properties.signals.items.properties.choices.items$.properties.signals.items.oneOf[1].properties.signals.items.properties.valid_range$.properties.signals.items.oneOf[1].properties.signals.items.properties.valid_range.items$.properties.signals.items.oneOf[1].properties.signals.items.properties.invalid_values$.properties.signals.items.oneOf[1].properties.signals.items.properties.invalid_values.items$.properties.signals.items.oneOf[1].properties.signals.items.properties.semantic_id$.properties.signals.items.oneOf[1].properties.signals.items.properties.semantic_contract_version$.properties.signals.items.oneOf[1].properties.signals.items.properties.mapping_version$.properties.signals.items.oneOf[1].properties.signals.items.properties.sign_convention$.properties.signals.items.oneOf[1].properties.signals.items.properties.measurement_location$.properties.signals.items.oneOf[1].properties.signals.items.properties.metadata$.properties.signals.items.oneOf[1].properties.signals.items.properties.period$.properties.signals.items.oneOf[1].properties.signals.items.properties.signal$.properties.signals.items.oneOf[1].properties.signals.items.properties.conversion$.properties.signals.items.oneOf[1].properties.signals.items.properties.conversion.properties.input_unit$.properties.signals.items.oneOf[1].properties.signals.items.properties.conversion.properties.scale$.properties.signals.items.oneOf[1].properties.signals.items.properties.conversion.properties.offset$.properties.derived$.properties.rules$.properties.rules.items.oneOf[0]$.properties.rules.items.oneOf[0].properties.name$.properties.rules.items.oneOf[0].properties.condition$.properties.rules.items.oneOf[0].properties.selection_origin$.properties.rules.items.oneOf[0].properties.rule_type$.properties.rules.items.oneOf[0].properties.minimum_duration$.properties.rules.items.oneOf[0].properties.duration_comparison$.properties.rules.items.oneOf[0].properties.interval$.properties.rules.items.oneOf[0].properties.interval.oneOf[0]$.properties.rules.items.oneOf[0].properties.interval.oneOf[0].properties.mode$.properties.rules.items.oneOf[0].properties.interval.oneOf[1]$.properties.rules.items.oneOf[0].properties.interval.oneOf[1].properties.mode$.properties.rules.items.oneOf[0].properties.interval.oneOf[1].properties.value$.properties.rules.items.oneOf[0].properties.interval.oneOf[1].properties.driver$.properties.rules.items.oneOf[0].properties.interval.oneOf[2]$.properties.rules.items.oneOf[0].properties.interval.oneOf[2].properties.mode$.properties.rules.items.oneOf[0].properties.interval.oneOf[2].properties.driver$.properties.rules.items.oneOf[1]$.properties.rules.items.oneOf[1].properties.name$.properties.rules.items.oneOf[1].properties.condition$.properties.rules.items.oneOf[1].properties.emit_initial$.properties.rules.items.oneOf[1].properties.rule_type$.properties.rules.items.oneOf[1].properties.interval$.properties.rules.items.oneOf[1].properties.interval.oneOf[0]$.properties.rules.items.oneOf[1].properties.interval.oneOf[0].properties.mode$.properties.rules.items.oneOf[1].properties.interval.oneOf[1]$.properties.rules.items.oneOf[1].properties.interval.oneOf[1].properties.mode$.properties.rules.items.oneOf[1].properties.interval.oneOf[1].properties.value$.properties.rules.items.oneOf[1].properties.interval.oneOf[1].properties.driver$.properties.rules.items.oneOf[1].properties.interval.oneOf[2]$.properties.rules.items.oneOf[1].properties.interval.oneOf[2].properties.mode$.properties.rules.items.oneOf[1].properties.interval.oneOf[2].properties.driver$.properties.rules.items.oneOf[2]$.properties.rules.items.oneOf[2].properties.name$.properties.rules.items.oneOf[2].properties.condition$.properties.rules.items.oneOf[2].properties.emit_initial$.properties.rules.items.oneOf[2].properties.rule_type$.properties.rules.items.oneOf[2].properties.interval$.properties.rules.items.oneOf[2].properties.interval.oneOf[0]$.properties.rules.items.oneOf[2].properties.interval.oneOf[0].properties.mode$.properties.rules.items.oneOf[2].properties.interval.oneOf[1]$.properties.rules.items.oneOf[2].properties.interval.oneOf[1].properties.mode$.properties.rules.items.oneOf[2].properties.interval.oneOf[1].properties.value$.properties.rules.items.oneOf[2].properties.interval.oneOf[1].properties.driver$.properties.rules.items.oneOf[2].properties.interval.oneOf[2]$.properties.rules.items.oneOf[2].properties.interval.oneOf[2].properties.mode$.properties.rules.items.oneOf[2].properties.interval.oneOf[2].properties.driver$.properties.rules.items.oneOf[3]$.properties.rules.items.oneOf[3].properties.name$.properties.rules.items.oneOf[3].properties.condition$.properties.rules.items.oneOf[3].properties.window_duration$.properties.rules.items.oneOf[3].properties.emit_initial$.properties.rules.items.oneOf[3].properties.rule_type$.properties.rules.items.oneOf[3].properties.interval$.properties.rules.items.oneOf[3].properties.interval.oneOf[0]$.properties.rules.items.oneOf[3].properties.interval.oneOf[0].properties.mode$.properties.rules.items.oneOf[3].properties.interval.oneOf[1]$.properties.rules.items.oneOf[3].properties.interval.oneOf[1].properties.mode$.properties.rules.items.oneOf[3].properties.interval.oneOf[1].properties.value$.properties.rules.items.oneOf[3].properties.interval.oneOf[1].properties.driver$.properties.rules.items.oneOf[3].properties.interval.oneOf[2]$.properties.rules.items.oneOf[3].properties.interval.oneOf[2].properties.mode$.properties.rules.items.oneOf[3].properties.interval.oneOf[2].properties.driver$.properties.rules.items.oneOf[4]$.properties.rules.items.oneOf[4].properties.name$.properties.rules.items.oneOf[4].properties.signal$.properties.rules.items.oneOf[4].properties.window$.properties.rules.items.oneOf[4].properties.direction$.properties.rules.items.oneOf[4].properties.threshold$.properties.rules.items.oneOf[4].properties.monotonic$.properties.rules.items.oneOf[4].properties.coverage_policy$.properties.rules.items.oneOf[4].properties.emit_initial$.properties.rules.items.oneOf[4].properties.retrigger$.properties.rules.items.oneOf[4].properties.rule_type$.properties.rules.items.oneOf[4].properties.interval$.properties.rules.items.oneOf[4].properties.interval.oneOf[0]$.properties.rules.items.oneOf[4].properties.interval.oneOf[0].properties.mode$.properties.rules.items.oneOf[4].properties.interval.oneOf[1]$.properties.rules.items.oneOf[4].properties.interval.oneOf[1].properties.mode$.properties.rules.items.oneOf[4].properties.interval.oneOf[1].properties.value$.properties.rules.items.oneOf[4].properties.interval.oneOf[1].properties.driver$.properties.rules.items.oneOf[4].properties.interval.oneOf[2]$.properties.rules.items.oneOf[4].properties.interval.oneOf[2].properties.mode$.properties.rules.items.oneOf[4].properties.interval.oneOf[2].properties.driver$.properties.rules.items.oneOf[5]$.properties.rules.items.oneOf[5].properties.name$.properties.rules.items.oneOf[5].properties.condition$.properties.rules.items.oneOf[5].properties.enter_delay$.properties.rules.items.oneOf[5].properties.exit_delay$.properties.rules.items.oneOf[5].properties.rule_type$.properties.rules.items.oneOf[5].properties.interval$.properties.rules.items.oneOf[5].properties.interval.oneOf[0]$.properties.rules.items.oneOf[5].properties.interval.oneOf[0].properties.mode$.properties.rules.items.oneOf[5].properties.interval.oneOf[1]$.properties.rules.items.oneOf[5].properties.interval.oneOf[1].properties.mode$.properties.rules.items.oneOf[5].properties.interval.oneOf[1].properties.value$.properties.rules.items.oneOf[5].properties.interval.oneOf[1].properties.driver$.properties.rules.items.oneOf[5].properties.interval.oneOf[2]$.properties.rules.items.oneOf[5].properties.interval.oneOf[2].properties.mode$.properties.rules.items.oneOf[5].properties.interval.oneOf[2].properties.driver$.properties.rules.items.oneOf[6]$.properties.rules.items.oneOf[6].properties.name$.properties.rules.items.oneOf[6].properties.enter_condition$.properties.rules.items.oneOf[6].properties.exit_condition$.properties.rules.items.oneOf[6].properties.enter_delay$.properties.rules.items.oneOf[6].properties.exit_delay$.properties.rules.items.oneOf[6].properties.rule_type$.properties.rules.items.oneOf[6].properties.interval$.properties.rules.items.oneOf[6].properties.interval.oneOf[0]$.properties.rules.items.oneOf[6].properties.interval.oneOf[0].properties.mode$.properties.rules.items.oneOf[6].properties.interval.oneOf[1]$.properties.rules.items.oneOf[6].properties.interval.oneOf[1].properties.mode$.properties.rules.items.oneOf[6].properties.interval.oneOf[1].properties.value$.properties.rules.items.oneOf[6].properties.interval.oneOf[1].properties.driver$.properties.rules.items.oneOf[6].properties.interval.oneOf[2]$.properties.rules.items.oneOf[6].properties.interval.oneOf[2].properties.mode$.properties.rules.items.oneOf[6].properties.interval.oneOf[2].properties.driver$.properties.rules.items.oneOf[7]$.properties.rules.items.oneOf[7].properties.name$.properties.rules.items.oneOf[7].properties.start_condition$.properties.rules.items.oneOf[7].properties.end_condition$.properties.rules.items.oneOf[7].properties.timeout$.properties.rules.items.oneOf[7].properties.timeout.anyOf[0]$.properties.rules.items.oneOf[7].properties.timeout.anyOf[1]$.properties.rules.items.oneOf[7].properties.emit_initial$.properties.rules.items.oneOf[7].properties.rule_type$.properties.rules.items.oneOf[7].properties.interval$.properties.rules.items.oneOf[7].properties.interval.oneOf[0]$.properties.rules.items.oneOf[7].properties.interval.oneOf[0].properties.mode$.properties.rules.items.oneOf[7].properties.interval.oneOf[1]$.properties.rules.items.oneOf[7].properties.interval.oneOf[1].properties.mode$.properties.rules.items.oneOf[7].properties.interval.oneOf[1].properties.value$.properties.rules.items.oneOf[7].properties.interval.oneOf[1].properties.driver$.properties.rules.items.oneOf[7].properties.interval.oneOf[2]$.properties.rules.items.oneOf[7].properties.interval.oneOf[2].properties.mode$.properties.rules.items.oneOf[7].properties.interval.oneOf[2].properties.driver$.properties.windows$.properties.windows.items$.properties.windows.items.allOf[0]$.properties.windows.items.properties.name$.properties.windows.items.properties.rule$.properties.windows.items.properties.anchor$.properties.windows.items.properties.pre$.properties.windows.items.properties.post$.properties.windows.items.properties.merge$.properties.windows.items.properties.exit_delay$.properties.windows.items.properties.interval$.properties.windows.items.properties.interval.oneOf[0]$.properties.windows.items.properties.interval.oneOf[0].properties.mode$.properties.windows.items.properties.interval.oneOf[1]$.properties.windows.items.properties.interval.oneOf[1].properties.mode$.properties.windows.items.properties.interval.oneOf[1].properties.value$.properties.windows.items.properties.interval.oneOf[1].properties.driver$.properties.windows.items.properties.interval.oneOf[2]$.properties.windows.items.properties.interval.oneOf[2].properties.mode$.properties.windows.items.properties.interval.oneOf[2].properties.driver$.properties.calculations$.properties.calculations.items$.properties.calculations.items.allOf[0]$.properties.calculations.items.properties.name$.properties.calculations.items.properties.scope$.properties.calculations.items.properties.scope.oneOf[0]$.properties.calculations.items.properties.scope.oneOf[1]$.properties.calculations.items.properties.scope.oneOf[1].properties.rule$.properties.calculations.items.properties.scope.oneOf[2]$.properties.calculations.items.properties.scope.oneOf[2].properties.window$.properties.calculations.items.properties.operation$.properties.calculations.items.properties.condition$.properties.calculations.items.properties.unit$.properties.calculations.items.properties.method$.properties.calculations.items.properties.partial_policy$.properties.calculations.items.properties.minimum_coverage$.properties.calculations.items.properties.expr$.properties.calculations.items.properties.interval$.properties.calculations.items.properties.interval.oneOf[0]$.properties.calculations.items.properties.interval.oneOf[0].properties.mode$.properties.calculations.items.properties.interval.oneOf[1]$.properties.calculations.items.properties.interval.oneOf[1].properties.mode$.properties.calculations.items.properties.interval.oneOf[1].properties.value$.properties.calculations.items.properties.interval.oneOf[1].properties.driver$.properties.calculations.items.properties.interval.oneOf[2]$.properties.calculations.items.properties.interval.oneOf[2].properties.mode$.properties.calculations.items.properties.interval.oneOf[2].properties.driver$.properties.calculations.items.properties.rule$.properties.calculations.items.properties.window$.properties.calculations.items.properties.ddof$.properties.calculations.items.properties.q$.properties.presets$.properties.presets.items.oneOf[0]$.properties.presets.items.oneOf[0].properties.name$.properties.presets.items.oneOf[0].properties.version$.properties.presets.items.oneOf[0].properties.role_bindings$.properties.presets.items.oneOf[0].properties.role_bindings.properties.mode$.properties.presets.items.oneOf[0].properties.role_bindings.properties.current$.properties.presets.items.oneOf[0].properties.role_bindings.properties.voltage$.properties.presets.items.oneOf[0].properties.parameters$.properties.presets.items.oneOf[0].properties.parameters.properties.mode_value$.properties.presets.items.oneOf[0].properties.parameters.properties.current_min$.properties.presets.items.oneOf[0].properties.parameters.properties.compute_energy$.properties.presets.items.oneOf[0].properties.parameters.properties.compute_charge$.properties.presets.items.oneOf[0].properties.parameters.properties.minimum_coverage$.properties.presets.items.oneOf[0].properties.parameters.properties.partial_policy$.properties.presets.items.oneOf[0].properties.parameters.properties.minimum_duration$.properties.presets.items.oneOf[0].properties.preset_type$.properties.presets.items.oneOf[1]$.properties.presets.items.oneOf[1].properties.name$.properties.presets.items.oneOf[1].properties.version$.properties.presets.items.oneOf[1].properties.role_bindings$.properties.presets.items.oneOf[1].properties.role_bindings.properties.alarm$.properties.presets.items.oneOf[1].properties.parameters$.properties.presets.items.oneOf[1].properties.parameters.properties.pre$.properties.presets.items.oneOf[1].properties.parameters.properties.post$.properties.presets.items.oneOf[1].properties.parameters.properties.emit_initial$.properties.presets.items.oneOf[1].properties.preset_type$.properties.presets.items.oneOf[2]$.properties.presets.items.oneOf[2].properties.name$.properties.presets.items.oneOf[2].properties.version$.properties.presets.items.oneOf[2].properties.role_bindings$.properties.presets.items.oneOf[2].properties.role_bindings.properties.request$.properties.presets.items.oneOf[2].properties.role_bindings.properties.response$.properties.presets.items.oneOf[2].properties.parameters$.properties.presets.items.oneOf[2].properties.parameters.properties.min_delay$.properties.presets.items.oneOf[2].properties.parameters.properties.max_delay$.properties.presets.items.oneOf[2].properties.parameters.properties.emit_initial$.properties.presets.items.oneOf[2].properties.parameters.properties.max_pending$.properties.presets.items.oneOf[2].properties.preset_type$.properties.presets.items.oneOf[3]$.properties.presets.items.oneOf[3].properties.name$.properties.presets.items.oneOf[3].properties.version$.properties.presets.items.oneOf[3].properties.role_bindings$.properties.presets.items.oneOf[3].properties.role_bindings.properties.signal$.properties.presets.items.oneOf[3].properties.parameters$.properties.presets.items.oneOf[3].properties.parameters.properties.unit$.properties.presets.items.oneOf[3].properties.parameters.properties.enter_threshold$.properties.presets.items.oneOf[3].properties.parameters.properties.exit_threshold$.properties.presets.items.oneOf[3].properties.parameters.properties.enter_delay$.properties.presets.items.oneOf[3].properties.parameters.properties.exit_delay$.properties.presets.items.oneOf[3].properties.preset_type$.properties.message_calculations$.properties.message_calculations.items$.properties.message_calculations.items.properties.name$.properties.message_calculations.items.properties.source$.properties.message_calculations.items.properties.profile$.properties.message_calculations.items.properties.operation$.properties.message_calculations.items.properties.message_policy$.properties.message_calculations.items.properties.expr$.properties.message_calculations.items.properties.unit$.properties.message_calculations.items.properties.update_message$.properties.message_calculations.items.properties.update_message.allOf[0]$.properties.message_calculations.items.properties.update_message.properties.channel$.properties.message_calculations.items.properties.update_message.properties.frame_id$.properties.message_calculations.items.properties.update_message.properties.frame_id.oneOf[0]$.properties.message_calculations.items.properties.update_message.properties.frame_id.oneOf[1]$.properties.message_calculations.items.properties.update_message.properties.is_extended$.properties.message_calculations.items.properties.update_message.properties.is_fd$.properties.message_calculations.items.properties.split_by_sign$.properties.message_calculations.items.properties.split_by_sign.properties.signal$.properties.message_calculations.items.properties.split_by_sign.properties.bucket$.properties.message_calculations.items.properties.split_by_sign.properties.value_policy$.properties.message_calculations.items.properties.parameters$.properties.execution$.properties.execution.properties.backend$.properties.execution.properties.batch_rows$.properties.execution.properties.memory_budget_bytes$.properties.execution.properties.result_buffer_rows$.properties.execution.properties.partial_policy$.properties.execution.properties.on_budget_exceeded$.properties.execution.properties.spool_quota_bytes$.properties.execution.properties.spool_quota_bytes.anyOf[0]$.properties.execution.properties.spool_quota_bytes.anyOf[1]$.properties.execution.properties.process_count$.properties.outputs$.properties.outputs.properties.contributions$.properties.outputs.properties.tables$.properties.outputs.properties.manifest$.properties.outputs.properties.signal_csv$.properties.outputs.properties.signal_csv.oneOf[0]$.properties.outputs.properties.signal_csv.oneOf[1]$.properties.outputs.properties.signal_csv.oneOf[1].properties.signals$.properties.outputs.properties.signal_csv.oneOf[1].properties.signals.items$.properties.outputs.properties.signal_csv.oneOf[1].properties.scope$.properties.outputs.properties.signal_csv.oneOf[1].properties.scope.oneOf[0]$.properties.outputs.properties.signal_csv.oneOf[1].properties.scope.oneOf[1]$.properties.outputs.properties.signal_csv.oneOf[1].properties.scope.oneOf[1].properties.window$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[0]$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1]$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.continuous$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.continuous.items$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.max_gap$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[0]$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1]$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1].properties.mode$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1].properties.driver$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.start$.properties.outputs.properties.can_frames$.properties.outputs.properties.can_frames.oneOf[0]$.properties.outputs.properties.can_frames.oneOf[1]$.properties.outputs.properties.can_frames.oneOf[1].allOf[0]$.properties.outputs.properties.can_frames.oneOf[1].allOf[1]$.properties.outputs.properties.can_frames.oneOf[1].allOf[2]$.properties.outputs.properties.can_frames.oneOf[1].properties.source$.properties.outputs.properties.can_frames.oneOf[1].properties.format$.properties.outputs.properties.can_frames.oneOf[1].properties.scope$.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[0]$.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[1]$.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[1].properties.window$.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[2]$.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[2].properties.windows$.properties.outputs.properties.can_frames.oneOf[1].properties.source_time_reference$.properties.outputs.properties.can_frames.oneOf[1].properties.capture_date$.properties.outputs.properties.can_frames.oneOf[1].properties.output_offset$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[0]$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1]$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.max_gap$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.allOf[0]$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.channel$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.frame_id$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.frame_id.oneOf[0]$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.frame_id.oneOf[1]$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.is_extended$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.is_fd$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.continuous$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.continuous.items$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.protected$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.protected.items$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.same_time_policy$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.unknown_policy$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.max_distance$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.period$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[0]$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1]$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1].properties.mode$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.start$.properties.outputs.properties.can_frames.oneOf[1].properties.timezone$.properties.metadata$.properties.sequences$.properties.sequences.items$.properties.sequences.items.properties.name$.properties.sequences.items.properties.start$.properties.sequences.items.properties.response$.properties.sequences.items.properties.min_delay$.properties.sequences.items.properties.max_delay$.properties.sequences.items.properties.max_pending$.properties.sequences.items.properties.interval$.properties.sequences.items.properties.interval.oneOf[0]$.properties.sequences.items.properties.interval.oneOf[0].properties.mode$.properties.sequences.items.properties.interval.oneOf[1]$.properties.sequences.items.properties.interval.oneOf[1].properties.mode$.properties.sequences.items.properties.interval.oneOf[1].properties.value$.properties.sequences.items.properties.interval.oneOf[1].properties.driver$.properties.sequences.items.properties.interval.oneOf[2]$.properties.sequences.items.properties.interval.oneOf[2].properties.mode$.properties.sequences.items.properties.interval.oneOf[2].properties.driver$.properties.intervals$.properties.intervals.properties.default$.properties.intervals.properties.default.oneOf[0]$.properties.intervals.properties.default.oneOf[0].properties.mode$.properties.intervals.properties.default.oneOf[1]$.properties.intervals.properties.default.oneOf[1].properties.mode$.properties.intervals.properties.default.oneOf[1].properties.value$.properties.intervals.properties.default.oneOf[1].properties.driver$.properties.intervals.properties.default.oneOf[2]$.properties.intervals.properties.default.oneOf[2].properties.mode$.properties.intervals.properties.default.oneOf[2].properties.driver$.properties.diagnostics$.properties.diagnostics.properties.trace$.properties.diagnostics.properties.integrity$.properties.diagnostics.properties.retain_work$.properties.imports$.properties.imports.items$.properties.overrides$.properties.overrides.properties.sources$.properties.overrides.properties.signals$.properties.overrides.properties.derived

配置字段完整参考

基线8904c2f744951857659abd40aaa3535d57faf53c;device_label: home。

先读配置教程。JSON路径含$defs的条目是可复用结构;$ref指向这些结构。schema描述形状,运行能力由计划解析和AnalysisRunner校验决定,不能据枚举值推断已接线。

$

json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$comment": "分析配置格式4;本地相对引用。字段结构由本规范检查,展开后的跨字段约束由计划模型检查。",
  "title": "Chronaxis 当前分析配置",
  "description": "当前分析配置版本4,兼容单位自动换算。默认采用真实记录间隔,按请求生成结果;引用、单位、驱动与时间范围由AnalysisPlan检查。",
  "type": "object",
  "required": [
    "config_version",
    "dataset"
  ],
  "additionalProperties": false,
  "dependentRequired": {
    "overrides": [
      "imports"
    ]
  }
}

$.allOf[0].properties.signals

json
{
  "description": "约束当前版本可以使用的信号声明字段。"
}

$.allOf[0].properties.signals.items

json
{
  "dependentSchemas": {
    "code_dtype": {
      "properties": {
        "dtype": {
          "const": "enum",
          "description": "信号值的类型,决定该信号可用的附加字段。"
        }
      }
    }
  }
}

$.allOf[0].properties.signals.items.properties.signals

json
{
  "description": "约束当前版本可以使用的信号声明字段。"
}

$.allOf[0].properties.signals.items.properties.signals.items

json
{
  "dependentSchemas": {
    "code_dtype": {
      "properties": {
        "dtype": {
          "const": "enum",
          "description": "信号值的类型,决定该信号可用的附加字段。"
        }
      }
    }
  }
}

$.allOf[1]

json
{
  "$comment": "省略domain时由同次读取确定实际观测范围,普通分析与按需导出均可使用。"
}

$.allOf[2]

json
{
  "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": "把来源的原始字段绑定为分析使用的简单信号名,明确类型、单位和有效期。"
      }
    }
  }
}

$.allOf[3]

json
{
  "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[0]

json
{
  "required": [
    "imports"
  ]
}

$.anyOf[1]

json
{
  "required": [
    "sources",
    "signals"
  ]
}

$.properties.config_version

json
{
  "type": "integer",
  "description": "分析配置结构编号,只接受整数4;旧版本、缺失和错误类型均拒绝,不自动转换。",
  "const": 4
}

$.properties.transforms

json
{
  "type": "array",
  "maxItems": 64,
  "description": "版本4在原记录或指定输出时刻计算滚动数值和变化率。"
}

$.properties.transforms.items

json
{
  "type": "object",
  "required": [
    "name",
    "operation",
    "expr"
  ],
  "additionalProperties": false
}

$.properties.transforms.items.allOf[0]

json
{
  "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。"
        }
      }
    }
  }
}

$.properties.transforms.items.properties.name

json
{
  "type": "string",
  "minLength": 1,
  "description": "用户给这一项起的名称,后续通过此名称引用它。"
}

$.properties.transforms.items.properties.operation

json
{
  "enum": [
    "rolling_time_mean",
    "rolling_minimum",
    "rolling_maximum",
    "rolling_integral",
    "adjacent_rate",
    "window_rate",
    "sample_fit_slope"
  ],
  "description": "选择这项计算执行的具名操作。"
}

$.properties.transforms.items.properties.expr

json
{
  "type": "string",
  "minLength": 1,
  "description": "从已绑定的信号或派生量计算此项的输入。"
}

$.properties.transforms.items.properties.unit

json
{
  "type": "string",
  "minLength": 1,
  "description": "希望结果采用的单位,必须与计算量兼容。"
}

$.properties.transforms.items.properties.window

json
{
  "type": "string",
  "pattern": "^\\s*[+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "选择窗口范围;变换中的时长必须为正。"
}

$.properties.transforms.items.properties.step

json
{
  "type": "string",
  "pattern": "^\\s*[+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "两次定时输出之间的实际时间距离,必须为正。"
}

$.properties.transforms.items.properties.origin

json
{
  "type": "string",
  "description": "用来对齐输出网格的实际时刻,使用本来源的时间坐标。"
}

$.properties.transforms.items.properties.max_gap

json
{
  "type": "string",
  "pattern": "^\\s*[+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "相邻两次实际更新允许相隔的最长时间。"
}

$.properties.transforms.items.properties.partial_policy

json
{
  "enum": [
    "strict",
    "report"
  ],
  "description": "部分数据可用时,决定保留数值还是返回空值。"
}

$.properties.transforms.items.properties.minimum_coverage

json
{
  "type": "number",
  "minimum": 0,
  "maximum": 1,
  "description": "有效数据占所请求窗口的最低比例。"
}

$.properties.transforms.items.properties.interval

json
{
  "$ref": "#/properties/calculations/items/properties/interval",
  "description": "选择以实测、固定或原始报文DBC周期计算间隔。"
}

$.properties.aggregations

json
{
  "type": "array",
  "description": "按需汇总单次运行中的计算、配对、事件或窗口结果。"
}

$.properties.aggregations.items

json
{
  "type": "object",
  "required": [
    "name",
    "source",
    "operation"
  ],
  "additionalProperties": false
}

$.properties.aggregations.items.allOf[0]

json
{
  "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。"
              }
            }
          }
        }
      }
    ]
  }
}

$.properties.aggregations.items.properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "用户给这一项起的名称,后续通过此名称引用它。"
}

$.properties.aggregations.items.properties.source

json
{
  "type": "object",
  "description": "选择本次运行要汇总的结果。只引用一个计算、配对、规则或窗口。",
  "minProperties": 1,
  "maxProperties": 1,
  "additionalProperties": false
}

$.properties.aggregations.items.properties.source.properties.calculation

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "引用要汇总的标量计算项的名称。"
}

$.properties.aggregations.items.properties.source.properties.sequence

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "引用产生请求和响应结果的配对规则名称。"
}

$.properties.aggregations.items.properties.source.properties.rule

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "引用产生待计数事件的已声明规则。"
}

$.properties.aggregations.items.properties.source.properties.window

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "引用生成待统计片段的窗口名称。"
}

$.properties.aggregations.items.properties.operation

json
{
  "enum": [
    "count",
    "sum",
    "mean",
    "variance",
    "quantile",
    "median"
  ],
  "description": "对引用的结果行执行的聚合。成功响应的延迟均值和P95只使用已成功配对的延迟。"
}

$.properties.aggregations.items.properties.field

json
{
  "enum": [
    "value",
    "delay_ns"
  ],
  "description": "可选数值字段;计算结果默认value,配对默认delay_ns。计数不需要数值字段。"
}

$.properties.aggregations.items.properties.group_by

json
{
  "type": "array",
  "uniqueItems": true,
  "description": "按这些稳定字段分组。省略时将本次引用结果合为一组。"
}

$.properties.aggregations.items.properties.group_by.items

json
{
  "enum": [
    "dataset_id",
    "entity_id",
    "session_id",
    "calculation_id",
    "parent_id",
    "sequence_id",
    "rule_id",
    "window_id"
  ],
  "description": "当前结果来源可用的分组字段;每个字段最多选一次。"
}

$.properties.aggregations.items.properties.unit

json
{
  "type": "string",
  "minLength": 1,
  "description": "汇总结果的显示单位。计数为1;配对延迟可用ms或s。"
}

$.properties.aggregations.items.properties.include_partial

json
{
  "type": "boolean",
  "description": "是否允许已有的部分数值参与。即使允许,汇总仍保留部分状态。"
}

$.properties.aggregations.items.properties.partial_policy

json
{
  "enum": [
    "report",
    "strict"
  ],
  "description": "总体不完整时,report可给出已知部分,strict不给出数值。"
}

$.properties.aggregations.items.properties.q

json
{
  "type": "number",
  "minimum": 0,
  "maximum": 1,
  "description": "分位数位置,quantile必填。median固定取0.5,不填写q。"
}

$.properties.aggregations.items.properties.ddof

json
{
  "type": "integer",
  "enum": [
    0,
    1
  ],
  "description": "方差的自由度修正,省略为0。"
}

$.properties.lookups

json
{
  "type": "array",
  "maxItems": 64,
  "description": "版本4的一维标定表,供lookup函数按名称引用。输入轴在其声明单位中严格递增,步骤模式保留表值的定宽类型。"
}

$.properties.lookups.items

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "name",
    "points",
    "input_unit",
    "unit"
  ]
}

$.properties.lookups.items.properties.name

json
{
  "$ref": "#/properties/dataset/properties/name",
  "description": "表达式引用的唯一表名。"
}

$.properties.lookups.items.properties.input_unit

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256,
  "description": "标定轴单位,兼容的查询输入按此单位换算。"
}

$.properties.lookups.items.properties.unit

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256,
  "description": "希望结果采用的单位,必须与计算量兼容。"
}

$.properties.lookups.items.properties.points

json
{
  "type": "array",
  "minItems": 2,
  "maxItems": 4096,
  "description": "按输入从小到大排列的[输入,输出]数值对。有限轴、定宽整数和精度由加载器核验。"
}

$.properties.lookups.items.properties.points.items

json
{
  "type": "array",
  "minItems": 2,
  "maxItems": 2
}

$.properties.lookups.items.properties.points.items.items

json
{
  "type": "number"
}

$.properties.dataset

json
{
  "type": "object",
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "description": "本次分析对象、会话与请求时间范围。请求范围不等于实际采集覆盖。"
}

$.properties.dataset.properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.dataset.properties.entity

json
{
  "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。"
}

$.properties.dataset.properties.session

json
{
  "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,运行状态按任务隔离。"
}

$.properties.dataset.properties.domain

json
{
  "type": "object",
  "required": [
    "start",
    "end"
  ],
  "additionalProperties": false,
  "description": "请求分析的半开时间范围[start,end),包含起点、不包含终点。普通分析与逐消息累计均可省略,由实际观测确定范围;显式填写时必须同时给出start和end,null或空对象不等于省略。"
}

$.properties.dataset.properties.domain.properties.start

json
{
  "type": "string",
  "description": "分析范围的起点,使用带单位相对时间或明确时区的绝对时刻。"
}

$.properties.dataset.properties.domain.properties.start.anyOf[0]

json
{
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$"
}

$.properties.dataset.properties.domain.properties.start.anyOf[1]

json
{
  "pattern": "^\\s*\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}"
}

$.properties.dataset.properties.domain.properties.end

json
{
  "type": "string",
  "description": "分析范围不包含的终点,必须与起点使用相同时间坐标且不早于起点。"
}

$.properties.dataset.properties.domain.properties.end.anyOf[0]

json
{
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$"
}

$.properties.dataset.properties.domain.properties.end.anyOf[1]

json
{
  "pattern": "^\\s*\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}"
}

$.properties.dataset.properties.metadata

json
{
  "type": "object",
  "additionalProperties": true,
  "description": "附加说明对象;允许自定义JSON原生值,但不参与隐藏转换、模板执行或业务参数推断。"
}

$.properties.sources

json
{
  "type": "array",
  "minItems": 1,
  "description": "按声明顺序列出数据来源。连续文件放在同一来源的paths中;加载时可按声明枚举文件名,并按缺省信号信息读取DBC;不读取业务记录。"
}

$.properties.sources.items.oneOf[0]

json
{
  "type": "object",
  "required": [
    "source_type",
    "rows"
  ],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[0].properties.name

json
{
  "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引用使用此名称,不用于猜测原字段或同步。"
}

$.properties.sources.items.oneOf[0].properties.time

json
{
  "description": "来源时间的类型、单位、时钟和偏移设置。time_type省略为relative,clock省略生成来源独立起点;只有有同步依据的多来源才填写共同clock。"
}

$.properties.sources.items.oneOf[0].properties.time.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[0].properties.time.oneOf[0].properties.unit

json
{
  "enum": [
    "s",
    "ms",
    "us",
    "ns"
  ],
  "description": "数值所用单位。参与表达式和转换时核对单位;不能从字段名或文件名猜测。可选值:\"s\":秒;\"ms\":毫秒;\"us\":微秒;\"ns\":纳秒。"
}

$.properties.sources.items.oneOf[0].properties.time.oneOf[0].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "应用到来源时间的固定偏移,可正可负,必须带s/ms/us/ns单位;不是时区或日期。",
  "default": "0s"
}

$.properties.sources.items.oneOf[0].properties.time.oneOf[0].properties.time_type

json
{
  "const": "relative",
  "description": "时间坐标类型:相对公共起点,或带时区依据的绝对时间。 固定值:\"relative\"(相对明确公共起点的时间)。"
}

$.properties.sources.items.oneOf[0].properties.time.oneOf[0].properties.clock

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "相对时间起点的共享名称;仅对确实共用起点的数据填写同一个值,省略不自动同步。"
}

$.properties.sources.items.oneOf[0].properties.time.oneOf[1]

json
{
  "type": "object",
  "required": [
    "time_type"
  ],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[0].properties.time.oneOf[1].properties.unit

json
{
  "enum": [
    "s",
    "ms",
    "us",
    "ns",
    "ISO8601"
  ],
  "description": "数值所用单位。参与表达式和转换时核对单位;不能从字段名或文件名猜测。可选值:\"s\":秒;\"ms\":毫秒;\"us\":微秒;\"ns\":纳秒;\"ISO8601\":包含日期和时区依据的时间文本。"
}

$.properties.sources.items.oneOf[0].properties.time.oneOf[1].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "应用到来源时间的固定偏移,可正可负,必须带s/ms/us/ns单位;不是时区或日期。",
  "default": "0s"
}

$.properties.sources.items.oneOf[0].properties.time.oneOf[1].properties.timezone

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "绝对时间缺少自身时区时采用的明确时区,例如UTC或IANA名称;不读取机器默认时区作为配置。"
}

$.properties.sources.items.oneOf[0].properties.time.oneOf[1].properties.time_type

json
{
  "const": "absolute",
  "description": "时间坐标类型:相对公共起点,或带时区依据的绝对时间。 固定值:\"absolute\"(有时区依据的绝对时间)。"
}

$.properties.sources.items.oneOf[0].properties.metadata

json
{
  "type": "object",
  "additionalProperties": true,
  "description": "附加说明对象;允许自定义JSON原生值,但不参与隐藏转换、模板执行或业务参数推断。"
}

$.properties.sources.items.oneOf[0].properties.rows

json
{
  "type": "array",
  "description": "内存来源的有序记录数组,每条含time和原字段values;不会自动排序掩盖乱序。"
}

$.properties.sources.items.oneOf[0].properties.rows.items

json
{
  "type": "object",
  "required": [
    "time",
    "values"
  ],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[0].properties.rows.items.properties.time

json
{
  "type": "string",
  "description": "来源时间的类型、单位、时钟和偏移设置。time_type省略为relative,clock省略生成来源独立起点;只有有同步依据的多来源才填写共同clock。"
}

$.properties.sources.items.oneOf[0].properties.rows.items.properties.time.anyOf[0]

json
{
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$"
}

$.properties.sources.items.oneOf[0].properties.rows.items.properties.time.anyOf[1]

json
{
  "pattern": "^\\s*\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}"
}

$.properties.sources.items.oneOf[0].properties.rows.items.properties.values

json
{
  "type": "object",
  "additionalProperties": {
    "type": [
      "number",
      "string",
      "boolean",
      "null"
    ]
  },
  "description": "本条内存记录的原字段到原生值的映射。原字段可含点号,表达式通过signals别名引用。"
}

$.properties.sources.items.oneOf[0].properties.source_type

json
{
  "const": "memory",
  "description": "数据来源类型,决定使用哪个读取器及其必需字段。 固定值:\"memory\"(配置内有序内存记录)。"
}

$.properties.sources.items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "source_type",
    "time",
    "time_column"
  ],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[1].oneOf[0]

json
{
  "required": [
    "path"
  ],
  "not": {
    "required": [
      "paths"
    ]
  }
}

$.properties.sources.items.oneOf[1].oneOf[1]

json
{
  "required": [
    "paths"
  ],
  "not": {
    "required": [
      "path"
    ]
  }
}

$.properties.sources.items.oneOf[1].properties.name

json
{
  "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引用使用此名称,不用于猜测原字段或同步。"
}

$.properties.sources.items.oneOf[1].properties.time

json
{
  "description": "来源时间的类型、单位、时钟和偏移设置。time_type省略为relative,clock省略生成来源独立起点;只有有同步依据的多来源才填写共同clock。"
}

$.properties.sources.items.oneOf[1].properties.time.oneOf[0]

json
{
  "type": "object",
  "required": [
    "unit"
  ],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[1].properties.time.oneOf[0].properties.unit

json
{
  "enum": [
    "s",
    "ms",
    "us",
    "ns"
  ],
  "description": "数值所用单位。参与表达式和转换时核对单位;不能从字段名或文件名猜测。可选值:\"s\":秒;\"ms\":毫秒;\"us\":微秒;\"ns\":纳秒。"
}

$.properties.sources.items.oneOf[1].properties.time.oneOf[0].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "应用到来源时间的固定偏移,可正可负,必须带s/ms/us/ns单位;不是时区或日期。",
  "default": "0s"
}

$.properties.sources.items.oneOf[1].properties.time.oneOf[0].properties.time_type

json
{
  "const": "relative",
  "description": "时间坐标类型:相对公共起点,或带时区依据的绝对时间。 固定值:\"relative\"(相对明确公共起点的时间)。"
}

$.properties.sources.items.oneOf[1].properties.time.oneOf[0].properties.clock

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "相对时间起点的共享名称;仅对确实共用起点的数据填写同一个值,省略不自动同步。"
}

$.properties.sources.items.oneOf[1].properties.time.oneOf[1]

json
{
  "type": "object",
  "required": [
    "time_type",
    "unit"
  ],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[1].properties.time.oneOf[1].properties.unit

json
{
  "enum": [
    "s",
    "ms",
    "us",
    "ns",
    "ISO8601"
  ],
  "description": "数值所用单位。参与表达式和转换时核对单位;不能从字段名或文件名猜测。可选值:\"s\":秒;\"ms\":毫秒;\"us\":微秒;\"ns\":纳秒;\"ISO8601\":包含日期和时区依据的时间文本。"
}

$.properties.sources.items.oneOf[1].properties.time.oneOf[1].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "应用到来源时间的固定偏移,可正可负,必须带s/ms/us/ns单位;不是时区或日期。",
  "default": "0s"
}

$.properties.sources.items.oneOf[1].properties.time.oneOf[1].properties.timezone

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "绝对时间缺少自身时区时采用的明确时区,例如UTC或IANA名称;不读取机器默认时区作为配置。"
}

$.properties.sources.items.oneOf[1].properties.time.oneOf[1].properties.time_type

json
{
  "const": "absolute",
  "description": "时间坐标类型:相对公共起点,或带时区依据的绝对时间。 固定值:\"absolute\"(有时区依据的绝对时间)。"
}

$.properties.sources.items.oneOf[1].properties.metadata

json
{
  "type": "object",
  "additionalProperties": true,
  "description": "附加说明对象;允许自定义JSON原生值,但不参与隐藏转换、模板执行或业务参数推断。"
}

$.properties.sources.items.oneOf[1].properties.path

json
{
  "description": "输入文件、目录或通配符,支持单项及列表。path和paths不能同时填写。"
}

$.properties.sources.items.oneOf[1].properties.path.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[1].properties.path.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[1].properties.path.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[1].properties.path.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[1].properties.path.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "保持声明顺序的路径列表;各目录匹配集合内部自然排序。"
}

$.properties.sources.items.oneOf[1].properties.path.oneOf[2].items

json
{
  "description": "路径文字,或带自身offset的文件声明。"
}

$.properties.sources.items.oneOf[1].properties.path.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[1].properties.path.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[1].properties.path.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[1].properties.path.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[1].properties.paths

json
{
  "description": "输入文件、目录或通配符,支持单项及列表。path和paths不能同时填写。"
}

$.properties.sources.items.oneOf[1].properties.paths.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[1].properties.paths.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[1].properties.paths.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[1].properties.paths.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[1].properties.paths.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "保持声明顺序的路径列表;各目录匹配集合内部自然排序。"
}

$.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items

json
{
  "description": "路径文字,或带自身offset的文件声明。"
}

$.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[1].properties.time_column

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "已解码信号CSV的时间列名,按来源time的单位和坐标解释。"
}

$.properties.sources.items.oneOf[1].properties.source_type

json
{
  "const": "signal_csv",
  "description": "数据来源类型,决定使用哪个读取器及其必需字段。 固定值:\"signal_csv\"(已解码信号CSV)。"
}

$.properties.sources.items.oneOf[1].properties.reader

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "与本来源格式有关的读取、文本解析和解码选项;省略适用参数时采用已说明的默认值。"
}

$.properties.sources.items.oneOf[1].properties.reader.properties.encoding

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "输入文本编码。用于真实读取;静态检查不据此判断文件可读。 已解码CSV默认utf-8-sig,兼容文件开头带BOM或不带BOM的UTF-8;显式编码优先,不删除文件中间的U+FEFF字符。",
  "default": "utf-8-sig"
}

$.properties.sources.items.oneOf[1].properties.reader.properties.delimiter

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 1,
  "pattern": "^[^\\r\\n]$",
  "description": "已解码信号CSV的单字符分隔符,不能使用换行符。",
  "default": ","
}

$.properties.sources.items.oneOf[1].properties.reader.properties.missing_values

json
{
  "type": "array",
  "uniqueItems": true,
  "description": "显式视为缺失的文本列表;缺失不会自动转换为零。",
  "default": [
    ""
  ]
}

$.properties.sources.items.oneOf[1].properties.reader.properties.missing_values.items

json
{
  "type": "string"
}

$.properties.sources.items.oneOf[2]

json
{
  "type": "object",
  "required": [
    "source_type",
    "dbc_by_channel"
  ],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[2].oneOf[0]

json
{
  "required": [
    "path"
  ],
  "not": {
    "required": [
      "paths"
    ]
  }
}

$.properties.sources.items.oneOf[2].oneOf[1]

json
{
  "required": [
    "paths"
  ],
  "not": {
    "required": [
      "path"
    ]
  }
}

$.properties.sources.items.oneOf[2].properties.name

json
{
  "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引用使用此名称,不用于猜测原字段或同步。"
}

$.properties.sources.items.oneOf[2].properties.time

json
{
  "description": "来源时间的类型、单位、时钟和偏移设置。time_type省略为relative,clock省略生成来源独立起点;只有有同步依据的多来源才填写共同clock。"
}

$.properties.sources.items.oneOf[2].properties.time.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[2].properties.time.oneOf[0].properties.unit

json
{
  "const": "s",
  "description": "数值所用单位。参与表达式和转换时核对单位;不能从字段名或文件名猜测。 固定值:\"s\"(秒)。"
}

$.properties.sources.items.oneOf[2].properties.time.oneOf[0].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "应用到来源时间的固定偏移,可正可负,必须带s/ms/us/ns单位;不是时区或日期。",
  "default": "0s"
}

$.properties.sources.items.oneOf[2].properties.time.oneOf[0].properties.time_type

json
{
  "const": "relative",
  "description": "时间坐标类型:相对公共起点,或带时区依据的绝对时间。 固定值:\"relative\"(相对明确公共起点的时间)。"
}

$.properties.sources.items.oneOf[2].properties.time.oneOf[0].properties.clock

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "相对时间起点的共享名称;仅对确实共用起点的数据填写同一个值,省略不自动同步。"
}

$.properties.sources.items.oneOf[2].properties.time.oneOf[1]

json
{
  "type": "object",
  "required": [
    "time_type"
  ],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[2].properties.time.oneOf[1].properties.unit

json
{
  "const": "s",
  "description": "数值所用单位。参与表达式和转换时核对单位;不能从字段名或文件名猜测。 固定值:\"s\"(秒)。"
}

$.properties.sources.items.oneOf[2].properties.time.oneOf[1].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "应用到来源时间的固定偏移,可正可负,必须带s/ms/us/ns单位;不是时区或日期。",
  "default": "0s"
}

$.properties.sources.items.oneOf[2].properties.time.oneOf[1].properties.time_type

json
{
  "const": "absolute",
  "description": "时间坐标类型:相对公共起点,或带时区依据的绝对时间。 固定值:\"absolute\"(有时区依据的绝对时间)。"
}

$.properties.sources.items.oneOf[2].properties.legacy_profile

json
{
  "const": "sclicer-functions-v1",
  "description": "BLF既有读取/解码实现标识,可省略,默认sclicer-functions-v1;显式提供时只接受该已接入实现。"
}

$.properties.sources.items.oneOf[2].properties.path

json
{
  "description": "输入文件、目录或通配符,支持单项及列表。path和paths不能同时填写。"
}

$.properties.sources.items.oneOf[2].properties.path.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[2].properties.path.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[2].properties.path.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[2].properties.path.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[2].properties.path.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "保持声明顺序的路径列表;各目录匹配集合内部自然排序。"
}

$.properties.sources.items.oneOf[2].properties.path.oneOf[2].items

json
{
  "description": "路径文字,或带自身offset的文件声明。"
}

$.properties.sources.items.oneOf[2].properties.path.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[2].properties.path.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[2].properties.path.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[2].properties.path.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[2].properties.paths

json
{
  "description": "输入文件、目录或通配符,支持单项及列表。path和paths不能同时填写。"
}

$.properties.sources.items.oneOf[2].properties.paths.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[2].properties.paths.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[2].properties.paths.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[2].properties.paths.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[2].properties.paths.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "保持声明顺序的路径列表;各目录匹配集合内部自然排序。"
}

$.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items

json
{
  "description": "路径文字,或带自身offset的文件声明。"
}

$.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[2].properties.dbc_by_channel

json
{
  "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路径按声明文件定位。"
}

$.properties.sources.items.oneOf[2].properties.metadata

json
{
  "type": "object",
  "additionalProperties": true,
  "description": "附加说明对象;允许自定义JSON原生值,但不参与隐藏转换、模板执行或业务参数推断。"
}

$.properties.sources.items.oneOf[2].properties.source_type

json
{
  "const": "can_blf",
  "description": "数据来源类型,决定使用哪个读取器及其必需字段。 固定值:\"can_blf\"(原始CAN二进制BLF)。"
}

$.properties.sources.items.oneOf[2].properties.reader

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "与本来源格式有关的读取、文本解析和解码选项;省略适用参数时采用已说明的默认值。"
}

$.properties.sources.items.oneOf[2].properties.reader.properties.decode_policy

json
{
  "enum": [
    "strict",
    "partial",
    "legacy"
  ],
  "default": "strict",
  "description": "已选CAN报文的载荷长度检查政策,默认strict。strict:实际载荷与DBC长度相同,且DLC与字节数一致;partial:允许载荷短于DBC,但不能超过DBC长度或出现DLC与实际字节数不一致,实际解码仍沿现有实现;legacy:保留原实现的解码调用和长度处理。"
}

$.properties.sources.items.oneOf[2].properties.reader.properties.decode_scope

json
{
  "type": "string",
  "enum": [
    "all",
    "requested"
  ],
  "default": "requested",
  "description": "CAN解码尝试范围。默认requested,只解码当前分析需要的报文/字段;all扩大尝试解码的范围。对纯BLF串行接续,strict/partial跳过远程帧和错误帧。all不保证每帧有DBC定义、解码成功或生成逐帧诊断;选择all本身不要求填写dataset.domain。文件并行和time_order只支持requested。"
}

$.properties.sources.items.oneOf[2].properties.reader.properties.input_check

json
{
  "type": "string",
  "enum": [
    "auto",
    "full"
  ],
  "default": "auto",
  "description": "CAN输入检查范围。auto按消费者选择必要检查,full检查全部原帧和时间,不强制解码无关信号。可选值:\"auto\":按实际消费者选择必要检查;\"full\":检查全部原帧和时间。"
}

$.properties.sources.items.oneOf[2].properties.file_merge

json
{
  "enum": [
    "concatenate",
    "time_order"
  ],
  "default": "concatenate",
  "description": "控制同一来源的多个文件如何衔接。concatenate按paths顺序读取,仅在任务要求检查的时间范围内拒绝回退;time_order要求各文件中参与排序的记录时间有序,按记录时间、文件位置、原记录顺序稳定归并。保留重叠报文,不自动平移时间或去重。该选择与进程数无关。"
}

$.properties.sources.items.oneOf[3]

json
{
  "type": "object",
  "required": [
    "source_type",
    "dbc_by_channel"
  ],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[3].oneOf[0]

json
{
  "required": [
    "path"
  ],
  "not": {
    "required": [
      "paths"
    ]
  }
}

$.properties.sources.items.oneOf[3].oneOf[1]

json
{
  "required": [
    "paths"
  ],
  "not": {
    "required": [
      "path"
    ]
  }
}

$.properties.sources.items.oneOf[3].properties.name

json
{
  "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引用使用此名称,不用于猜测原字段或同步。"
}

$.properties.sources.items.oneOf[3].properties.time

json
{
  "description": "来源时间的类型、单位、时钟和偏移设置。time_type省略为relative,clock省略生成来源独立起点;只有有同步依据的多来源才填写共同clock。"
}

$.properties.sources.items.oneOf[3].properties.time.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[3].properties.time.oneOf[0].properties.unit

json
{
  "const": "s",
  "description": "数值所用单位。参与表达式和转换时核对单位;不能从字段名或文件名猜测。 固定值:\"s\"(秒)。"
}

$.properties.sources.items.oneOf[3].properties.time.oneOf[0].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "应用到来源时间的固定偏移,可正可负,必须带s/ms/us/ns单位;不是时区或日期。",
  "default": "0s"
}

$.properties.sources.items.oneOf[3].properties.time.oneOf[0].properties.time_type

json
{
  "const": "relative",
  "description": "时间坐标类型:相对公共起点,或带时区依据的绝对时间。 固定值:\"relative\"(相对明确公共起点的时间)。"
}

$.properties.sources.items.oneOf[3].properties.time.oneOf[0].properties.clock

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "相对时间起点的共享名称;仅对确实共用起点的数据填写同一个值,省略不自动同步。"
}

$.properties.sources.items.oneOf[3].properties.time.oneOf[1]

json
{
  "type": "object",
  "required": [
    "time_type"
  ],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[3].properties.time.oneOf[1].properties.unit

json
{
  "const": "s",
  "description": "数值所用单位。参与表达式和转换时核对单位;不能从字段名或文件名猜测。 固定值:\"s\"(秒)。"
}

$.properties.sources.items.oneOf[3].properties.time.oneOf[1].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "应用到来源时间的固定偏移,可正可负,必须带s/ms/us/ns单位;不是时区或日期。",
  "default": "0s"
}

$.properties.sources.items.oneOf[3].properties.time.oneOf[1].properties.time_type

json
{
  "const": "absolute",
  "description": "时间坐标类型:相对公共起点,或带时区依据的绝对时间。 固定值:\"absolute\"(有时区依据的绝对时间)。"
}

$.properties.sources.items.oneOf[3].properties.time.oneOf[1].properties.timezone

json
{
  "type": "string",
  "description": "采集时间的固定时区,填写UTC或带符号小时分钟,例如+08:00。"
}

$.properties.sources.items.oneOf[3].properties.path

json
{
  "description": "输入文件、目录或通配符,支持单项及列表。path和paths不能同时填写。"
}

$.properties.sources.items.oneOf[3].properties.path.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[3].properties.path.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[3].properties.path.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[3].properties.path.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[3].properties.path.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "保持声明顺序的路径列表;各目录匹配集合内部自然排序。"
}

$.properties.sources.items.oneOf[3].properties.path.oneOf[2].items

json
{
  "description": "路径文字,或带自身offset的文件声明。"
}

$.properties.sources.items.oneOf[3].properties.path.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[3].properties.path.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[3].properties.path.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[3].properties.path.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[3].properties.paths

json
{
  "description": "输入文件、目录或通配符,支持单项及列表。path和paths不能同时填写。"
}

$.properties.sources.items.oneOf[3].properties.paths.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[3].properties.paths.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[3].properties.paths.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[3].properties.paths.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[3].properties.paths.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "保持声明顺序的路径列表;各目录匹配集合内部自然排序。"
}

$.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items

json
{
  "description": "路径文字,或带自身offset的文件声明。"
}

$.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[3].properties.offsets

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "按输入文件顺序提供的时间偏移,数量须匹配文件列表,不能借偏移默默重排文件。"
}

$.properties.sources.items.oneOf[3].properties.offsets.items

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "固定时间偏移,只接受数值与s/ms/us/ns单位,不接受日期。"
}

$.properties.sources.items.oneOf[3].properties.dbc_by_channel

json
{
  "type": "object",
  "minProperties": 1,
  "maxProperties": 1,
  "patternProperties": {
    "^[1-9][0-9]*(?![\\s\\S])": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false,
  "description": "唯一目标通道到DBC文件的显式映射;通道键使用从1开始、无前导零的正整数文本,DBC路径按声明文件定位。"
}

$.properties.sources.items.oneOf[3].properties.metadata

json
{
  "type": "object",
  "description": "附加说明对象;允许自定义JSON原生值,但不参与隐藏转换、模板执行或业务参数推断。"
}

$.properties.sources.items.oneOf[3].properties.source_type

json
{
  "const": "can_asc",
  "description": "数据来源类型,决定使用哪个读取器及其必需字段。 固定值:\"can_asc\"(原始CAN文本ASC)。"
}

$.properties.sources.items.oneOf[3].properties.reader

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "与本来源格式有关的读取、文本解析和解码选项;省略适用参数时采用已说明的默认值。"
}

$.properties.sources.items.oneOf[3].properties.reader.properties.version

json
{
  "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排列,不自动混猜。"
}

$.properties.sources.items.oneOf[3].properties.reader.properties.encoding

json
{
  "type": "string",
  "minLength": 1,
  "description": "输入文本编码。用于真实读取;静态检查不据此判断文件可读。 CAN文本解析默认utf-8-sig。",
  "default": "utf-8-sig"
}

$.properties.sources.items.oneOf[3].properties.reader.properties.decode_policy

json
{
  "enum": [
    "strict",
    "partial",
    "legacy"
  ],
  "default": "strict",
  "description": "已选CAN报文的载荷长度检查政策,默认strict。strict:实际载荷与DBC长度相同,且DLC与字节数一致;partial:允许载荷短于DBC,但不能超过DBC长度或出现DLC与实际字节数不一致,实际解码仍沿现有实现;legacy:保留原实现的解码调用和长度处理。"
}

$.properties.sources.items.oneOf[3].properties.reader.properties.input_check

json
{
  "type": "string",
  "enum": [
    "auto",
    "full"
  ],
  "default": "auto",
  "description": "auto按实际消费者检查时间顺序;ASC普通分析仅检查所需通道/ID,来源范围仍取同次全部记录的最早/最晚时间。full或原帧导出检查全部记录顺序;任何模式都不自动排序或修改时间。"
}

$.properties.sources.items.oneOf[3].properties.file_merge

json
{
  "enum": [
    "concatenate",
    "time_order"
  ],
  "default": "concatenate",
  "description": "控制同一来源的多个文件如何衔接。concatenate按paths顺序读取,仅在任务要求检查的时间范围内拒绝回退;time_order要求各文件中参与排序的记录时间有序,按记录时间、文件位置、原记录顺序稳定归并。保留重叠报文,不自动平移时间或去重。该选择与进程数无关。"
}

$.properties.sources.items.oneOf[4]

json
{
  "type": "object",
  "required": [
    "source_type",
    "time",
    "dbc_by_channel",
    "reader"
  ],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[4].oneOf[0]

json
{
  "required": [
    "path"
  ],
  "not": {
    "required": [
      "paths"
    ]
  }
}

$.properties.sources.items.oneOf[4].oneOf[1]

json
{
  "required": [
    "paths"
  ],
  "not": {
    "required": [
      "path"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.name

json
{
  "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引用使用此名称,不用于猜测原字段或同步。"
}

$.properties.sources.items.oneOf[4].properties.time

json
{
  "description": "来源时间的类型、单位、时钟和偏移设置。time_type省略为relative,clock省略生成来源独立起点;只有有同步依据的多来源才填写共同clock。"
}

$.properties.sources.items.oneOf[4].properties.time.oneOf[0]

json
{
  "type": "object",
  "required": [
    "unit"
  ],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[4].properties.time.oneOf[0].properties.unit

json
{
  "enum": [
    "s",
    "ms",
    "us",
    "ns",
    "ISO8601"
  ],
  "description": "数值所用单位。参与表达式和转换时核对单位;不能从字段名或文件名猜测。可选值:\"s\":秒;\"ms\":毫秒;\"us\":微秒;\"ns\":纳秒;\"ISO8601\":包含日期和时区依据的时间文本。"
}

$.properties.sources.items.oneOf[4].properties.time.oneOf[0].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "应用到来源时间的固定偏移,可正可负,必须带s/ms/us/ns单位;不是时区或日期。",
  "default": "0s"
}

$.properties.sources.items.oneOf[4].properties.time.oneOf[0].properties.time_type

json
{
  "const": "relative",
  "description": "时间坐标类型:相对公共起点,或带时区依据的绝对时间。 固定值:\"relative\"(相对明确公共起点的时间)。"
}

$.properties.sources.items.oneOf[4].properties.time.oneOf[0].properties.clock

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "相对时间起点的共享名称;仅对确实共用起点的数据填写同一个值,省略不自动同步。"
}

$.properties.sources.items.oneOf[4].properties.time.oneOf[1]

json
{
  "type": "object",
  "required": [
    "time_type",
    "unit"
  ],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[4].properties.time.oneOf[1].properties.unit

json
{
  "enum": [
    "s",
    "ms",
    "us",
    "ns",
    "ISO8601"
  ],
  "description": "数值所用单位。参与表达式和转换时核对单位;不能从字段名或文件名猜测。可选值:\"s\":秒;\"ms\":毫秒;\"us\":微秒;\"ns\":纳秒;\"ISO8601\":包含日期和时区依据的时间文本。"
}

$.properties.sources.items.oneOf[4].properties.time.oneOf[1].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "应用到来源时间的固定偏移,可正可负,必须带s/ms/us/ns单位;不是时区或日期。",
  "default": "0s"
}

$.properties.sources.items.oneOf[4].properties.time.oneOf[1].properties.time_type

json
{
  "const": "absolute",
  "description": "时间坐标类型:相对公共起点,或带时区依据的绝对时间。 固定值:\"absolute\"(有时区依据的绝对时间)。"
}

$.properties.sources.items.oneOf[4].properties.time.oneOf[1].properties.timezone

json
{
  "type": "string",
  "description": "采集时间的固定时区,填写UTC或带符号小时分钟,例如+08:00。"
}

$.properties.sources.items.oneOf[4].properties.path

json
{
  "description": "输入文件、目录或通配符,支持单项及列表。path和paths不能同时填写。"
}

$.properties.sources.items.oneOf[4].properties.path.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[4].properties.path.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[4].properties.path.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[4].properties.path.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[4].properties.path.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "保持声明顺序的路径列表;各目录匹配集合内部自然排序。"
}

$.properties.sources.items.oneOf[4].properties.path.oneOf[2].items

json
{
  "description": "路径文字,或带自身offset的文件声明。"
}

$.properties.sources.items.oneOf[4].properties.path.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[4].properties.path.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[4].properties.path.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[4].properties.path.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[4].properties.paths

json
{
  "description": "输入文件、目录或通配符,支持单项及列表。path和paths不能同时填写。"
}

$.properties.sources.items.oneOf[4].properties.paths.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[4].properties.paths.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[4].properties.paths.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[4].properties.paths.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[4].properties.paths.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "保持声明顺序的路径列表;各目录匹配集合内部自然排序。"
}

$.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items

json
{
  "description": "路径文字,或带自身offset的文件声明。"
}

$.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[4].properties.offsets

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "按输入文件顺序提供的时间偏移,数量须匹配文件列表,不能借偏移默默重排文件。"
}

$.properties.sources.items.oneOf[4].properties.offsets.items

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "固定时间偏移,只接受数值与s/ms/us/ns单位,不接受日期。"
}

$.properties.sources.items.oneOf[4].properties.dbc_by_channel

json
{
  "type": "object",
  "minProperties": 1,
  "maxProperties": 1,
  "patternProperties": {
    "^[1-9][0-9]*(?![\\s\\S])": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false,
  "description": "唯一目标通道到DBC文件的显式映射;通道键使用从1开始、无前导零的正整数文本,DBC路径按声明文件定位。"
}

$.properties.sources.items.oneOf[4].properties.metadata

json
{
  "type": "object",
  "description": "附加说明对象;允许自定义JSON原生值,但不参与隐藏转换、模板执行或业务参数推断。"
}

$.properties.sources.items.oneOf[4].properties.source_type

json
{
  "const": "raw_can_csv",
  "description": "数据来源类型,决定使用哪个读取器及其必需字段。 固定值:\"raw_can_csv\"(显式布局的原始CAN帧CSV)。"
}

$.properties.sources.items.oneOf[4].properties.reader

json
{
  "type": "object",
  "required": [
    "layout",
    "time_format"
  ],
  "additionalProperties": false,
  "description": "与本来源格式有关的读取、文本解析和解码选项;省略适用参数时采用已说明的默认值。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout

json
{
  "type": "object",
  "required": [
    "fields"
  ],
  "additionalProperties": false,
  "description": "原始CAN CSV的字段布局,显式说明分隔符、列/固定值映射、时间和数值表示。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields

json
{
  "type": "object",
  "required": [
    "timestamp",
    "frame_id",
    "data"
  ],
  "additionalProperties": false,
  "description": "原始CAN语义字段到输入列或固定值的显式映射。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp

json
{
  "description": "报文时间字段的列或固定值映射,按time_format和来源时间声明转换。 可直接填写列名或从1开始的列号;固定值仍用fixed对象。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "报文时间字段的列或固定值映射,按time_format和来源时间声明转换。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ],
  "not": {
    "required": [
      "fixed"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ],
  "not": {
    "required": [
      "column"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.column

json
{
  "description": "读取的列名或列索引,与fixed二选一;必须与has_header及实际布局一致。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.fixed

json
{
  "description": "该语义字段的显式固定值,与column二选一;不是缺失时的自动补值。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "是否清除输入字段两侧空白,不改变中间字符。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.value_map

json
{
  "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
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id

json
{
  "description": "CAN报文仲裁ID的列或固定值映射,按id_base解释。 可直接填写列名或从1开始的列号;固定值仍用fixed对象。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "CAN报文仲裁ID的列或固定值映射,按id_base解释。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ],
  "not": {
    "required": [
      "fixed"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ],
  "not": {
    "required": [
      "column"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.column

json
{
  "description": "读取的列名或列索引,与fixed二选一;必须与has_header及实际布局一致。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.fixed

json
{
  "description": "该语义字段的显式固定值,与column二选一;不是缺失时的自动补值。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "是否清除输入字段两侧空白,不改变中间字符。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.value_map

json
{
  "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
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel

json
{
  "description": "原始CSV通道列映射,固定值保持文件编号;channel_origin指定文件从0或1开始。 可直接填写列名或从1开始的列号;固定值仍用fixed对象。 省略时继承来源唯一DBC通道。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "原始CSV通道列映射,固定值保持文件编号;channel_origin指定文件从0或1开始。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ],
  "not": {
    "required": [
      "fixed"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ],
  "not": {
    "required": [
      "column"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.column

json
{
  "description": "读取的列名或列索引,与fixed二选一;必须与has_header及实际布局一致。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.fixed

json
{
  "description": "该语义字段的显式固定值,与column二选一;不是缺失时的自动补值。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "是否清除输入字段两侧空白,不改变中间字符。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.value_map

json
{
  "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
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx

json
{
  "description": "接收/发送方向的输入映射,值必须能明确解释为方向标志。 可直接填写列名或从1开始的列号;固定值仍用fixed对象。 可省略;省略时方向未知,仅原帧导出或重建需要补充。Rx/Tx、接收/发送可直接识别。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "接收/发送方向的输入映射,值必须能明确解释为方向标志。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ],
  "not": {
    "required": [
      "fixed"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ],
  "not": {
    "required": [
      "column"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.column

json
{
  "description": "读取的列名或列索引,与fixed二选一;必须与has_header及实际布局一致。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.fixed

json
{
  "description": "该语义字段的显式固定值,与column二选一;不是缺失时的自动补值。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "是否清除输入字段两侧空白,不改变中间字符。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.value_map

json
{
  "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
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended

json
{
  "description": "可选原始帧类型列或常量;有列时以真实字段为准。省略后由本次绑定与DBC唯一识别,不能识别时要求补充。小ID不能单独证明标准帧。 可直接填写列名或从1开始的列号;固定值仍用fixed对象。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "可选原始帧类型列或常量;有列时以真实字段为准。省略后由本次绑定与DBC唯一识别,不能识别时要求补充。小ID不能单独证明标准帧。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ],
  "not": {
    "required": [
      "fixed"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ],
  "not": {
    "required": [
      "column"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.column

json
{
  "description": "读取的列名或列索引,与fixed二选一;必须与has_header及实际布局一致。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.fixed

json
{
  "description": "该语义字段的显式固定值,与column二选一;不是缺失时的自动补值。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "是否清除输入字段两侧空白,不改变中间字符。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.value_map

json
{
  "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
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd

json
{
  "description": "可选CAN/FD列或常量;有列时以真实字段为准。省略后按绑定及DBC识别;DBC声明FD仍可能是实际经典CAN,无法唯一判断时必须补充,不按短载荷猜测。 可直接填写列名或从1开始的列号;固定值仍用fixed对象。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "可选CAN/FD列或常量;有列时以真实字段为准。省略后按绑定及DBC识别;DBC声明FD仍可能是实际经典CAN,无法唯一判断时必须补充,不按短载荷猜测。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ],
  "not": {
    "required": [
      "fixed"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ],
  "not": {
    "required": [
      "column"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.column

json
{
  "description": "读取的列名或列索引,与fixed二选一;必须与has_header及实际布局一致。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.fixed

json
{
  "description": "该语义字段的显式固定值,与column二选一;不是缺失时的自动补值。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "是否清除输入字段两侧空白,不改变中间字符。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.value_map

json
{
  "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
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind

json
{
  "description": "CAN帧种类的输入映射,用于区分数据、远程或错误帧等已支持格式。 可直接填写列名或从1开始的列号;固定值仍用fixed对象。 省略时为普通数据帧;远程或错误帧须显式提供。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "CAN帧种类的输入映射,用于区分数据、远程或错误帧等已支持格式。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ],
  "not": {
    "required": [
      "fixed"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ],
  "not": {
    "required": [
      "column"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.column

json
{
  "description": "读取的列名或列索引,与fixed二选一;必须与has_header及实际布局一致。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.fixed

json
{
  "description": "该语义字段的显式固定值,与column二选一;不是缺失时的自动补值。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "是否清除输入字段两侧空白,不改变中间字符。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.value_map

json
{
  "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
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data

json
{
  "description": "CAN负载字节的输入映射,按payload_style解析,不把缺少负载补成零。 可直接填写列名或从1开始的列号;固定值仍用fixed对象。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "CAN负载字节的输入映射,按payload_style解析,不把缺少负载补成零。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ],
  "not": {
    "required": [
      "fixed"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ],
  "not": {
    "required": [
      "column"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.column

json
{
  "description": "读取的列名或列索引,与fixed二选一;必须与has_header及实际布局一致。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.fixed

json
{
  "description": "该语义字段的显式固定值,与column二选一;不是缺失时的自动补值。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "是否清除输入字段两侧空白,不改变中间字符。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.value_map

json
{
  "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
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length

json
{
  "description": "实际负载字节数的输入映射,与DLC编码区别处理。 可直接填写列名或从1开始的列号;固定值仍用fixed对象。 省略时按数据字节数推导。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "实际负载字节数的输入映射,与DLC编码区别处理。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ],
  "not": {
    "required": [
      "fixed"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ],
  "not": {
    "required": [
      "column"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.column

json
{
  "description": "读取的列名或列索引,与fixed二选一;必须与has_header及实际布局一致。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.fixed

json
{
  "description": "该语义字段的显式固定值,与column二选一;不是缺失时的自动补值。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "是否清除输入字段两侧空白,不改变中间字符。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.value_map

json
{
  "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
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code

json
{
  "description": "CAN DLC编码的输入映射;CAN FD的DLC编码不等同于字节数。 可直接填写列名或从1开始的列号;固定值仍用fixed对象。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "CAN DLC编码的输入映射;CAN FD的DLC编码不等同于字节数。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ],
  "not": {
    "required": [
      "fixed"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ],
  "not": {
    "required": [
      "column"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.column

json
{
  "description": "读取的列名或列索引,与fixed二选一;必须与has_header及实际布局一致。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.fixed

json
{
  "description": "该语义字段的显式固定值,与column二选一;不是缺失时的自动补值。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "是否清除输入字段两侧空白,不改变中间字符。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.value_map

json
{
  "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
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch

json
{
  "description": "CAN FD是否切换位速率的输入映射。 可直接填写列名或从1开始的列号;固定值仍用fixed对象。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "CAN FD是否切换位速率的输入映射。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ],
  "not": {
    "required": [
      "fixed"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ],
  "not": {
    "required": [
      "column"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.column

json
{
  "description": "读取的列名或列索引,与fixed二选一;必须与has_header及实际布局一致。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.fixed

json
{
  "description": "该语义字段的显式固定值,与column二选一;不是缺失时的自动补值。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "是否清除输入字段两侧空白,不改变中间字符。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.value_map

json
{
  "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
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator

json
{
  "description": "CAN FD错误状态标志的输入映射。 可直接填写列名或从1开始的列号;固定值仍用fixed对象。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "CAN FD错误状态标志的输入映射。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ],
  "not": {
    "required": [
      "fixed"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ],
  "not": {
    "required": [
      "column"
    ]
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.column

json
{
  "description": "读取的列名或列索引,与fixed二选一;必须与has_header及实际布局一致。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.fixed

json
{
  "description": "该语义字段的显式固定值,与column二选一;不是缺失时的自动补值。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "是否清除输入字段两侧空白,不改变中间字符。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.value_map

json
{
  "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
  }
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.encoding

json
{
  "type": "string",
  "minLength": 1,
  "description": "输入文本编码。用于真实读取;静态检查不据此判断文件可读。 CAN文本解析默认utf-8-sig。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.delimiter

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 1,
  "description": "原始CAN CSV的分隔符,必须与文件实际格式一致。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.has_header

json
{
  "type": "boolean",
  "description": "原始CSV是否有标题行。使用列名时需要标题,列索引则按明确布局解释。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.skip_rows

json
{
  "type": "integer",
  "minimum": 0,
  "description": "正式读取前跳过的行数,非负整数;用于文件中已有的说明行。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.layout_version

json
{
  "const": "raw-can-csv-layout-v1",
  "description": "原始CAN CSV字段布局的固定版本标识。 固定值:\"raw-can-csv-layout-v1\"。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.time_format

json
{
  "enum": [
    "numeric",
    "clock",
    "clock-ms-us-v1",
    "iso8601"
  ],
  "description": "原始CAN时间字段的文本表示方式,必须与实际文件一致。可选值:\"numeric\":带来源单位的数值时间;\"clock\":时分秒时钟文本;\"clock-ms-us-v1\":旧格式的时钟/毫秒/微秒表示;\"iso8601\":ISO 8601日期时间。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.id_base

json
{
  "enum": [
    "auto",
    10,
    16
  ],
  "description": "默认auto:0x前缀十六进制、0b前缀二进制、无前缀十进制。裸十六进制表可显式选择16。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.length_base

json
{
  "enum": [
    10,
    16
  ],
  "description": "报文长度文本的进制,支持10或16;与DLC编码是否存在分别声明。可选值:10:十进制;16:十六进制。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.channel_origin

json
{
  "enum": [
    0,
    1
  ],
  "description": "原始文件通道编号起点,0表示从0计数,1表示从1计数;规范化后使用0基通道。可选值:0:原文件从通道0开始编号;1:原文件从通道1开始编号。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.payload_style

json
{
  "enum": [
    "spaced",
    "contiguous"
  ],
  "description": "报文数据字节的文本排列方式:用空格分隔,或连续十六进制文本。可选值:\"spaced\":字节之间用空格分隔;\"contiguous\":连续十六进制字节文本。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.rollover_min_drop

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "允许识别跨日回绕的最小时间下降量,必须带单位;不能把任意乱序当作跨日。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.decode_policy

json
{
  "enum": [
    "strict",
    "partial",
    "legacy"
  ],
  "default": "strict",
  "description": "已选CAN报文的载荷长度检查政策,默认strict。strict:实际载荷与DBC长度相同,且DLC与字节数一致;partial:允许载荷短于DBC,但不能超过DBC长度或出现DLC与实际字节数不一致,实际解码仍沿现有实现;legacy:保留原实现的解码调用和长度处理。"
}

$.properties.sources.items.oneOf[4].properties.reader.properties.input_check

json
{
  "type": "string",
  "enum": [
    "auto",
    "full"
  ],
  "default": "auto",
  "description": "auto按实际消费者检查时间顺序;ASC普通分析仅检查所需通道/ID,来源范围仍取同次全部记录的最早/最晚时间。full或原帧导出检查全部记录顺序;任何模式都不自动排序或修改时间。"
}

$.properties.sources.items.oneOf[5]

json
{
  "type": "object",
  "required": [
    "dbc_by_channel"
  ],
  "additionalProperties": false,
  "description": "自动选择ASC或BLF读取;格式特有参数由实际来源检查。"
}

$.properties.sources.items.oneOf[5].oneOf[0]

json
{
  "required": [
    "path"
  ],
  "not": {
    "required": [
      "paths"
    ]
  }
}

$.properties.sources.items.oneOf[5].oneOf[1]

json
{
  "required": [
    "paths"
  ],
  "not": {
    "required": [
      "path"
    ]
  }
}

$.properties.sources.items.oneOf[5].properties.name

json
{
  "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引用使用此名称,不用于猜测原字段或同步。"
}

$.properties.sources.items.oneOf[5].properties.time

json
{
  "description": "来源时间的类型、单位、时钟和偏移设置。time_type省略为relative,clock省略生成来源独立起点;只有有同步依据的多来源才填写共同clock。"
}

$.properties.sources.items.oneOf[5].properties.time.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[5].properties.time.oneOf[0].properties.unit

json
{
  "const": "s",
  "description": "数值所用单位。参与表达式和转换时核对单位;不能从字段名或文件名猜测。 固定值:\"s\"(秒)。"
}

$.properties.sources.items.oneOf[5].properties.time.oneOf[0].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "应用到来源时间的固定偏移,可正可负,必须带s/ms/us/ns单位;不是时区或日期。",
  "default": "0s"
}

$.properties.sources.items.oneOf[5].properties.time.oneOf[0].properties.time_type

json
{
  "const": "relative",
  "description": "时间坐标类型:相对公共起点,或带时区依据的绝对时间。 固定值:\"relative\"(相对明确公共起点的时间)。"
}

$.properties.sources.items.oneOf[5].properties.time.oneOf[0].properties.clock

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "相对时间起点的共享名称;仅对确实共用起点的数据填写同一个值,省略不自动同步。"
}

$.properties.sources.items.oneOf[5].properties.time.oneOf[1]

json
{
  "type": "object",
  "required": [
    "time_type"
  ],
  "additionalProperties": false
}

$.properties.sources.items.oneOf[5].properties.time.oneOf[1].properties.unit

json
{
  "const": "s",
  "description": "数值所用单位。参与表达式和转换时核对单位;不能从字段名或文件名猜测。 固定值:\"s\"(秒)。"
}

$.properties.sources.items.oneOf[5].properties.time.oneOf[1].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "应用到来源时间的固定偏移,可正可负,必须带s/ms/us/ns单位;不是时区或日期。",
  "default": "0s"
}

$.properties.sources.items.oneOf[5].properties.time.oneOf[1].properties.time_type

json
{
  "const": "absolute",
  "description": "时间坐标类型:相对公共起点,或带时区依据的绝对时间。 固定值:\"absolute\"(有时区依据的绝对时间)。"
}

$.properties.sources.items.oneOf[5].properties.time.oneOf[1].properties.timezone

json
{
  "type": "string",
  "description": "采集时间的固定时区,填写UTC或带符号小时分钟,例如+08:00。"
}

$.properties.sources.items.oneOf[5].properties.legacy_profile

json
{
  "const": "sclicer-functions-v1",
  "description": "BLF既有读取/解码实现标识,可省略,默认sclicer-functions-v1;显式提供时只接受该已接入实现。"
}

$.properties.sources.items.oneOf[5].properties.path

json
{
  "description": "输入文件、目录或通配符,支持单项及列表。path和paths不能同时填写。"
}

$.properties.sources.items.oneOf[5].properties.path.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[5].properties.path.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[5].properties.path.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[5].properties.path.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[5].properties.path.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "保持声明顺序的路径列表;各目录匹配集合内部自然排序。"
}

$.properties.sources.items.oneOf[5].properties.path.oneOf[2].items

json
{
  "description": "路径文字,或带自身offset的文件声明。"
}

$.properties.sources.items.oneOf[5].properties.path.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[5].properties.path.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[5].properties.path.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[5].properties.path.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[5].properties.paths

json
{
  "description": "输入文件、目录或通配符,支持单项及列表。path和paths不能同时填写。"
}

$.properties.sources.items.oneOf[5].properties.paths.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[5].properties.paths.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[5].properties.paths.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[5].properties.paths.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[5].properties.paths.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "保持声明顺序的路径列表;各目录匹配集合内部自然排序。"
}

$.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items

json
{
  "description": "路径文字,或带自身offset的文件声明。"
}

$.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "path"
  ]
}

$.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "本项文件、目录或通配符路径。"
}

$.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "该文件的带单位时间偏移,与来源总偏移相加。"
}

$.properties.sources.items.oneOf[5].properties.dbc_by_channel

json
{
  "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路径按声明文件定位。"
}

$.properties.sources.items.oneOf[5].properties.metadata

json
{
  "type": "object",
  "additionalProperties": true,
  "description": "附加说明对象;允许自定义JSON原生值,但不参与隐藏转换、模板执行或业务参数推断。"
}

$.properties.sources.items.oneOf[5].properties.source_type

json
{
  "enum": [
    "asc_or_blf"
  ],
  "description": "省略时按ASC/BLF扩展名识别,可在同一来源按原序混合;CSV与内存需显式选择。"
}

$.properties.sources.items.oneOf[5].properties.offsets

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "按输入文件顺序提供的时间偏移,数量须匹配文件列表,不能借偏移默默重排文件。"
}

$.properties.sources.items.oneOf[5].properties.offsets.items

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "固定时间偏移,只接受数值与s/ms/us/ns单位,不接受日期。"
}

$.properties.sources.items.oneOf[5].properties.reader

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "与本来源格式有关的读取、文本解析和解码选项;省略适用参数时采用已说明的默认值。"
}

$.properties.sources.items.oneOf[5].properties.reader.properties.version

json
{
  "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排列,不自动混猜。"
}

$.properties.sources.items.oneOf[5].properties.reader.properties.encoding

json
{
  "type": "string",
  "minLength": 1,
  "description": "输入文本编码。用于真实读取;静态检查不据此判断文件可读。 CAN文本解析默认utf-8-sig。",
  "default": "utf-8-sig"
}

$.properties.sources.items.oneOf[5].properties.reader.properties.decode_policy

json
{
  "enum": [
    "strict",
    "partial",
    "legacy"
  ],
  "default": "strict",
  "description": "已选CAN报文的载荷长度检查政策,默认strict。strict:实际载荷与DBC长度相同,且DLC与字节数一致;partial:允许载荷短于DBC,但不能超过DBC长度或出现DLC与实际字节数不一致,实际解码仍沿现有实现;legacy:保留原实现的解码调用和长度处理。"
}

$.properties.sources.items.oneOf[5].properties.reader.properties.decode_scope

json
{
  "type": "string",
  "enum": [
    "all",
    "requested"
  ],
  "default": "requested",
  "description": "CAN解码尝试范围。默认requested,只解码当前分析需要的报文/字段;all扩大尝试解码的范围。对纯BLF串行接续,strict/partial跳过远程帧和错误帧。all不保证每帧有DBC定义、解码成功或生成逐帧诊断;选择all本身不要求填写dataset.domain。文件并行和time_order只支持requested。"
}

$.properties.sources.items.oneOf[5].properties.reader.properties.input_check

json
{
  "type": "string",
  "enum": [
    "auto",
    "full"
  ],
  "default": "auto",
  "description": "auto按实际消费者检查时间顺序;ASC普通分析仅检查所需通道/ID,来源范围仍取同次全部记录的最早/最晚时间。full或原帧导出检查全部记录顺序;任何模式都不自动排序或修改时间。"
}

$.properties.sources.items.oneOf[5].properties.file_merge

json
{
  "enum": [
    "concatenate",
    "time_order"
  ],
  "default": "concatenate",
  "description": "控制同一来源的多个文件如何衔接。concatenate按paths顺序读取,仅在任务要求检查的时间范围内拒绝回退;time_order要求各文件中参与排序的记录时间有序,按记录时间、文件位置、原记录顺序稳定归并。保留重叠报文,不自动平移时间或去重。该选择与进程数无关。"
}

$.properties.signals

json
{
  "type": "array",
  "description": "把来源的原始字段绑定为分析使用的简单信号名,明确类型、单位和有效期。"
}

$.properties.signals.items.oneOf[0]

json
{
  "type": "object",
  "required": [
    "name",
    "field"
  ],
  "additionalProperties": false
}

$.properties.signals.items.oneOf[0].allOf[0]

json
{
  "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"
          ]
        }
      }
    ]
  }
}

$.properties.signals.items.oneOf[0].allOf[1]

json
{
  "if": {
    "properties": {
      "field": {
        "type": "string",
        "description": "已解析信号的列名没有DBC类型和单位元数据,需由配置明确声明。"
      }
    },
    "required": [
      "field"
    ]
  },
  "then": {
    "required": [
      "dtype",
      "unit"
    ]
  }
}

$.properties.signals.items.oneOf[0].properties.name

json
{
  "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": "当前来源或信号的简单名称,供后续声明引用;不是对原数据字段的猜测或重命名。"
}

$.properties.signals.items.oneOf[0].properties.source

json
{
  "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。引用必须存在,不按同名字段或语义名称自动寻找来源。"
}

$.properties.signals.items.oneOf[0].properties.field

json
{
  "description": "来源中的真实字段。信号表/内存使用原字段名,CAN使用完整通道和报文信号定位对象。"
}

$.properties.signals.items.oneOf[0].properties.field.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S"
}

$.properties.signals.items.oneOf[0].properties.field.oneOf[1]

json
{
  "type": "object",
  "required": [
    "signal",
    "frame_id"
  ],
  "additionalProperties": false
}

$.properties.signals.items.oneOf[0].properties.field.oneOf[1].allOf[0]

json
{
  "if": {
    "properties": {
      "is_extended": {
        "const": false,
        "description": "显式选择标准帧时,整数ID不得超过11位范围。"
      }
    },
    "required": [
      "is_extended"
    ]
  },
  "then": {
    "properties": {
      "frame_id": {
        "maximum": 2047,
        "description": "标准帧的整数报文ID上限为2047;字符串转换后的范围由计划加载器核实。"
      }
    }
  }
}

$.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.channel

json
{
  "type": "integer",
  "minimum": 1,
  "description": "用户配置CAN通道从1开始,1对应内部0;省略时继承来源唯一通道。"
}

$.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.signal

json
{
  "type": "string",
  "minLength": 1,
  "description": "DBC中该信号的原始名称,与frame_id一起定位同一报文内的信号;这里不是分析别名。"
}

$.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.frame_id

json
{
  "description": "CAN报文ID;整数或字符串均可。0x前缀为十六进制,0b为二进制,无前缀为十进制;解析后须在0至536870911内,显式标准帧最多2047。"
}

$.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.frame_id.oneOf[0]

json
{
  "type": "integer",
  "minimum": 0,
  "maximum": 536870911
}

$.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.frame_id.oneOf[1]

json
{
  "type": "string",
  "pattern": "^(?:[0-9]+|0[xX][0-9a-fA-F]+|0[bB][01]+)(?![\\s\\S])",
  "minLength": 1
}

$.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.is_extended

json
{
  "type": "boolean",
  "description": "标准/扩展帧可选约束。省略时根据DBC和实际报文识别;只有歧义时要求补充。显式null无效。"
}

$.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.is_fd

json
{
  "type": "boolean",
  "description": "CAN/CAN FD可选约束。省略时根据DBC和实际报文识别;只有歧义时要求补充。显式null无效。"
}

$.properties.signals.items.oneOf[0].properties.dtype

json
{
  "enum": [
    "int64",
    "uint64",
    "float64",
    "bool",
    "enum"
  ],
  "description": "分析信号类型:int64、uint64、float64、bool或enum。CAN省略时按DBC解码值推导数值类型,不因DBC存在枚举表自动改为enum;明确手工choices为文字或布尔标签时可确定enum或bool。已解析数据仍需声明dtype。"
}

$.properties.signals.items.oneOf[0].properties.unit

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "数值所用单位。参与表达式和转换时核对单位;不能从字段名或文件名猜测。 CAN省略时读取DBC单位;DBC未定义则使用unknown并标为未核实,逻辑类型用1。已解析数据仍需填写。"
}

$.properties.signals.items.oneOf[0].properties.valid_for

json
{
  "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"
  ]
}

$.properties.signals.items.oneOf[0].properties.sample_policy

json
{
  "const": "backward_hold",
  "description": "样本沿用政策。当前仅支持backward_hold,即在有效期内使用最近的有效样本。 固定值:\"backward_hold\"。",
  "default": "backward_hold"
}

$.properties.signals.items.oneOf[0].properties.same_time_policy

json
{
  "enum": [
    "error",
    "last_by_sequence"
  ],
  "description": "同一信号同一时刻出现多个更新时的处理方式;不忽略冲突或任意重排记录。可选值:\"error\":同刻更新冲突时失败;\"last_by_sequence\":按原顺序取最后一次更新。",
  "default": "error"
}

$.properties.signals.items.oneOf[0].properties.code_dtype

json
{
  "enum": [
    "int64",
    "uint64"
  ],
  "description": "v4 枚举的原始整数类型。enum_code 使用;CAN 可由无缩放整数 DBC 确定。"
}

$.properties.signals.items.oneOf[0].properties.choices

json
{
  "type": "array",
  "description": "枚举的[原编码,标签]二元数组;保留编码原生类型,不能用对象键把整数或布尔编码字符串化。 dtype=enum且省略时读取DBC枚举表;显式映射优先。缩放产生浮点枚举码时明确报错,不截断为整数。"
}

$.properties.signals.items.oneOf[0].properties.choices.items

json
{
  "type": "array",
  "prefixItems": [
    {
      "type": [
        "integer",
        "boolean",
        "string"
      ]
    },
    {
      "type": [
        "string",
        "boolean"
      ]
    }
  ],
  "minItems": 2,
  "maxItems": 2
}

$.properties.signals.items.oneOf[0].properties.valid_range

json
{
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "description": "允许的规范数值范围,低值到高值;超界按质量政策处理,不自动裁剪到边界。"
}

$.properties.signals.items.oneOf[0].properties.valid_range.items

json
{
  "type": "number"
}

$.properties.signals.items.oneOf[0].properties.invalid_values

json
{
  "type": "array",
  "description": "明确标记为无效的原始编码列表;无效更新会覆盖前值,不当作没有更新。",
  "default": []
}

$.properties.signals.items.oneOf[0].properties.invalid_values.items

json
{
  "type": [
    "number",
    "string",
    "boolean",
    "null"
  ]
}

$.properties.signals.items.oneOf[0].properties.semantic_id

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "可选业务含义标识,用于说明或角色契约;相同标识本身不会自动绑定信号。 可省略或显式null;非null时必须为非空文本。"
}

$.properties.signals.items.oneOf[0].properties.semantic_contract_version

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "本信号semantic_id所指业务含义的版本,与分析配置版本独立;不表示实际输入已核验。可省略或显式null;任意非null值必须为非空文本,并同时填写本信号的semantic_id。"
}

$.properties.signals.items.oneOf[0].properties.mapping_version

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "调用方信号映射的版本标识,便于追溯明确绑定。 可省略或显式null;非null时必须为非空文本。"
}

$.properties.signals.items.oneOf[0].properties.sign_convention

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "规范信号正负方向的明确含义,例如流入为正;不同位置或方向不应仅凭名字合并。 可省略或显式null;非null时必须为非空文本。"
}

$.properties.signals.items.oneOf[0].properties.measurement_location

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "信号的测量位置声明,供业务角色契约核对。 可省略或显式null;非null时必须为非空文本。"
}

$.properties.signals.items.oneOf[0].properties.metadata

json
{
  "type": "object",
  "additionalProperties": true,
  "description": "附加说明对象;允许自定义JSON原生值,但不参与隐藏转换、模板执行或业务参数推断。"
}

$.properties.signals.items.oneOf[0].properties.period

json
{
  "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"
  ]
}

$.properties.signals.items.oneOf[0].properties.conversion

json
{
  "type": "object",
  "additionalProperties": false,
  "description": "额外单位换算。scale和offset均省略时按输入与目标单位自动推导;显式填写任一项则校验完整系数,不重复应用DBC缩放。"
}

$.properties.signals.items.oneOf[0].properties.conversion.properties.input_unit

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "读取或DBC解码后的单位。原始CAN报文省略时从DBC取得;已解析信号CSV和内存省略时沿用目标unit。显式null无效,请省略字段。"
}

$.properties.signals.items.oneOf[0].properties.conversion.properties.scale

json
{
  "type": "number",
  "description": "乘法系数。两系数均省略时自动推导;只有offset显式填写时本项取1。显式系数须符合单位关系。"
}

$.properties.signals.items.oneOf[0].properties.conversion.properties.offset

json
{
  "type": "number",
  "description": "乘法之后加上的数值,单位为目标unit。两系数均省略时自动推导;只有scale显式填写时本项取0。"
}

$.properties.signals.items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "frame_id",
    "signals"
  ],
  "additionalProperties": false
}

$.properties.signals.items.oneOf[1].allOf[0]

json
{
  "if": {
    "properties": {
      "is_extended": {
        "const": false,
        "description": "显式选择标准帧时,整数ID不得超过11位范围。"
      }
    },
    "required": [
      "is_extended"
    ]
  },
  "then": {
    "properties": {
      "frame_id": {
        "maximum": 2047,
        "description": "标准帧的整数报文ID上限为2047;字符串转换后的范围由计划加载器核实。"
      }
    }
  }
}

$.properties.signals.items.oneOf[1].properties.frame_id

json
{
  "description": "CAN报文ID;整数或字符串均可。0x前缀为十六进制,0b为二进制,无前缀为十进制;解析后须在0至536870911内,显式标准帧最多2047。"
}

$.properties.signals.items.oneOf[1].properties.frame_id.oneOf[0]

json
{
  "type": "integer",
  "minimum": 0,
  "maximum": 536870911
}

$.properties.signals.items.oneOf[1].properties.frame_id.oneOf[1]

json
{
  "type": "string",
  "pattern": "^(?:[0-9]+|0[xX][0-9a-fA-F]+|0[bB][01]+)(?![\\s\\S])",
  "minLength": 1
}

$.properties.signals.items.oneOf[1].properties.channel

json
{
  "type": "integer",
  "minimum": 1,
  "description": "用户配置CAN通道从1开始,1对应内部0;省略时继承来源唯一通道。"
}

$.properties.signals.items.oneOf[1].properties.is_extended

json
{
  "type": "boolean",
  "description": "标准/扩展帧可选约束。省略时根据DBC和实际报文识别;只有歧义时要求补充。显式null无效。"
}

$.properties.signals.items.oneOf[1].properties.is_fd

json
{
  "type": "boolean",
  "description": "CAN/CAN FD可选约束。省略时根据DBC和实际报文识别;只有歧义时要求补充。显式null无效。"
}

$.properties.signals.items.oneOf[1].properties.source

json
{
  "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。引用必须存在,不按同名字段或语义名称自动寻找来源。"
}

$.properties.signals.items.oneOf[1].properties.period

json
{
  "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"
  ]
}

$.properties.signals.items.oneOf[1].properties.valid_for

json
{
  "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"
  ]
}

$.properties.signals.items.oneOf[1].properties.same_time_policy

json
{
  "enum": [
    "error",
    "last_by_sequence"
  ],
  "description": "同一信号同一时刻出现多个更新时的处理方式;不忽略冲突或任意重排记录。可选值:\"error\":同刻更新冲突时失败;\"last_by_sequence\":按原顺序取最后一次更新。",
  "default": "error"
}

$.properties.signals.items.oneOf[1].properties.signals

json
{
  "type": "array",
  "minItems": 1,
  "description": "同一报文内的信号声明;只填各信号名称和所需的独立覆盖参数。"
}

$.properties.signals.items.oneOf[1].properties.signals.items

json
{
  "type": "object",
  "required": [
    "name",
    "signal"
  ],
  "additionalProperties": false
}

$.properties.signals.items.oneOf[1].properties.signals.items.allOf[0]

json
{
  "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"
          ]
        }
      }
    ]
  }
}

$.properties.signals.items.oneOf[1].properties.signals.items.allOf[1]

json
{
  "if": {
    "properties": {
      "field": {
        "type": "string",
        "description": "已解析信号的列名没有DBC类型和单位元数据,需由配置明确声明。"
      }
    },
    "required": [
      "field"
    ]
  },
  "then": {
    "required": [
      "dtype",
      "unit"
    ]
  }
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.name

json
{
  "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": "当前来源或信号的简单名称,供后续声明引用;不是对原数据字段的猜测或重命名。"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.dtype

json
{
  "enum": [
    "int64",
    "uint64",
    "float64",
    "bool",
    "enum"
  ],
  "description": "分析信号类型:int64、uint64、float64、bool或enum。CAN省略时按DBC解码值推导数值类型,不因DBC存在枚举表自动改为enum;明确手工choices为文字或布尔标签时可确定enum或bool。已解析数据仍需声明dtype。"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.unit

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "数值所用单位。参与表达式和转换时核对单位;不能从字段名或文件名猜测。 CAN省略时读取DBC单位;DBC未定义则使用unknown并标为未核实,逻辑类型用1。已解析数据仍需填写。"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.valid_for

json
{
  "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"
  ]
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.sample_policy

json
{
  "const": "backward_hold",
  "description": "样本沿用政策。当前仅支持backward_hold,即在有效期内使用最近的有效样本。 固定值:\"backward_hold\"。",
  "default": "backward_hold"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.same_time_policy

json
{
  "enum": [
    "error",
    "last_by_sequence"
  ],
  "description": "同一信号同一时刻出现多个更新时的处理方式;不忽略冲突或任意重排记录。可选值:\"error\":同刻更新冲突时失败;\"last_by_sequence\":按原顺序取最后一次更新。",
  "default": "error"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.code_dtype

json
{
  "enum": [
    "int64",
    "uint64"
  ],
  "description": "v4 枚举映射前的整数类型,enum_code 按需读取。"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.choices

json
{
  "type": "array",
  "description": "枚举的[原编码,标签]二元数组;保留编码原生类型,不能用对象键把整数或布尔编码字符串化。 dtype=enum且省略时读取DBC枚举表;显式映射优先。缩放产生浮点枚举码时明确报错,不截断为整数。"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.choices.items

json
{
  "type": "array",
  "prefixItems": [
    {
      "type": [
        "integer",
        "boolean",
        "string"
      ]
    },
    {
      "type": [
        "string",
        "boolean"
      ]
    }
  ],
  "minItems": 2,
  "maxItems": 2
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.valid_range

json
{
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "description": "允许的规范数值范围,低值到高值;超界按质量政策处理,不自动裁剪到边界。"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.valid_range.items

json
{
  "type": "number"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.invalid_values

json
{
  "type": "array",
  "description": "明确标记为无效的原始编码列表;无效更新会覆盖前值,不当作没有更新。",
  "default": []
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.invalid_values.items

json
{
  "type": [
    "number",
    "string",
    "boolean",
    "null"
  ]
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.semantic_id

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "可选业务含义标识,用于说明或角色契约;相同标识本身不会自动绑定信号。 可省略或显式null;非null时必须为非空文本。"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.semantic_contract_version

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "本信号semantic_id所指业务含义的版本,与分析配置版本独立;不表示实际输入已核验。可省略或显式null;任意非null值必须为非空文本,并同时填写本信号的semantic_id。"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.mapping_version

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "调用方信号映射的版本标识,便于追溯明确绑定。 可省略或显式null;非null时必须为非空文本。"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.sign_convention

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "规范信号正负方向的明确含义,例如流入为正;不同位置或方向不应仅凭名字合并。 可省略或显式null;非null时必须为非空文本。"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.measurement_location

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "信号的测量位置声明,供业务角色契约核对。 可省略或显式null;非null时必须为非空文本。"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.metadata

json
{
  "type": "object",
  "additionalProperties": true,
  "description": "附加说明对象;允许自定义JSON原生值,但不参与隐藏转换、模板执行或业务参数推断。"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.period

json
{
  "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"
  ]
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.signal

json
{
  "type": "string",
  "minLength": 1,
  "description": "计算输入的已绑定信号名,或CAN定位中的原DBC信号名;两种上下文分别检查。"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.conversion

json
{
  "type": "object",
  "additionalProperties": false,
  "description": "额外单位换算。scale和offset均省略时按输入与目标单位自动推导;显式填写任一项则校验完整系数,不重复应用DBC缩放。"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.conversion.properties.input_unit

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "读取或DBC解码后的单位。原始CAN报文省略时从DBC取得;已解析信号CSV和内存省略时沿用目标unit。显式null无效,请省略字段。"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.conversion.properties.scale

json
{
  "type": "number",
  "description": "乘法系数。两系数均省略时自动推导;只有offset显式填写时本项取1。显式系数须符合单位关系。"
}

$.properties.signals.items.oneOf[1].properties.signals.items.properties.conversion.properties.offset

json
{
  "type": "number",
  "description": "乘法之后加上的数值,单位为目标unit。两系数均省略时自动推导;只有scale显式填写时本项取0。"
}

$.properties.derived

json
{
  "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": {}
}

$.properties.rules

json
{
  "type": "array",
  "description": "识别事件的规则列表。规则name与窗口、计算项和序列共享唯一名称空间。",
  "default": []
}

$.properties.rules.items.oneOf[0]

json
{
  "type": "object",
  "required": [
    "name",
    "rule_type",
    "condition",
    "minimum_duration",
    "duration_comparison"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[0].properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.rules.items.oneOf[0].properties.condition

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "布尔条件表达式。未知值按三值逻辑处理,不把非零数值隐式当真。"
}

$.properties.rules.items.oneOf[0].properties.selection_origin

json
{
  "enum": [
    "onset",
    "confirmed"
  ],
  "description": "持续条件事件的统计起点,选择首次成立时刻或持续时间得到确认的时刻。可选值:\"onset\":从条件首次成立时刻计算;\"confirmed\":从持续条件确认时刻计算。",
  "default": "onset"
}

$.properties.rules.items.oneOf[0].properties.rule_type

json
{
  "const": "condition_duration",
  "description": "事件规则类型,决定条件、时长、阈值及其他字段的含义。 固定值:\"condition_duration\"(条件连续成立达到最短时长后确认活动)。"
}

$.properties.rules.items.oneOf[0].properties.minimum_duration

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "条件连续成立的最短确认时长,必须带单位;不是样本有效期或等待上限。",
  "examples": [
    "0s",
    "500ms"
  ]
}

$.properties.rules.items.oneOf[0].properties.duration_comparison

json
{
  "type": "string",
  "enum": [
    ">=",
    ">"
  ],
  "description": "持续时间与minimum_duration的比较,必须明确填写:>=达到,>严格超过。60秒整仅符合>=;不更改活动起点,selection_origin仍默认onset。"
}

$.properties.rules.items.oneOf[0].properties.interval

json
{
  "description": "此节点采用的间隔来源;省略则继承全局default,多个驱动候选时须明确driver。"
}

$.properties.rules.items.oneOf[0].properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[0].properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"actual\"。"
}

$.properties.rules.items.oneOf[0].properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[0].properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"fixed\"。"
}

$.properties.rules.items.oneOf[0].properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "fixed计算间隔的带单位正时长,例如100ms;actual/dbc不接受此字段。"
}

$.properties.rules.items.oneOf[0].properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.rules.items.oneOf[0].properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[0].properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"dbc\"。"
}

$.properties.rules.items.oneOf[0].properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.rules.items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "name",
    "rule_type",
    "condition"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[1].properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.rules.items.oneOf[1].properties.condition

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "布尔条件表达式。未知值按三值逻辑处理,不把非零数值隐式当真。"
}

$.properties.rules.items.oneOf[1].properties.emit_initial

json
{
  "type": "boolean",
  "description": "第一次已知条件已经成立时是否触发。默认值按规则类型确定,下降沿不允许开启。",
  "default": false
}

$.properties.rules.items.oneOf[1].properties.rule_type

json
{
  "const": "rising_edge",
  "description": "事件规则类型,决定条件、时长、阈值及其他字段的含义。 固定值:\"rising_edge\"(条件由假变真时产生点事件)。"
}

$.properties.rules.items.oneOf[1].properties.interval

json
{
  "description": "此节点采用的间隔来源;省略则继承全局default,多个驱动候选时须明确driver。"
}

$.properties.rules.items.oneOf[1].properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[1].properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"actual\"。"
}

$.properties.rules.items.oneOf[1].properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[1].properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"fixed\"。"
}

$.properties.rules.items.oneOf[1].properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "fixed计算间隔的带单位正时长,例如100ms;actual/dbc不接受此字段。"
}

$.properties.rules.items.oneOf[1].properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.rules.items.oneOf[1].properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[1].properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"dbc\"。"
}

$.properties.rules.items.oneOf[1].properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.rules.items.oneOf[2]

json
{
  "type": "object",
  "required": [
    "name",
    "rule_type",
    "condition"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[2].properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.rules.items.oneOf[2].properties.condition

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "布尔条件表达式。未知值按三值逻辑处理,不把非零数值隐式当真。"
}

$.properties.rules.items.oneOf[2].properties.emit_initial

json
{
  "const": false,
  "description": "第一次已知条件已经成立时是否触发。默认值按规则类型确定,下降沿不允许开启。 固定值:false。",
  "default": false
}

$.properties.rules.items.oneOf[2].properties.rule_type

json
{
  "const": "falling_edge",
  "description": "事件规则类型,决定条件、时长、阈值及其他字段的含义。 固定值:\"falling_edge\"(条件由真变假时产生点事件)。"
}

$.properties.rules.items.oneOf[2].properties.interval

json
{
  "description": "此节点采用的间隔来源;省略则继承全局default,多个驱动候选时须明确driver。"
}

$.properties.rules.items.oneOf[2].properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[2].properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"actual\"。"
}

$.properties.rules.items.oneOf[2].properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[2].properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"fixed\"。"
}

$.properties.rules.items.oneOf[2].properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "fixed计算间隔的带单位正时长,例如100ms;actual/dbc不接受此字段。"
}

$.properties.rules.items.oneOf[2].properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.rules.items.oneOf[2].properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[2].properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"dbc\"。"
}

$.properties.rules.items.oneOf[2].properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.rules.items.oneOf[3]

json
{
  "type": "object",
  "required": [
    "name",
    "rule_type",
    "condition",
    "window_duration"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[3].properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.rules.items.oneOf[3].properties.condition

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "布尔条件表达式。未知值按三值逻辑处理,不把非零数值隐式当真。"
}

$.properties.rules.items.oneOf[3].properties.window_duration

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "start_only触发后的固定窗口长度,必须是正时长;窗口结束不因持续为真而自动重触发。"
}

$.properties.rules.items.oneOf[3].properties.emit_initial

json
{
  "type": "boolean",
  "description": "第一次已知条件已经成立时是否触发。默认值按规则类型确定,下降沿不允许开启。",
  "default": false
}

$.properties.rules.items.oneOf[3].properties.rule_type

json
{
  "const": "start_only",
  "description": "事件规则类型,决定条件、时长、阈值及其他字段的含义。 固定值:\"start_only\"(触发后生成固定窗口并抑制窗口内重复触发)。"
}

$.properties.rules.items.oneOf[3].properties.interval

json
{
  "description": "此节点采用的间隔来源;省略则继承全局default,多个驱动候选时须明确driver。"
}

$.properties.rules.items.oneOf[3].properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[3].properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"actual\"。"
}

$.properties.rules.items.oneOf[3].properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[3].properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"fixed\"。"
}

$.properties.rules.items.oneOf[3].properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "fixed计算间隔的带单位正时长,例如100ms;actual/dbc不接受此字段。"
}

$.properties.rules.items.oneOf[3].properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.rules.items.oneOf[3].properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[3].properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"dbc\"。"
}

$.properties.rules.items.oneOf[3].properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.rules.items.oneOf[4]

json
{
  "type": "object",
  "required": [
    "name",
    "rule_type",
    "signal",
    "window",
    "direction",
    "threshold"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[4].properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.rules.items.oneOf[4].properties.signal

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "window_delta检查的数值信号名或白名单数值表达式;不是DBC原名称,也不是布尔条件。"
}

$.properties.rules.items.oneOf[4].properties.window

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "变化量计算的完整回看窗口长度,必须为带单位正时长;不是窗口id。"
}

$.properties.rules.items.oneOf[4].properties.direction

json
{
  "enum": [
    "rise",
    "fall",
    "any"
  ],
  "description": "窗口变化量的比较方向:上升、下降或绝对变化。可选值:\"rise\":末值减首值;\"fall\":首值减末值;\"any\":首末差值的绝对值。"
}

$.properties.rules.items.oneOf[4].properties.threshold

json
{
  "type": "number",
  "minimum": 0,
  "description": "变化量门槛,与输入信号单位一致,非负且包含等于门槛;不能猜业务阈值。"
}

$.properties.rules.items.oneOf[4].properties.monotonic

json
{
  "type": "boolean",
  "description": "是否要求回看窗口内保持单调,默认false;方向仍由direction决定。",
  "default": false
}

$.properties.rules.items.oneOf[4].properties.coverage_policy

json
{
  "const": "full",
  "description": "窗口变化量的观测覆盖政策,当前仅接受full,必须覆盖完整回看窗口。 固定值:\"full\"。",
  "default": "full"
}

$.properties.rules.items.oneOf[4].properties.emit_initial

json
{
  "type": "boolean",
  "description": "第一次已知条件已经成立时是否触发。默认值按规则类型确定,下降沿不允许开启。",
  "default": false
}

$.properties.rules.items.oneOf[4].properties.retrigger

json
{
  "enum": [
    "edge",
    "once"
  ],
  "description": "窗口变化量事件的再次触发方式,edge要求条件重新由假变真,once每个会话最多一次。可选值:\"edge\":条件重新由假变真后可再次触发;\"once\":每个会话最多触发一次。",
  "default": "edge"
}

$.properties.rules.items.oneOf[4].properties.rule_type

json
{
  "const": "window_delta",
  "description": "事件规则类型,决定条件、时长、阈值及其他字段的含义。 固定值:\"window_delta\"(检查完整回看窗口内的变化量)。"
}

$.properties.rules.items.oneOf[4].properties.interval

json
{
  "description": "此节点采用的间隔来源;省略则继承全局default,多个驱动候选时须明确driver。"
}

$.properties.rules.items.oneOf[4].properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[4].properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"actual\"。"
}

$.properties.rules.items.oneOf[4].properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[4].properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"fixed\"。"
}

$.properties.rules.items.oneOf[4].properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "fixed计算间隔的带单位正时长,例如100ms;actual/dbc不接受此字段。"
}

$.properties.rules.items.oneOf[4].properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.rules.items.oneOf[4].properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[4].properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"dbc\"。"
}

$.properties.rules.items.oneOf[4].properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.rules.items.oneOf[5]

json
{
  "type": "object",
  "required": [
    "name",
    "rule_type",
    "condition"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[5].properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.rules.items.oneOf[5].properties.condition

json
{
  "type": "string",
  "minLength": 1,
  "description": "布尔条件表达式。未知值按三值逻辑处理,不把非零数值隐式当真。"
}

$.properties.rules.items.oneOf[5].properties.enter_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "进入条件连续满足多久才进入活动,带单位非负时长,省略为0s。",
  "default": "0s"
}

$.properties.rules.items.oneOf[5].properties.exit_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "退出条件连续满足多久才退出或合并片段的退出延迟;由所在规则/窗口明确含义,必须带单位。",
  "default": "0s"
}

$.properties.rules.items.oneOf[5].properties.rule_type

json
{
  "const": "debounce",
  "description": "事件规则类型,决定条件、时长、阈值及其他字段的含义。 固定值:\"debounce\"(条件稳定达到延迟后切换活动状态)。"
}

$.properties.rules.items.oneOf[5].properties.interval

json
{
  "description": "此节点采用的间隔来源;省略则继承全局default,多个驱动候选时须明确driver。"
}

$.properties.rules.items.oneOf[5].properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[5].properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"actual\"。"
}

$.properties.rules.items.oneOf[5].properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[5].properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"fixed\"。"
}

$.properties.rules.items.oneOf[5].properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "fixed计算间隔的带单位正时长,例如100ms;actual/dbc不接受此字段。"
}

$.properties.rules.items.oneOf[5].properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.rules.items.oneOf[5].properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[5].properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"dbc\"。"
}

$.properties.rules.items.oneOf[5].properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.rules.items.oneOf[6]

json
{
  "type": "object",
  "required": [
    "name",
    "rule_type",
    "enter_condition",
    "exit_condition"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[6].properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.rules.items.oneOf[6].properties.enter_condition

json
{
  "type": "string",
  "minLength": 1,
  "description": "迟滞进入活动的布尔表达式,与退出条件分开声明。"
}

$.properties.rules.items.oneOf[6].properties.exit_condition

json
{
  "type": "string",
  "minLength": 1,
  "description": "迟滞退出活动的布尔表达式,不默认等于进入条件取反。"
}

$.properties.rules.items.oneOf[6].properties.enter_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "进入条件连续满足多久才进入活动,带单位非负时长,省略为0s。",
  "default": "0s"
}

$.properties.rules.items.oneOf[6].properties.exit_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "退出条件连续满足多久才退出或合并片段的退出延迟;由所在规则/窗口明确含义,必须带单位。",
  "default": "0s"
}

$.properties.rules.items.oneOf[6].properties.rule_type

json
{
  "const": "hysteresis",
  "description": "事件规则类型,决定条件、时长、阈值及其他字段的含义。 固定值:\"hysteresis\"(分别声明进入和退出条件及稳定时间)。"
}

$.properties.rules.items.oneOf[6].properties.interval

json
{
  "description": "此节点采用的间隔来源;省略则继承全局default,多个驱动候选时须明确driver。"
}

$.properties.rules.items.oneOf[6].properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[6].properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"actual\"。"
}

$.properties.rules.items.oneOf[6].properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[6].properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"fixed\"。"
}

$.properties.rules.items.oneOf[6].properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "fixed计算间隔的带单位正时长,例如100ms;actual/dbc不接受此字段。"
}

$.properties.rules.items.oneOf[6].properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.rules.items.oneOf[6].properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[6].properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"dbc\"。"
}

$.properties.rules.items.oneOf[6].properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.rules.items.oneOf[7]

json
{
  "type": "object",
  "required": [
    "name",
    "rule_type",
    "start_condition",
    "end_condition"
  ],
  "additionalProperties": false,
  "description": "开始条件启动活动,结束条件正常结束;可判断却达到时限时标timeout。"
}

$.properties.rules.items.oneOf[7].properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.rules.items.oneOf[7].properties.start_condition

json
{
  "type": "string",
  "minLength": 1,
  "description": "开始活动的布尔表达式;与end_condition形成开始/结束规则。"
}

$.properties.rules.items.oneOf[7].properties.end_condition

json
{
  "type": "string",
  "minLength": 1,
  "description": "结束当前活动的布尔表达式;条件未知不等同于已知结束。"
}

$.properties.rules.items.oneOf[7].properties.timeout

json
{
  "description": "开始后允许等待的正时长上限。null或省略表示不限时;与valid_for样本有效期不同。",
  "default": null
}

$.properties.rules.items.oneOf[7].properties.timeout.anyOf[0]

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$"
}

$.properties.rules.items.oneOf[7].properties.timeout.anyOf[1]

json
{
  "type": "null"
}

$.properties.rules.items.oneOf[7].properties.emit_initial

json
{
  "type": "boolean",
  "description": "第一次已知条件已经成立时是否触发。默认值按规则类型确定,下降沿不允许开启。",
  "default": true
}

$.properties.rules.items.oneOf[7].properties.rule_type

json
{
  "const": "start_end",
  "description": "事件规则类型,决定条件、时长、阈值及其他字段的含义。 固定值:\"start_end\"(明确开始/结束条件,可设置等待上限)。"
}

$.properties.rules.items.oneOf[7].properties.interval

json
{
  "description": "此节点采用的间隔来源;省略则继承全局default,多个驱动候选时须明确driver。"
}

$.properties.rules.items.oneOf[7].properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[7].properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"actual\"。"
}

$.properties.rules.items.oneOf[7].properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[7].properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"fixed\"。"
}

$.properties.rules.items.oneOf[7].properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "fixed计算间隔的带单位正时长,例如100ms;actual/dbc不接受此字段。"
}

$.properties.rules.items.oneOf[7].properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.rules.items.oneOf[7].properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.rules.items.oneOf[7].properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"dbc\"。"
}

$.properties.rules.items.oneOf[7].properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.windows

json
{
  "type": "array",
  "description": "由事件生成的取数片段,指定前后扩展及片段合并方式。",
  "default": []
}

$.properties.windows.items

json
{
  "type": "object",
  "required": [
    "name",
    "rule"
  ],
  "additionalProperties": false
}

$.properties.windows.items.allOf[0]

json
{
  "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"
      ]
    }
  }
}

$.properties.windows.items.properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.windows.items.properties.rule

json
{
  "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。"
}

$.properties.windows.items.properties.anchor

json
{
  "enum": [
    "point",
    "activity"
  ],
  "description": "窗口按点事件还是活动区间定位,必须与引用规则产生的事件类型一致。可选值:\"point\":以点事件为中心;\"activity\":以活动起止区间为基础。 省略时由关联规则推导。"
}

$.properties.windows.items.properties.pre

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "事件之前扩展的非负带单位时长,省略为0s。"
}

$.properties.windows.items.properties.post

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "事件之后扩展的非负带单位时长。通常省略为0s;start_only沿用对应规则window_duration,合并规则仍检查组合约束。"
}

$.properties.windows.items.properties.merge

json
{
  "enum": [
    "none",
    "overlap",
    "overlap_and_adjacent",
    "exit_delay"
  ],
  "description": "相邻事件生成片段的合并方式,不改变原事件本身。可选值:\"none\":每个片段分别保留;\"overlap\":合并重叠片段;\"overlap_and_adjacent\":合并重叠或相邻片段;\"exit_delay\":在退出延迟内将重入合并为同一片段。",
  "default": "none"
}

$.properties.windows.items.properties.exit_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "退出条件连续满足多久才退出或合并片段的退出延迟;由所在规则/窗口明确含义,必须带单位。"
}

$.properties.windows.items.properties.interval

json
{
  "description": "此节点采用的间隔来源;省略则继承全局default,多个驱动候选时须明确driver。"
}

$.properties.windows.items.properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.windows.items.properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"actual\"。"
}

$.properties.windows.items.properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

$.properties.windows.items.properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"fixed\"。"
}

$.properties.windows.items.properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "fixed计算间隔的带单位正时长,例如100ms;actual/dbc不接受此字段。"
}

$.properties.windows.items.properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.windows.items.properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.windows.items.properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"dbc\"。"
}

$.properties.windows.items.properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.calculations

json
{
  "type": "array",
  "description": "统计、积分、时长或记录选择的计算项。每项明确操作、作用范围和输入。",
  "default": []
}

$.properties.calculations.items

json
{
  "type": "object",
  "required": [
    "name",
    "operation"
  ],
  "additionalProperties": false
}

$.properties.calculations.items.allOf[0]

json
{
  "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。"
            }
          }
        }
      }
    ]
  }
}

$.properties.calculations.items.properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.calculations.items.properties.scope

json
{
  "description": "计算范围,省略为session;{rule: 名称}逐事件计算,{window: 名称}逐窗口计算,引用须已声明。"
}

$.properties.calculations.items.properties.scope.oneOf[0]

json
{
  "const": "session",
  "description": "分析或导出整个会话的可用范围。"
}

$.properties.calculations.items.properties.scope.oneOf[1]

json
{
  "type": "object",
  "required": [
    "rule"
  ],
  "additionalProperties": false
}

$.properties.calculations.items.properties.scope.oneOf[1].properties.rule

json
{
  "type": "string",
  "minLength": 1,
  "description": "所引用的规则或窗口名称,必须在同一配置中已经声明。"
}

$.properties.calculations.items.properties.scope.oneOf[2]

json
{
  "type": "object",
  "required": [
    "window"
  ],
  "additionalProperties": false
}

$.properties.calculations.items.properties.scope.oneOf[2].properties.window

json
{
  "type": "string",
  "minLength": 1,
  "description": "所引用的规则或窗口名称,必须在同一配置中已经声明。"
}

$.properties.calculations.items.properties.operation

json
{
  "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计最终片段。"
}

$.properties.calculations.items.properties.condition

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "布尔条件表达式。未知值按三值逻辑处理,不把非零数值隐式当真。"
}

$.properties.calculations.items.properties.unit

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "数值所用单位。参与表达式和转换时核对单位;不能从字段名或文件名猜测。"
}

$.properties.calculations.items.properties.method

json
{
  "const": "zoh",
  "description": "积分方法。当前只支持zoh,按前值保持的有效时间累计,不自动线性插值。 固定值:\"zoh\"。"
}

$.properties.calculations.items.properties.partial_policy

json
{
  "enum": [
    "report",
    "strict"
  ],
  "description": "有效覆盖不足时的处理政策;计算项省略则继承execution,预设按自身参数契约检查。可选值:\"report\":报告可得的部分结果及覆盖信息;\"strict\":按严格完整性要求处理部分结果。"
}

$.properties.calculations.items.properties.minimum_coverage

json
{
  "type": "number",
  "minimum": 0,
  "maximum": 1,
  "description": "需要的最小有效覆盖比例,范围0到1;不通过补零或延长有效期达到门槛。",
  "default": 0
}

$.properties.calculations.items.properties.expr

json
{
  "type": "string",
  "minLength": 1,
  "description": "统计输入的信号名称或白名单表达式;编译时检查依赖、类型与单位。"
}

$.properties.calculations.items.properties.interval

json
{
  "description": "此节点采用的间隔来源;省略则继承全局default,多个驱动候选时须明确driver。"
}

$.properties.calculations.items.properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.calculations.items.properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"actual\"。"
}

$.properties.calculations.items.properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

$.properties.calculations.items.properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"fixed\"。"
}

$.properties.calculations.items.properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "fixed计算间隔的带单位正时长,例如100ms;actual/dbc不接受此字段。"
}

$.properties.calculations.items.properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.calculations.items.properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.calculations.items.properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"dbc\"。"
}

$.properties.calculations.items.properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.calculations.items.properties.rule

json
{
  "type": "string",
  "minLength": 1,
  "description": "要计数的点事件或活动规则名称,仅用于对象计数。"
}

$.properties.calculations.items.properties.window

json
{
  "type": "string",
  "minLength": 1,
  "description": "要计数的最终片段来自哪个窗口,仅用于segment_count。"
}

$.properties.calculations.items.properties.ddof

json
{
  "type": "integer",
  "enum": [
    0,
    1
  ],
  "description": "样本方差和标准差的自由度修正:0表示总体,1表示按N−1计算;时间加权只允许0。"
}

$.properties.calculations.items.properties.q

json
{
  "type": "number",
  "minimum": 0,
  "maximum": 1,
  "description": "精确分位数的位置,0表示最小值、1最大值、0.95表示P95。仅sample_quantile填写。"
}

$.properties.presets

json
{
  "type": "array",
  "description": "预设把明确绑定的角色和参数展开为普通规则、窗口与计算;不按信号名称猜角色或阈值。",
  "default": []
}

$.properties.presets.items.oneOf[0]

json
{
  "type": "object",
  "required": [
    "name",
    "preset_type",
    "parameters"
  ],
  "additionalProperties": false
}

$.properties.presets.items.oneOf[0].properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.presets.items.oneOf[0].properties.version

json
{
  "const": "1",
  "description": "预设契约版本,可省略,默认字符串1;与分析文件的整数config_version=4分别控制不同对象。"
}

$.properties.presets.items.oneOf[0].properties.role_bindings

json
{
  "type": "object",
  "additionalProperties": false,
  "description": "预设角色到已绑定信号的显式映射;角色名称不代表原数据字段名。"
}

$.properties.presets.items.oneOf[0].properties.role_bindings.properties.mode

json
{
  "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": "业务模式角色的绑定信号名,或计算间隔/导出周期的选择方式;按所在对象解释。"
}

$.properties.presets.items.oneOf[0].properties.role_bindings.properties.current

json
{
  "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": "充电预设中电流角色绑定的信号名,必须明确单位、方向和测量位置。"
}

$.properties.presets.items.oneOf[0].properties.role_bindings.properties.voltage

json
{
  "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就自动选择。"
}

$.properties.presets.items.oneOf[0].properties.parameters

json
{
  "type": "object",
  "required": [
    "mode_value",
    "current_min",
    "minimum_duration"
  ],
  "additionalProperties": false,
  "description": "预设所需的业务参数,或逐消息表达式的有单位数值参数;不使用未声明车型默认值。"
}

$.properties.presets.items.oneOf[0].properties.parameters.properties.mode_value

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615,
  "description": "表示目标工作模式的明确整数编码,与角色信号的choices/类型相符。"
}

$.properties.presets.items.oneOf[0].properties.parameters.properties.current_min

json
{
  "type": "number",
  "description": "明确电流门槛,单位A;不采用车型或设备的猜测默认值。"
}

$.properties.presets.items.oneOf[0].properties.parameters.properties.compute_energy

json
{
  "type": "boolean",
  "default": false,
  "description": "是否生成充电能量计算,默认false;开启时需要相应角色及单位满足契约。"
}

$.properties.presets.items.oneOf[0].properties.parameters.properties.compute_charge

json
{
  "type": "boolean",
  "default": false,
  "description": "是否生成电量计算,默认false;开启后沿明确电流方向和有效覆盖处理。"
}

$.properties.presets.items.oneOf[0].properties.parameters.properties.minimum_coverage

json
{
  "type": "number",
  "minimum": 0,
  "maximum": 1,
  "default": 0,
  "description": "需要的最小有效覆盖比例,范围0到1;不通过补零或延长有效期达到门槛。"
}

$.properties.presets.items.oneOf[0].properties.parameters.properties.partial_policy

json
{
  "enum": [
    "report",
    "strict"
  ],
  "description": "有效覆盖不足时的处理政策;计算项省略则继承execution,预设按自身参数契约检查。可选值:\"report\":报告可得的部分结果及覆盖信息;\"strict\":按严格完整性要求处理部分结果。"
}

$.properties.presets.items.oneOf[0].properties.parameters.properties.minimum_duration

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "条件连续成立的最短确认时长,必须带单位;不是样本有效期或等待上限。"
}

$.properties.presets.items.oneOf[0].properties.preset_type

json
{
  "const": "charge_session",
  "description": "预设场景类型,先检查角色契约,再生成可检查的普通节点。 固定值:\"charge_session\"(充电活动及可选能量/电量计算)。"
}

$.properties.presets.items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "name",
    "preset_type",
    "parameters"
  ],
  "additionalProperties": false
}

$.properties.presets.items.oneOf[1].properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.presets.items.oneOf[1].properties.version

json
{
  "const": "1",
  "description": "预设契约版本,可省略,默认字符串1;与分析文件的整数config_version=4分别控制不同对象。"
}

$.properties.presets.items.oneOf[1].properties.role_bindings

json
{
  "type": "object",
  "additionalProperties": false,
  "description": "预设角色到已绑定信号的显式映射;角色名称不代表原数据字段名。"
}

$.properties.presets.items.oneOf[1].properties.role_bindings.properties.alarm

json
{
  "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": "故障上下文预设中报警角色绑定的布尔信号名。"
}

$.properties.presets.items.oneOf[1].properties.parameters

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "预设所需的业务参数,或逐消息表达式的有单位数值参数;不使用未声明车型默认值。"
}

$.properties.presets.items.oneOf[1].properties.parameters.properties.pre

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "在事件之前扩展的非负时长,必须带单位。"
}

$.properties.presets.items.oneOf[1].properties.parameters.properties.post

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "在事件之后扩展的非负时长,必须带单位;特定合并/固定窗口规则有额外限制。"
}

$.properties.presets.items.oneOf[1].properties.parameters.properties.emit_initial

json
{
  "type": "boolean",
  "default": false,
  "description": "第一次已知条件已经成立时是否触发。默认值按规则类型确定,下降沿不允许开启。"
}

$.properties.presets.items.oneOf[1].properties.preset_type

json
{
  "const": "fault_context",
  "description": "预设场景类型,先检查角色契约,再生成可检查的普通节点。 固定值:\"fault_context\"(报警前后上下文片段)。"
}

$.properties.presets.items.oneOf[2]

json
{
  "type": "object",
  "required": [
    "name",
    "preset_type",
    "parameters"
  ],
  "additionalProperties": false
}

$.properties.presets.items.oneOf[2].properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.presets.items.oneOf[2].properties.version

json
{
  "const": "1",
  "description": "预设契约版本,可省略,默认字符串1;与分析文件的整数config_version=4分别控制不同对象。"
}

$.properties.presets.items.oneOf[2].properties.role_bindings

json
{
  "type": "object",
  "additionalProperties": false,
  "description": "预设角色到已绑定信号的显式映射;角色名称不代表原数据字段名。"
}

$.properties.presets.items.oneOf[2].properties.role_bindings.properties.request

json
{
  "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": "请求响应预设中请求角色绑定的信号名。"
}

$.properties.presets.items.oneOf[2].properties.role_bindings.properties.response

json
{
  "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中的规则引用。"
}

$.properties.presets.items.oneOf[2].properties.parameters

json
{
  "type": "object",
  "required": [
    "max_delay"
  ],
  "additionalProperties": false,
  "description": "预设所需的业务参数,或逐消息表达式的有单位数值参数;不使用未声明车型默认值。"
}

$.properties.presets.items.oneOf[2].properties.parameters.properties.min_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "允许的最小响应延迟,非负带单位时长,包含端点。"
}

$.properties.presets.items.oneOf[2].properties.parameters.properties.max_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "允许的最大响应延迟,不得小于min_delay,包含端点;到期未响应会得到明确配对状态。"
}

$.properties.presets.items.oneOf[2].properties.parameters.properties.emit_initial

json
{
  "type": "boolean",
  "default": false,
  "description": "第一次已知条件已经成立时是否触发。默认值按规则类型确定,下降沿不允许开启。"
}

$.properties.presets.items.oneOf[2].properties.parameters.properties.max_pending

json
{
  "type": "integer",
  "minimum": 1,
  "default": 65536,
  "description": "同时等待响应的请求数上限,正整数,默认65536;不是输入文件总行数。"
}

$.properties.presets.items.oneOf[2].properties.preset_type

json
{
  "const": "command_response",
  "description": "预设场景类型,先检查角色契约,再生成可检查的普通节点。 固定值:\"command_response\"(请求与响应延迟配对)。"
}

$.properties.presets.items.oneOf[3]

json
{
  "type": "object",
  "required": [
    "name",
    "preset_type",
    "role_bindings",
    "parameters"
  ],
  "additionalProperties": false
}

$.properties.presets.items.oneOf[3].properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.presets.items.oneOf[3].properties.version

json
{
  "const": "1",
  "description": "预设契约版本,可省略,默认字符串1;与分析文件的整数config_version=4分别控制不同对象。"
}

$.properties.presets.items.oneOf[3].properties.role_bindings

json
{
  "type": "object",
  "required": [
    "signal"
  ],
  "additionalProperties": false,
  "description": "预设角色到已绑定信号的显式映射;角色名称不代表原数据字段名。"
}

$.properties.presets.items.oneOf[3].properties.role_bindings.properties.signal

json
{
  "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;必须满足该角色的数值与单位要求。"
}

$.properties.presets.items.oneOf[3].properties.parameters

json
{
  "type": "object",
  "required": [
    "enter_threshold",
    "exit_threshold"
  ],
  "additionalProperties": false,
  "description": "预设所需的业务参数,或逐消息表达式的有单位数值参数;不使用未声明车型默认值。"
}

$.properties.presets.items.oneOf[3].properties.parameters.properties.unit

json
{
  "type": "string",
  "minLength": 1,
  "description": "阈值单位,可省略并使用signal角色所绑定信号的单位;显式填写时必须与该信号一致,不触发额外换算。"
}

$.properties.presets.items.oneOf[3].properties.parameters.properties.enter_threshold

json
{
  "type": "number",
  "description": "阈值活动的进入门槛,单位与角色信号一致;与退出门槛的先后关系由方向语义检查。"
}

$.properties.presets.items.oneOf[3].properties.parameters.properties.exit_threshold

json
{
  "type": "number",
  "description": "阈值活动的退出门槛,不能为消除抖动而擅自猜测数值。"
}

$.properties.presets.items.oneOf[3].properties.parameters.properties.enter_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "进入条件连续满足多久才进入活动,带单位非负时长,省略为0s。"
}

$.properties.presets.items.oneOf[3].properties.parameters.properties.exit_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "退出条件连续满足多久才退出或合并片段的退出延迟;由所在规则/窗口明确含义,必须带单位。"
}

$.properties.presets.items.oneOf[3].properties.preset_type

json
{
  "const": "threshold_excursion",
  "description": "预设场景类型,先检查角色契约,再生成可检查的普通节点。 固定值:\"threshold_excursion\"(越限进入和恢复退出的阈值活动)。"
}

$.properties.message_calculations

json
{
  "type": "array",
  "description": "针对指定CAN消息的逐消息累计。每次实际消息独立求值,不施普通信号保持、不额外乘时间差。",
  "default": []
}

$.properties.message_calculations.items

json
{
  "type": "object",
  "required": [
    "name",
    "update_message",
    "expr",
    "unit"
  ],
  "additionalProperties": false
}

$.properties.message_calculations.items.properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.message_calculations.items.properties.source

json
{
  "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;只有一个适用来源时可省略,多候选时必须明确选择。"
}

$.properties.message_calculations.items.properties.profile

json
{
  "enum": [
    "sclicer-functions-v1",
    "can-text-v1"
  ],
  "description": "消息读取/解码实现标识,可省略并由来源确定:既有BLF路径使用sclicer-functions-v1,ASC、原始CAN CSV及混合来源使用can-text-v1。显式值必须与实际来源一致。"
}

$.properties.message_calculations.items.properties.operation

json
{
  "const": "legacy_sum",
  "description": "逐消息计算的累计方法,可省略,当前默认且仅支持legacy_sum;每条符合条件的消息独立贡献一次。"
}

$.properties.message_calculations.items.properties.message_policy

json
{
  "const": "current_message-v1",
  "description": "可省略,默认current_message-v1;每次只取当前目标消息的解码值,不沿用上条消息缓存。"
}

$.properties.message_calculations.items.properties.expr

json
{
  "type": "string",
  "pattern": "\\S",
  "description": "受限表达式,只引用明确绑定名称和已支持运算;不执行Python、属性访问或任意函数。"
}

$.properties.message_calculations.items.properties.unit

json
{
  "type": "string",
  "pattern": "\\S",
  "description": "数值所用单位。参与表达式和转换时核对单位;不能从字段名或文件名猜测。"
}

$.properties.message_calculations.items.properties.update_message

json
{
  "type": "object",
  "required": [
    "frame_id"
  ],
  "additionalProperties": false,
  "description": "触发求值的CAN报文定位;frame_id必填,channel省略采用来源通道,标准/扩展及CAN/FD限制可省略并按实际输入识别。"
}

$.properties.message_calculations.items.properties.update_message.allOf[0]

json
{
  "if": {
    "properties": {
      "is_extended": {
        "const": false,
        "description": "是否扩展帧,必须是布尔值;标准帧ID与扩展帧ID有不同范围。 固定值:false。"
      }
    },
    "required": [
      "is_extended"
    ]
  },
  "then": {
    "properties": {
      "frame_id": {
        "maximum": 2047,
        "description": "CAN报文ID,非负整数;范围由标准帧/扩展帧标志进一步约束。"
      }
    }
  }
}

$.properties.message_calculations.items.properties.update_message.properties.channel

json
{
  "type": "integer",
  "minimum": 1,
  "description": "用户配置CAN通道从1开始,1对应内部0;省略时继承来源唯一通道。"
}

$.properties.message_calculations.items.properties.update_message.properties.frame_id

json
{
  "description": "CAN报文ID;整数或字符串均可。0x前缀为十六进制,0b为二进制,无前缀为十进制;解析后须在0至536870911内,显式标准帧最多2047。"
}

$.properties.message_calculations.items.properties.update_message.properties.frame_id.oneOf[0]

json
{
  "type": "integer",
  "minimum": 0,
  "maximum": 536870911
}

$.properties.message_calculations.items.properties.update_message.properties.frame_id.oneOf[1]

json
{
  "type": "string",
  "pattern": "^(?:[0-9]+|0[xX][0-9a-fA-F]+|0[bB][01]+)(?![\\s\\S])",
  "minLength": 1
}

$.properties.message_calculations.items.properties.update_message.properties.is_extended

json
{
  "type": "boolean",
  "description": "标准/扩展帧可选约束。省略时根据DBC和实际报文识别;只有歧义时要求补充。显式null无效。"
}

$.properties.message_calculations.items.properties.update_message.properties.is_fd

json
{
  "type": "boolean",
  "description": "CAN/CAN FD可选约束。省略时根据DBC和实际报文识别;只有歧义时要求补充。显式null无效。"
}

$.properties.message_calculations.items.properties.split_by_sign

json
{
  "type": "object",
  "description": "按当前原解码字段的正负选择累计桶,不施额外归一化,也不沿用其他消息的旧值。",
  "required": [
    "signal",
    "bucket"
  ],
  "additionalProperties": false
}

$.properties.message_calculations.items.properties.split_by_sign.properties.signal

json
{
  "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。"
}

$.properties.message_calculations.items.properties.split_by_sign.properties.bucket

json
{
  "enum": [
    "positive",
    "negative"
  ],
  "description": "正值桶或负值桶的选择;方向判断依据当前指定原解码字段。可选值:\"positive\":正向累计桶;\"negative\":负向累计桶。"
}

$.properties.message_calculations.items.properties.split_by_sign.properties.value_policy

json
{
  "const": "raw_decoded-v1",
  "description": "分组使用的值,可省略,默认raw_decoded-v1;使用本条消息的原解码方向值,不额外换算、不沿用旧值。"
}

$.properties.message_calculations.items.properties.parameters

json
{
  "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": "预设所需的业务参数,或逐消息表达式的有单位数值参数;不使用未声明车型默认值。"
}

$.properties.execution

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false,
  "description": "执行后端及分析层资源限制。预算是声明,静态检查不测量实际内存峰值。",
  "default": {}
}

$.properties.execution.properties.backend

json
{
  "enum": [
    "numpy",
    "reference",
    "auto"
  ],
  "description": "数值计算实现选择。auto按已验证的整个计划类别选择reference或numpy,不预读或试跑;numpy采用NumPy数值实现;reference采用独立参考实现。显式选择保持,不因运行错误切换后端。",
  "default": "auto"
}

$.properties.execution.properties.batch_rows

json
{
  "type": "integer",
  "minimum": 1,
  "description": "每批读取的记录/样本上限,正整数,默认65536;不等于独立任务并行数。",
  "default": 65536
}

$.properties.execution.properties.memory_budget_bytes

json
{
  "type": "integer",
  "minimum": 1,
  "description": "新分析层内存预算,正整数字节数,默认268435456;不是整个Python进程或旧读取器的RSS上限。",
  "default": 268435456
}

$.properties.execution.properties.result_buffer_rows

json
{
  "type": "integer",
  "minimum": 1,
  "description": "写出结果前的缓冲行数上限,正整数,默认4096。",
  "default": 4096
}

$.properties.execution.properties.partial_policy

json
{
  "enum": [
    "report",
    "strict"
  ],
  "description": "有效覆盖不足时的处理政策;计算项省略则继承execution,预设按自身参数契约检查。可选值:\"report\":报告可得的部分结果及覆盖信息;\"strict\":按严格完整性要求处理部分结果。",
  "default": "report"
}

$.properties.execution.properties.on_budget_exceeded

json
{
  "const": "error",
  "description": "超过预算的处理方式,当前只接受error,明确失败而不丢数据或增加旧输入扫描。 固定值:\"error\"。",
  "default": "error"
}

$.properties.execution.properties.spool_quota_bytes

json
{
  "description": "暂存磁盘配额,正整数字节数;null或省略表示未设置配额。",
  "default": null
}

$.properties.execution.properties.spool_quota_bytes.anyOf[0]

json
{
  "type": "null"
}

$.properties.execution.properties.spool_quota_bytes.anyOf[1]

json
{
  "type": "integer",
  "minimum": 1
}

$.properties.execution.properties.process_count

json
{
  "type": "integer",
  "minimum": 1,
  "default": 1,
  "description": "控制本次分析最多使用多少个读取和DBC解码工作进程,不包含主分析进程。填写大于等于1的整数;默认1保留串行读取。API或CLI显式参数优先于配置。多个文件仍属于同一个连续会话。"
}

$.properties.outputs

json
{
  "type": "object",
  "additionalProperties": false,
  "description": "结果表及可选信号/CAN导出。正式结果目录可复用,每次使用独立时间文件名,并由本次完成清单定位。",
  "default": {}
}

$.properties.outputs.properties.contributions

json
{
  "enum": [
    "none",
    "full"
  ],
  "description": "是否保存逐消息贡献明细。none默认只保留汇总,full显式逐条保存。可选值:\"none\":不保存逐条贡献明细;\"full\":明确保存逐条贡献。",
  "default": "none"
}

$.properties.outputs.properties.tables

json
{
  "enum": [
    "readable_csv",
    "csv",
    "jsonl"
  ],
  "description": "结果表格式;省略时使用readable_csv,中文列名、精确秒、同区间指标合并。csv保留程序交换用平坦表和整数纳秒;jsonl保留逐行JSON。只生成所选的一套表,不决定配置文件格式。",
  "default": "readable_csv"
}

$.properties.outputs.properties.manifest

json
{
  "const": "json",
  "description": "运行清单文件格式,当前固定json。 固定值:\"json\"。",
  "default": "json"
}

$.properties.outputs.properties.signal_csv

json
{
  "description": "可选的信号CSV导出。省略或null表示关闭;开启时必须明确选择信号及范围。",
  "default": null
}

$.properties.outputs.properties.signal_csv.oneOf[0]

json
{
  "type": "null"
}

$.properties.outputs.properties.signal_csv.oneOf[1]

json
{
  "type": "object",
  "required": [
    "signals"
  ],
  "additionalProperties": false
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.signals

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "uniqueItems": true,
  "description": "显式选择要导出的原信号别名列表;必须已在分析signals中声明,不默认导出全部信号。"
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.signals.items

json
{
  "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\"。"
  }
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.scope

json
{
  "description": "明确选择整个会话、某条规则的事件范围或某个窗口的范围。"
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.scope.oneOf[0]

json
{
  "const": "session",
  "description": "分析或导出整个会话的可用范围。"
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.scope.oneOf[1]

json
{
  "type": "object",
  "required": [
    "window"
  ],
  "additionalProperties": false
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.scope.oneOf[1].properties.window

json
{
  "type": "string",
  "minLength": 1,
  "description": "所引用的规则或窗口名称,必须在同一配置中已经声明。"
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling

json
{
  "description": "本次导出的独立重采样设置。省略或null保留原始采样;不能借导出网格改变计算间隔。"
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[0]

json
{
  "type": "null"
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1]

json
{
  "type": "object",
  "required": [
    "continuous",
    "period",
    "max_gap"
  ],
  "additionalProperties": false
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.continuous

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "uniqueItems": true,
  "description": "明确允许线性重采样的数值信号子集。状态、计数或枚举不能仅因数值类型就被当成连续量。"
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.continuous.items

json
{
  "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\"。"
  }
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.max_gap

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "允许插值或重建的最大实际样本间隔,必须带单位且为正;不是固定时间偏移。"
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period

json
{
  "description": "导出网格周期。固定周期使用正时长文本,DBC周期使用mode: dbc对象;不从文件名猜周期。"
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[0]

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "固定时间偏移,只接受数值与s/ms/us/ns单位,不接受日期。"
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1].properties.mode

json
{
  "const": "dbc",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"dbc\"。"
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1].properties.driver

json
{
  "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周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.start

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "重采样时间网格的起点,省略为0ns;不改变分析范围或原始报文时间。"
}

$.properties.outputs.properties.can_frames

json
{
  "description": "可选的CAN原帧/重建帧导出。省略或null表示关闭,开启不会替代分析结果表。",
  "default": null
}

$.properties.outputs.properties.can_frames.oneOf[0]

json
{
  "type": "null"
}

$.properties.outputs.properties.can_frames.oneOf[1]

json
{
  "type": "object",
  "required": [
    "format"
  ],
  "additionalProperties": false
}

$.properties.outputs.properties.can_frames.oneOf[1].allOf[0]

json
{
  "if": {
    "required": [
      "capture_date"
    ]
  },
  "then": {
    "required": [
      "timezone"
    ]
  }
}

$.properties.outputs.properties.can_frames.oneOf[1].allOf[1]

json
{
  "if": {
    "required": [
      "timezone"
    ]
  },
  "then": {
    "required": [
      "capture_date"
    ]
  }
}

$.properties.outputs.properties.can_frames.oneOf[1].allOf[2]

json
{
  "if": {
    "properties": {
      "source_time_reference": {
        "const": "epoch",
        "description": "导出时间以相对起点还是Unix纪元表示。原始时间解释必须明确。 固定值:\"epoch\"(Unix纪元绝对时间)。"
      }
    },
    "required": [
      "source_time_reference"
    ]
  },
  "then": {
    "not": {
      "anyOf": [
        {
          "required": [
            "capture_date"
          ]
        },
        {
          "required": [
            "timezone"
          ]
        }
      ]
    }
  }
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.source

json
{
  "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。引用必须存在,不按同名字段或语义名称自动寻找来源。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.format

json
{
  "enum": [
    "asc",
    "blf"
  ],
  "description": "CAN输出格式,asc或blf;与结果表csv/jsonl选项分开。可选值:\"asc\":ASC文本帧文件;\"blf\":BLF二进制帧文件。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.scope

json
{
  "description": "明确选择整个会话、某条规则的事件范围或某个窗口的范围。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[0]

json
{
  "const": "session",
  "description": "分析或导出整个会话的可用范围。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[1]

json
{
  "type": "object",
  "required": [
    "window"
  ],
  "additionalProperties": false
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[1].properties.window

json
{
  "type": "string",
  "minLength": 1,
  "description": "所引用的规则或窗口名称,必须在同一配置中已经声明。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[2]

json
{
  "type": "object",
  "required": [
    "windows"
  ],
  "additionalProperties": false
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[2].properties.windows

json
{
  "const": "all",
  "description": "使用所有已配置窗口生成的范围,不把all当作某个窗口名。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.source_time_reference

json
{
  "enum": [
    "relative",
    "epoch"
  ],
  "description": "导出时间以相对起点还是Unix纪元表示。原始时间解释必须明确。可选值:\"relative\":相对起点时间;\"epoch\":Unix纪元绝对时间。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.capture_date

json
{
  "type": "string",
  "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
  "description": "显式捕获日期,用于需要日期头的导出;不能把运行日期冒充采集日期。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.output_offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "导出时间轴的显式固定偏移,带s/ms/us/ns单位,不改变分析时钟。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling

json
{
  "description": "本次导出的独立重采样设置。省略或null保留原始采样;不能借导出网格改变计算间隔。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[0]

json
{
  "type": "null"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1]

json
{
  "type": "object",
  "required": [
    "period",
    "max_gap",
    "messages"
  ],
  "additionalProperties": false
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.max_gap

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "允许插值或重建的最大实际样本间隔,必须带单位且为正;不是固定时间偏移。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages

json
{
  "type": "array",
  "minItems": 0,
  "maxItems": 4096,
  "description": "CAN重建规则列表,按精确报文定位声明连续字段和受保护字段。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items

json
{
  "type": "object",
  "required": [
    "frame_id",
    "continuous"
  ],
  "additionalProperties": false
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.allOf[0]

json
{
  "if": {
    "properties": {
      "is_extended": {
        "const": false,
        "description": "显式选择标准帧时,整数ID不得超过11位范围。"
      }
    },
    "required": [
      "is_extended"
    ]
  },
  "then": {
    "properties": {
      "frame_id": {
        "maximum": 2047,
        "description": "标准帧的整数报文ID上限为2047;字符串转换后的范围由计划加载器核实。"
      }
    }
  }
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.channel

json
{
  "type": "integer",
  "minimum": 1,
  "description": "用户配置CAN通道从1开始,1对应内部0;省略时继承来源唯一通道。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.frame_id

json
{
  "description": "CAN报文ID;整数或字符串均可。0x前缀为十六进制,0b为二进制,无前缀为十进制;解析后须在0至536870911内,显式标准帧最多2047。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.frame_id.oneOf[0]

json
{
  "type": "integer",
  "minimum": 0,
  "maximum": 536870911
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.frame_id.oneOf[1]

json
{
  "type": "string",
  "pattern": "^(?:[0-9]+|0[xX][0-9a-fA-F]+|0[bB][01]+)(?![\\s\\S])",
  "minLength": 1
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.is_extended

json
{
  "type": "boolean",
  "description": "标准/扩展帧可选约束。省略时根据DBC和实际报文识别;只有歧义时要求补充。显式null无效。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.is_fd

json
{
  "type": "boolean",
  "description": "CAN/CAN FD可选约束。省略时根据DBC和实际报文识别;只有歧义时要求补充。显式null无效。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.continuous

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "uniqueItems": true,
  "description": "明确允许线性重采样的数值信号子集。状态、计数或枚举不能仅因数值类型就被当成连续量。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.continuous.items

json
{
  "type": "string",
  "minLength": 1
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.protected

json
{
  "type": "array",
  "minItems": 0,
  "maxItems": 4096,
  "uniqueItems": true,
  "description": "重建时必须保留原值的DBC信号列表,例如计数器或校验字段;不自动重算未知算法。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.protected.items

json
{
  "type": "string",
  "minLength": 1
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.same_time_policy

json
{
  "enum": [
    "error",
    "last_by_sequence"
  ],
  "description": "同一信号同一时刻出现多个更新时的处理方式;不忽略冲突或任意重排记录。可选值:\"error\":同刻更新冲突时失败;\"last_by_sequence\":按原顺序取最后一次更新。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.unknown_policy

json
{
  "enum": [
    "passthrough",
    "nearest"
  ],
  "description": "没有匹配重建规则的报文如何输出:按原时间透传,或按明确距离选择最近原帧。可选值:\"passthrough\":不匹配重建规则的帧按原时刻透传;\"nearest\":按明确时间距离选最近原帧。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.max_distance

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "选择最近原帧时允许的最大时间距离,必须为非负时长;0s仅接受恰好同刻的原帧。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.period

json
{
  "description": "导出网格周期。固定周期使用正时长文本,DBC周期使用mode: dbc对象;不从文件名猜周期。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[0]

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "固定时间偏移,只接受数值与s/ms/us/ns单位,不接受日期。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1].properties.mode

json
{
  "const": "dbc",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"dbc\"。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.start

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "重采样时间网格的起点,省略为0ns;不改变分析范围或原始报文时间。"
}

$.properties.outputs.properties.can_frames.oneOf[1].properties.timezone

json
{
  "type": [
    "string",
    "null"
  ],
  "description": "采集地点的固定时区,例如+08:00或UTC;相对时间导出BLF时与capture_date同时填写。"
}

$.properties.metadata

json
{
  "type": "object",
  "additionalProperties": true,
  "description": "附加说明对象;允许自定义JSON原生值,但不参与隐藏转换、模板执行或业务参数推断。",
  "default": {}
}

$.properties.sequences

json
{
  "type": "array",
  "description": "将请求点事件与响应点事件按FIFO配对,指定允许延迟和最多等待的请求数。",
  "default": []
}

$.properties.sequences.items

json
{
  "type": "object",
  "required": [
    "name",
    "start",
    "response",
    "max_delay"
  ],
  "additionalProperties": false
}

$.properties.sequences.items.properties.name

json
{
  "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": "声明的唯一标识。使用非保留的英文字母或下划线开头、后接字母数字下划线的名称;不能重复。"
}

$.properties.sequences.items.properties.start

json
{
  "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中声明,不能引用活动规则。"
}

$.properties.sequences.items.properties.response

json
{
  "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。"
}

$.properties.sequences.items.properties.min_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "允许的最小响应延迟,非负带单位时长,包含端点。"
}

$.properties.sequences.items.properties.max_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "允许的最大响应延迟,不得小于min_delay,包含端点;到期未响应会得到明确配对状态。"
}

$.properties.sequences.items.properties.max_pending

json
{
  "type": "integer",
  "minimum": 1,
  "description": "同时等待响应的请求数上限,正整数,默认65536;不是输入文件总行数。",
  "default": 65536
}

$.properties.sequences.items.properties.interval

json
{
  "description": "此节点采用的间隔来源;省略则继承全局default,多个驱动候选时须明确driver。"
}

$.properties.sequences.items.properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.sequences.items.properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"actual\"。"
}

$.properties.sequences.items.properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

$.properties.sequences.items.properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"fixed\"。"
}

$.properties.sequences.items.properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "fixed计算间隔的带单位正时长,例如100ms;actual/dbc不接受此字段。"
}

$.properties.sequences.items.properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.sequences.items.properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.sequences.items.properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"dbc\"。"
}

$.properties.sequences.items.properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.intervals

json
{
  "type": "object",
  "additionalProperties": false,
  "description": "普通时序计算使用的计时间隔。默认真实记录时间差,可对指定消费者覆盖;不改变信号有效期。",
  "default": {}
}

$.properties.intervals.properties.default

json
{
  "description": "未单独覆盖的消费者采用的计算间隔,省略时为actual真实时间差。"
}

$.properties.intervals.properties.default.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.intervals.properties.default.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"actual\"。"
}

$.properties.intervals.properties.default.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

$.properties.intervals.properties.default.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"fixed\"。"
}

$.properties.intervals.properties.default.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "fixed计算间隔的带单位正时长,例如100ms;actual/dbc不接受此字段。"
}

$.properties.intervals.properties.default.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.intervals.properties.default.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

$.properties.intervals.properties.default.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "间隔来源:actual使用实际记录时间差,fixed使用显式value,dbc在运行时读取驱动报文周期;导出周期对象仅允许dbc。 固定值:\"dbc\"。"
}

$.properties.intervals.properties.default.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "明确推进此计算或DBC周期选择的原信号名;仅在唯一可判断的声明中允许省略。"
}

$.properties.diagnostics

json
{
  "type": "object",
  "additionalProperties": false,
  "description": "按需开启额外追溯、完整性检查或现场保留。三项独立,默认均关闭。",
  "default": {}
}

$.properties.diagnostics.properties.trace

json
{
  "type": "boolean",
  "default": false,
  "description": "是否生成额外详细追溯,默认false;关闭时仍保留必要结果和错误处理。"
}

$.properties.diagnostics.properties.integrity

json
{
  "type": "boolean",
  "default": false,
  "description": "是否执行额外完整性诊断,默认false;不取消普通分析所必需的输入检查。"
}

$.properties.diagnostics.properties.retain_work

json
{
  "type": "boolean",
  "default": false,
  "description": "是否保留本次自有工作现场,默认false;不授权删除或保留无关用户文件。"
}

$.properties.imports

json
{
  "type": "array",
  "description": "可选公共定义文件,按列表顺序导入sources/signals/derived,再追加本文件声明;重名报错,仅允许一层。省略或空数组表示没有外部定义。"
}

$.properties.imports.items

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "^(?!.*://)(?!.*[\\*?\\[\\]])[\\s\\S]+$",
  "description": "明确的本地.json/.yaml/.yml文件路径;相对主配置目录解释,不支持URL或通配符。"
}

$.properties.overrides

json
{
  "type": "object",
  "additionalProperties": false,
  "description": "公共定义的显式局部覆盖;必须同时声明imports,未知目标与不允许字段会报错。"
}

$.properties.overrides.properties.sources

json
{
  "type": "object",
  "additionalProperties": {
    "type": "object"
  },
  "description": "按已有定义名称填写允许覆盖的字段;不能新增目标、改名或覆盖自由元数据。"
}

$.properties.overrides.properties.signals

json
{
  "type": "object",
  "additionalProperties": {
    "type": "object"
  },
  "description": "按已有定义名称填写允许覆盖的字段;不能新增目标、改名或覆盖自由元数据。"
}

$.properties.overrides.properties.derived

json
{
  "type": "object",
  "additionalProperties": {
    "type": "object"
  },
  "description": "按已有定义名称填写允许覆盖的字段;不能新增目标、改名或覆盖自由元数据。"
}
Chronaxis 用户手册 · 离线阅读