知识库基准版本锁定
用途:判断「解析文档」与「源码」谁过期了。源码一变,本文件的哈希就会对不上,即提示需要重跑解析。 建立日期: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/决策记录.mdADR-001。
二、覆盖边界核算(账目可验算)
源码树内 .c/.h 总数(排除 .git/):454
| 类别 | 数量 | 是否文档化 |
|---|---|---|
应用层候选(排除 UCOSII/ HALLIB/ hardware/ system/) | 279 | — |
| ├ 已文档化 | 191 | ✅ |
├ hmi/ui/ 菜单界面 | 77 | ⛔ 本轮不纳入 |
├ 芯片驱动:w5500.c/.h、wizchip_conf.c/.h、WM6232PU.c/.h | 6 | ⛔ 底层芯片驱动 |
└ 芯片启动/中断:gd32f4xx_it.c/.h、gd32f4xx_libopt.h、system_gd32f4xx.c/.h | 5 | ⛔ 底层 |
底层(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,产出与搬迁前的旧版逐字节一致,证明工具链已恢复且索引未漂移。
| 索引 | 条数 |
|---|---|
函数索引.tsv | 2364 |
类型与宏索引.tsv | 2787 |
全局变量索引.tsv | 505 |
| 功能索引(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 核对)。