using System.ComponentModel;

namespace StandardScene.Signal.Model
{
    /// <summary>
    /// 握手点配置。对应老地图点上的 <c>SignalStop</c>（SignalType + SignalParams）。
    /// </summary>
    /// <remarks>
    /// 站点 fields 若已填写同名键，扫车优先用站点字段，本表该站点不再生效。
    /// SignalParams 按分号切分，各类型格式见 <see cref="StandardScene.Signal.Logic.SignalStopSpec"/>。
    /// 列表主键展示为「站点号 + 类型」，同一站点建议只配一条。
    /// </remarks>
    [Category("握手点数据管理")]
    [DisplayName("握手点配置列表")]
    public class HandshakePointModel
    {
        /// <summary>地图站点号，与车 PositionId（siteID / GetLastSite）对应。</summary>
        [DisplayName("站点")]
        public int Sit { get; set; }

        /// <summary>
        /// 握手类型：<c>JGControl</c> 机构进出、
        /// <c>PointControl</c> 销钉升降、
        /// <c>TimedCharging</c> 定时充电、
        /// <c>RateFlowControl</c> 区域限流。
        /// 其它字符串会每 10s 打一次「未找到业务模块」日志。
        /// </summary>
        [DisplayName("信号类型")]
        public string SignalType { get; set; } = "JGControl";

        /// <summary>
        /// 类型参数。示例：
        /// JGControl <c>上线机构1;RequestIn</c> / <c>上线机构1;Arrived</c> / 第三段限流 <c>缓存区-A-2-60,61</c>；
        /// PointControl <c>UP1;下线机构1</c>；
        /// TimedCharging <c>300;95;20</c>；
        /// RateFlowControl <c>缓存区;A;2;60,61,62</c>。
        /// </summary>
        [DisplayName("信号参数")]
        public string SignalParams { get; set; } = "";
    }
}
