将《代码审计 → 上线 完整交付方案》v1.0 适配到 nodeagent,产出 docs/DELIVERY-PIPELINE.md,并落地其中可执行的部分。 ## 为什么要适配而不是照搬 原方案面向 Web/容器服务(有服务端、有镜像、有多环境)。nodeagent 是 跑在用户机器上的跨机接管框架,无服务端、无容器、无多环境。照搬会产生 「跑得很好但守不住任何东西」的假门禁。故每个阶段给三档判定: 适用 / 改造后适用 / 不适用(但必须给替代,不允许只写 N/A)。 关键替换: - 容器镜像扫描 → 交付物 PE 架构断言(arm64 包误装 x64 node.exe 的真实事故) - DAST → 协议健壮性测试(本项目对外输入面是 WebSocket RPC,非 HTTP) - dev/staging/prod → 真机矩阵(Win x64/arm64、macOS、Linux) - 金丝雀 → 设备分批自更新(先一台试点,latest.json 灰度) - Prometheus → system.metrics(闭环率/P95/拦截率)+ 发布后复核清单 ## 本次落地 1. 覆盖率门禁 scripts/ci/check-coverage.mjs - 全量**只观测不阻断**(实测基线 66.9%,照搬 80% 全量不现实) - 变更文件行覆盖率 ≥70% 阻断;单测 import 的是 dist/,需 src→dist 映射 - 无覆盖数据的变更文件不阻断,单列供人工判断(算 0% 会让重构无法合入) 2. 提交信息校验 scripts/ci/check-commit-msg.mjs - 项目实际已在用 Conventional Commits,但无强制 → 变成会红的门禁 - 不引 commitlint+husky:本项目只需类型白名单,几十行即可且 CI 本地都能跑 3. .github/workflows/quality-gate.yml:gitleaks + pnpm audit + typecheck + 覆盖率 + 提交规范 4. CI artifact retention-days 30 → 7(公开可下载,留存越久暴露面越大) 5. LKG(最后已知可用版本)apps/agent/src/lkg.ts - 只在**启动成功后**才写,不在更新写完时写(否则等于把未验证版本当已知可用) - 暴露为 system.info.lkg,matches=false 表示当前版本尚未被证明能启动 - 控制端据此暂缓向其余设备放量 ## 刻意不做的事:自动回滚 远程设备上无法区分「更新坏了」与「网络抖动」;自动回滚可能形成回滚循环; 被控端自作主张改自己会让控制端失去掌控。故 LKG 只提供确定的回滚目标, 决策权留给控制端。已在文档中写明取舍理由。 ## 实测证据 - 覆盖率门禁三条故障注入均 exit=1(阈值100 / 全量99 / lcov缺失),正常 exit=0 - 提交规范反例 3 类均红,Merge 与无 scope 正确豁免,历史 20 条提交一次通过 - LKG 新增 8 条单测(含篡改 hash 必须检出 matches=false) - 既有契约测试在新增 lkg 字段后立刻报红(SystemInfo 缺声明),补接口后转绿 —— 这本身是门禁有效的实证 - 全量单测 341 → 349 全绿
Tauri + Vue + TypeScript
This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 <script setup> SFCs, check out the script setup docs to learn more.