Files
hepu/docs/handover/03_Z-02_清理后哈希与构建说明.md
aomin a7605ef8b8 chore(repo): 导入 M-Z 业务底座 V1.9 基线并建立仓库规范
按周工交付的 SEC-Z-01 清理后源码建立 M-Z 主干,并按 Git 仓库惯例重排目录。

- aomin-gateway/  后端工程 87 文件,原样保留,路径与构建命令未变
- demo/           演示前端与设备模拟器 9 文件(原 02_前端与设备端),非正式三端
- docs/handover/  交付与安全清理材料 6 份,内容未改
- docs/contract/  J-00 规格、OpenAPI、内部五接口、状态机、Mock 样例
- docs/reference/ 指纹与校验清单,含 84 个源码文件的 sha256 清单

目录重排只动位置不动内容:源码树 84 文件哈希与交付一致,逐文件自校验通过;
12 条 Flyway 迁移与交付包内镜像逐字节一致。

未纳入:迁移镜像目录(与工程内一套重复,改留指纹)、target/、证据 raw、
应急恢复脚本、评审用虚构台账数据。

安全:SEC-Z-01 15 处明文已清零,导入前重新扫描无新增命中,本仓库无历史污染。
行尾按交付字节原样保存(.gitattributes 设 * -text),不做归一化以免整树摘要失效。
2026-11-13 17:32:37 +08:00

8.0 KiB
Raw Permalink Blame History

Z-02 清理后源码树哈希、包哈希与构建说明

项 内容
依据 AM-S1-GOV-020 §4.4「Z-02」
交付人 周工
时间 2026-11-13
结论 清理后指纹已重算;155 条在本基线真实重跑并全过,不是沿用旧结果

一、清理前后指纹对比

指纹 清理前(V1.9 第二版) 清理后(本件) 变化原因
源码树摘要(01_后端源码/src,84 文件) 60FA6938…(上批) 5E9F894B0D1071969A968F2A9B1451279ADF39D423148186886BFD064398F286 改了 1 个 java(启动守卫)+ yml 注释与默认值
可执行 jar 43,516,447 B / 652E1602… 43,517,256 B / 1F38F527605F09AA45E9E54528AFB11230469E1B197FA001C06E8725FD102192 重新构建,含新配置与新类
契约版本 1.8.1 1.8.1 未变
迁移版本 1.0.28(12 条) 1.0.28(12 条) 未变(本次不动 DDL)
明文口令 15 处 0 处 本件清理目标

源码树摘要算法:把 01_后端源码/src 下每个文件的「相对路径 + 该文件 SHA-256」按路径排序后拼接,再整体算一次 SHA-256。改一个字节即变,等效于"这一棵树"的指纹(不是 Git commit)。


二、本次改动文件逐个哈希(16 个)

# 文件 字节 SHA-256(改后)
1 01_后端源码/src/main/resources/application.yml 9,636 3912006F4C6432965DAF2F590D229509363A1FEAFF9D7FB60DF6F93E5D6C16C9
2 01_后端源码/src/main/java/cn/aomin/gateway/GatewayApplication.java 2,639 2C315FCBABD70D5282AE33CA00DCEAFB352D14253C6B3D33D9C2A3FC717DC1B6
3 05_启动构建与测试说明/启动构建与测试说明.md 16,116 D4AAF430598FD1DB121697B5519F0206D7CFA5552C6C400292CABF18730A8BC1
4 09_代码与版本/README.md 5,845 50F128904869F1F56676DA06A42794C77106154C946D91AEA95BF24A02CFA365
5 06_统一闭环题自测证据/alarm_retry_test.py 6,708 24F062EAE16BF449170FA5D7A9404364F16950262108C9247C378DC2C9966E2A
6 06_统一闭环题自测证据/closed_loop_test.py 9,579 F17E59D6B9F7B63CE7818108D4D574EEF60EB16FEB0E8E708EA91F15B5054C8E
7 06_统一闭环题自测证据/cmd_chain_test.py 17,290 1C4FD7CF30D7A4ADBA4D61683449B8954D2FA630E5FEB079C97E9BCC3958035B
8 06_统一闭环题自测证据/run_evidence.py 21,551 478D672726193874CD9544EAEDB92D6FA887A2BAAB7D211F753290204822CA37
9 06_统一闭环题自测证据/scope_test.py 11,005 ACE8150FBC566D5AF796D4FADA14CC9927E4C8D6114DB919C883F307309E0651
10 06_统一闭环题自测证据/stamp_evidence.py 10,670 DA33B7B431279FE5064420AD6C8BA7F48CED6E4B7EF79BC7AE0B3A0171D63035
11 06_统一闭环题自测证据/v15_fix_test.py 11,575 C0C073AE6495717AF902F94552D9E40A69DCC67A8D840ECC3C130F322F6518EA
12 06_统一闭环题自测证据/v16_fix_test.py 16,120 08C425D9620E414B56E2FEF59B9C632054F18BBA9EEBA92F640FB447CC3F51E7
13 06_统一闭环题自测证据/v17_merge_test.py 11,748 A2BCBED23683554B1E661BD85304F056B55F2149272A7CBC72D7EE92546F7603
14 06_统一闭环题自测证据/v18_fix_test.py 7,375 48EC29ACFA0F9E9EAE28971973B1095FBA77B7CF42C8027FBAC615D66C7197A4
15 06_统一闭环题自测证据/v19_gov008_test.py 15,881 8599CBCF41E81E670598310D003FC03BAAD21CB0B0130EADAAB7A15A8858A4DC
16 06_统一闭环题自测证据/v20_node_test.py 10,843 8DDBF8996B989D446D667D454DB222F2EAA15D0918F28C0033E4DAF53931088C

