当前配置
发布
发布 = 读车型库 → 服务端签名 → 写发布树(recipes/ + index.json + keys/)→ 立刻自检;
并自动把发布树上仍完好的历史版本并回清单(版本回滚要用)。
⚠ 「写回车型库」建议勾上:只在内存里签会让同一路径的字节漂移(ECDSA 每次签出的值都不同),与"路径不可变"冲突。
新建 / 编辑车型
车型库
| 编号 | 车型 | 版本 | 状态 | 签名 | 推荐版本(App 装的就是它) | 规则/白名单 |
|---|
「推荐版本」= 发布清单里的 latest。版本回滚就是把它指回一个旧版本 ——
旧配方包一直在发布树上(路径不可变),所以回滚不用重新签名,但要再发布一次才在清单里生效。
概览
主键是盒子自己的芯片 ID(固件 hwinfo_get_device_id 的 6 字节,广播里也带着它),
所以不贴标也能唯一识别;SN 只是可选的厂内序列号。
未登记设备
这些设备上报过但台账里没有 —— 刻意不自动入账,否则谁往上报一遍就能把台账刷爆。确认是自家设备后再认领。
| 设备 ID | 短 ID | 广播名 | 上报车型 | 固件 | 首次 | 最近 | 次数 | 来源 IP |
|---|
台账
| 设备 ID | 短 ID | SN | 车型 | 固件 | 配方版本 | 状态 | 片区 | 上次在线 |
|---|
「上次在线」靠设备上报(POST /api/devices/report,匿名)刷新;
此刻 App 侧还没做上报,所以目前只能靠录入 / 导入。二维码内容 CANLIN:<设备ID>。
关键数字
按车型(装机量)
按固件版本(决定何时弃用旧版)
按状态
按片区
账号
角色:研发 全权 | 运营 车型与台账的录入/签名/发布 | 售后 只读,且只看自己片区(服务端过滤)。
口令用 PBKDF2-SHA256(21 万次迭代)存哈希,不存明文。建了第一个账号后,启动参数 --password 就不再作为登录凭据。
| 用户名 | 角色 | 可见片区 | 备注 | 最近登录 | 状态 |
|---|
操作审计
(JSON Lines,超 2 MB 轮转为 .1)
| 时间 | 用户 | 角色 | 动作 | 对象 | 结果 | 来源 | 详情 |
|---|