Merge branch 'v2-on-ui' into task/meas-snap

# Conflicts:
#	scripts/id_registry.json
This commit is contained in:
2026-10-25 10:29:18 +08:00
42 changed files with 3024 additions and 115 deletions
+2
View File
@@ -97,7 +97,9 @@ SIM_EXEMPT = [
("App/algo/adc_cal.c", "L1.5 标定折算纯算法 + cfg 段注册(消费者 = MCU 侧 adcTask 每拍;模拟器不跑采样任务),模拟器无消费路径"),
("App/algo/meas.c", "L2 遥测快照发布纯算法(唯一发布者 = MCU 侧 adcTask 200 ms 分频;104/UI 侧消费属卡 9/UI 波次另行接线,模拟器无消费路径;L0.5 单测 test/host/meas 覆盖),模拟器无消费路径"),
("App/app/app_main.c", "固件启动/就绪屏障,MCU 专属"),
("App/app/ui_data_feed.c", "UI 快照装配器(依赖 phasor/prot_set/iec104 端口常量等固件侧数据源);模拟器不跑装配链,快照由 simulator/main.c 直接发布固定帧,模拟器无消费路径"),
("App/fs/vol_lock.c", "FreeRTOS 互斥量卷锁,MCU 专属"),
("App/fs/vol_idle_sync.c", "MCU 存储属主后台空闲同步(FatFs disk_ioctl + 卷锁 + sys_events),L0.5 覆盖于 test/host/vol_idle_sync/,模拟器无消费路径"),
("App/log/console_log.c", "MCU 控制台输出,模拟器无消费路径"),
("App/sync/time_sync.c", "对时任务(net+RTOS),MCU 专属"),
("App/task/adc_task.c", "固件 FreeRTOS 任务,模拟器不跑固件任务"),
+44
View File
@@ -1708,6 +1708,28 @@
"owner_note": "B 层口径(用户裁定 2026-10-21,同 TC-HOST-ADCHEALTH 先例;2026-10-25 道A 卡2 建族):属主登记处 = 单测代码目录,不逐号补文档",
"cursor_note": "游标按建族时实测最大号收录(2026-10-25):越界即视为未登记的冒号牌"
},
{
"name": "TC-HOST-UIDATA",
"class": "TC",
"title": "主机侧单测用例号:UI 数据快照层与跨层契约一致性(test/host/ui_data,道E task-14)",
"pattern": "\\bTC-UIDATA-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/ui_data/*"
],
"scope": "global",
"frozen": false,
"cursor": "TC-UIDATA-014",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径(用户裁定 2026-10-21,同 TC-HOST-ADCCAL 先例;2026-10-25 道E task-14 建族):属主登记处 = 单测代码目录,不逐号补文档;本族号同时是 UI 不透明编号与 App 枚举的现场核对锚(SOE 类型/元件号)",
"cursor_note": "游标按建族时实测最大母号收录(2026-10-25):越界即视为未登记的冒号牌"
},
{
"name": "TC-HOST-PROTDIM",
"class": "TC",
@@ -1730,6 +1752,28 @@
"owner_note": "B 层口径(用户裁定 2026-10-21,同 TC-HOST-ADCHEALTH/TC-HOST-ADCCAL 先例;2026-10-25 道A 卡7 建族):属主登记处 = 单测代码目录,不逐号补文档",
"cursor_note": "游标按建族时实测最大号收录(2026-10-25):越界即视为未登记的冒号牌"
},
{
"name": "TC-HOST-VOLSYNC",
"class": "TC",
"title": "主机侧单测用例号:写回缓存空闲 flush(test/host/vol_idle_sync,道F 批 2)",
"pattern": "\\bTC-VOLSYNC-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/vol_idle_sync/*"
],
"scope": "global",
"frozen": false,
"cursor": "TC-VOLSYNC-012",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径(用户裁定 2026-10-21,同 TC-HOST-ADCHEALTH/TC-HOST-ADCCAL 先例;2026-10-25 道F 批 2 建族):属主登记处 = 单测代码目录,不逐号补文档",
"cursor_note": "游标按建族时实测最大号收录(2026-10-25):越界即视为未登记的冒号牌"
},
{
"name": "TC-HOST-MEAS",
"class": "TC",
+1 -1
View File
@@ -7,4 +7,4 @@ date code ro rw zi er_irom1 er_pct iram1 iram1_pct ccm ccm_pct top_rwzi
2026-10-22 213436 18652 1188 131500 232088 22.1 75264 57.4 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6766;ui_port.o=6420;nand_ftl.o=6216;ch395f.o=4162;console_log.o=4120;sys_log_mcu.o=3588;default_task.o=2736
2026-10-23 213676 18860 1188 131500 232536 22.2 75264 57.4 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6766;ui_port.o=6420;nand_ftl.o=6216;ch395f.o=4162;console_log.o=4120;sys_log_mcu.o=3588;default_task.o=2736
2026-10-24 213780 18860 1204 131852 232640 22.2 75632 57.7 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6766;ui_port.o=6420;nand_ftl.o=6216;ch395f.o=4162;console_log.o=4128;sys_log_mcu.o=3944;default_task.o=2736
2026-10-25 215744 21396 1224 131984 237140 22.6 75784 57.8 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6766;ui_port.o=6420;nand_ftl.o=6216;ch395f.o=4162;console_log.o=4128;sys_log_mcu.o=3944;default_task.o=2736
2026-10-25 217204 21504 1256 132680 238708 22.8 76512 58.4 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6766;ui_port.o=6420;nand_ftl.o=6216;ch395f.o=4162;console_log.o=4128;sys_log_mcu.o=3944;default_task.o=2736
1 date code ro rw zi er_irom1 er_pct iram1 iram1_pct ccm ccm_pct top_rwzi
7 2026-10-22 213436 18652 1188 131500 232088 22.1 75264 57.4 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6766;ui_port.o=6420;nand_ftl.o=6216;ch395f.o=4162;console_log.o=4120;sys_log_mcu.o=3588;default_task.o=2736
8 2026-10-23 213676 18860 1188 131500 232536 22.2 75264 57.4 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6766;ui_port.o=6420;nand_ftl.o=6216;ch395f.o=4162;console_log.o=4120;sys_log_mcu.o=3588;default_task.o=2736
9 2026-10-24 213780 18860 1204 131852 232640 22.2 75632 57.7 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6766;ui_port.o=6420;nand_ftl.o=6216;ch395f.o=4162;console_log.o=4128;sys_log_mcu.o=3944;default_task.o=2736
10 2026-10-25 215744 217204 21396 21504 1224 1256 131984 132680 237140 238708 22.6 22.8 75784 76512 57.8 58.4 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6766;ui_port.o=6420;nand_ftl.o=6216;ch395f.o=4162;console_log.o=4128;sys_log_mcu.o=3944;default_task.o=2736
+13 -13
View File
@@ -1,25 +1,25 @@
{
"built_at": "2026-10-25T06:07:53+08:00",
"fingerprint": "9b2b3b209d19275aea4744529bdb7d3b14087c27765e40fb7e25ccdafe0e721d",
"fingerprint_files": 1396,
"built_at": "2026-10-25T10:03:18+08:00",
"fingerprint": "a63f8cb23657ecbb642a47b1e9edee90328086c8d7335e479b428fdd8d6516f5",
"fingerprint_files": 1404,
"fingerprint_source": "git-index",
"gated_regions": [
"RW_IRAM1",
"RW_CCM"
],
"git_head": "73f9e104928472db3084e7d03acdd3e6ac68cd89",
"git_head": "98664a11ed6f7ef80d09ba134998cb9e5f7c47c7",
"map": "MDK-ARM/STM32F407-Demo/STM32F407-Demo.map",
"map_mtime": 1792879590,
"map_mtime": 1792893770,
"pct": {
"ER_IROM1": 22.62,
"ER_IROM1": 22.76,
"RW_CCM": 87.89,
"RW_IRAM1": 57.82,
"RW_IRAM1": 58.37,
"UNINIT_CCM": 18.75
},
"regions": {
"ER_IROM1": {
"max": 1048576,
"size": 237140
"size": 238708
},
"RW_CCM": {
"max": 65280,
@@ -27,7 +27,7 @@
},
"RW_IRAM1": {
"max": 131072,
"size": 75784
"size": 76512
},
"UNINIT_CCM": {
"max": 256,
@@ -37,10 +37,10 @@
"schema": 2,
"scope_note": "\u540c\u7801\u51ed\u8bc1\uff1a\u6307\u7eb9\u8986\u76d6\u56fa\u4ef6\u4f53\u79ef\u76f8\u5173\u6e90\u7801\uff0c\u53e3\u5f84\u89c1\u672c\u811a\u672c docstring",
"sizes": {
"code": 215744,
"ro_data": 21396,
"rw_data": 1224,
"zi_data": 131984
"code": 217204,
"ro_data": 21504,
"rw_data": 1256,
"zi_data": 132680
},
"threshold_pct": 92.0,
"worktree_dirt_at_stamp": 0,
+76 -14
View File
@@ -88,6 +88,14 @@
"lines_covered": 27,
"lines_valid": 29
},
"App/fs/vol_idle_sync.c": {
"func_rate": 1.0,
"funcs_covered": 1,
"funcs_valid": 1,
"line_rate": 1.0,
"lines_covered": 21,
"lines_valid": 21
},
"App/fs/vol_lock.c": {
"func_rate": 1.0,
"funcs_covered": 3,
@@ -303,6 +311,22 @@
"line_rate": 0.9643,
"lines_covered": 108,
"lines_valid": 112
},
"Drivers/BSP/UI/ui_data.c": {
"func_rate": 0.9,
"funcs_covered": 9,
"funcs_valid": 10,
"line_rate": 0.8,
"lines_covered": 52,
"lines_valid": 65
},
"Drivers/BSP/UI/ui_w_soe.c": {
"func_rate": 1.0,
"funcs_covered": 6,
"funcs_valid": 6,
"line_rate": 0.9355,
"lines_covered": 58,
"lines_valid": 62
}
},
"generated_by": "scripts/check_test_coverage.py --update-baseline",
@@ -564,6 +588,21 @@
"lines_total": 99,
"ok": true
},
"ui_data": {
"files": {
"Drivers/BSP/UI/ui_data.c": 65,
"Drivers/BSP/UI/ui_w_soe.c": 62
},
"lines_total": 127,
"ok": true
},
"vol_idle_sync": {
"files": {
"App/fs/vol_idle_sync.c": 21
},
"lines_total": 21,
"ok": true
},
"vol_lock": {
"files": {
"App/fs/vol_lock.c": 17
@@ -593,6 +632,7 @@
"App/cfg/cfg_file.c",
"App/cfg/cfg_file_store_mcu.c",
"App/cfg/prot_set_store.c",
"App/fs/vol_idle_sync.c",
"App/fs/vol_lock.c",
"App/log/console_log.c",
"App/log/soe_rec.c",
@@ -619,20 +659,22 @@
"Drivers/BSP/NET/net_select.c",
"Drivers/BSP/NET/net_socket.c",
"Drivers/BSP/NETCFG/ftp_cfg.c",
"Drivers/BSP/NETCFG/net_cfg.c"
"Drivers/BSP/NETCFG/net_cfg.c",
"Drivers/BSP/UI/ui_data.c",
"Drivers/BSP/UI/ui_w_soe.c"
],
"totals": {
"files_generated_excluded": 5,
"files_tested": 38,
"files_untested": 115,
"func_rate": 0.9258,
"funcs_covered": 412,
"funcs_valid": 445,
"line_rate": 0.8965,
"lines_covered": 5802,
"lines_valid": 6472,
"modules_ok": 35,
"modules_total": 35
"files_tested": 41,
"files_untested": 120,
"func_rate": 0.9264,
"funcs_covered": 428,
"funcs_valid": 462,
"line_rate": 0.8962,
"lines_covered": 5933,
"lines_valid": 6620,
"modules_ok": 37,
"modules_total": 37
},
"untested_sources": [
{
@@ -656,7 +698,7 @@
"path": "Drivers/BSP/UI/ui_content_page.c"
},
{
"code_lines": 281,
"code_lines": 282,
"path": "App/task/default_task.c"
},
{
@@ -667,6 +709,10 @@
"code_lines": 264,
"path": "Drivers/BSP/SD2506/sd2506.c"
},
{
"code_lines": 242,
"path": "App/app/ui_data_feed.c"
},
{
"code_lines": 224,
"path": "App/task/adc_task.c"
@@ -723,13 +769,17 @@
"code_lines": 98,
"path": "Drivers/BSP/SD2506/sd2506.h"
},
{
"code_lines": 95,
"path": "App/task/ui_task.c"
},
{
"code_lines": 93,
"path": "Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h"
},
{
"code_lines": 92,
"path": "App/task/ui_task.c"
"code_lines": 88,
"path": "Drivers/BSP/UI/ui_data.h"
},
{
"code_lines": 83,
@@ -775,6 +825,10 @@
"code_lines": 50,
"path": "Drivers/BSP/UI/ui_w_setlist.h"
},
{
"code_lines": 47,
"path": "Drivers/BSP/UI/ui_w_soe.h"
},
{
"code_lines": 46,
"path": "App/log/soe_rec.h"
@@ -1039,6 +1093,14 @@
"code_lines": 11,
"path": "Drivers/BSP/dbg_cfg.h"
},
{
"code_lines": 10,
"path": "App/app/ui_data_feed.h"
},
{
"code_lines": 10,
"path": "App/fs/vol_idle_sync.h"
},
{
"code_lines": 10,
"path": "App/task/default_task.h"