docs(任务规划): 通读补齐 UI 清单——叶数口径改对、通讯设置改「配置层已落地」、运行报告写死四数事实
先认一笔自己的错:上一笔我宣称「实测」得出未绑 21 叶,那是**探针错**——`ui_menu_tree.txt` 文件头自己写着「缩进
即层级」,我把 42 个**节点行**全当成叶子数了。按缩进重判(有更深缩进后继者即非叶子)后的真值是 **33 叶 / 节点
行 42 / 已绑 21 / 未绑 12**,而未绑 12 = 待做 7(通讯设置 1 + 记录 5 + 运行报告 1)+ §5 不做的 5 ⇒ 与分类表
7/3/2 逐项对得上。原文的 33 反而是对的,只有 16/17 陈旧;这条错口径与正确重算方法都写进了 §1,免得下一个人
再用错算法。
§2 与 §3 按已落地事实改写:
· **通讯设置**状态从「未开始」改成「配置层已落地,页面未开始」——`[comm]` 段与端口真源已在
`App/protocol/iec104/iec104_comm.{c,h}`,服务端口不再抄 `IEC104_SERV_PORT` 字面量,这
一项原本的第①条判据
已完成;还缺的是页面、「改后重启即生效」的真机判据、配置段数与键数上限核对。§3 数据源表同步。
· **运行报告**把四个数的事实写进完成判据,不给人留含糊空间:复位原因解析有但 **RCC 标志读后即清** ⇒ 需开机快照
驻留;上电次数**无现成计数器**,正源建议 RTC 芯片的用户 SRAM(电池保持、零 NAND 磨损),**文案禁写「终身
次数」**、写「自 RTC 电池周期起」;运行时长只有**本次开机内有**,跨开机累计口径**待用户裁定**;104 现有的量
全是控制量 ⇒ 需新增只读计数与 getter。落点 `App/util/boot_stats.{c,h}` 双端注册同笔,104 计数就近留
`iec104_serv.c` 不并进。
· §4 生成器入口统一走 `.venv`(并注明 gen_menu 本身只用标准库、字库链才依赖 fontTools ⇒ 指 font-regen
skill),
避免下一个人按裸 `python` 跑字库链踩解释器坑。
新增两条防越界的口径:§4 **时基口径未定,勿顺手统一**(面板与 8888 写本地钟面、104 时标写 UTC,后写者赢 ⇒
恒差 8 小时;裁定前不要动 RTC/epoch 语义,也不要把时钟页的「回读 RTC」判据改成按时区补偿,那等于替产品做掉
一个未定的决定);§5 增列「RTC 时基统一」并写明重开条件 = 用户裁定后作为跨模块变更单独立项。
README 同步同一口径(§1 首段与顺序表第 1 行)。
自查:**净室逐文件注入**(仓外 detached worktree,一次只放一份在飞文件)证明本笔两只规划文档对不可判定绝对数
是 **+0**(HEAD 基线 1,156 → 注入后仍 1,156);`check_doc_links.py --all` exit 0(195
文档)、两篇
`--sections-strict` 通过、`check_ids --strict` exit 0;文件 noBOM / LF / U+FFFD=
0 / 结尾换行齐。本笔零代码。
另注:同一轮净室测出当前绝对数 1,156 → 1,161 的 +5 全部来自 `.dsh/skills/task-worktree/SKILL.m
d` 的新增段落
(作者另治,不在本笔、也不由我代改 skill 写域);`mem-budget` skill 为 +0。
This commit is contained in:
+2
-2
@@ -32,13 +32,13 @@
|
||||
|
||||
## 1. 当前执行:UI 补齐
|
||||
|
||||
菜单树按行内 `#page=` 实测:已绑 21 叶、未绑 21 叶(清单行合计 42)。未绑里 **7 叶纳入当前执行**
|
||||
菜单树共 33 叶(节点行合计 42):按行内 `#page=` 实测**已绑 21 叶、未绑 12 叶**。未绑里 **7 叶纳入当前执行**
|
||||
(通讯设置 1 + 记录 5 + 运行报告 1),另外 5 叶因缺少开入硬件、录波模块或 SNTP 产品定义而不做。
|
||||
装置维护 3 页与遥测死区/系数 2 页已于 2026-10-27 落地入库。唯一执行清单见 `UI补齐.md`。
|
||||
|
||||
| 顺序 | 要做的事 | 交付结果 |
|
||||
|---|---|---|
|
||||
| 1 | 通讯设置 | 新增 `[comm]` 配置段并接入 104 |
|
||||
| 1 | 通讯设置 | `[comm]` 段与端口真源已在库,还差页面与「重启生效」真机判据 |
|
||||
| 2 | 记录 5 页 | 事故、操作、保护告警、保护启动、遥控记录有写入方并可查看 |
|
||||
| 3 | 运行报告 | 上电次数、运行时长、复位原因、104 统计 |
|
||||
|
||||
|
||||
+16
-8
@@ -5,9 +5,11 @@
|
||||
|
||||
## 1. 目标与范围
|
||||
|
||||
菜单树按行内 `#page=` 标记实测:**已绑 21 叶、未绑 21 叶**(清单行合计 42);
|
||||
页面映射表 `UI_PAGE_MAP_COUNT` = 21。上一版写的 33/16/17 是`装置维护 3 页`与`遥测死区/系数 2 页`
|
||||
落地前的数,已按 05:1x 工作区重测覆盖。
|
||||
菜单树共 **33 叶**(节点行合计 42,缩进即层级):按行内 `#page=` 实测**已绑 21 叶、未绑 12 叶**,
|
||||
页面映射表 `UI_PAGE_MAP_COUNT` = 21(与已绑叶数一致)。未绑 12 叶 = 下方第 1~3 项的 **7 叶**
|
||||
+ §5 明确不做的 **5 叶**(遥信 3 / 手动录波 1 / SNTP 1),与分类表逐项对得上。
|
||||
⚠ 本节曾两次写错口径:16/17 是装置维护与遥测两页落地前的陈旧数,而「未绑 21」是把 42 个**节点行**
|
||||
当成叶子数——重算方法见本节末,按缩进判定叶子(有更深缩进后继者即非叶子)。
|
||||
|
||||
| 分类 | 数量 | 当前怎么处理 |
|
||||
|---|---:|---|
|
||||
@@ -31,9 +33,9 @@
|
||||
|
||||
| 顺序 | 任务 | 完成判据 | 主要写范围 | 状态 |
|
||||
|---|---|---|---|---|
|
||||
| **1** | **通讯设置** | 新建 `[comm]` 段承载公共地址与端口;修改并重启后连接与公共地址生效;核对配置段数和键数上限(主站地址白名单本卡不做,见 §5) | `App/cfg/`、`App/protocol/iec104/`、`Drivers/BSP/UI/` | 未开始 |
|
||||
| **1** | **通讯设置** | 配置层已落地(`[comm]` 段与端口真源在 `App/protocol/iec104/iec104_comm.{c,h}`,服务端口不再抄 `IEC104_SERV_PORT` 字面量);**还缺页面**与「改后重启即生效」的真机判据、配置段数与键数上限核对(主站地址白名单不做,见 §5) | `App/protocol/iec104/`、`Drivers/BSP/UI/` | 配置层已落地,页面未开始 |
|
||||
| **2** | **记录 5 页** | 事故、操作、保护告警、保护启动、遥控各有一个写入点和记录类型;可翻最近 20 条;空记录明确显示“无记录”;共用 reader | `App/log/`、`Drivers/BSP/UI/` | 未开始 |
|
||||
| **3** | **运行报告** | 展示上电次数、运行时长、复位原因、104 统计;复用 info 通道的已有数据;新计数器明确“掉电保持”或“本次运行”,不得含糊 | `App/log/` 或 `App/app/`、`Drivers/BSP/UI/` | 未开始 |
|
||||
| **3** | **运行报告** | 四个数的现成度已查实,判据按此写死:复位原因**解析有但 RCC 标志读后即清** ⇒ 需开机快照驻留;上电次数**无现成计数器** ⇒ 正源建议 SD2506 用户 SRAM(电池保持、零 NAND 磨损,文案写「自 RTC 电池周期起」,**禁写终身次数**);运行时长仅**本次开机内有** ⇒ 跨开机累计口径**待用户裁定**;104 统计现有量全是控制量 ⇒ 需新增只读计数与 getter。落点 `App/util/boot_stats.{c,h}`(双端注册同笔),104 计数就近留 `iec104_serv.c` 不并进 | `App/util/`、`App/protocol/iec104/`、`Drivers/BSP/UI/` | 未开始(口径待裁定) |
|
||||
|
||||
### 依赖关系
|
||||
|
||||
@@ -50,9 +52,9 @@
|
||||
|
||||
| 页面 | 现有数据源 | 还缺什么 |
|
||||
|---|---|---|
|
||||
| 通讯设置 | 网口配置保存范式可复用 | `[comm]` 段及 104 消费 |
|
||||
| 通讯设置 | 网口配置保存范式可复用;`[comm]` 段与端口真源已在库 | 页面与「重启生效」真机判据、段数键数上限核对 |
|
||||
| 记录 5 页 | SOE、自检、运行记录已有 reader 先例 | 五类写入方与记录类型 |
|
||||
| 运行报告 | `uptime_s`、复位原因已有 | 上电次数与 104 统计 |
|
||||
| 运行报告 | `uptime_s`(本次开机内)、复位原因解析(标志读后即清) | 上电次数正源、复位原因开机快照、104 只读计数、跨开机时长口径 |
|
||||
|
||||
---
|
||||
|
||||
@@ -60,7 +62,8 @@
|
||||
|
||||
1. 新增 `ui_page_xxx.c/.h`,优先复用现有组件。
|
||||
2. 在 `ui_menu_tree.txt` 对应叶子增加 ` #page=xxx`。
|
||||
3. 运行 `python tools/menu_gen/gen_menu.py`,检查生成物差异。
|
||||
3. 运行 `& '.venv\Scripts\python.exe' tools/menu_gen/gen_menu.py`,检查生成物差异(该脚本只用标准库,但入口统一走 `.venv`;
|
||||
新增文案后还要跑字库链,那条**依赖 fontTools** ⇒ 见 `font-regen` skill 与 `docs/环境与部署/本地工具路径环境变量方案.md`)。
|
||||
4. 新文案先过字符集提取和字库生成,不能显示方块。
|
||||
5. 加像素黄金用例与必要的主机单测。
|
||||
6. 涉及保存、重启、主站读回的项目,台架可用后统一补做实机判据并留证。
|
||||
@@ -68,6 +71,10 @@
|
||||
**单写者约束**:`ui_menu_tree.txt`、页面注册表、字库生成物不得由多个分支同时修改。
|
||||
`MDK-ARM/*.uvprojx` 的新源文件注册按双端注册规则处理。
|
||||
|
||||
**时基口径未定,勿顺手统一**:面板时钟页与 8888 对时把「本地钟面当 epoch」写入,而 104 `C_CS` 按 CP56Time2a 的
|
||||
UTC 写入,后写者赢 ⇒ 装置墙钟与主机本地时刻恒差 8 小时。用户裁定前**不要改动 RTC/epoch 语义**,也不要把
|
||||
时钟设置页的「回读 RTC」判据改成按某一时区补偿——那等于替产品做掉一个未定的决定。
|
||||
|
||||
**保护闭锁必须可见**:整定页可以修改定值,但当前产品在 UA/UN/IA 未标定时保护判据闭锁。
|
||||
页面应显示该状态,不能让用户误以为“修改定值后保护就会动作”。口径见
|
||||
`docs/任务规划/数据可信.md` §4.3。
|
||||
@@ -82,4 +89,5 @@
|
||||
| 手动录波 | 录波模块不存在,且工程量口径尚未完成实测闭环 | 故障录波独立立项 |
|
||||
| SNTP 设置 | 当前使用 8888 私有对时协议,SNTP 链路与产品口径均未建立 | SNTP 客户端立项 |
|
||||
| net 层与其他结构债 | 当前只做 UI,避免两条主线互相拖慢 | UI 当前清单完成后,按 README §2 切换 |
|
||||
| RTC 时基统一 | 两套写入口径并存(面板与 8888 写本地钟面、104 写 UTC),恒差 8 小时;统一任一侧都要动 104 上行语义或 UI 判据 | 用户裁定时基方向后,作为跨模块变更单独立项 |
|
||||
| 主站地址白名单 | CH395F 单连接 socket 上「拒绝即 close+重 listen」等于给扫描风暴开门,且该值现在没有任何既有消费点 | 有真实消费场景或多连接后端立项时再评 |
|
||||
|
||||
Reference in New Issue
Block a user