12451
8eb2b7c68c
docs(protocol): hex 字面量字母全部大写(含 7 处"建议小写"的规范表述订正)
## 用户要求
「tcp 文档里的 hex 部分字母全部要大写」。
## 改法(⛔ 不是全局替换 a-f → A-F)
全局替换会误伤英文正文(face / define 里都有 a-f)。先普查再定向改,
只处理**明确是 hex 字面量**的三种形态,且仅当确实含小写时才改写:
| 形态 | 改前普查 | 改写处数 |
|---|---|---|
| JSON 字符串 hex `"828255152c01f40143"` | 95 处 / 16 种,含小写 6 种 | 24 |
| 反引号 hex `` `3957b959` `` | 47 处 / 30 种,含小写 7 种 | 11 |
| `0x` 前缀 | 21 处 / 9 种,**已全大写** | 0 |
共 **35 处**。危险面(2 位字母数字,可能误伤正文)普查为 **0**;
`864720562557021`(IMEI) / `8986012520983901841`(ICCID) 纯数字,不受影响。
## 大小写安全性(改前已核实)
平台侧解析全部走 `u8::from_str_radix(s, 16)`,**大小写不敏感**:
- `report_worker.rs:838/860/1152/1270/2401`
- `routes/mod.rs:637`、`routes/cabinet_tree.rs:1086`
故文档改大写**不影响设备上报与平台解析**。
## 验证:逐行证明"只是大小写"
git diff 共 28 行改动(订正规范表述前),剥掉行首 +/- 后与原行
**逐行做大写比对,非大小写差异行数 = 0** —— 证明没有误伤任何内容。
## ⚠️ 机械替换破坏了一处对照性表述(已修)
原 L584 是**故意的大小写对照**:
> 平台解析**不区分大小写**(`0e10` 与 `0E10` 等价);**建议固件统一小写**
被机械替换后两边都成 `0E10`,对照失效。已改为:
> 平台解析**不区分大小写**(`0e10` 与 `0E10` 等价,本文示例统一用**大写**);**建议固件也统一用大写**
并复查全文档:无其它同类被破坏的对照。
## 顺带订正 7 处矛盾规范
文档里还有 7 处**规范性表述仍写"小写"**,与现在的全大写示例直接矛盾
(这是交付给固件的指令,不能留矛盾):
| 位置 | 原文 |
|---|---|
| `sign` 字段表 | 8 位小写十六进制签名 |
| 签名算法伪码 | hex = 小写十六进制字符串(64 字符) |
| 签名要求 | `sign` 为 8 位小写十六进制字符 |
| 固件接入自查项 | `status1`/`status2`(hex 2 位小写) |
| 常见错误表 | hex 字符串、固定 2 位小写 |
| 签名步骤 | 8 位小写十六进制 |
| C 代码注释 | SHA256(...) 的小写 hex |
统一改为"十六进制(本文示例用**大写**)"。`snake_case`、`err` 英文小写
与 hex 无关,未动。
## 复核
- 残留含小写的 hex 字面量:**1 处**,即上面故意保留的 `0e10` 对照示例;
- 全部目标值已到位(`828255152C01F40143` 8 处、`80825515180320012A` 3 处、
`80005F15180000012A` 3 处、`81026415540000012A` 5 处、`269C249D` 7 处、
`3957B959` 4 处、`012A0128` 2 处、`ABCD1234` 1 处)。
## 同批发布
官网移动端 canvas 防黑边兜底(`.stage canvas` 铺浅色背景)已发布并实测生效
(线上 HTML 含 `linear-gradient(155deg`)。GSAP 技能按用户要求**不装**;
表号按用户要求**不管**。