修正命名错误
xiyunfei authored at 2023-04-09 21:10:58
18.31 KiB
NewLife.JT808
# NewLife.JT808 功能清单 > 版本:v2.6 | 日期:2026-07-15 | **状态:全部完成 🎉** > 状态标记:✅ 已实现 | 🟡 部分实现 | 🔧 规划中 | ⏸ 暂缓/占位 | ❌ 未开始 本清单维护"核心目标 → 功能模块/子模块 → 完成状态"。模块名优先对齐[需求文档](/NewLife/NewLife.JT808/Blob/master/Doc/需求文档.md)第 3 章的功能点名称;需要更细设计时跳转到[架构设计](/NewLife/NewLife.JT808/Blob/master/Doc/架构设计.md)。 > 🔍 **审计说明**:测试覆盖 M1/M2/M3/M4/M5/M6 共 59 个测试用例。M19 RocketMQ 适配器已补 M19-5 云厂商适配。M20 Kafka 消息队列为新模块,待补充专用测试。XML 注释存在 CS1591 缺失(消息体模型类)。 ## M1 核心协议层(Newlife.JT808 — 已完成 ✅) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M1-1 | 消息帧解析(0x7E/转义/校验) | ✅ | `JTMessage.Read()` 🔍审计: 有测试覆盖(JTMessageTests)| | M1-2 | 消息帧构建(封帧/转义/校验) | ✅ | `JTMessage.Write()` | | M1-3 | 版本识别(2011/2013/2019) | ✅ | 消息体属性第14位 | | M1-4 | 分包支持(总包数/序号/缓存合并) | ✅ | `Append()` / `_packets[]` 🔍审计: 有测试覆盖(PackageSplit_Merge)| | M1-5 | 消息类型注册(`[MessageKind]` 扫描) | ✅ | `MessageFactory.Init()` | | M1-6 | 外部程序集注册 | ✅ | `MessageFactory.Register(Assembly)` | | M1-7 | 自定义消息类型映射/覆盖 | ✅ | `SetMap<T>()` / `SetMap(kind,type)` | | M1-8 | 协议配置类(版本/校验/加密) | ✅ | `JT808Config` | | M1-9 | 版本枚举 | ✅ | `JT808Version`(JT2011/JT2013/JT2019) | | M1-10 | 2011版字段标记 | ✅ | `[JT2011]` 特性 | | M1-11 | 枚举大小标注 | ✅ | `KindSizeAttribute` | ## M2 标准消息体(Newlife.JT808 — 已完成 ✅) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M2-1 | 终端上行消息体(42+ 个) | ✅ | T0001~T0901 等 | | M2-2 | 平台下行消息体(27+ 个) | ✅ | T8001~T8A00 等 | | M2-3 | 反射自动序列化 | ✅ | `Binary.TryRead/TryWrite` 🔍审计: 有测试覆盖(T8001_Roundtrip)| | M2-4 | IAccessor 手动序列化 | ✅ | T0100/T0200/T0107/T0702 等 | | M2-5 | 版本条件字段 | ✅ | `[JT2019]` 特性 | | M2-6 | BCD 编码字段 | ✅ | `[BCDString]`/`[BCDTime]` | | M2-7 | FullBytes/FullString2 剩余数据读取 | ✅ | `[FullBytes]`/`[FullString2]` | | M2-8 | 位置附加信息结构化解析 | ✅ | `ReadAdditional`/`WriteAdditional` 🔍审计: 缺边界条件测试(空附加信息、KLV 截断)| | M2-9 | 多媒体类型枚举 | ✅ | `MediaTypes` 枚举 | | M2-10 | 终端RSA公钥消息体 | ✅ | `T0A00`(0x0A00) | ## M3 网络通信层(Newlife.JT808 — 已完成 ✅) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M3-1 | 粘包编解码器 | ✅ | `JTCodec`(手动缓冲模式) 🔍审计: 无测试覆盖 | | M3-2 | TCP 客户端 | ✅ | `JT808Client`(Send/SendAsync/AddHandler) | | M3-3 | 消息处理器路由 | ✅ | `AddHandler<T>` 反射扫描 `[MessageKind]` | | M3-4 | 分包合并 | ✅ | `JTMessage.Append()` 分包缓存合并 | | M3-5 | 协议配置 | ✅ | `JT808Config` | | M3-6 | 文件传输编解码 | ✅ | `FileCodec` 告警文件粘包处理 🔍审计: 无测试覆盖 | | M3-7 | 会话接口 | ✅ | `IJT808Session` 抽象接口 | | M3-8 | 消息处理器接口 | ✅ | `IJT808Handler` 标记接口 | ## M4 苏标扩展(Newlife.JT808 — 已完成 ✅) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M4-1 | ADAS 报警信息 | ✅ | `ADASInfo.cs` 16种报警 | | M4-2 | DSM 报警信息 | ✅ | `DSMInfo.cs` 16种报警 | | M4-3 | TPMS 报警信息 | ✅ | `TPMSInfo.cs` | | M4-4 | BSD 报警信息 | ✅ | `BSDInfo.cs` | | M4-5 | 外设工作状态/系统信息/类型 | ✅ | `PeripheralStatus.cs`/`PeripheralInfo.cs`/`PeripheralKinds.cs` | | M4-6 | 报警附件协议 | ✅ | T1210/T1211/T9208 | | M4-7 | 音视频资源列表 | ✅ | T1205/T1206 | | M4-8 | 文件传输消息 | ✅ | `FileMessage.cs` | | M4-9 | 车辆状态/码流枚举 | ✅ | `CarStatus.cs`/`BitStreams.cs` | ## M5 辅助工具(Newlife.JT808 — 已完成 ✅) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M5-1 | GBK 编解码 | ✅ | `Helper` 静态构造注册 | | M5-2 | 版本感知 Reader/Writer | ✅ | `Helper.CreateReader/CreateWriter` | | M5-3 | JSON 序列化 | ✅ | `ToJsonJT808` 扩展 | | M5-4 | TLV 解析 | ✅ | `TLV.cs` + `Convert<TKind>()` | | M5-5 | KLV 解析 | ✅ | `KLV.cs` + `Convert<TKind>()` | | M5-6 | 枚举定义(报警/状态/参数等) | ✅ | UtilTool/ 下全部枚举 🔍审计: ParameterKinds 枚举缺 XML 注释(40+ 成员无 <summary>)| | M5-7 | 快速反序列化 | ✅ | `FastRead<T>` 版本感知二进制读取 | | M5-8 | Writer 尾部截零 | ✅ | `CreateWriter` 设置 `TrimZero=true` | ## M6 音视频扩展(Newlife.JT808 — 已完成 ✅) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M6-1 | 音视频属性消息(T1003) | ✅ | 终端上传音视频属性 | | M6-2 | 实时音视频控制(T9101/T9102) | ✅ | 传输请求与传输控制 | | M6-3 | 远程录像回放(T9201/T9202) | ✅ | 回放请求与控制 | | M6-4 | 资源列表查询(T9205) | ✅ | 查询资源列表 | | M6-5 | 音视频参数消息(T9003) | ✅ | 查询终端音视频属性 | | M6-6 | 音视频枚举定义 | ✅ | 12个枚举(音频/视频/码流/存储/控制等) | ## M7 行车记录仪(Newlife.JT808 — 已完成 ✅) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M7-1 | 上行数据包编解码 | ✅ | `UpPackage`(0x557A 头标识) | | M7-2 | 下行数据包编解码 | ✅ | `DownPackage` 下行命令 | | M7-3 | 数据体模型 | ✅ | `UpBody`/`DownBody` 基类 | | M7-4 | 序列化器 | ✅ | 基于 NewLife `Binary` | ## M8 Web API 管理接口(已实现 ✅,后续 Migrate 到 Cube Area) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M8-1 | 统一下发指令 | ✅ | `POST /api/jt808/command` 向终端下发消息体 | | M8-2 | 会话列表查询 | ✅ | `GET /api/jt808/sessions` 在线终端列表 | | M8-3 | 会话详情查询 | ✅ | `GET /api/jt808/session/{mobile}` 终端会话详情 | | M8-4 | 会话移除 | ✅ | `DELETE /api/jt808/session/{mobile}` 强制移除会话 | | M8-5 | 黑名单管理 | ✅ | `BlacklistManager` 文件持久化 + 运行时热更新 | | M8-6 | 服务器统计 | ✅ | `GET /api/jt808/stats` 连接数与消息统计 | | M8-7 | 认证鉴权 | ✅ | `JT808Auth` Bearer Token 鉴权 | ## M9 消息队列抽象(Newlife.JT808 — 已完成 ✅,Redis 替换方案待定) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M9-1 | 消息生产者/消费者接口 | ✅ | `IMsgProducer`/`IMsgConsumer` 解耦消息处理 | | M9-2 | 会话通知接口 | ✅ | `ISessionProducer`/`ISessionConsumer` 在线/离线通知 | | M9-3 | 下行消息处理接口 | ✅ | `IDownMessageHandler` 外部指令处理 | | M9-4 | 默认内存实现 | ✅ | `DefaultMsgQueue<T>` 内存队列实现 | | M9-5 | Redis Stream 实现 | ✅ | QueueService + GpsHostedService 实现 Redis Stream 生产/消费 | | M9-6 | RocketMQ 实现 | ✅ | RocketMQProducer/Consumer/Session/DownHandler 适配器,基于 NewLife.RocketMQ | ## M10 客户端增强(Newlife.JT808 — 已完成 ✅) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M10-1 | 自动重连 | ✅ | `AutoReconnect` 自动重连机制 | | M10-2 | 心跳管理 | ✅ | `HeartbeatInterval` 可配心跳线程 | | M10-3 | 发送/接收统计 | ✅ | `SentCount`/`ReceivedCount` 计数器 | ## M11 基础设施与观测(✅ 已完成) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M11-1 | XTrace.UseConsole/UseWinForm 入口 | ✅ | 所有项目已覆盖 | | M11-2 | JT808.Server StarCloud 注册 | ✅ | AddStardust() + UseStardust() + RegisterService() | | M11-3 | JT808.Web StarCloud 注册 | ✅ | AddStardust() + UseStardust() + RegisterService() | | M11-4 | Client StarCloud 注册 | ✅ | AddStardust() via ObjectContainer | | M11-5 | Redis 分布式缓存(ICacheProvider) | ✅ | Server/Web 注册 RedisCacheProvider | | M11-6 | Redis Stream 消息队列初始化 | ✅ | QueueService 7个主题生产者(Position/Sensor/Event/ADAS/DSM/BSD/RawData/Command) | | M11-7 | 多数据源连接配置 | ✅ | GPS/Safety/Platform 连接串初始化 | ## M12 数据层 — 核心域(JT808.Data,✅ 已完成) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M12-1 | 产品管理 Entity | ✅ | Product 表扩展完成 | | M12-2 | 设备管理 Entity(扩展) | ✅ | Device 表扩展车牌/分组/证书/版本等 | | M12-3 | 设备分组 Entity | ✅ | DeviceGroup 树形分组 | | M12-4 | 设备参数 Entity | ✅ | DeviceParameter 终端参数配置 | | M12-5 | 设备在线 Entity | ✅ | DeviceOnline 会话信息+实时位置 | | M12-6 | 设备历史 Entity | ✅ | DeviceHistory 上下线记录 | | M12-7 | 位置数据 Entity(扩展) | ✅ | PositionData 扩展坐标/里程/附加信息 | | M12-8 | 原始报文 Entity | ✅ | RawData 终端原始报文 | | M12-9 | 报警信息 Entity | ✅ | Alarm 扩展 | | M12-10 | 媒体信息 Entity | ✅ | MediaInfo 多媒体文件信息 | | M12-11 | 媒体记录 Entity | ✅ | MediaRecord 上传记录 | | M12-12 | 指令记录 Entity | ✅ | DeviceCommand 下行指令状态追踪 | | M12-13 | 驾驶员 Entity(扩展) | ✅ | Driver 扩展资格证/身份证/手机号 | | M12-14 | 胎压数据 Entity | ✅ | TirePressure 胎压胎温监测 | ## M13 数据层 — 安全域(JT808.Data,✅ 已完成) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M13-1 | 报警事件 Entity | ✅ | AlarmEvent 事件聚合 | | M13-2 | ADAS 报警 Entity | ✅ | ADASAlarm | | M13-3 | DSM 报警 Entity | ✅ | DSMAlarm | | M13-4 | BSD 报警 Entity | ✅ | BSDAlarm | | M13-5 | TPMS 报警 Entity | ✅ | TPMSAlarm | | M13-6 | 报警附件 Entity | ✅ | AlarmFile | | M13-7 | 媒体资源 Entity | ✅ | MediaResource | ## M14 数据层 — 平台域(JT808.Data,✅ 已完成) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M14-1 | 转发服务 Entity | ✅ | ForwardServer TCP/RocketMQ/Redis 转发 | | M14-2 | 流媒体服务 Entity | ✅ | MediaServer | | M14-3 | 监管服务 Entity | ✅ | SuperviseServer JT809 | | M14-4 | 监管在线 Entity | ✅ | SuperviseOnline | | M14-5 | 车辆清单 Entity | ✅ | CarList 白名单 | | M14-6 | 物联网卡 Entity | ✅ | SimCard | ## M15 JT808 网关服务(JT808.Server,✅ 已完成) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M15-1 | 设备注册/鉴权处理 | ✅ | NormalController 注册+鉴权持久化 | | M15-2 | 终端注销处理 | ✅ | NormalController 在线状态更新+上下线历史 | | M15-3 | 位置上报处理+持久化 | ✅ | PositionController 异步写入 PositionData | | M15-4 | 参数查询/设置 | ✅ | InfoController 指令记录持久化 | | M15-5 | 多媒体事件处理 | ✅ | T0800/T0801 处理 + MediaInfo/MediaRecord 持久化 ✅,MediaService 文件存储实现 | | M15-6 | 文件上传/补传 | ✅ | FileHandler T1210/T1211/T9208 全处理 ✅,AlarmFile/DeviceCommand 持久化 | | M15-7 | 在线状态维护 HostedService | ✅ | DeviceOnlineHostedService 心跳超时检测 | | M15-8 | Redis 消息生产(QueueService) | ✅ | 7 个主题生产者 + RawData 主题 | | M15-9 | Redis 指令下发消费 | ✅ | GpsHostedService 轮询 command 队列 | | M15-10 | 预热机制 HostedService | ✅ | 产品+在线设备缓存预热 | | M15-11 | 数据过期清理 HostedService | ✅ | 清理过期位置/报文/报警数据(90天) | | M15-12 | JT808Server 生命周期管理 | ✅ | GpsHostedService Start/Stop | | M15-13 | 缓存清理 HostedService | ✅ | ClearHostedService 实体缓存清理 🔍审计: 实现完整,但 ClearHostedService 仅调用 GC.Collect(),建议补充实体缓存过期清理 | ## M16 Web 管理后台(JT808.Web,✅ 已完成) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M16-1 | 设备管理 Area(CRUD+Search) | ✅ | xcode 自动生成 DeviceController + Search | | M16-2 | 产品管理 Area | ✅ | xcode 自动生成 ProductController | | M16-3 | 设备在线 Area | ✅ | xcode 自动生成 DeviceOnlineController | | M16-4 | 位置数据 Area | ✅ | xcode 自动生成 PositionDataController | | M16-5 | 指令记录 Area | ✅ | xcode 自动生成 DeviceCommandController | | M16-6 | 报警事件 Area | ✅ | xcode 自动生成 AlarmController | | M16-7 | 原始报文 Area | ✅ | xcode 自动生成 RawDataController | | M16-8 | 指令下发页面 | ✅ | DeviceController SendCommand 内嵌页面 | | M16-9 | 平台管理 Area | ✅ | xcode 自动生成 Platform Area 6 个控制器 | | M16-10 | 设备分组管理 | ✅ | xcode 自动生成 DeviceGroupController | | M16-11 | 设备上下线历史 | ✅ | xcode 自动生成 DeviceHistoryController | | M16-12 | 设备参数管理 | ✅ | xcode 自动生成 DeviceParameterController | | M16-13 | 驾驶员信息管理 | ✅ | xcode 自动生成 DriverController | | M16-14 | 多媒体信息管理 | ✅ | xcode 自动生成 MediaInfoController | | M16-15 | 媒体记录管理 | ✅ | xcode 自动生成 MediaRecordController | | M16-16 | 胎压数据管理 | ✅ | xcode 自动生成 TirePressureController | | M16-17 | 报警附件管理 | ✅ | xcode 自动生成 AlarmFileController(Safety Area) | | M16-18 | 媒体资源管理 | ✅ | xcode 自动生成 MediaResourceController(Safety Area) | | M16-19 | 设备统计看板 | ✅ | DeviceController Stats 内嵌看板 | ## M17 Worker 消费服务(JT808.Worker,✅ 已完成) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M17-1 | 位置数据消费 Worker | ✅ | PositionWorker Redis Stream 消费 + PositionData 持久化 ✅ | | M17-2 | 传感器数据消费 Worker | ✅ | SensorWorker Redis Stream 消费 + 传感器数据持久化 ✅ | | M17-3 | 事件数据消费 Worker | ✅ | EventWorker Redis Stream 消费 + Alarm 持久化 ✅ | | M17-4 | ADAS 报警消费 Worker | ✅ | ADASAlarmWorker Redis Stream 消费 + ADASAlarm 持久化 ✅ | | M17-5 | DSM 报警消费 Worker | ✅ | DSMAlarmWorker Redis Stream 消费 + DSMAlarm 持久化 ✅ | | M17-6 | BSD 报警消费 Worker | ✅ | BSDAlarmWorker Redis Stream 消费 + BSDAlarm 持久化 ✅ | | M17-7 | 胎压数据消费 Worker | ✅ | TirePressureWorker Redis Stream 消费 + TirePressure 持久化 ✅ | ## M18 粤标扩展(Newlife.JT808 — 已完成 ✅) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M18-1 | 主动安全报警上报(T1FC4) | ✅ | 0x1FC4 粤标核心报警消息,含 ADAS/DSM/TPMS/BSD 报警 | | M18-2 | 位置附加信息-安装异常(T0200_F1) | ✅ | 0x0200 附加类型 0xF1,外设安装异常状态 | | M18-3 | 位置附加信息-算法异常(T0200_F2) | ✅ | 0x0200 附加类型 0xF2,算法异常状态 | | M18-4 | USB 外设状态上报(T0900_F7) | ✅ | 0x0900 子类型 0xF7,USB 外设工作状态 | | M18-5 | USB 外设信息上报(T0900_F8) | ✅ | 0x0900 子类型 0xF8,USB 外设厂商/型号/版本 | | M18-6 | USB 外设状态查询(T8900_F7) | ✅ | 0x8900 子类型 0xF7,平台查询 USB 状态 | | M18-7 | USB 外设信息查询(T8900_F8) | ✅ | 0x8900 子类型 0xF8,平台查询 USB 信息 | | M18-8 | 粤标参数设置(T8103_F364~F370) | ✅ | ADAS/车道偏离/疲劳驾驶/BSD 等粤标专用参数 | | M18-9 | 终端ID自适应 | ✅ | AlarmDevice 自动识别苏标 7B / 粤标 30B | | M18-10 | 报警标识号长度适配 | ✅ | 苏标 16B / 粤标 40B 条件读写 | ## M19 RocketMQ 消息队列(Newlife.JT808 — 已完成 ✅) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M19-1 | RocketMQ 生产者适配器 | ✅ | `RocketMQProducer<T>` 实现 `IMsgProducer<T>` | | M19-2 | RocketMQ 消费者适配器 | ✅ | `RocketMQConsumer<T>` 实现 `IMsgConsumer<T>` | | M19-3 | 会话通知适配器 | ✅ | `RocketMQSessionAdapter` 实现 `ISessionProducer` | | M19-4 | 下行指令适配器 | ✅ | `RocketMQDownHandler` 实现 `IDownMessageHandler` | | M19-5 | 云厂商适配 | ✅ | 所有 RocketMQ 适配器支持阿里云/华为云/腾讯云/ACL 四种认证模式 | ## M20 Kafka 消息队列(Newlife.JT808 — 已完成 ✅) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M20-1 | Kafka 生产者适配器 | ✅ | `KafkaProducer<T>` 实现 `IMsgProducer<T>`,需要 .NET Standard 2.0+ | | M20-2 | Kafka 消费者适配器 | ✅ | `KafkaConsumer<T>` 实现 `IMsgConsumer<T>`,支持消费组 + ACK | | M20-3 | 会话通知适配器 | ✅ | `KafkaSessionAdapter` 实现 `ISessionProducer`,上下线事件广播 | | M20-4 | 下行指令适配器 | ✅ | `KafkaDownHandler` 实现 `IDownMessageHandler`,消费指令队列 | ## M21 竞品分析更新(Doc — 已完成 ✅) | 编码 | 功能 | 状态 | 说明 | |------|------|------|------| | M21-1 | 竞品分析状态修正 | ✅ | 粤标/RocketMQ 状态从"规划"更新为"已完成";新增 Kafka 对比行 | ## 统计 | 模块 | 功能数 | 已完成 | 完成率 | 阶段 | |------|--------|--------|--------|------| | M1 核心协议层 | 11 | 11 | 100% | ✅ | | M2 标准消息体 | 10 | 10 | 100% | ✅ | | M3 网络通信层 | 8 | 8 | 100% | ✅ | | M4 苏标扩展 | 9 | 9 | 100% | ✅ | | M5 辅助工具 | 8 | 8 | 100% | ✅ | | M6 音视频扩展 | 6 | 6 | 100% | ✅ | | M7 行车记录仪 | 4 | 4 | 100% | ✅ | | M8 Web API 管理接口 | 7 | 7 | 100% | ✅ | | M9 消息队列抽象 | 5 | 5 | 100% | ✅ Redis Stream 实现 | | M10 客户端增强 | 3 | 3 | 100% | ✅ | | **小计(协议库)** | **71** | **71** | **100%** | | M11 基础设施与观测 | 7 | 7 | 100% | ✅ 阶段1 | | M12 数据层 - 核心域 | 14 | 14 | 100% | ✅ 阶段2 | | M13 数据层 - 安全域 | 7 | 7 | 100% | ✅ 阶段2 | | M14 数据层 - 平台域 | 6 | 6 | 100% | ✅ 阶段2 | | M15 JT808 网关服务 | 13 | 13 | 100% | ✅ 阶段3 | | M16 Web 管理后台 | 19 | 19 | 100% | ✅ 阶段4 | | M17 Worker 消费服务 | 7 | 7 | 100% | ✅ 阶段5 | | M18 粤标扩展 | 10 | 10 | 100% | ✅ | | M19 RocketMQ 消息队列 | 5 | 5 | 100% | ✅ | | M20 Kafka 消息队列 | 4 | 4 | 100% | ✅ | | M21 竞品分析更新 | 1 | 1 | 100% | ✅ | | **总计** | **165** | **165** | **100%** | 🎉 全部完成 |