From d7762b339d1d133701fd59a924506478e3dc8860 Mon Sep 17 00:00:00 2001 From: Wanderingss <1624155937@qq.com> Date: Tue, 27 Oct 2026 07:32:05 +0800 Subject: [PATCH] =?UTF-8?q?docs(=E4=BB=BB=E5=8A=A1=E8=A7=84=E5=88=92):=20?= =?UTF-8?q?=E9=80=9A=E8=AF=BB=E8=A1=A5=E9=BD=90=20UI=20=E6=B8=85=E5=8D=95?= =?UTF-8?q?=E2=80=94=E2=80=94=E5=8F=B6=E6=95=B0=E5=8F=A3=E5=BE=84=E6=94=B9?= =?UTF-8?q?=E5=AF=B9=E3=80=81=E9=80=9A=E8=AE=AF=E8=AE=BE=E7=BD=AE=E6=94=B9?= =?UTF-8?q?=E3=80=8C=E9=85=8D=E7=BD=AE=E5=B1=82=E5=B7=B2=E8=90=BD=E5=9C=B0?= =?UTF-8?q?=E3=80=8D=E3=80=81=E8=BF=90=E8=A1=8C=E6=8A=A5=E5=91=8A=E5=86=99?= =?UTF-8?q?=E6=AD=BB=E5=9B=9B=E6=95=B0=E4=BA=8B=E5=AE=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 先认一笔自己的错:上一笔我宣称「实测」得出未绑 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。 --- docs/任务规划/README.md | 4 ++-- docs/任务规划/UI补齐.md | 24 ++++++++++++++++-------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/docs/任务规划/README.md b/docs/任务规划/README.md index 8844b0a4..744e3403 100644 --- a/docs/任务规划/README.md +++ b/docs/任务规划/README.md @@ -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 统计 | diff --git a/docs/任务规划/UI补齐.md b/docs/任务规划/UI补齐.md index 54418fba..757abba6 100644 --- a/docs/任务规划/UI补齐.md +++ b/docs/任务规划/UI补齐.md @@ -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」等于给扫描风暴开门,且该值现在没有任何既有消费点 | 有真实消费场景或多连接后端立项时再评 |