Skip to content

Latest commit

 

History

History
99 lines (67 loc) · 3.18 KB

File metadata and controls

99 lines (67 loc) · 3.18 KB

字段 40600 — 状态附加 Protobuf

属性
字段编号 40600
类型 BLOB
所属表 group_msg_table
置信度 ✅ 高(结构)/ ❓ 低(业务语义)

含义

40600 是结构化的状态/附加信息 Protobuf。当前数据可以稳定确认其 wire 结构,但不能仅凭该字段确定具体业务动作。

全量统计

基于 540,018 行群消息:

  • NULL:5,019 行;
  • 非 NULL:534,999 行;
  • wire parser 成功:534,999 行;
  • bbpb 成功:534,999 行;
  • group 专用超集强类型成功:534,999 行;
  • 非 NULL 强类型成功率:100%

Protobuf 结构

统一定义和解析入口位于:

  • msgdb/proto/group_40600.proto
  • msgdb/proto/group_40600_pb2.py
  • msgdb/proto/group_40600_parser.py

外层结构:

message StatusBody {
  StatusMessage content = 40600;
}

message StatusMessage {
  int64 status_timestamp = 42211;
  int64 marker = 42261;
}

结构分布

BLOB 长度 行数 主要结构
8 字节 530,872 42261 单字段,值通常为 0
16 字节 4,045 42211 + 42261
12 字节 73 42211 + 42261 的另一种长度组合
21/24/29/32/33/88 字节 少量 特殊消息类型的扩展结构

固定 8 字节内容对应一个只含 42261 的 Protobuf 消息,固定值并不否定其 Protobuf 身份。

业务边界

4221142261 目前只按结构命名。它们会出现在普通消息、回复、撤回、转发和系统消息等多个外层类型中,因此不能单独解释为回复、撤回或版本标记。需要结合 4001140012 和其他消息字段进行后续研究。

与消息类型的关系

40600 非 NULL 覆盖多种消息类型,主要包括:

  • 40011=2:普通消息和媒体消息;
  • 40011=9:回复消息;
  • 40011=5:系统/撤回/特殊消息;
  • 40011=8/11:合并转发;
  • 40011=17:系统通知;
  • 其他文件、视频和语音类型。

16 字节结构高度集中于 40011=5,40012=4,但这只能说明结构与该消息分支相关,不能直接证明其就是撤回标志。

当前字段解释

字段号 类型 当前解释 置信度
42211 int64 时间或操作时间字段;具体事件未定 ❓ 低
42261 int64 标记/状态字段,通常为 0 ❓ 低

解码策略

group_40600_parser.py 优先使用 Body 强类型解析;失败时回退到 msgdb/proto/wire.py,保留原始 wire 字段。

解析器优先保证结构解码,不将 4221142261 强行解释为撤回、回复或版本号。

结论

40600 可以确认是 Protobuf wire 数据,group 专用 schema 对非 NULL 数据的强类型覆盖率为 100%

但字段的业务语义仍保持低置信度,尤其是固定 8 字节标记以及 40011=5,40012=4 分支中的时间字段。

使用边界

  • 读取时保留 4221142261 的原始值和 wire 类型。

  • 不将固定 8 字节结构直接命名为撤回、回复或版本标志。

  • 解码超集:msgdb/proto/group_40600.proto

  • 解码入口:msgdb/proto/group_40600_parser.py