From 6762481c41fb22ba444ec2ac8e05ec91c434a6ce Mon Sep 17 00:00:00 2001 From: xuans Date: Sun, 27 Sep 2026 18:35:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=9B=BA=E5=AE=9A=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E9=93=BE=E5=8F=8A=E5=8F=8C=E5=85=8B=E9=9A=86=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E9=AA=8C=E6=94=B6=E8=AF=81=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/Scert整改任务执行清单.md | 35 +++++++++++++++++++++++++++- doc/基础整改任务规格.md | 8 +++---- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/doc/Scert整改任务执行清单.md b/doc/Scert整改任务执行清单.md index 6307552..7b5479a 100644 --- a/doc/Scert整改任务执行清单.md +++ b/doc/Scert整改任务执行清单.md @@ -38,7 +38,7 @@ | P0-01 | [x] | 明确产品范围 | 正式发布仅含 Web/服务端,桌面源码保留;CLI 已收敛且实际 Windows 产物验证通过 | 等待最终复审;Windows/Linux 实机安装仍归对应验收项 | 双平台归档及 SHA256、独立克隆、命令树及实际退出码 | | P0-02 | [x] | 建立完整任务清单 | 44 项逐项规格、原始编号名称、字段、六阶段、引用和汇总状态核对通过 | 等待最终复审,随实现同步状态和证据 | 四份规格、统一验收约定及 `fab98d1` 独立克隆 | | P0-03 | [x] | 整理源码、构建产物和部署产物 | 全仓库及子目录规则、目录说明、正式回归和独立克隆构建校验通过 | 等待最终复审,后续提交继续执行边界检查 | 正式 Go 回归、完整索引、双平台 33 项清单及解包校验 | -| P0-04 | [~] | 统一开发和构建版本 | 精确工具链及直接依赖、禁止安装脚本、发布前后校验和构建机清单已实现,25 项专用回归及完整自动化通过 | 独立克隆复测;Linux 原生构建与双平台运行环境仍需记录 | 版本矩阵、175 项前端测试、后端完整回归、开发态双平台构建 | +| P0-04 | [~] | 统一开发和构建版本 | 精确工具链、安装策略、发布前后校验、系统清单及固定换行已实现,双独立克隆和完整自动化通过 | Linux 原生构建与双平台实际运行环境记录,不以交叉编译替代 | `94237b8`、175 项前端测试、后端完整回归、4 个 Web 文件一致、33 项清单和解包校验 | | P0-05 | [!] | 确认数据库正式支持矩阵 | 三种数据库均有代码,但 README、文档和实机证据口径不完全一致 | 明确 SQLite、MySQL、PostgreSQL 的正式级别、版本和迁移回滚要求 | 三数据库迁移、备份恢复和连接测试 | | P0-06 | [~] | 建立统一领域模型 | 已有域名、证书、任务、服务器等实体,项目和部署关联仍需审查 | 补齐资源关系图、外键/归属和任务关联 | 模型文档、迁移检查、接口测试 | | P0-07 | [~] | 增加项目级权限和资源隔离 | 用户组和角色已有实现,项目级资源边界未闭环 | 为证书、DNS、服务器、任务和审计补齐项目归属及越权测试 | 权限矩阵、接口越权测试 | @@ -213,3 +213,36 @@ P0-01 标记 `[x] 已完成,等待复审`,不标记生产放行。整体 44 | 构建后源码边界 | 独立克隆安装依赖、构建和解包后 `git status --short` 为空,发布及证据输出由仓库规则忽略 | 没有二进制、归档、数据库、密钥进入本批提交 | 本批将 P0-02、P0-03 标记为 `[x] 已完成,等待复审`。连同 P0-01,共 3 项处于待复审状态,不标为 `[✓]`。其余任务及全部生产门禁继续保留,整体整改目标尚未完成。 + +### 2026-09-27:P0-04 固定工具链、安装策略与重复构建记录 + +本批北京时间约 18:12 开始。先核查当前工作区,没有待提交改动;修改前检查点 `5fdb5e4`,主要实现 `410ce75`;发现换行差异后检查点 `510a854`,修复后最终候选为 `94237b8e7da37f6242fa115aaf60fef0a88392c2`。所有代码提交已推送,后续仅补充本批证据文档。 + +本批没有 SSH、真实 DNS、浏览器、生产数据库清理或外部数据库连接;只使用正式构建入口和正式回归。没有增加临时辅助验收脚本,没有删除既有发布包和证据目录。`npm ci` 按正式安装语义重建对应克隆的前端依赖目录。 + +| 验证项 | 实际证据 | 边界 | +|---|---|---| +| 精确工具链 | 模块内 Go `1.26.6`;Node `24.19.0`、npm `11.17.0`;Vue `3.5.41`、Vite `6.4.3`、插件 `5.2.4` | 不升级依赖图,只固定已有版本并检查声明与锁文件一致 | +| 安装策略 | `.npmrc` 与正式命令均显式禁用安装脚本;构建包含开发及平台可选依赖 | esbuild 安装警告不再被误当作脚本未执行的证明 | +| 真实安装正反对照 | 离线本地依赖和根项目的生命周期标记在正式安装下均不出现,主动放行对照能出现;环境尝试关闭限制仍被命令行覆盖 | 使用正式 Node 回归中的隔离夹具,不是对生产服务的攻击测试 | +| 嵌套 npm 回归 | 首次完整测试暴露用户级白名单被 npm 导出后导致项目安装拒绝;修复为仅隔离子进程该变量,随后 175 项全部通过 | 未改用户 npm 配置,未开启脚本绕过错误 | +| 发布前拒绝 | 版本、锁文件、策略、外部 esbuild、Go 覆盖等拒绝回归;实际 PowerShell 入口拒绝后未创建发布目录 | 前端 175 项中含 25 项工具链回归,0 跳过 | +| 换行问题与修复 | `410ce75` 在 CRLF 克隆中产生不同 Web 哈希;`.gitattributes` 固定文本 LF,正式 Go 测试实际签出 `true/false/input` 三种配置且保护二进制原样 | 没有用终端脚本批量改写中文源码或重写主工作区 | +| 最终候选完整回归 | `94237b8` 独立克隆中 `go test -p 1 -count=1 -timeout=3m ./...`、`go vet -p=1 ./...`、`go mod verify` 均通过;前端 175/175 通过 | PostgreSQL 真实测试未显式启用,跳过的数据库集成门禁不算实机通过 | +| 双独立克隆 | 分别用 `core.autocrlf=true/false` 与 `--no-local --no-hardlinks` 创建;两份均按新策略干净安装 | 不共享源仓库硬链接或专属排除配置;构建机和工具缓存相同,不称两台独立机器 | +| 前端重复构建 | 两份克隆输出共 4 个文件,路径与 SHA256 全部一致;5 份依赖/策略输入哈希也全部一致 | 不宣称带时间戳的全部发布归档逐字节一致 | +| 构建机证据 | Windows 11 Home China,系统 `10.0.26200`,amd64,PowerShell `5.1.26100.9444` | manifest 不含用户名、主机名或本地绝对路径;Linux 原生构建尚未验证 | +| 最终候选清单 | `source_dirty=false`,`dependency_install=npm-ci`,`dependency_scripts=disabled`;33 项长度和 SHA256 全部正确 | 正式范围仅 Web/服务端,没有桌面产物 | +| 实际解包 | Windows 9 文件/8 条包内校验,Linux 22 文件/21 条包内校验;逐项与 manifest 一致且无额外文件 | 包已解出但未在远端或 Windows Service 中安装运行 | +| 源码边界 | 两份克隆安装、构建和解包后 Git 工作区均干净 | 构建产物及证据没有进入源码提交 | + +最终候选与证据路径: + +```text +build/checkout-toolchain-lf-20260927/ + release/toolchain-94237b8/ + artifacts/toolchain-94237b8/ +build/checkout-toolchain-lf-control-20260927/frontend/dist/ +``` + +P0-04 保持 `[~] 进行中`;代码实现与自动化阶段标 `[x]`,Windows 隔离构建证据已齐,但 Linux 原生构建、双平台实际运行系统及最终复审未齐。不得据此宣称 44 项整改或生产部署验收完成。下一批继续 P0-05 的真实数据库版本、迁移与恢复矩阵;不清空现有共享 MySQL 服务中的业务库。 diff --git a/doc/基础整改任务规格.md b/doc/基础整改任务规格.md index 51f98cc..969e1f2 100644 --- a/doc/基础整改任务规格.md +++ b/doc/基础整改任务规格.md @@ -49,14 +49,14 @@ - 任务编号:P0-04;任务名称:统一开发和构建版本;优先级:P0。 - 当前状态:`[~] 进行中`。 - 六阶段:需求确认 `[x]`;代码实现 `[x]`;自动化测试 `[x]`;隔离环境测试 `[~]`;生产部署测试 `[ ]`;最终验收 `[ ]`。 -- 问题说明:已有模块和锁文件版本;本批补齐精确前端工具链、禁用安装脚本、发布前后校验和构建机记录,仍需独立克隆与运行环境证据。 -- 涉及文件:`backend/go.mod`、`backend/go.sum`、`frontend/package.json`、`frontend/package-lock.json`、`frontend/.npmrc`、`build/build-release.ps1`、`build/toolchain.mjs`、`build/toolchain.test.mjs`、《构建版本与数据库支持矩阵.md》。 +- 问题说明:精确工具链、禁用安装脚本、发布前后校验、构建机记录与换行一致性已实现,Windows 双独立克隆验证通过;Linux 原生构建与双平台运行环境证据仍缺。 +- 涉及文件:`.gitattributes`、`backend/go.mod`、`backend/go.sum`、`backend/internal/releasearchive/source_boundary_test.go`、`frontend/package.json`、`frontend/package-lock.json`、`frontend/.npmrc`、`build/build-release.ps1`、`build/toolchain.mjs`、`build/toolchain.test.mjs`、《构建版本与数据库支持矩阵.md》。 - 依赖任务:P0-01、P0-03。 - 整改内容:记录并固定 Go、Node、npm、Vue、驱动和依赖版本、系统版本、编译目标;检查锁文件安装及构建环境差异。模块内实际 Go 版本优先,不按根目录工具版本降级模块。 - 验证命令:V02、V03、V04;模块内 `go version`、`go env GOVERSION GOTOOLCHAIN`;`node --version`、`npm.cmd --version`。 - 实机验收步骤:全新构建环境按固定版本安装依赖;验证锁文件不漂移;在双平台验收机记录系统版本和运行包版本,比较 manifest。 -- 验收证据:Go 1.26.6、Node 24.19.0、npm 11.17.0 精确检查;前端 175 项通过,其中 25 项工具链回归;真实离线安装正反对照证明脚本策略生效;后端全量测试、vet、模块校验通过,开发态双平台构建通过,独立克隆结果待补。 -- 复审结果:未完成,不以一次构建通过代表可重复发布。 +- 验收证据:最终候选 `94237b8` 独立克隆前端 175 项通过,其中 25 项工具链回归;后端全量测试、vet、模块校验通过;两份不同换行配置的克隆产生相同 4 个 Web 文件和 5 份版本输入哈希;33 项发布清单、双平台解包及包内校验全部通过,详见执行清单本批记录。 +- 复审结果:Windows 构建与前端重复构建已验证;整体仍未完成,不能用交叉编译替代 Linux 原生构建或真实服务运行验收。 ## P0-05 确认数据库正式支持矩阵