v2-on-ui #4

Merged
wandering1 merged 497 commits from v2-on-ui into master 2026-11-02 04:07:13 +08:00
8 changed files with 1089 additions and 100 deletions
Showing only changes of commit 6fb9cd3a93 - Show all commits
+67 -7
View File
@@ -45,8 +45,8 @@
},
"N-30": {
"to": null,
"status": "retired-to-phrase",
"note": "2026-10-26 方案 B:登记簿 # 列改短语「relisten 沉降段原语化受阻」;原 resolved-in-place 条目由本条取代;旧号不得再指"
"status": "resolved-in-place",
"note": "sock_reset 原语收口受阻项:登记簿行仍在(2026-10-14 建档),编号规范 §4.1 误记为已销项 → 以登记簿为准"
},
"S-3": {
"to": null,
@@ -170,11 +170,6 @@
"status": "void",
"note": "栈余量收口条目已随 M1 台架闭环销项(2026-10-12),登记簿行已删,结论在 docs/内存管理/RAM使用分析与优化方案.md §4.0.6(原 §1.4,2026-10-22 层级编号)"
},
"N-30": {
"to": null,
"status": "resolved-in-place",
"note": "sock_reset 原语收口受阻项:登记簿行仍在(2026-10-14 建档),编号规范 §4.1 误记为已销项 → 以登记簿为准"
},
"Trap 19": [
{
"to": null,
@@ -3322,6 +3317,71 @@
"to": null,
"status": "void",
"note": "审查报告并轨号(报告 N-14),2026-10-25 随其条目 N-22 销项一并作废(映射记录见 docs/编号规范.md §4;修复本体沿革见 N-22 别名注)。旧号勿复用"
},
"F-NET-2": {
"to": null,
"status": "retired-to-phrase",
"note": "2026-10-27 批次一(网络设计 F-* 条目号转语义,docs/编号规范.md §9.1):现行指代 = docs/网络/网络自愈架构设计.md §7「条目名」列短语;§7 编号列仅作历史对照(定义行不算引用),旧号此后不得再指。映射 scripts/rename_maps/batch7-f-net-semantic.json。条目名「静默回收无人认领」。"
},
"F-NET-3": {
"to": null,
"status": "retired-to-phrase",
"note": "2026-10-27 批次一(网络设计 F-* 条目号转语义,docs/编号规范.md §9.1):现行指代 = docs/网络/网络自愈架构设计.md §7「条目名」列短语;§7 编号列仅作历史对照(定义行不算引用),旧号此后不得再指。映射 scripts/rename_maps/batch7-f-net-semantic.json。条目名「冗余监听 API 面」。"
},
"F-NET-4": {
"to": null,
"status": "retired-to-phrase",
"note": "2026-10-27 批次一(网络设计 F-* 条目号转语义,docs/编号规范.md §9.1):现行指代 = docs/网络/网络自愈架构设计.md §7「条目名」列短语;§7 编号列仅作历史对照(定义行不算引用),旧号此后不得再指。映射 scripts/rename_maps/batch7-f-net-semantic.json。条目名「iec104 过期门控」。"
},
"F-NET-7": {
"to": null,
"status": "retired-to-phrase",
"note": "2026-10-27 批次一(网络设计 F-* 条目号转语义,docs/编号规范.md §9.1):现行指代 = docs/网络/网络自愈架构设计.md §7「条目名」列短语;§7 编号列仅作历史对照(定义行不算引用),旧号此后不得再指。映射 scripts/rename_maps/batch7-f-net-semantic.json。条目名「全局读即清搁浅事件」。"
},
"F-NET-15": {
"to": null,
"status": "retired-to-phrase",
"note": "2026-10-27 批次一(网络设计 F-* 条目号转语义,docs/编号规范.md §9.1):现行指代 = docs/网络/网络自愈架构设计.md §7「条目名」列短语;§7 编号列仅作历史对照(定义行不算引用),旧号此后不得再指。映射 scripts/rename_maps/batch7-f-net-semantic.json。条目名「沉降门放大器」。"
},
"F-NET-17": {
"to": null,
"status": "retired-to-phrase",
"note": "2026-10-27 批次一(网络设计 F-* 条目号转语义,docs/编号规范.md §9.1):现行指代 = docs/网络/网络自愈架构设计.md §7「条目名」列短语;§7 编号列仅作历史对照(定义行不算引用),旧号此后不得再指。映射 scripts/rename_maps/batch7-f-net-semantic.json。条目名「风暴态三机制」。"
},
"F-DRV-1": {
"to": null,
"status": "retired-to-phrase",
"note": "2026-10-27 批次一(网络设计 F-* 条目号转语义,docs/编号规范.md §9.1):现行指代 = docs/网络/网络自愈架构设计.md §7「条目名」列短语;§7 编号列仅作历史对照(定义行不算引用),旧号此后不得再指。映射 scripts/rename_maps/batch7-f-net-semantic.json。条目名「七处独立回读」。"
},
"F-DRV-4": {
"to": null,
"status": "retired-to-phrase",
"note": "2026-10-27 批次一(网络设计 F-* 条目号转语义,docs/编号规范.md §9.1):现行指代 = docs/网络/网络自愈架构设计.md §7「条目名」列短语;§7 编号列仅作历史对照(定义行不算引用),旧号此后不得再指。映射 scripts/rename_maps/batch7-f-net-semantic.json。条目名「close 序列两套变体」。"
},
"F-DRV-8": {
"to": null,
"status": "retired-to-phrase",
"note": "2026-10-27 批次一(网络设计 F-* 条目号转语义,docs/编号规范.md §9.1):现行指代 = docs/网络/网络自愈架构设计.md §7「条目名」列短语;§7 编号列仅作历史对照(定义行不算引用),旧号此后不得再指。映射 scripts/rename_maps/batch7-f-net-semantic.json。条目名「命令完成阻塞原语」。"
},
"F-DRV-13": {
"to": null,
"status": "retired-to-phrase",
"note": "2026-10-27 批次一(网络设计 F-* 条目号转语义,docs/编号规范.md §9.1):现行指代 = docs/网络/网络自愈架构设计.md §7「条目名」列短语;§7 编号列仅作历史对照(定义行不算引用),旧号此后不得再指。映射 scripts/rename_maps/batch7-f-net-semantic.json。条目名「链路事件无人消费」。"
},
"F-MS-8": {
"to": null,
"status": "retired-to-phrase",
"note": "2026-10-27 批次一(网络设计 F-* 条目号转语义,docs/编号规范.md §9.1):现行指代 = docs/网络/网络自愈架构设计.md §7「条目名」列短语;§7 编号列仅作历史对照(定义行不算引用),旧号此后不得再指。映射 scripts/rename_maps/batch7-f-net-semantic.json。条目名「有损镜像决策窗口」。"
},
"F-MS-9": {
"to": null,
"status": "retired-to-phrase",
"note": "2026-10-27 批次一(网络设计 F-* 条目号转语义,docs/编号规范.md §9.1):现行指代 = docs/网络/网络自愈架构设计.md §7「条目名」列短语;§7 编号列仅作历史对照(定义行不算引用),旧号此后不得再指。映射 scripts/rename_maps/batch7-f-net-semantic.json。条目名「去抖冷却自偿成本」。"
},
"F-DRV-9": {
"to": null,
"status": "retired-to-phrase",
"note": "2026-10-27 批次一(网络设计 F-* 条目号转语义,docs/编号规范.md §9.1):现行指代 = docs/网络/网络自愈架构设计.md §7「条目名」列短语;§7 编号列仅作历史对照(定义行不算引用),旧号此后不得再指。映射 scripts/rename_maps/batch7-f-net-semantic.json。该号在 §7 从来没有定义行(孤儿引用)→ 按 §4.1.1「删号留事实」就地删除引用,**不得补定义**。"
}
},
"id_aliases": {}
@@ -0,0 +1,580 @@
{
"batches": [
{
"family": "L-PROT",
"old": "\\bL1\\-1(?P<tail>)\\b",
"new": "周期 CONVST 重触发",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L1-1 转语义短语「周期 CONVST 重触发」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL1\\-2(?P<tail>)\\b",
"new": "TPAFE 快照消费",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L1-2 转语义短语「TPAFE 快照消费」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL1\\-3(?P<tail>)\\b",
"new": "STM32 ADC1 启动与扫描",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L1-3 转语义短语「STM32 ADC1 启动与扫描」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL1\\-4(?P<tail>)\\b",
"new": "通道语义映射",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L1-4 转语义短语「通道语义映射」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL1\\-5(?P<tail>)\\b",
"new": "通道标定(一次系数 + 零漂)",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L1-5 转语义短语「通道标定(一次系数 + 零漂)」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL1\\-6(?P<tail>)\\b",
"new": "采样有效性校验",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L1-6 转语义短语「采样有效性校验」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL1\\-7(?P<tail>)\\b",
"new": "等周波采样(软件测频 + 调频闭环)",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L1-7 转语义短语「等周波采样(软件测频 + 调频闭环)」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL1\\-9(?P<tail>)\\b",
"new": "二次谐波/五次谐波提取入口",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L1-9 转语义短语「二次谐波/五次谐波提取入口」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL2\\-1(?P<tail>)\\b",
"new": "全周傅氏系数表",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L2-1 转语义短语「全周傅氏系数表」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL2\\-2(?P<tail>)\\b",
"new": "基波相量实例",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L2-2 转语义短语「基波相量实例」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL2\\-3(?P<tail>)\\b",
"new": "相量有效值输出",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L2-3 转语义短语「相量有效值输出」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL2\\-4(?P<tail>)\\b",
"new": "相位输出",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L2-4 转语义短语「相位输出」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL2\\-5(?P<tail>)\\b",
"new": "线/负序/零序合成",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L2-5 转语义短语「线/负序/零序合成」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL2\\-6(?P<tail>)\\b",
"new": "每 1 ms 滑动窗刷新",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L2-6 转语义短语「每 1 ms 滑动窗刷新」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL2\\-7(?P<tail>)\\b",
"new": "双区指针原子交换",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L2-7 转语义短语「双区指针原子交换」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL3\\-1(?P<tail>)\\b",
"new": "三段式相间过流",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L3-1 转语义短语「三段式相间过流」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL3\\-2(?P<tail>)\\b",
"new": "三段式零序过流",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L3-2 转语义短语「三段式零序过流」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL3\\-5(?P<tail>)\\b",
"new": "过频 / 低频",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L3-5 转语义短语「过频 / 低频」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL4\\-1(?P<tail>)\\b",
"new": "跳闸出口(KO)",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L4-1 转语义短语「跳闸出口(KO)」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL4\\-3(?P<tail>)\\b",
"new": "出口自检",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L4-3 转语义短语「出口自检」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL4\\-4(?P<tail>)\\b",
"new": "SOE 记录",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L4-4 转语义短语「SOE 记录」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL4\\-5(?P<tail>)\\b",
"new": "动作记录",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L4-5 转语义短语「动作记录」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL5\\-1(?P<tail>)\\b",
"new": "定值校验和",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L5-1 转语义短语「定值校验和」(用户 2026-10-27 裁定)"
},
{
"family": "L-PROT",
"old": "\\bL5\\-4(?P<tail>)\\b",
"new": "自检失败闭锁",
"files": [
"docs/算法/继电保护功能复现规划.md",
"docs/测试说明/boot_log_data/README.md",
"docs/测试说明/相量层单元测试说明.md",
"docs/硬件平台/ADC通道映射说明.md",
"App/algo/*.c",
"App/algo/*.h",
"App/task/*.c",
"Src/*.c",
"test/host/*/*.py",
"test/host/*/*.c",
"scripts/*.py",
"tools/**/*.py",
"docs/算法/*.md",
"docs/门禁说明/*.md",
".pre-commit-config.yaml",
"AGENTS.md"
],
"note": "批次八:保护功能号 L5-4 转语义短语「自检失败闭锁」(用户 2026-10-27 裁定)"
}
]
}
@@ -0,0 +1,99 @@
{
"schema": 1,
"batch": "批次一 F-* 收口(2026-10-27):网络设计条目号转语义短语",
"applied_by": "scripts/rename_ids.py",
"record": "docs/编号规范.md §9.1(F-* 行)",
"note": "§7 表保留 12 条编号仅作历史对照;正文/代码注释改用「§7 + 条目名」。作用域刻意只列 2 个文件,不写 glob:docs/硬件平台/ 的 T1/T2/T3 位号与 docs/芯片手册/ 的时序记号同属裸形高发区,而各文档 Mermaid 图里有单字母节点名(F/EV/LN…),故 old 一律带上下文、限定完整三段形态。变更记录行(BSD_Socket_API_使用指南.md:1488)由 SKIP_LINE 豁免、不改写(§8.1 历史快照)。",
"batches": [
{
"family": "FEAT",
"old": "决策窗口((?P<n>F-MS-8))",
"new": "决策窗口(§7「有损镜像决策窗口」)",
"files": [
"docs/网络/网络自愈架构设计.md"
],
"note": "I1 后果列"
},
{
"family": "FEAT",
"old": "又一层补丁((?P<n>F-DRV-9))",
"new": "又一层补丁(原引用号在 §7 无定义行,删号留事实)",
"files": [
"docs/网络/网络自愈架构设计.md"
],
"note": "孤儿引用:I6 本身即结论"
},
{
"family": "FEAT",
"old": "((?P<n>F-NET-7);测试/台架代码同样禁自行读取",
"new": "(§7「全局读即清搁浅事件」;测试/台架代码同样禁自行读取",
"files": [
"docs/网络/网络自愈架构设计.md"
],
"note": "I7 不变量列"
},
{
"family": "FEAT",
"old": "自偿成本((?P<n>F-MS-9))",
"new": "自偿成本(§7「去抖冷却自偿成本」)",
"files": [
"docs/网络/网络自愈架构设计.md"
],
"note": "§2 去抖冷却段"
},
{
"family": "FEAT",
"old": "(静默回收,(?P<n>F-NET-2))",
"new": "(静默回收;§7「静默回收无人认领」)",
"files": [
"docs/网络/网络自愈架构设计.md"
],
"note": "形态⑤ 表行"
},
{
"family": "FEAT",
"old": "(M1,(?P<n>F-NET-15))",
"new": "(M1;§7「沉降门放大器」)",
"files": [
"docs/网络/网络自愈架构设计.md"
],
"note": "§4.3 沉降无条件化"
},
{
"family": "FEAT",
"old": "放大 (?P<n>F-NET-7) 供给面",
"new": "放大「全局读即清」的搁浅面",
"files": [
"docs/网络/网络自愈架构设计.md"
],
"note": "§4.3 M1/M4-lite 同批纪律"
},
{
"family": "FEAT",
"old": "\\*\\*M1 单独上会放大 (?P<n>F-NET-7)\\*\\*",
"new": "**M1 单独上会放大全局读即清的搁浅面(§7)**",
"files": [
"docs/网络/网络自愈架构设计.md"
],
"note": "§5.2 E7 结论列"
},
{
"family": "FEAT",
"old": "三机制((?P<n>F-NET-17))",
"new": "三机制(§7「风暴态三机制」)",
"files": [
"docs/网络/网络自愈架构设计.md"
],
"note": "§5.2 E8 结论列"
},
{
"family": "FEAT",
"old": "(B3/(?P<n>F-NET-7))",
"new": "(B3;全局读即清会搁浅其它 Socket 事件,docs/网络/网络自愈架构设计.md §7)",
"files": [
"test/host/net_socket/net_socket_test.c"
],
"note": "主机侧单测注释:改注释不动断言,不涉 @build 之外的语义"
}
]
}
@@ -0,0 +1,198 @@
{
"schema": 1,
"batch": "批次四(2026-10-27 实测清点):复审残号 S-REVIEW + 两条无主死号的残留引用收口(删号留事实)",
"applied_by": "scripts/rename_ids.py --no-alias",
"record": "docs/编号规范.md §4.1.1(复审残号 S1~S14 / E-xx → 写条目本身)、§4.5、§7.3",
"note": "只清「号当标识用」的标注与待办用法;别名表**故意不写**:这些裸形(S1/S4/S5/S7/S9/S11)在 .c/.h 注释、.pre-commit-config.yaml 与在飞的 docs/测试说明/自动化测试流程.md 里还有活引用,写进别名表等于把那些残留一起洗成「已解析」(§4.1.1:部分死号故意不进别名表,好让门禁继续咬残留引用)。刻意不碰:① 属主登记处 docs/任务规划/测试与架构专项.md(§2.1 S12 定义行 + 首行指针;删行销项属 Ask-first);② 变更记录行与「原复审项 S4,已闭环」这类显式历史标注;③ 任何 .c/.h(改注释也要重跑 @build,本批零代码);④ 工作区里别人在飞的脏文件;⑤ 实机测试实施指南.md:5「(S7、A1~A4)」——A1~A4 与本文 A 表(前置检查 A2~A6)同形、语义待属主确认,按 §7.3 第 3 条不猜。",
"batches": [
{
"family": "S-REVIEW",
"files": [
"docs/测试说明/链路延迟测试说明.md"
],
"old": "基线行为;可选优化 (?P<n>S7)(poll 前置 \\+ while 排空),低优先",
"new": "基线行为;可选优化(poll 前置 + while 排空),低优先",
"note": "§10.1 表行 D5:S7 是 uiTask 排空待办的死号"
},
{
"family": "S-REVIEW",
"files": [
"docs/测试说明/链路延迟测试说明.md"
],
"old": "其余待办 (?P<n>S9)(按键后立即取帧",
"new": "其余待办(按键后立即取帧",
"note": "§10.1 表行 D8:客户端待办死号"
},
{
"family": "S-REVIEW",
"files": [
"docs/测试说明/链路延迟测试说明.md"
],
"old": "^4\\. \\*\\*(?P<n>S1)\\*\\* 超时参数分档",
"new": "4. 超时参数分档",
"note": "§10.2 待办列表项 4"
},
{
"family": "S-REVIEW",
"files": [
"docs/测试说明/链路延迟测试说明.md"
],
"old": "^6\\. \\*\\*(?P<n>S4)\\*\\* 发送块配额与 MSS",
"new": "6. 发送块配额与 MSS",
"note": "§10.2 待办列表项 6"
},
{
"family": "S-REVIEW",
"files": [
"docs/测试说明/链路延迟测试说明.md"
],
"old": "^7\\. \\*\\*(?P<n>S5)\\*\\* 去掉一次 3200B 拷贝",
"new": "7. 去掉一次 3200B 拷贝",
"note": "§10.2 待办列表项 7"
},
{
"family": "S-REVIEW",
"files": [
"docs/测试说明/链路延迟测试说明.md"
],
"old": "^8\\. \\*\\*(?P<n>S7)\\*\\* uiTask:",
"new": "8. uiTask:",
"note": "§10.2 待办列表项 8"
},
{
"family": "S-REVIEW",
"files": [
"docs/测试说明/实机测试实施指南.md"
],
"old": "堆低水位告警实测(P1-B / (?P<n>S11))",
"new": "堆低水位告警实测(P1-B)",
"note": "步骤表:保留 P1-B 档位词,去掉复审死号"
},
{
"family": "S-REVIEW",
"files": [
"docs/测试说明/实机测试实施指南.md"
],
"old": "GD5F 错误通道回归(P2-A / (?P<n>S9))",
"new": "GD5F 错误通道回归(P2-A)",
"note": "步骤表:同上"
},
{
"family": "S-REVIEW",
"files": [
"docs/测试说明/实机测试实施指南.md"
],
"old": "工程卫生(P3 / (?P<n>S5) \\+ S4 \\+ 待核实项)",
"new": "工程卫生(P3 + 待核实项)",
"note": "步骤表:S5+S4 两个死号同批去掉"
},
{
"family": "S-REVIEW",
"files": [
"docs/测试说明/实机测试实施指南.md"
],
"old": "含新增 (?P<n>S5) `test-cppcheck`",
"new": "含新增 `test-cppcheck`",
"note": "步骤 7 出口判据里的钩子来源标注"
},
{
"family": "S-REVIEW",
"files": [
"docs/子系统设计/看门狗设计说明.md"
],
"old": "——原计划的 (?P<n>S1) 已降级",
"new": "——原计划的模拟器侧看门狗自检已降级",
"note": "§4.7:句子本身已写明是什么(模拟器不编译本模块)"
},
{
"family": "S-REVIEW",
"files": [
"docs/测试说明/存储维护与容量恢复.md"
],
"old": "自检台账清零,重建 (?P<n>S7) 审计基线",
"new": "自检台账清零,重建联合判定审计基线",
"note": "§4.2 标题:S7 = 自检记录联合判定"
},
{
"family": "S-LDG",
"files": [
"docs/测试说明/boot_log_data/README.md"
],
"old": "本流程立项:原 `../../任务规划/README\\.md` (?P<n>S-2)(2026-09-22 提出",
"new": "本流程立项:原 `../../任务规划/README.md` 的「启动日志固化流程」条目(2026-09-22 提出",
"note": "S-2 在别名表标 void(两义均死),短语取自别名 note"
},
{
"family": "E-AUD",
"files": [
"docs/测试说明/m2_data/README.md"
],
"old": "(`--ftp-stress`,(?P<n>E-02) 复现)",
"new": "(`--ftp-stress` 复现)",
"note": "E-AUD 族无属主登记处(审计发现号)→ 删号留事实"
},
{
"family": "S-REVIEW",
"files": [
"scripts/check_test_traceability.py"
],
"old": "\"\"\"check_test_traceability\\.py - (?P<n>S4) 用例追溯校验",
"new": "\"\"\"check_test_traceability.py - 用例追溯校验",
"note": "脚本自述里的死号标注;下一行的「原复审项 S4,已闭环」是显式历史标注,保留"
},
{
"family": "S-REVIEW",
"files": [
".dsh/skills/serial-boot-test/scripts/verify_log.py"
],
"old": "自检记录联合判定((?P<n>S7),2026-10 实机窗口",
"new": "自检记录联合判定(2026-10 实机窗口",
"note": "skill 脚本文案"
},
{
"family": "S-REVIEW",
"files": [
".dsh/skills/serial-boot-test/scripts/run_boot_test.py"
],
"old": "自检台账联合判定((?P<n>S7)):默认",
"new": "自检台账联合判定:默认",
"note": "run_boot_test.py 流程注释"
},
{
"family": "S-REVIEW",
"files": [
".dsh/skills/serial-boot-test/scripts/run_boot_test.py"
],
"old": "干净台账,(?P<n>S7) 判 PASS",
"new": "干净台账 → 判定 PASS",
"note": "同上"
},
{
"family": "S-REVIEW",
"files": [
".dsh/skills/serial-boot-test/scripts/run_boot_test.py"
],
"old": "selftest\\.log \\((?P<n>S7)\\): missing/empty",
"new": "selftest.log: missing/empty",
"note": "argparse help 文案(纯 ASCII,无脚本按字面量读它)"
},
{
"family": "S-REVIEW",
"files": [
".dsh/skills/serial-boot-test/scripts/run_boot_test.py"
],
"old": "自检台账基线((?P<n>S7)「只看本次新增」)",
"new": "自检台账基线(只看本次新增)",
"note": "同上"
},
{
"family": "S-REVIEW",
"files": [
".dsh/skills/serial-boot-test/scripts/run_boot_test.py"
],
"old": "自检记录判定((?P<n>S7)):默认只判",
"new": "自检记录判定:默认只判",
"note": "同上"
}
]
}
+141 -89
View File
@@ -2,11 +2,11 @@
"files": {
"App/algo/adc_cal.c": {
"func_rate": 1.0,
"funcs_covered": 14,
"funcs_valid": 14,
"line_rate": 0.9846,
"lines_covered": 128,
"lines_valid": 130
"funcs_covered": 16,
"funcs_valid": 16,
"line_rate": 0.986,
"lines_covered": 141,
"lines_valid": 143
},
"App/algo/adc_health.c": {
"func_rate": 1.0,
@@ -65,12 +65,12 @@
"lines_valid": 179
},
"App/algo/run_par.c": {
"func_rate": 1.0,
"funcs_covered": 10,
"funcs_valid": 10,
"line_rate": 0.945,
"lines_covered": 103,
"lines_valid": 109
"func_rate": 0.9286,
"funcs_covered": 13,
"funcs_valid": 14,
"line_rate": 0.8837,
"lines_covered": 114,
"lines_valid": 129
},
"App/algo/sample_ring.c": {
"func_rate": 1.0,
@@ -148,9 +148,9 @@
"func_rate": 1.0,
"funcs_covered": 22,
"funcs_valid": 22,
"line_rate": 0.9926,
"lines_covered": 403,
"lines_valid": 406
"line_rate": 0.9927,
"lines_covered": 410,
"lines_valid": 413
},
"App/protocol/iec104/iec104_asdu.c": {
"func_rate": 1.0,
@@ -162,11 +162,11 @@
},
"App/protocol/iec104/iec104_comm.c": {
"func_rate": 1.0,
"funcs_covered": 5,
"funcs_valid": 5,
"line_rate": 1.0,
"lines_covered": 36,
"lines_valid": 36
"funcs_covered": 7,
"funcs_valid": 7,
"line_rate": 0.98,
"lines_covered": 49,
"lines_valid": 50
},
"App/protocol/iec104/iec104_link.c": {
"func_rate": 1.0,
@@ -189,16 +189,24 @@
"funcs_covered": 4,
"funcs_valid": 4,
"line_rate": 1.0,
"lines_covered": 99,
"lines_valid": 99
"lines_covered": 100,
"lines_valid": 100
},
"App/task/iec104_serv.c": {
"func_rate": 0.8889,
"funcs_covered": 8,
"funcs_valid": 9,
"line_rate": 0.8311,
"lines_covered": 123,
"lines_valid": 148
"func_rate": 0.8182,
"funcs_covered": 9,
"funcs_valid": 11,
"line_rate": 0.7706,
"lines_covered": 131,
"lines_valid": 170
},
"App/util/boot_stats.c": {
"func_rate": 1.0,
"funcs_covered": 6,
"funcs_valid": 6,
"line_rate": 0.963,
"lines_covered": 78,
"lines_valid": 81
},
"App/util/sha256.c": {
"func_rate": 1.0,
@@ -337,12 +345,12 @@
"lines_valid": 112
},
"Drivers/BSP/UI/ui_data.c": {
"func_rate": 0.9667,
"funcs_covered": 29,
"funcs_valid": 30,
"line_rate": 0.9553,
"lines_covered": 299,
"lines_valid": 313
"func_rate": 0.9767,
"funcs_covered": 42,
"funcs_valid": 43,
"line_rate": 0.9637,
"lines_covered": 372,
"lines_valid": 386
},
"Drivers/BSP/UI/ui_net_sink.c": {
"func_rate": 0.7692,
@@ -365,10 +373,10 @@
"modules": {
"adc_cal": {
"files": {
"App/algo/adc_cal.c": 130,
"App/algo/adc_cal.c": 143,
"App/cfg/cfg_file.c": 689
},
"lines_total": 819,
"lines_total": 832,
"ok": true
},
"adc_health": {
@@ -385,6 +393,13 @@
"lines_total": 120,
"ok": true
},
"boot_stats": {
"files": {
"App/util/boot_stats.c": 81
},
"lines_total": 81,
"ok": true
},
"cfg_file": {
"files": {
"App/cfg/cfg_file.c": 689
@@ -432,28 +447,28 @@
},
"iec104": {
"files": {
"App/algo/adc_cal.c": 130,
"App/algo/adc_cal.c": 143,
"App/algo/freq.c": 130,
"App/algo/meas.c": 64,
"App/algo/phasor.c": 55,
"App/algo/prot_elm.c": 122,
"App/algo/prot_set.c": 179,
"App/algo/run_par.c": 109,
"App/algo/run_par.c": 129,
"App/algo/sample_ring.c": 41,
"App/cfg/cfg_file.c": 689,
"App/protocol/iec104/iec104_asdu.c": 103,
"App/protocol/iec104/iec104_comm.c": 36,
"App/protocol/iec104/iec104_comm.c": 50,
"App/protocol/iec104/iec104_link.c": 405,
"App/protocol/iec104/iec104_pts.c": 255
},
"lines_total": 2318,
"lines_total": 2365,
"ok": true
},
"iec104_serv": {
"files": {
"App/task/iec104_serv.c": 148
"App/task/iec104_serv.c": 170
},
"lines_total": 148,
"lines_total": 170,
"ok": true
},
"lftpd": {
@@ -547,14 +562,14 @@
},
"prot_dim": {
"files": {
"App/algo/adc_cal.c": 130,
"App/algo/adc_cal.c": 143,
"App/algo/freq.c": 130,
"App/algo/phasor.c": 55,
"App/algo/prot_elm.c": 122,
"App/algo/prot_set.c": 179,
"App/algo/sample_ring.c": 41
},
"lines_total": 657,
"lines_total": 670,
"ok": true
},
"prot_elm": {
@@ -585,11 +600,11 @@
},
"run_par": {
"files": {
"App/algo/adc_cal.c": 130,
"App/algo/run_par.c": 109,
"App/algo/adc_cal.c": 143,
"App/algo/run_par.c": 129,
"App/cfg/cfg_file.c": 689
},
"lines_total": 928,
"lines_total": 961,
"ok": true
},
"sha256": {
@@ -624,9 +639,9 @@
},
"sys_log_mcu": {
"files": {
"App/log/sys_log_mcu.c": 406
"App/log/sys_log_mcu.c": 413
},
"lines_total": 406,
"lines_total": 413,
"ok": true
},
"task_prof": {
@@ -638,17 +653,17 @@
},
"time_sync": {
"files": {
"App/sync/time_sync.c": 99
"App/sync/time_sync.c": 100
},
"lines_total": 99,
"lines_total": 100,
"ok": true
},
"ui_data": {
"files": {
"Drivers/BSP/UI/ui_data.c": 313,
"Drivers/BSP/UI/ui_data.c": 386,
"Drivers/BSP/UI/ui_w_soe.c": 62
},
"lines_total": 375,
"lines_total": 448,
"ok": true
},
"ui_sink": {
@@ -708,6 +723,7 @@
"App/protocol/iec104/iec104_pts.c",
"App/sync/time_sync.c",
"App/task/iec104_serv.c",
"App/util/boot_stats.c",
"App/util/sha256.c",
"App/util/sys_clock.c",
"App/util/task_prof.c",
@@ -731,16 +747,16 @@
],
"totals": {
"files_generated_excluded": 5,
"files_tested": 45,
"files_untested": 142,
"files_tested": 46,
"files_untested": 151,
"func_rate": 0.9317,
"funcs_covered": 505,
"funcs_valid": 542,
"line_rate": 0.8988,
"lines_covered": 6854,
"lines_valid": 7626,
"modules_ok": 40,
"modules_total": 40
"funcs_covered": 532,
"funcs_valid": 571,
"line_rate": 0.8983,
"lines_covered": 7058,
"lines_valid": 7857,
"modules_ok": 41,
"modules_total": 41
},
"untested_sources": [
{
@@ -751,6 +767,10 @@
"code_lines": 689,
"path": "Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c"
},
{
"code_lines": 407,
"path": "App/app/ui_data_feed.c"
},
{
"code_lines": 353,
"path": "Drivers/BSP/UI/ui_w_setview.c"
@@ -759,16 +779,12 @@
"code_lines": 329,
"path": "Drivers/BSP/UI/ui_menu_view.c"
},
{
"code_lines": 300,
"path": "App/app/ui_data_feed.c"
},
{
"code_lines": 300,
"path": "Drivers/BSP/UI/ui_content_page.c"
},
{
"code_lines": 285,
"code_lines": 286,
"path": "App/task/default_task.c"
},
{
@@ -807,6 +823,14 @@
"code_lines": 204,
"path": "Drivers/BSP/UI/ui_standby.c"
},
{
"code_lines": 200,
"path": "Drivers/BSP/UI/ui_w_ytview.c"
},
{
"code_lines": 196,
"path": "Drivers/BSP/UI/ui_data.h"
},
{
"code_lines": 157,
"path": "Drivers/BSP/TPAFE5160/tpafe5160.c"
@@ -815,14 +839,6 @@
"code_lines": 150,
"path": "Drivers/BSP/UI/ui_page_password.c"
},
{
"code_lines": 146,
"path": "App/app/app_main.c"
},
{
"code_lines": 146,
"path": "Drivers/BSP/UI/ui_data.h"
},
{
"code_lines": 146,
"path": "Drivers/BSP/UI/ui_page_device_info.c"
@@ -831,10 +847,18 @@
"code_lines": 134,
"path": "App/task/protect_task.c"
},
{
"code_lines": 132,
"path": "App/app/app_main.c"
},
{
"code_lines": 129,
"path": "Drivers/BSP/UI/ui_page_clear.c"
},
{
"code_lines": 129,
"path": "Drivers/BSP/UI/ui_page_comm.c"
},
{
"code_lines": 126,
"path": "Drivers/BSP/UI/ui_menu.c"
@@ -951,6 +975,10 @@
"code_lines": 41,
"path": "Drivers/BSP/NET/lftpd/private/lftpd_status.h"
},
{
"code_lines": 41,
"path": "Drivers/BSP/UI/ui_page_calib.c"
},
{
"code_lines": 41,
"path": "Drivers/BSP/UI/ui_page_view_param.c"
@@ -967,6 +995,10 @@
"code_lines": 41,
"path": "Drivers/BSP/UI/ui_page_view_word.c"
},
{
"code_lines": 40,
"path": "Drivers/BSP/UI/ui_page_deadband.c"
},
{
"code_lines": 36,
"path": "Drivers/BSP/UI/ui_w_records.h"
@@ -991,10 +1023,18 @@
"code_lines": 33,
"path": "Drivers/BSP/UI/ui_page_action.h"
},
{
"code_lines": 32,
"path": "App/util/boot_stats.h"
},
{
"code_lines": 32,
"path": "Drivers/BSP/RS485/rs485.h"
},
{
"code_lines": 31,
"path": "App/algo/adc_cal.h"
},
{
"code_lines": 31,
"path": "App/protocol/iec104/iec104_pts.h"
@@ -1049,11 +1089,15 @@
},
{
"code_lines": 24,
"path": "App/algo/adc_cal.h"
"path": "Drivers/BSP/UI/ui_tokens.h"
},
{
"code_lines": 24,
"path": "Drivers/BSP/UI/ui_tokens.h"
"code_lines": 23,
"path": "App/protocol/iec104/iec104_comm.h"
},
{
"code_lines": 22,
"path": "App/algo/run_par.h"
},
{
"code_lines": 22,
@@ -1083,10 +1127,6 @@
"code_lines": 22,
"path": "Drivers/BSP/UI/ui_page_soe.c"
},
{
"code_lines": 21,
"path": "App/protocol/iec104/iec104_comm.h"
},
{
"code_lines": 20,
"path": "Drivers/BSP/UI/ui_net_sink.h"
@@ -1099,10 +1139,6 @@
"code_lines": 19,
"path": "App/fs/vol_lock.h"
},
{
"code_lines": 18,
"path": "App/algo/run_par.h"
},
{
"code_lines": 18,
"path": "Drivers/BSP/NET/lftpd/lftpd.h"
@@ -1155,6 +1191,10 @@
"code_lines": 13,
"path": "Drivers/BSP/UI/ui_pwd_def.h"
},
{
"code_lines": 13,
"path": "Drivers/BSP/UI/ui_w_ytview.h"
},
{
"code_lines": 12,
"path": "App/app/app_main.h"
@@ -1175,6 +1215,10 @@
"code_lines": 11,
"path": "App/sync/time_sync.h"
},
{
"code_lines": 11,
"path": "App/task/iec104_serv.h"
},
{
"code_lines": 11,
"path": "App/task/net_task.h"
@@ -1199,6 +1243,10 @@
"code_lines": 11,
"path": "Drivers/BSP/UI/ui_menu.h"
},
{
"code_lines": 11,
"path": "Drivers/BSP/UI/ui_page_calib.h"
},
{
"code_lines": 11,
"path": "Drivers/BSP/UI/ui_page_clear.h"
@@ -1207,6 +1255,14 @@
"code_lines": 11,
"path": "Drivers/BSP/UI/ui_page_clock.h"
},
{
"code_lines": 11,
"path": "Drivers/BSP/UI/ui_page_comm.h"
},
{
"code_lines": 11,
"path": "Drivers/BSP/UI/ui_page_deadband.h"
},
{
"code_lines": 11,
"path": "Drivers/BSP/UI/ui_page_net_cfg.h"
@@ -1267,10 +1323,6 @@
"code_lines": 5,
"path": "App/cfg/prot_set_store.h"
},
{
"code_lines": 5,
"path": "App/task/iec104_serv.h"
},
{
"code_lines": 5,
"path": "App/task/protect_task.h"
+2 -2
View File
@@ -53,7 +53,7 @@ simulator/
| `build_sim.bat` / `build_sim.ps1` | 一键构建入口:vswhere 探测本机 VS 大版本(16=2019 / 17=2022 / 18=2026,取已装最高)→ 映射 CMake 生成器;`build/` 缓存生成器与本机不符(换机/升级 VS)时自动删除重建(带重试,抗文件锁)。**构建入口一律走它,文档/命令中勿写死生成器版本**;`.bat` 仅负责绕过 PowerShell 执行策略并转交 `.ps1` |
| `CMakeLists.txt` | 收集 LVGL 源码(`../Lib/lvgl`)+ 共享 UI 源码(`../Drivers/BSP/UI`)+ 通用配置文件引擎(`../App/cfg_file.c`、`../Drivers/BSP/NETCFG` 的 net_cfg;`net_cfg_legacy` 已于 2026-10-10 删除)+ `sim/` 平台层,链接预编译 SDL2,产出 `lvgl_sim.exe` |
| `i1_to_png.py` | 把 `--screenshot` 产出的 I1(1bpp) 原始位图转成 PNG,便于离线比对设计稿。详见 §3.5 |
| `tests/` | 无头回归脚本(菜单 8 状态像素回归 + 内容页 47 页:文本断言 / 反向断言 / 黄金参考逐字节比对);`ref/shot_*.bin` **随仓库入库**(判据本体,改动等于改判据,评审须逐页过目),`ref/*.png` 是本地派生的目检图(`.gitignore` 挡掉)。详见 §3.6 |
| `tests/` | 无头回归脚本(菜单 8 状态像素回归 + 内容页 53 页:文本断言 / 反向断言 / 黄金参考逐字节比对);`ref/shot_*.bin` **随仓库入库**(判据本体,改动等于改判据,评审须逐页过目),`ref/*.png` 是本地派生的目检图(`.gitignore` 挡掉)。详见 §3.6 |
> **共享代码不复制**:`ui_menu.c` / `ui_font_cn_12.c` / `ui_net_sink.c` 直接引用 `Drivers/BSP/UI/` 下的原件,
> MCU 与 PC 两端永远同步。**不要**在本目录内复制 UI 源码。
@@ -222,7 +222,7 @@ UI 改动的自动化门禁脚本(完整流程见 `docs/UI设计/UI_自动化
| 脚本 | 原理 | 失败输出 |
|------|------|----------|
| `check_menu_rows.py` | 键序注入(u/d/e/s)跑 8 个菜单状态,断言选中行白带、非选行黑底白字、框体边框、往返状态逐像素一致;MENU-STATE-00 池水位须等于脚本内 `MENU_POOL_BASELINE` | 未过断言清单 + 保留临时截图 |
| `check_content_pages.py` | ① 文本断言(解析字体字形,在截图 y 带内精确匹配期望串,不依赖 `ref/`)② **反向断言**(`ABSENT` 表:某串**不该**出现,如查看页/只读态不得出现「未标定」徽标与「保存」行——像素参考会被 `--update` 刷成"自证正确",反向断言不依赖参考图)③ **47 页**无头截图与 `tests/ref/shot_*.bin` **逐字节**比对(含 2026-10-26 新增的整定 9 态:进页 / 保存行 / 只读态 / 编辑态 / 越界 / 保存 OK / 落定后可读 / 二态回绕);另校验开页-关页往返池水位 = `POOL_AFTER_ROUNDTRIP` | 文本未命中项 / 反向断言被命中 / 差异像素数 + 双方 ink runs 对照 |
| `check_content_pages.py` | ① 文本断言(解析字体字形,在截图 y 带内精确匹配期望串,不依赖 `ref/`)② **反向断言**(`ABSENT` 表:某串**不该**出现,如查看页/只读态不得出现「未标定」徽标与「保存」行——像素参考会被 `--update` 刷成"自证正确",反向断言不依赖参考图)③ **53 页**无头截图与 `tests/ref/shot_*.bin` **逐字节**比对(含 2026-10-26 新增的整定 9 态:进页 / 保存行 / 只读态 / 编辑态 / 越界 / 保存 OK / 落定后可读 / 二态回绕);另校验开页-关页往返池水位 = `POOL_AFTER_ROUNDTRIP` | 文本未命中项 / 反向断言被命中 / 差异像素数 + 双方 ink runs 对照 |
| `check_remo_sink.py` | 启动**窗口**模拟器(非无头,`CREATE_NEW_PROCESS_GROUP` 防管道阻塞),经 TCP 7003 发 LCDMEM 取 1bpp 帧;断言首帧=LCDMEM(无 INIT 污染)/位图 3200 字节/非平凡;复用 `i1_to_png` 出目检 PNG;与无头参考(`lvgl_sim --screenshot`)逐位比对 <2% 判 MATCH。守护"INIT 污染 / 快照卡死"两个历史缺陷 | 各判据失败原因 + `sim_err.txt` 尾部 + 保留 PNG(默认不删,`--clean` 才删) |
- **黄金参考与目检 PNG**(`ref/*.bin` **入库**、`ref/*.png` 本地派生不入库):换机或想目检时——
+1 -1
View File
@@ -11,7 +11,7 @@
| `check_content_pages.py` | **内容页回归**:各内容页渲染比对 |
| `check_remo_sink.py` | **推流(RemoDispBus)回归**:接收端渲染比对 |
| `regen_ref_png.py` | 由 `ref/*.bin` 批量出**目检 PNG**(不产生基准;基准由 `check_content_pages.py --update` 刷) |
| `ref/*.bin` | **像素黄金参考(入库)**:47 页 × 3200 B,160×160 单色打包 |
| `ref/*.bin` | **像素黄金参考(入库)**:53 页 × 3200 B,160×160 单色打包 |
## 使用方式
+1 -1
View File
@@ -14,7 +14,7 @@
* "登记挂起即不发即时回执"(do_notify=0)+ 失败时把 netTask 自己槽位的精确
* 错误码搭通知值带回来 + 调用方在自己的槽位里恢复 errno。
* 分片 4 状态机与闸门:监听门控 net_listener_armed 三支放行/其余挡下、net_can_read、
* net_poll 的"全局位命中才读本 Socket SINT、永不读全局"(B3/F-NET-7)、
* net_poll 的"全局位命中才读本 Socket SINT、永不读全局"(B3;全局读即清会搁浅其它 Socket 事件,docs/网络/网络自愈架构设计.md §7)、
* 事件计数、每轮全量刷新驱动缓存 + sock_reset 步进(I1/头阻塞)。
* 分片 5 读写错误分支:send 分块上限/短写/挂起登记/末块不登记(NET_PENDING 拒收边界)、
* recv 快路径与 EOF vs WOULDBLOCK、connect 命令被拒的回滚、accept 的