package com.lingniu.ingest.protocol.gb32960.codec;

import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion;

/**
 * Body parser 调用上下文：携带选 profile 时需要的三元组。
 *
 * <p>由 {@link Gb32960MessageDecoder} 在解析帧时构造（vin / version 来自帧字节，
 * platformAccount 由 handler 通过 channel attribute 传入）。
 *
 * @param version         协议版本（来自帧起始符）
 * @param vin             17 字节 VIN（trim 后），平台登入 0x05 等帧 VIN 全 0 时为空串
 * @param platformAccount 平台登入用户名；非平台对接场景为 null
 *
 * <p>广东燃料电池扩展等厂商字段通常不是靠 VIN 就能可靠判断，上游平台账号是更稳定的路由线索。
 */
public record Gb32960ParserContext(ProtocolVersion version, String vin, String platformAccount) {

    /** 占位上下文：版本不可缺，vin/account 允许为 null，便于内部构造和单测。 */
    public static Gb32960ParserContext minimal(ProtocolVersion version) {
        return new Gb32960ParserContext(version, null, null);
    }
}
