EMS 知识库
首页 / knowledge

知识库基准版本锁定

用途:判断「解析文档」与「源码」谁过期了。源码一变,本文件的哈希就会对不上,即提示需要重跑解析。 建立日期:2026-10-15 | 需求号:REQ-001


一、源码基准

项值
源码树platform-ems-3-6-plain/
git commit(完整)04e72700204553f05a621c0499131845548f7057
git commit(短)04e72700
commit 说明G3-S10申请版本号V0.11.676
固件版本V0.11.676
换行符全部 CRLF(191/191 文件)
已文档化源文件数191
已文档化源文件总字节7,193,192
汇总哈希(sha256)274114398732e4104cc0242fd19805dfeb3269799ec6f445001c1aaf8f7094c6

汇总哈希的算法(逐文件按路径排序后拼接,再整体 sha256):

对排序后的 191 个源文件,依次拼接一行:
    <相对路径>\t<字节数>\t<该文件 sha256>\n
把拼接结果整体做一次 sha256,即为汇总哈希。

逐文件哈希见同目录 基准哈希.tsv。

⚠️ 注意:platform-ems-3-6/ 目录(无 -plain)的 264 个 .c 全部为加密二进制,不可读,不是本知识库的基准,不在哈希范围内。详见 docs/决策记录.md ADR-001。


二、覆盖边界核算(账目可验算)

源码树内 .c/.h 总数(排除 .git/):454

类别数量是否文档化
应用层候选(排除 UCOSII/ HALLIB/ hardware/ system/)279—
├ 已文档化191✅
├ hmi/ui/ 菜单界面77⛔ 本轮不纳入
├ 芯片驱动:w5500.c/.h、wizchip_conf.c/.h、WM6232PU.c/.h6⛔ 底层芯片驱动
└ 芯片启动/中断:gd32f4xx_it.c/.h、gd32f4xx_libopt.h、system_gd32f4xx.c/.h5⛔ 底层
底层(UCOSII/ 48 + HALLIB/ 58 + hardware/ 56 + system/ 13)175⛔ 不纳入

验算:191 + 77 + 6 + 5 = 279 ✔ ;279 + 175 = 454 ✔

未文档化的 77 个 hmi/ui/ 文件(后续 K4 批次补)

ui.h、ui_Information.c、ui_control_exception.c、ui_ct_rate.c、ui_exit_setting.c、ui_factory_mode.c、ui_factory_reset.c、ui_history.c、ui_history_bat_chg_energy_from_grid.c、ui_history_bat_chg_energy_from_pv.c、ui_history_error_log.c、ui_history_grid_consumption.c、ui_history_local_yield.c、ui_history_pv_yield.c、ui_history_yield.c、ui_longkey_restart_system.c、ui_machine_reset.c、ui_main.c、ui_menu.c、ui_password.c、ui_reset_energy.c、ui_reset_meter.c、ui_selftest.c、ui_setting_Installer.c、ui_setting_admin.c、ui_setting_admin_debug.c、ui_setting_admin_debug_battery.c、ui_setting_admin_debug_meter.c、ui_setting_admin_debug_power.c、ui_setting_admin_safety.c、ui_setting_backupbox.c、ui_setting_user.c、ui_setting_user_fun_grid_force_charge.c、ui_setting_user_func.c、ui_setting_user_func_ac_parallel.c、ui_setting_user_func_battery.c、ui_setting_user_func_dc_parallel.c、ui_setting_user_func_generator.c、ui_setting_user_func_generator_GCATS.c、ui_setting_user_func_generator_controllers.c、ui_setting_user_func_generator_enable.c、ui_setting_user_func_generator_mode.c、ui_setting_user_func_generator_mode_select.c、ui_setting_user_func_generator_rate_output_power.c、ui_setting_user_func_grid.c、ui_setting_user_func_grid_DRMs.c、ui_setting_user_func_grid_forming.c、ui_setting_user_func_grid_freq.c、ui_setting_user_func_grid_freq_sustained_op_AS4777.c、ui_setting_user_func_grid_power_limit.c、ui_setting_user_func_grid_pq_mode.c、ui_setting_user_func_grid_pq_mode_export_ctrl.c、ui_setting_user_func_grid_pq_mode_pow_fac.c、ui_setting_user_func_grid_pq_mode_pow_rate_lim.c、ui_setting_user_func_grid_pq_mode_vol_resp.c、ui_setting_user_func_grid_pq_mode_vol_resp_p.c、ui_setting_user_func_grid_pq_mode_vol_resp_q.c、ui_setting_user_func_grid_voltage.c、ui_setting_user_func_parallel.c、ui_setting_user_func_pv_connection.c、ui_setting_user_func_ups_system.c、ui_setting_user_func_work_mode.c、ui_setting_user_func_work_mode_select.c、ui_setting_user_sys.c、ui_setting_user_sys_date.c、ui_setting_user_sys_ethernet.c、ui_setting_user_sys_language.c、ui_setting_user_sys_new_password.c、ui_status.c、ui_status_bat.c、ui_status_comm.c、ui_status_grid.c、ui_status_solar.c、ui_status_ups.c、ui_test_report.c

这 77 份的解析文档已经存在,备份在仓库根 _excluded_hmi_ui_docs/,只是本轮未纳入知识库。补入时可直接迁进 代码解析/hmi/ui/ 并重跑索引。


三、索引规模(重跑校验通过)

2026-10-15 在搬迁后的新位置重跑 生成索引.js,产出与搬迁前的旧版逐字节一致,证明工具链已恢复且索引未漂移。

索引条数
函数索引.tsv2364
类型与宏索引.tsv2787
全局变量索引.tsv505
功能索引(7 份,自然语言反查行)1776

四、如何复核本文件

在仓库根 D:\V0.11.676拉取 下执行(Node.js):

cd "D:/V0.11.676拉取"
node -e '
const fs=require("fs"),path=require("path"),cp=require("crypto");
const REPO=process.cwd(), MIRROR=path.join(REPO,"docs","knowledge","代码解析"), SRC=path.join(REPO,"platform-ems-3-6-plain");
const walk=(d,a)=>{a=a||[];for(const e of fs.readdirSync(d,{withFileTypes:true})){const p=path.join(d,e.name);e.isDirectory()?walk(p,a):a.push(p);}return a;};
const srcs=walk(MIRROR).filter(p=>p.endsWith(".md")).map(p=>path.relative(MIRROR,p).split(path.sep).join("/")).filter(r=>r!=="README.md"&&!r.startsWith("索引/")).map(r=>r.slice(0,-3)).filter(r=>/\.(c|h)$/.test(r)).sort();
const agg=cp.createHash("sha256"); let bytes=0;
for(const rel of srcs){const b=fs.readFileSync(path.join(SRC,rel)); bytes+=b.length;
  agg.update(rel+"\t"+b.length+"\t"+cp.createHash("sha256").update(b).digest("hex")+"\n");}
console.log("文件数:",srcs.length," 字节:",bytes," 汇总哈希:",agg.digest("hex"));'

期望输出:

文件数: 191  字节: 7193192  汇总哈希: 274114398732e4104cc0242fd19805dfeb3269799ec6f445001c1aaf8f7094c6

与上面不一致 ⇒ 源码已变动,需要重跑解析与索引。当前状态:一致(2026-10-15 核对)。