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),不做归一化以免整树摘要失效。
This commit is contained in:
commit
a7605ef8b8
121 files changed
+23629
No files matched your search
@@ -0,0 +1,175 @@
|
||||
# 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`。*
|
||||
Reference in new issue
Block a user