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

176 lines
8.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` 离线模式可用 |
### 构建命令
```bash
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`**)
```bash
# 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=<口令>
```
### 启动后自检
```bash
curl http://127.0.0.1:8080/health
```
本机实测返回:
```json
{"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`。*