chore: 统一本地服务器与远程仓库源码

- 合并 main 与 master 历史并以服务器结构为基线
- 保留迁移、数据保留、AWS 账单与部署安全能力
- 建立 SDD 规格和 CI 验证闭环
This commit is contained in:
Logan.Li committed 2026-08-05 20:03:25 +08:00
commit fd60361d93
460 files changed
+37492 -23871

No files matched your search

@@ -0,0 +1,92 @@
# 本地、生产服务器与远程仓库源码统一
| 字段 | 内容 |
|------|------|
| 状态 | Accepted |
| 级别 | S3 |
| 负责人 | Logan.Li |
| 创建日期 | 2026-08-05 |
| 最后更新 | 2026-08-05 |
| 关联任务 | 以 `/srv/aiops` 为主统一本地、服务器和 Git 远程仓库 |
## 1. 背景与证据
本地工作区位于 `main@7a16808`,服务器工作区位于 `master@f22e575`,两端分别与对应远程分支一致,但都有大量未提交改动。内容审计发现服务器有 131 个本地不存在的源码文件,本地有 12 个服务器不存在的近期工程文件,另有 39 个同路径文件内容不同。当前生产二进制包含部分本地独有后端能力,因此直接单向覆盖任一工作区都会造成代码或可复现性丢失。
## 2. 目标与非目标
### 目标
- 以服务器源码结构和行为为主形成唯一可构建源码。
- 保留本地独有且已验证或已进入生产二进制的功能,不丢失近期账单、迁移、数据保留和 CI 工程能力。
- 让远程 `master` 与 `main`、本地工作区和服务器源码指向同一提交。
- 保留变更前完整备份,并验证构建、测试、迁移和生产健康状态。
### 非目标
- 不提交生产 `config.yaml`、密钥、数据库、日志、备份、运行 PID 或历史二进制。
- 不在本次整理业务数据或执行数据库清理。
- 不改变生产运行参数和用户凭据。
## 3. 需求
### 功能需求
- `FR-01`:统一提交必须包含服务器权威源码和本地独有的有效工程文件。
- `FR-02`:远程 `master` 与 `main` 必须最终解析到同一提交。
- `FR-03`:本地和服务器的受管源码必须与统一提交一致。
- `FR-04`:生产配置和运行数据必须保留在 Git 管理范围之外或保持未被覆盖。
### 非功能需求
- `NFR-01`:任何覆盖、删除或分支更新前必须生成可验证备份。
- `NFR-02`:统一源码必须通过后端、前端和 Agent 的最低构建门禁。
- `NFR-03`:生产服务切换后 `/version`、迁移状态、进程和错误日志必须正常。
## 4. 设计与边界
从 `origin/master` 创建独立 Git worktree。将服务器源码复制到该工作区,排除 `.git`、数据库、配置密钥、日志、缓存、备份、构建产物和历史二进制;再合并本地独有功能文件与本规格。测试通过后创建单一整合提交,并以普通快进或带租约保护的方式更新远程分支。
本地与服务器现有工作区在对齐前分别归档。对齐时仅重置受 Git 管理的源码;生产 `config.yaml`、数据库、日志、备份和运行文件保持不变。
## 5. 风险与可观测性
| 风险/失败模式 | 防护或降级 | 观测信号 |
|---------------|------------|----------|
| 服务器重构覆盖本地功能 | 隔离合并并保留本地独有文件,构建测试后才提交 | Git diff、测试结果 |
| 误提交生产密钥或数据 | 明确排除运行配置、数据库、日志和备份,并审计提交文件 | `git status`、提交清单 |
| 两个远程分支历史不同 | 先保存 bundle,再统一到经过验证的整合提交 | `git ls-remote` |
| 生产源码与二进制不一致 | 用统一源码重建 Linux 二进制并核对版本 | `/version`、二进制 SHA-256 |
## 6. 验收标准
- `AC-01`:给定统一提交,`origin/master` 与 `origin/main` 返回相同提交哈希。
- `AC-02`:给定统一提交,本地和服务器受管源码执行内容校验时没有差异。
- `AC-03`:统一源码通过 Go 后端、Agent、TypeScript、ESLint 和生产前端构建检查。
- `AC-04`:生产服务使用统一源码构建的 Linux 二进制启动,`/version`、迁移状态和日志正常。
- `AC-05`:生产配置、数据库、日志和备份未进入提交且未被覆盖。
## 7. 验证追踪
| 验收标准 | 测试或检查 | 结果 |
|----------|------------|------|
| AC-01 | `git ls-remote origin refs/heads/main refs/heads/master` | Pending |
| AC-02 | 双向 `rsync --dry-run --checksum --delete`(排除运行文件) | Pending |
| AC-03 | `go test/go vet/go build`、`tsc`、ESLint、Vite build、Agent build | Pass(2026-08-05) |
| AC-04 | Linux 构建、`/version`、`migrate status`、进程和日志检查 | Pending |
| AC-05 | 提交文件审计与生产文件哈希/存在性检查 | Pending |
## 8. 发布与回滚
发布前保存本地和服务器源码归档、Git bundle、生产二进制及数据库现有备份。若统一源码验证失败,不更新远程分支或现有工作区。若生产切换失败,恢复上一二进制并保留统一提交供离线修复。远程分支更新使用预期旧哈希或 `--force-with-lease` 防止覆盖并发提交。
## 9. 决策记录
| 日期 | 决策 | 原因与影响 |
|------|------|------------|
| 2026-08-05 | 服务器源码为结构基线,本地独有有效能力采用合并而非删除 | 服务器包含较新的组件拆分,本地包含当前生产二进制所需的新能力 |
| 2026-08-05 | 生产配置与运行数据不纳入源码一致性 | 防止泄密和破坏运行环境 |
## 10. 遗留事项
- 统一完成后应使用同一主分支开发,禁止继续在生产工作区直接形成长期未提交改动。