除以上 16 个,包内其余文件的哈希都在 09_代码与版本/SHA256SUMS.txt 里,本件已重新生成(原 131 项 → 现 131 项,内容更新)。


三、构建说明(可复现,约 21 秒)

环境

项 要求
JDK 21.0.2(G:/aomin-dev/jdk-21.0.2)
Maven 3.x,离线仓库 G:/aomin-dev/downloads/settings.xml
依赖 已预置在本地仓库,-o 离线模式可用

构建命令

cd <源码根>/aomin-gateway
mvn -o -q -s <settings.xml> -DskipTests clean package
# 产物:target/aomin-gateway-0.0.1-SNAPSHOT.jar

实测:21 秒,exit=0,产物 43,517,256 B。

启动(必须带 DB_PASS)

# Windows
set DB_PASS=<口令>
# Linux / macOS
export DB_PASS=<口令>

java -jar target/aomin-gateway-0.0.1-SNAPSHOT.jar --server.port=8080 --server.address=0.0.0.0

缺少 DB_PASS 会立即中止(退出码 1),不会带着空口令去连库:

[启动中止] 缺少必需的环境变量 DB_PASS(数据库口令)。
  SEC-Z-01:程序不再内置任何默认口令,也不会回退到包内明文。
  设置方法:Windows  set DB_PASS=<口令>        Linux/macOS  export DB_PASS=<口令>

启动后自检

curl http://127.0.0.1:8080/health

本机实测返回:

{"code":0,"msg":"ok","data":{"app":"aomin-gateway","db":"connected","tables":87,
 "schema":"aomin_dev","redis":"connected","flyway":"1.0.28","alarmBacklog":0,
 "alarmStale":0,"alarmDeadLetter":0,"auditFailures":0,"warnings":[],"status":"UP"}}

要点:db: connected、tables: 87、flyway: 1.0.28、status: UP。


四、入库建议(给陈工建主干时用)

4.1 .gitignore

见同目录 gitignore_建议.txt,核心是三条:

  • target/、*.jar —— 构建产物不入库;
  • .env、*.local.yml、application-local.yml —— 本地配置可能含口令;
  • 06_统一闭环题自测证据/raw|out|screenshots/ —— 证据原始数据体积大、每轮变化,按受控目录单独交付,不进代码历史。

4.2 首次提交顺序(顺序不能反)

① 确认 15 处已清、扫描 0 命中
② git init
③ 放入 .gitignore
④ git add -A && git status   ← 人工看一眼,确认没把 target/ 和 .env 加进来
⑤ git commit -m "初始提交:M-Z 业务底座 V1.9 基线(SEC-Z-01 清理后)"
⑥ git remote add origin <陈工给的地址> && git push -u origin main

为什么必须先清后推:git 记录每一版。今天删掉明文、明天再提交一次,第一条提交里照样有。要彻底清只能重写全部历史(filter-repo),成本远高于现在清 15 处。

好消息:当前 G:/aomin-dev/app/aomin-gateway 不是 git 仓库,包内也没有 .git,不存在历史污染,属于干净起点。

4.3 交付目录建议

主干/
├── src/main/java/…            业务代码(M-Z)
├── src/main/resources/
│   ├── application.yml        已无默认口令
│   └── db/migration/          Flyway 12 条,最新 1.0.28
├── pom.xml
└── .gitignore

证据材料(06_…/raw、06_…/out、截图)不进主干,走受控目录交付。


五、版本标识一致性(四项对齐)

标识 值
模型版本 V1.9(已冻结,本次仅为 SEC-Z-01 最小安全清理,未升 V1.10)
源码树摘要 5E9F894B0D1071969A968F2A9B1451279ADF39D423148186886BFD064398F286
可执行 jar 1F38F527605F09AA45E9E54528AFB11230469E1B197FA001C06E8725FD102192(43,517,256 B)
契约版本 J-00 1.8.1
迁移版本 Flyway 1.0.28,12 条
证据批次 R20261113-112443,11 组 / 155 条 / 失败 0

六、交付包自检(打出包后实测)

项 结果
条目数 93(源码 87 + 4 份说明 + gitignore_建议.txt + SHA256SUMS_源码契约迁移脚本.txt)
解压后 aomin-gateway/src 84 个文件,与包内 01_后端源码/src 逐文件哈希完全一致
解压后含明文口令 0
独立编译 解压到空目录后 mvn -o -q -s <settings> -DskipTests compile → exit 0,GatewayApplication.class 正常生成

包自身的 SHA-256 只在交付渠道给出,不写进包内(写进去包一改哈希就变,形成死循环)。


配套材料:01 差异清单、02 扫描报告、04 155 条证据适用边界、gitignore_建议.txt。