From c91a64fddb9c2578af0143234ed2738685f044ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=91=E5=B8=85?= Date: Mon, 27 Jul 2026 20:40:12 +0800 Subject: [PATCH] chore(repo): initialize team collaboration repository --- .gitattributes | 16 + .gitea/PULL_REQUEST_TEMPLATE.md | 24 + .gitea/workflows/ci.yml | 42 + .gitignore | 57 + CONTRIBUTING.md | 111 + ...试值守机器人_产品开发与规划方案_v1.0.docx | Bin 0 -> 515106 bytes ProjectManual.md | 1606 +++++++++ README.md | 35 + ..._固件回归测试值守机器人_完整方案_V1.0.docx | Bin 0 -> 516839 bytes ...abOS_顾问评估报告_可行性与竞品调研_V1.0.md | 360 ++ flashops/.gitignore | 26 + flashops/Makefile | 74 + flashops/README.md | 103 + flashops/deploy/README.md | 35 + flashops/deploy/certbot-reload-nginx.sh | 4 + flashops/deploy/flashops.service | 31 + flashops/deploy/gitea/README.md | 41 + flashops/deploy/gitea/backup.sh | 25 + flashops/deploy/gitea/docker-compose.yml | 28 + flashops/deploy/gitea/gitea-backup.service | 11 + flashops/deploy/gitea/gitea-backup.timer | 11 + flashops/deploy/gitea/nginx-http.conf | 25 + flashops/deploy/gitea/nginx.conf | 47 + flashops/deploy/nginx-http.conf | 26 + flashops/deploy/nginx-https.conf | 47 + flashops/docker-compose.yml | 78 + flashops/docs/adapter-sdk.md | 90 + flashops/docs/agent-protocol.md | 90 + flashops/docs/architecture.md | 99 + .../docs/decisions/0001-monorepo-and-stack.md | 39 + .../docs/decisions/0002-event-sourcing.md | 44 + .../0003-own-state-machine-over-temporal.md | 51 + .../decisions/0004-safety-in-control-plane.md | 51 + .../0005-simulator-as-first-class.md | 43 + flashops/docs/domain-model.md | 96 + flashops/docs/state-machine.md | 134 + flashops/docs/workflow-spec.md | 123 + .../flashops_control/__init__.py | 5 + .../flashops_control/api/__init__.py | 1 + .../flashops_control/api/agents.py | 276 ++ .../flashops_control/api/deps.py | 47 + .../flashops_control/api/routes.py | 258 ++ .../control-plane/flashops_control/cli.py | 74 + .../control-plane/flashops_control/config.py | 107 + .../control-plane/flashops_control/db.py | 106 + .../flashops_control/engine/__init__.py | 5 + .../flashops_control/engine/planner.py | 159 + .../flashops_control/engine/recovery.py | 37 + .../flashops_control/engine/states.py | 44 + .../control-plane/flashops_control/enums.py | 234 ++ .../flashops_control/events/__init__.py | 5 + .../flashops_control/events/recorder.py | 54 + .../flashops_control/evidence/__init__.py | 5 + .../flashops_control/evidence/bundle.py | 69 + .../control-plane/flashops_control/main.py | 53 + .../flashops_control/models/__init__.py | 31 + .../flashops_control/models/analysis.py | 112 + .../flashops_control/models/assets.py | 111 + .../flashops_control/models/base.py | 64 + .../flashops_control/models/run.py | 188 ++ .../flashops_control/models/workflow.py | 35 + .../flashops_control/safety/__init__.py | 5 + .../flashops_control/safety/gates.py | 90 + .../control-plane/flashops_control/schemas.py | 80 + .../control-plane/flashops_control/seed.py | 141 + .../flashops_control/services/__init__.py | 1 + .../flashops_control/services/agent_status.py | 95 + .../flashops_control/services/runs.py | 560 ++++ .../flashops_control/services/step_leases.py | 547 +++ .../services/control-plane/requirements.txt | 19 + .../tests/test_agent_enrollment.py | 24 + .../control-plane/tests/test_agent_status.py | 53 + .../tests/test_e2e_vertical_slice.py | 413 +++ .../control-plane/tests/test_recovery.py | 40 + .../control-plane/tests/test_safety.py | 39 + .../control-plane/tests/test_state_machine.py | 22 + flashops/services/host-agent/README.md | 56 + .../host-agent/flashops_agent/__init__.py | 3 + .../host-agent/flashops_agent/__main__.py | 180 + .../host-agent/flashops_agent/client.py | 247 ++ .../host-agent/flashops_agent/fingerprint.py | 97 + .../host-agent/flashops_agent/state.py | 65 + .../services/host-agent/tests/test_client.py | 141 + 前端UI八页面完成/.thumbnail | Bin 0 -> 24422 bytes 前端UI八页面完成/Assets.dc.html | 188 ++ 前端UI八页面完成/Compare.dc.html | 179 + 前端UI八页面完成/ConsoleNav.dc.html | 143 + 前端UI八页面完成/Dashboard.dc.html | 429 +++ 前端UI八页面完成/Deck.dc.html | 597 ++++ 前端UI八页面完成/Evidence.dc.html | 272 ++ 前端UI八页面完成/Failures.dc.html | 181 + 前端UI八页面完成/LiveRun.dc.html | 450 +++ 前端UI八页面完成/Tasks.dc.html | 264 ++ 前端UI八页面完成/Workflows.dc.html | 239 ++ .../_adherence.oxlintrc.json | 152 + .../_ds_bundle.js | 11 + .../_ds_manifest.json | 1 + .../readme.md | 82 + .../styles.css | 285 ++ .../_template/deck/palette.dc.html | 1036 ++++++ 前端UI八页面完成/assets/photo.jpg | Bin 0 -> 283445 bytes 前端UI八页面完成/deck-stage.js | 2952 +++++++++++++++++ 前端UI八页面完成/ds-base.js | 20 + 前端UI八页面完成/image-slot.js | 1223 +++++++ 前端UI八页面完成/support.js | 1911 +++++++++++ 前端UI八页面完成/uploads/flashops-text.md | 983 ++++++ 前端UI八页面完成/uploads/flashops.docx | Bin 0 -> 515106 bytes 前端UI八页面完成/uploads/labos-text.md | 802 +++++ 前端UI八页面完成/uploads/labos.docx | Bin 0 -> 516839 bytes 109 files changed, 21121 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitea/PULL_REQUEST_TEMPLATE.md create mode 100644 .gitea/workflows/ci.yml create mode 100644 .gitignore create mode 100644 CONTRIBUTING.md create mode 100644 FlashOps_存储固件回归测试值守机器人_产品开发与规划方案_v1.0.docx create mode 100644 ProjectManual.md create mode 100644 README.md create mode 100644 Storage_LabOS_固件回归测试值守机器人_完整方案_V1.0.docx create mode 100644 Storage_LabOS_顾问评估报告_可行性与竞品调研_V1.0.md create mode 100644 flashops/.gitignore create mode 100644 flashops/Makefile create mode 100644 flashops/README.md create mode 100644 flashops/deploy/README.md create mode 100644 flashops/deploy/certbot-reload-nginx.sh create mode 100644 flashops/deploy/flashops.service create mode 100644 flashops/deploy/gitea/README.md create mode 100644 flashops/deploy/gitea/backup.sh create mode 100644 flashops/deploy/gitea/docker-compose.yml create mode 100644 flashops/deploy/gitea/gitea-backup.service create mode 100644 flashops/deploy/gitea/gitea-backup.timer create mode 100644 flashops/deploy/gitea/nginx-http.conf create mode 100644 flashops/deploy/gitea/nginx.conf create mode 100644 flashops/deploy/nginx-http.conf create mode 100644 flashops/deploy/nginx-https.conf create mode 100644 flashops/docker-compose.yml create mode 100644 flashops/docs/adapter-sdk.md create mode 100644 flashops/docs/agent-protocol.md create mode 100644 flashops/docs/architecture.md create mode 100644 flashops/docs/decisions/0001-monorepo-and-stack.md create mode 100644 flashops/docs/decisions/0002-event-sourcing.md create mode 100644 flashops/docs/decisions/0003-own-state-machine-over-temporal.md create mode 100644 flashops/docs/decisions/0004-safety-in-control-plane.md create mode 100644 flashops/docs/decisions/0005-simulator-as-first-class.md create mode 100644 flashops/docs/domain-model.md create mode 100644 flashops/docs/state-machine.md create mode 100644 flashops/docs/workflow-spec.md create mode 100644 flashops/services/control-plane/flashops_control/__init__.py create mode 100644 flashops/services/control-plane/flashops_control/api/__init__.py create mode 100644 flashops/services/control-plane/flashops_control/api/agents.py create mode 100644 flashops/services/control-plane/flashops_control/api/deps.py create mode 100644 flashops/services/control-plane/flashops_control/api/routes.py create mode 100644 flashops/services/control-plane/flashops_control/cli.py create mode 100644 flashops/services/control-plane/flashops_control/config.py create mode 100644 flashops/services/control-plane/flashops_control/db.py create mode 100644 flashops/services/control-plane/flashops_control/engine/__init__.py create mode 100644 flashops/services/control-plane/flashops_control/engine/planner.py create mode 100644 flashops/services/control-plane/flashops_control/engine/recovery.py create mode 100644 flashops/services/control-plane/flashops_control/engine/states.py create mode 100644 flashops/services/control-plane/flashops_control/enums.py create mode 100644 flashops/services/control-plane/flashops_control/events/__init__.py create mode 100644 flashops/services/control-plane/flashops_control/events/recorder.py create mode 100644 flashops/services/control-plane/flashops_control/evidence/__init__.py create mode 100644 flashops/services/control-plane/flashops_control/evidence/bundle.py create mode 100644 flashops/services/control-plane/flashops_control/main.py create mode 100644 flashops/services/control-plane/flashops_control/models/__init__.py create mode 100644 flashops/services/control-plane/flashops_control/models/analysis.py create mode 100644 flashops/services/control-plane/flashops_control/models/assets.py create mode 100644 flashops/services/control-plane/flashops_control/models/base.py create mode 100644 flashops/services/control-plane/flashops_control/models/run.py create mode 100644 flashops/services/control-plane/flashops_control/models/workflow.py create mode 100644 flashops/services/control-plane/flashops_control/safety/__init__.py create mode 100644 flashops/services/control-plane/flashops_control/safety/gates.py create mode 100644 flashops/services/control-plane/flashops_control/schemas.py create mode 100644 flashops/services/control-plane/flashops_control/seed.py create mode 100644 flashops/services/control-plane/flashops_control/services/__init__.py create mode 100644 flashops/services/control-plane/flashops_control/services/agent_status.py create mode 100644 flashops/services/control-plane/flashops_control/services/runs.py create mode 100644 flashops/services/control-plane/flashops_control/services/step_leases.py create mode 100644 flashops/services/control-plane/requirements.txt create mode 100644 flashops/services/control-plane/tests/test_agent_enrollment.py create mode 100644 flashops/services/control-plane/tests/test_agent_status.py create mode 100644 flashops/services/control-plane/tests/test_e2e_vertical_slice.py create mode 100644 flashops/services/control-plane/tests/test_recovery.py create mode 100644 flashops/services/control-plane/tests/test_safety.py create mode 100644 flashops/services/control-plane/tests/test_state_machine.py create mode 100644 flashops/services/host-agent/README.md create mode 100644 flashops/services/host-agent/flashops_agent/__init__.py create mode 100644 flashops/services/host-agent/flashops_agent/__main__.py create mode 100644 flashops/services/host-agent/flashops_agent/client.py create mode 100644 flashops/services/host-agent/flashops_agent/fingerprint.py create mode 100644 flashops/services/host-agent/flashops_agent/state.py create mode 100644 flashops/services/host-agent/tests/test_client.py create mode 100644 前端UI八页面完成/.thumbnail create mode 100644 前端UI八页面完成/Assets.dc.html create mode 100644 前端UI八页面完成/Compare.dc.html create mode 100644 前端UI八页面完成/ConsoleNav.dc.html create mode 100644 前端UI八页面完成/Dashboard.dc.html create mode 100644 前端UI八页面完成/Deck.dc.html create mode 100644 前端UI八页面完成/Evidence.dc.html create mode 100644 前端UI八页面完成/Failures.dc.html create mode 100644 前端UI八页面完成/LiveRun.dc.html create mode 100644 前端UI八页面完成/Tasks.dc.html create mode 100644 前端UI八页面完成/Workflows.dc.html create mode 100644 前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/_adherence.oxlintrc.json create mode 100644 前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/_ds_bundle.js create mode 100644 前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/_ds_manifest.json create mode 100644 前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/readme.md create mode 100644 前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/styles.css create mode 100644 前端UI八页面完成/_template/deck/palette.dc.html create mode 100644 前端UI八页面完成/assets/photo.jpg create mode 100644 前端UI八页面完成/deck-stage.js create mode 100644 前端UI八页面完成/ds-base.js create mode 100644 前端UI八页面完成/image-slot.js create mode 100644 前端UI八页面完成/support.js create mode 100644 前端UI八页面完成/uploads/flashops-text.md create mode 100644 前端UI八页面完成/uploads/flashops.docx create mode 100644 前端UI八页面完成/uploads/labos-text.md create mode 100644 前端UI八页面完成/uploads/labos.docx diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..37a8505 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,16 @@ +* text=auto + +*.py text eol=lf +*.sh text eol=lf +*.md text eol=lf +*.yml text eol=lf +*.yaml text eol=lf +*.html text eol=lf +*.js text eol=lf +*.css text eol=lf + +*.docx binary +*.jpg binary +*.jpeg binary +*.png binary +*.webp binary diff --git a/.gitea/PULL_REQUEST_TEMPLATE.md b/.gitea/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..ee92c8d --- /dev/null +++ b/.gitea/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,24 @@ +## 改动内容 + +- + +## 原因与影响 + +- + +## 验证 + +- [ ] `make test` +- [ ] 相关演示或人工验收已完成 +- [ ] API、配置、数据结构或部署变化已同步文档 + +## 安全检查 + +- [ ] 未提交凭据、生产数据、数据库、日志或 Agent state +- [ ] 未绕过安全门禁、事件写路径或状态转移约束 +- [ ] 危险动作仍保持默认拒绝 + +## 风险与回滚 + +- 风险: +- 回滚: diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..6a9d605 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,42 @@ +# This workflow becomes active only after an isolated Gitea Actions runner is +# deliberately registered. No runner is installed on the production server. +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + python-tests: + name: Python ${{ matrix.python-version }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.9", "3.12"] + defaults: + run: + working-directory: flashops + env: + PYTHONPATH: ${{ gitea.workspace }}/flashops/services/control-plane:${{ gitea.workspace }}/flashops/services/host-agent + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + cache: pip + cache-dependency-path: flashops/services/control-plane/requirements.txt + + - name: Install dependencies + run: python -m pip install -r services/control-plane/requirements.txt + + - name: Run tests + run: python -m pytest services/control-plane/tests services/host-agent/tests -q + + - name: Compile Python modules + run: python -m compileall -q services/control-plane/flashops_control services/host-agent/flashops_agent diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5963d93 --- /dev/null +++ b/.gitignore @@ -0,0 +1,57 @@ +# Operating systems and editors +.DS_Store +Thumbs.db +.idea/ +.vscode/ +*.swp +*.swo + +# Python environments and caches +**/.venv/ +**/venv/ +**/__pycache__/ +**/.pytest_cache/ +**/.mypy_cache/ +**/.ruff_cache/ +**/*.egg-info/ +*.py[cod] +.coverage +htmlcov/ + +# JavaScript dependencies and build output +**/node_modules/ +**/.next/ +**/out/ +**/.turbo/ + +# FlashOps local runtime data +flashops/var/ +*.db +*.db-journal +*.db-shm +*.db-wal +*.log +agent-state.json + +# Secrets and machine-local configuration +**/.env +**/.env.* +!**/.env.example +!**/env.example +*.pem +*.key +*.p12 +*.pfx +*.local.md +*.env.local +credentials.json +secrets.json + +# Temporary release and backup artifacts +*.tmp +*.bak +*.tar +*.tar.gz +*.zip +*_backup/ +*_rollback/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..5210914 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,111 @@ +# STORAGE LABOS 团队协作指南 + +本文是团队日常 Git 操作的简明入口;完整工程约束见 +[ProjectManual.md](ProjectManual.md) 第 13 章。 + +## 1. 首次加入项目 + +公开仓库允许匿名克隆;需要提交代码、Issue 或 Pull Request 的成员先注册账号并由管理员批准: + +```bash +git clone https://git.imagebrewing.com/yuanshuai/storage-labos.git +cd storage-labos/flashops +make setup +make test +``` + +不要通过聊天工具传递压缩包继续开发;Git 仓库是代码和文档的唯一版本来源。 + +## 2. 分支规则 + +- `main`:始终保持测试通过和可发布,禁止直接开发或强制推送。 +- `feat/`:功能开发。 +- `fix/`:缺陷修复。 +- `docs/`:纯文档变更。 +- `chore/`:构建、依赖、部署与仓库维护。 + +一项工作一个分支;不要把无关功能、生产配置和大规模格式化混在同一分支。 + +```bash +git switch main +git pull --ff-only +git switch -c feat/agent-step-lease +``` + +## 3. 提交前质量门 + +```bash +cd flashops +make test +make demo +``` + +回到仓库根目录后,只暂存本次工作涉及的文件: + +```bash +git status -sb +git add <明确的文件或目录> +git diff --cached --stat +git diff --cached --check +``` + +混合工作区不要直接使用 `git add -A`,避免把别人的改动、数据库或临时文件带入提交。 + +## 4. 提交格式 + +使用 Conventional Commits:`type(scope): subject`。 + +| 类型 | 用途 | 示例 | +|---|---|---| +| `feat` | 新功能 | `feat(agent): add step lease polling` | +| `fix` | 缺陷修复 | `fix(safety): reject stale host heartbeat` | +| `docs` | 文档 | `docs(manual): add agent deployment guide` | +| `test` | 测试 | `test(agent): cover token rotation` | +| `refactor` | 不改变行为的重构 | `refactor(events): isolate projection writer` | +| `perf` | 性能优化 | `perf(api): reduce timeline query cost` | +| `chore` | 工具、依赖和部署 | `chore(ci): add Python test matrix` | + +主题用祈使语气、简短明确;一次提交只表达一个完整意图。 + +## 5. 推送与 Pull Request + +```bash +git commit -m "feat(agent): add step lease polling" +git push -u origin "$(git branch --show-current)" +``` + +在 Gitea 创建 Pull Request,并写清:改了什么、为什么改、影响范围、验证结果和风险。 +至少一名团队成员评审且质量门通过后才能合并。当前 Gitea 未在生产服务器上启用自托管 +Runner,提交者必须在 PR 中附上本地测试结果;未来接入隔离 CI Runner 后再把自动检查设为 +必需。优先使用 Squash merge,PR 标题保持 Conventional Commit 格式;合并后删除远程功能分支。 + +评审者重点检查: + +1. 安全门禁、状态机和事件写路径是否被绕过; +2. 是否新增或修改测试; +3. API、数据结构、配置或部署变化是否同步更新手册; +4. 是否包含凭据、生产数据、日志、构建产物或大文件; +5. 危险动作是否仍为默认拒绝。 + +## 6. 冲突与回退 + +功能分支同步 `main` 时使用团队统一方式;首阶段建议 rebase: + +```bash +git fetch origin +git rebase origin/main +``` + +仅允许对自己尚未合并的功能分支执行 `git push --force-with-lease`;严禁对 `main` 强推。 +已合并变更需要撤销时使用 `git revert `,不要改写共享历史。 + +## 7. 绝不能提交的内容 + +- `.env`、密码、Token、SSH 私钥、证书私钥; +- `flashops/var/`、SQLite 数据库、Evidence Bundle 和日志; +- `.venv/`、`node_modules/`、缓存和本机构建产物; +- `~/.flashops/agent-state.json` 或任何 Agent 原始 bearer token; +- 未脱敏的客户数据、设备序列号清单和生产备份。 + +如果凭据误入提交:立即停止推送、通知管理员轮换凭据,再清理历史;仅删除当前文件不等于 +从 Git 历史中删除。 diff --git a/FlashOps_存储固件回归测试值守机器人_产品开发与规划方案_v1.0.docx b/FlashOps_存储固件回归测试值守机器人_产品开发与规划方案_v1.0.docx new file mode 100644 index 0000000000000000000000000000000000000000..2283ab9dcb81571c64b5e80e3068ddd61d7db75b GIT binary patch literal 515106 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

}25P-WDo=IzzgZgo;O2v3SiqIiTHw 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

Wy7}Wl>e(X7Kn%PmL_SFaiN(G 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

-_ch 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≈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%0D16ZrJUcUC+2J`HcLE0hC>ZriID~#A!ZA@ukHK1 zp)&rJg+^p+ZS!pO^C?0M26zBeCh0!W&J@XkHWwKf?rH30F1A}EQ=7{l+-`*!9e7Rw zbMgycvA0mBJ5Pi83xtBRg6|62 zocpGi2|KW0eR4=$y?~z;6JU|l)XBZSed zhHK7LgZ=~wdy?>elDpUMW)%WocdC1$#s=6;<`|t>E2+atbQAqdO?}u+MczX#2#=Jv zHh-rK0|(5?2lY$Hg0W`VVv%?cVRBSR_4uB}q8NIqcE08cCb}mn z=sWoVu-4kIQos6#Lw7#COx&IQ>v66(DcF7^p`#~{D==B#u&~T!aGMfpkX}4}R>Vcg z9Xj@F8z=jYfDX`rkKeyEcPVokXwwOLtWWL`xf+0HzUS-S%^qUCB-zJSMPaRVQa^BL%1BO>LJao;l66G zR9e&9Dz4Xtbsm2U@8G?D-`y*FcCgUwgq&6Q&Q9TBDcajVY`z@%is@d3wNu#1dGnV> zUvk#FeQ*)U1=BJ5+1Y7r_{@yqFtX_P!er;iwp((Lhgx0LyrbQYUz!U(8nZ}vZ|#0u z#cl9<2~W>d8T!x8PX2c0(tbcy+D~gT@18vqP^VjOnjRm|8?8Fj_QAbavcRR6Gi@ka z6#l5&2;+KJ>s5L-f=9(kM&Aa<>h}vv19k$dj-iyM*@#ny1+I0p9zvT^RIvFF` z#MndF8IughjkAaAQk(l!P+G$FV4eL!Pt(?8`OHQS-8vh0l8dOB>EE8`@0e6;ZX0?m zI~7_f&=2v;*a;BAmZqKYUr77>?vIQPGYNXV?@YGvQX<@)Z+y>zWks9IWU85L@9Mq} zx%c-&{=aUb(O79vQC^Ize_q#|u{C-mkKdi*6_rg%xMyOPokd4KU2a&SG@}|d;MG(w zoFjID_L9Gn4ZE1-5YXp*@|5ecPA?i2E(3Gzy~H}3w&V6*UIU-`Gd##$+yMG9_DGg32F7#b_ zmK^D5mznP#kOxh~dF^`#hAF7zNyBef2`TTFi(HDOtBiD{1porDkZgP=B9gay#Nfs| z^25d(aNhsy%og8Q9!;A8|` zQMN|v)OOy`_6N#tAhuk#Z)^I&yMmapZ^;%1lX!F8H)DeG|Nb9W&W@W&@k)9stwq1{ z(dA;~I(gd6$2Z&rQ%Zgyo;-=>!7c0mT_5WZ9P>Y`Z;_@XHP3$i6-E)0`M)c3y}J=0 zwE91bbp8Le&e!z-P9y}CynOH0`EAd=yXEW*SGOu34ana5LIk|U$MQriDt^Cv+@<^ zHk>WuTd_{K^*3a&!n1i4juR2xgv#7H4EvO@tM1TskS5;-Ccbrz`quaVUdt@vJ3Thv zvK#ZGwJpnJ9suYP6OxgJ%@&=_r`%FbtGoNJZBhzqUZf2H{RJ33pi9HixDl_#GbSmh z3#{JT+{UGPA=nySe^OG-z(m=B`&%)8<2F75yK&nDIIeC{_?+qZM6qt=3c0c6#T?mN z#8R~0>H=ukWmklk^5qE}?Zmfee9mvvpGs85hu|4A`oGr$E2+5X=dcE(%QkM~62Wn- zArrPUTZ&k@3VcDW46`(Yo~Y1Lb$X*#3Bb%A3s+%34__n*3PMKwreb3q`4H#FiCQU; z<^!pE|Eq7Q)JD=s4)!ulvsO_q(N&05JK+63Mrf{#T=9soMSR+Gp40;VcFf-(x6oAE z)%dY1N4~}L`MSvMR@il!3Y#t(dt1x08z;MXQb5W;)pRu|k)kphM))}4l!W+dPZv0K zCx&iB37=lzs4wnEDJl(+>L@v$6;m&>)Sp8V?%j)lJI|Qye7?<@SXQ^3aXf6vmZBo< za!_dm#tnO=#h;{OCrjFdUeui+i;>H$rMy&XY|p1{OhozR8-Poir z=t#EAZ}Sd;P5At~h)o!b87-kN(X9wg`TnI*WRaMiy)5H;U*X>m@u_u?LuR3{qsttU zd`dn!znv}mf_KNb+P&PR5>xeEcHIjz=u;oPbyzsq z*Ssf-yQRvAcjhKU)wCZt$t)@7hdbQLl+K75!sq-2X!1VCr$E*9%-6sT8aeW%7kXjP~ zlWu)Y4@*tWw@!*ri^{*ATis+&*D6N36yE?Cp``}8mFd`l%)3GqvXfQ zpD5${F54xQoB5gqgr0F-=4vSzCA+yUhJ4huL1fPWh7*~CcR#c*d6=9DCq4@7q^k+$ zrpnHtvykYlkj9>Ld>*oYMmmAUeOS4;FB5dZF3C3mG+49e1Ck<@WE1(tNG9p9Fy!=E zs*yMPs0w0)CS*P|+kpn0$>q2K2{e{NLqjL)y+BqnrTD@DxzUX!G30sqXUfm30a^Nw z)i;hT=MvY=5{WR-)5TTg9jUbl{IAu}@ChRA@48uS6%&1TQIrHQ%QjZBIH1#|UVTl^ zn`#{?=&OMquJj%Op(h(8;j-}#=8-cAl8`OXQi$vye_=i~yRf#jED|*WJ+(B|aXC;Q z_Q&(2rbq1n#>j8p0pHK0>YJJOJKu}87zXQVBofI~8VZUE3y6pU%u|$?-uB7if_cjk z*x_K*zx$R`?uNL!xbT_dhAzqs(%MIylA(d?|E}_$J7+^56UY35?ImixY8qBtnuG@K z`yA{dWI#yjd?4Q1{G?=0lyZCTKiObz5*BIjIqn}dZVuV+jHle&*wn4?{Z;AClJZ^H zh-l^A=SgY3^9RwhSl`SD1_4L^mb0;rW-xv?u`W8=^#2JEv$MR;pqrikk}1jvnYID` z&V6?t`JQ62eTinD83sR0az|EX0W&S*fcxCwjvA8;mhXVNHNrnLsoBuWXSM9Z&+P!+ z8r41t@)%MbZR3r`C{P@yfN&2#XElKBz#NVj*>|sL6c&kfp8fc(7~kUi^Q*~2QNCtj zv5OiXl$EK-_~>vrn%W!=q3ad+cT)mMZaYxn=ikB-65^Hme#-@6&VFCe*w;x#D3?xVfBWIW{k9`#}U!e60J$3UgXOegzMvCli186bc+-=01d&y8)( z{7kA-zw7#j#k;YE^uNa*okEZXv~>8(A4X0GtRoFpbj6_u7)wBy+lQ#H!yZR{5Fud4 zGDrrk9GyhqmuJKT8qKb@tWHZxUV`RJ3E*f9dfw~$k6e5elo$+t7r` zFw(1?5ZBOQw&zUoW?>oG*`BzfiumVs%a`tmfH!7pdi95=n~Om~7f^ra3x}(dsDEF- zrU0!u^zFf_;SPkr(BJ>7WbkKwE=Gy4iffCJz8q|cu1oQFBn4 zcYNZb%W_HJPgd@gf#H{IsnJxoqBzDiK%Du~0vxB>{4adGk&)7#Cw+H?HZ|n%UqBW7 z9E{R+mW+&51`GhO*^?Rx@Q&mLW?`?3EO^r>zCAhK#nzT1srTGE#D8@Rtb*^MO;Y%@D%yFeFNvoP7Xn365 z>;xYLuuENg(ad$qCDeP-3wy73fngw*y#HDSDh6wasL^Oq9kMJ*ZBt#j6ANHAtGjL9 zys*1jm1CcsnVRwO35dHbRASL=)t#B0G=bX^K6f$|HZ;_fG6}do#jw^y+Q#XJ`q|0+ z;VjfuQuxX>-u5<|cU>*KR?Po8vJsYH&JfqXvGU&w^@m*AwkC(vEbc`4HwKy1ts;ws z5Acz(K65V~m)9-eLw%vZ;oOZ9?$yJE7Ui?hMha!_54zdSu0alz&ESX6q7K8{S5Ch> z4{9WqeV=9Au1L;TC2Fp<6!(Q@rH#J*a$;k0bidFnchAGd9MiV@6uo?f743{^i&eR9 z>-0a&pH92`yL*l+J25^PBu!0?W|75{Zm`4EV(?YTTJEES4mnbu?xCPP-*aVjR8*7$ zH(tK4T&-btd=Ksazo>l~`j8NxEao}&ZP{U4c;0|*R9jOsNxq1$pX5-|eh%$~UmU}A ztvuVD4+S?i`u{Dpqx5b)Iv?h$5t8@%@50rH)M7k}>C`ao^B;hpC?$$pra&t0<4p zH|*%yN}u1dG5PqfblcQmDmh(N0?W0MtOlo+g4^h_J3JlMGHDC(AI5rb!sS(UZ>D|` z8)Y*Jh!^%2=7a5<2gg&SwMt~QYiQ)mHwN*+7N&y6%zRg2+Tyt z8!K0}I>7K6D~9z1*;#T?qWFdt0RBXe98ha>cHAOWCu!LW{x$z% z=KcTw!$`om{9~1#qQ-+JymS`_N1l<;qn4NFL{bfo8?$nT9>wk+HE7-dEOmx;rmz zYWf>)ty|&P_`Da^r^i_rVs8=5|fM?JaiqKIi476fyDBqIKSk zurzo=e*X1|g0%GJ_HvkoRyn(JXB22iXtyW;ZVl7WXmlwsZuV6q;BiMYVnc{nNcIGM z68&`-lWdK~e>A)w$K+mJ=Y$dF$B(h+A$)Jnd$XQHMJ-1u{hZ#hi?nKwCzNUQ^%bMH zzB>8EjU{jvULW~)Ws}k6=8-E=7u>5nefqRG4$Tyt-sZ3A=^3px+-}i(9#~}))r!gg zazE{B$E`Zhv|1Pvn|=U)tNq4w`|(SbG5s}q%1RS=zvG^(1WgLCt%>dp+my>q@4h!f ze!gAy>s5%)VB;n;;g-7T+0dxplpsfaT|@i@ombNwdKlwaRkWp(O74c3rA#SDhL`C& zuW$p;yjO6w>gSWw>WY~dB#J72s>y9#qtz-O(FK9}-{m6w+aBf@f>_5$Ftc3M>fE64 z67H4gtj0<+I^3ZXO>g5E2^BSUWtJp^jJqh4l++%#jyM?^2q3Lm0|+hE=UVqypZ z@;>m@`wRr;q$+BwOx{cda9y2Dn@lKMi zdn=OIreIP~B`UxSnV%#=Pe}NzvG$&8;r#x#w|m+T`75dIS)T;6>cu+_n>dx<+>0kcejshV)s~s<75A+v-E6ic#k{5);GN86X0nf zl_Q=Rr&D}5NQijz{6>|bXP!!NgSw&OdGi3IHu?1vhG?LfVxESOe*N?dxV-!?Yo}7^ z%^-dlXtGhcTPMc;wW!C!&yRN2_I0+SOxfBpM-c?>5_Zz2Gnx#@Ad^%Knwj`WtV2|XO28?>H)Z`ME^o}JHUH$*Riwe> z-z}R=;z<6oFr3{(x3`4ny8qQhcL_JZr!X1|8!p-f_y!Q=$%G-EqXJx?{fqOOF_Qxm zuBXQ)%VA2sm*+6A_x9$NugGYf94+~+&33p0zPcggi#@s6XcG|uICVnT<5ijW*WO00 zUbx>8XLoH4jyg5v?eE#yTR(1D6ZXQH%oK^vs0wd?6z7M@OiPH?BSzrYb#mOWw`v^u1Zc;Pc7iI1JnWBkdZT{PJ^NKdpL|Q|CR7gkIam z%(*`u78(O*xb?4(;9gybR-#@hw#@s@&Z?+w)xz} z?y%Cow6I7~@Cm$U#NwY|iAX{Ir&s2uSc36MhK!5<%)!4H^6_Ky98g7GMrEa>>x1=3 z1(4L~D^nl@Th2607JE{3@4+O26A^Ig=_TyQ7^(ust@|BpK-gtEo zs|55!_C_O^biJz)Ri?qBD=9meJ_ZA_d9UsfM)aw9$j2AMJ_d$>DrRV-i(&LJz5z6K9zH7sR zNgVAgQ(0SoLCke|rB zW}?q>sr9Lq<6DO;B#7jIN9-vIBALlo_;^oJ%GFj5$~20PNiMw{(}blKXV{W%@c$tU z0TtfMOGR3GRlpB&I^CoCPN!r}mFbstcQo&nKi6Z37*tH#on0Jq__9z-PlEpbJ7`vp z4mbn_8fE-_jLjc}*;9tN@Bh00>(feyDezN-WZ)CRXOO$G?yjYGGQ4e)*UsEV2XL4U`diSPqt+;8>mzJUtZh4XtY2+FV04 zaF^XD`}j^?US2=Od%VBIQ68sBC+e{`+7{_()e9*jljI(3g6c@jV!^qG0V8cd$+?L+0z=6gO5RKL=gn|I=~z8+PYO zQIb5xP+)m>*zNZ$&)KL=Lk#@l39|X@cSlZUzb0vBv&CL8eMWfCp(G4-LLxh-KD3e`;%oUz+uC9-M(-NP=i`eo2rz^gNCfw2^oLQ~^-FeI$o0!KDl3-Z|`6vtiDqd_sIFr)?WHHAXGq zPVcbdsa4mHX2+Gx`zWEBjm_PEgVpHYw7PE`^7axEFc@XOMmkAO{IKrL@}}=C)pD`||%IteEm3*%P31FP&hX2L~1 zLyUyKLZrk-pqAm8uQt)vU@jX%@nMp0TBKyL(Y_dzzboeYEd_SfkN_F+n#utxpZl)C9qocslK z@v@fI@*V3qAIu}6#^~;e2w!2NAx>E2O_ZbxuK>?85?}}T%eCEZ?k$pbYI6A-!bsOg zVEg*ZQ>XtD3g2*lc=YUu>|Q=`JklDO0T| z{^7Z4kIQ7PD(YRw>~l?(?6yoM!{V+h_c!%$aku;OF|%{vWS@@7m3)KL0iieDJ#DzL z$CkM8c{bJ%M|ZQifkHSjDH3_K;QT$6lxD4$VP(~hmG9c%H{>GOAH1!wsnDb_oYrbD zkWB;(?k#P1eRBaMc^$`RB$Y-@rG4&(G!+F`9#0rzvs)=&Q0wpqa_yBkgaZWWdwn{S zfCwSoZ^CrCpWR35*T$?dGBObp6O-h%+FDrcokQcbYK$MoI|AGgu$Ez=&q2GeHirB! zak+?BAfJF!AUG0QC$~luv|%qoPOWt%$@3aL??jDRF%QK>OBdSgvn|7LFIo|Om}Bi4 zROCR?OQ)?tVdLiTe9Q`{jr}Itc+o*RF*g$ex9ut7GVwW*z*2v)eFq>m zWAbO+--Mg@ItONUU+5k_$r$WtS>SovtvJo!rev{_Am1Tl)XPFuGIzExZRT^fqE$zg zc`u$*v5kjqUk&a=1^x#3Fql*}H1x51o8sNTW~5yXodmRHXQIrmaDBv$f64FM|0EOR zFv@9+VXqbUr%gmXVMx4GdZ2*IvDslzEiHXtaqU}K8X|8T z^y&*dk(|)Q-|?i_N#m*AcxNZ-Ck&vjt_GWgq2w`{LK}*ED?lo~uI@UJY>stFf=Ys~kukvl?x81BD}x#4^38++Dl<*-Y$EhI0Mq^uEXERx8>1 zTNPXiA&jPD?@sl8T++|pT}-u!`CVOXhB!$1HO)GQ?r!XR@2?a_bo(lJ!-`7_OSqeU zyx(7GnjAbs&fv#%_}=6@qXKqt)e65?dXU^^y?w@@@Sy&2wpT-R7*7iQCCKGFxpu3E zz=YabbsuRT{si`2v#r{Re4+T8CLBhG0){kyDbvsS`G=^4$pR zIWwRTfYq^QbB7tpUSH?PnW-HE1dp$pF6w<%yn6Y}MbhWAm-}Put9MVH5YxQ(n)|Q1 zDmJ&{6)9=*C?^6Ia&?A0Dkvy$(0YgMmKO?OPeGse?h`xcXuW;aOSCNkIkcy!YEdgF zEF3pQh}+!$FQ?{T$jvX!L)C(@t|cY*cL-OEilt?;rynkVevdaMCR)YWl$!F@Yuc9< zHV&L5L1duK(G0NVYAl%|+4Dd>JS6|}B0sMnZ|lQl3+Z|<@>Ag6w8-bSwoClVPT!q1 zdeZbc;aT7{S#vK>v{~@A2=Da>b6mWZaI&?XXaq}P#E(k@a_svjxx6;Uq@p@aNGJfs z+R3MbeTLV(zIO3`uDt%|_($)e@8_S%-kO|LJ?brN%zI&~#?ci; zimbR1s?)6zFLW1{GDV^Ao5e|{6Gin3-C{+~nB7)DWM1I+Ye+aLsFi~_An}sP|LZ!%eLNst z)E{OZpIOrjI8DlN=V`GetwN5^qfE_ur&ckl=H}*tN5WGL&f3^(ee8A>FE*m7waKp8 zdbk6i$gSZN&Rkxqo-G$xfvjvOhtQEe70zh9Of#U(AA7!q`tjp9w2|Gurg(Dm6M=fA z?EX7*Oa#y+g z`+x*`dXgjNopLR+2q?T{zydb!-{rQQQ`aCmIQ zWOMxf+7|6g+9aNwsK%5K(t=N6U-O`Mo+>6alNMUGqgE%HbdrIMX0xe}E6n?gh9%Vx zxoDqLmF3Rc5A0?Z8x4Z^$ZN91DtF3-EsE?Jn# zOM>yfO1tFeZ&F2%QDLP<)=KVVp)gWL5s~Y)Y2DSDip9Ded1}`F^mNLYU)~@B67D=l z=RN+WoVs43Vh^{)9~-{`0QPHe$UaslaHcW>7GxK5CW9dV^DPEoDC%mP%Fh~uH+4U} zfv1g0NdR*0vQqz%&Kp~|Wy8H{?Wz27oTYx}cn?4leS`GztkS~C(d}iq73k$$GbSqV zW656|pzf}HWT`89eM*u*Q z?79WNQMlE{U{UZ|X5h#8K2I+yqntRGn4rFZZ>0vv8U(x(pDCE_2Odr zmzWjWtS7fcosAfPjnvC}it@z+o44h-=|eQu(i!#Vl=hxErl;-3zC3+nH%(EM^MDp63>@Ywn{eFkTr}l6^K#Ete0lmEm^FwRTBt>fe6{F%=f@kL5X4aWXM7J_`D# z&HjA6&`tR_DHT}?2jDyq59&Zn*53XOcb>ax2c*Vsnf>(Z0I;VzPAe9Uj&I0*1P6yw zQBeh)5S1<-7#>xjM=eM=ZoKSQ3O<1udJ^rrq5gNF%9)bRYRKq4a}MceuO;CR^9#>L z_qhx^>utXptv!!n9Wz1X9`?i9~7E8>ha;a>XzEgq4ASKUMF z_ICk$*T&ek)A?C%dNGG4w9^;oR7vk9#w&NS!My3-!4q^9ehyx=hnsu0M0rg_#7Qd# zU+_qxQj48tru1L1Jink|BG(t=7RV7mif#x5NZUYO2#qX#U#Z*HtaI~l;T;!0W0&Dcb(4B~M` zQxD%ul{6jVx_&n(@7oWS6U|3`TPfW7K9gvtwr4r+shQu(dispR3Aq_d(;^*ZTgWPAzG8Ji3RHwa5)GZXWKRk^= zQ}hvSda3??gPi(#1qeb;2p=a}cOTUfLTZi9zb0)SMUk@cgr#iby|7; z=@$d1-&5q(G~j3X9xWF?G%YL&8_)Vi^%|UUYnoNQu_GCyRSx@j8pqUyrH%)^jm4C}OU5S+&Zzr=(o)uO)6Re$23Bq$wuX|#6^&FO7pIuy ztBRzB1)%e7DS`+XRE(R8>7wa`!6!Lk$n~;rpkToY4qJd$5MySmb+)FcYbQ5$YBnDU zV)wY8<+T4BtjEiF5!gT1$1WnW4albZ=cuJEDHiQ=Sy@>;yvM4UZKvp}n;3g-N3Dv) zhGKvFNc!t2R6x}nbUjl_KT8Y5+^7~$5t~tKITFnbjJ^fFSIkb!;k? zc#mtAno58Ec4+&oE6K52d?4ObZTQYv`x#trR>HBDBW@C{fB$vum z!cE4JZkVsOIh=w8UK6ps7AdGbU}tS@PyD+BM?TDWl_xZ`w&o=%sprwjS$&#|g11G1 z05`|tqTcB1>7$Wen!^k}K(lmqcDhVYke#>?(qH-ca^pq{JL|8g$f}^ZrJTI%L-PZ! zqjPue+&Nn`UYx5x6ivPi-D*#Tgw#H2n<>>(AYkY(PK=LNd-Uj$-50<(Oh5hvP=x#b zFAxFX+FpV>8oGBtOb#QDE*w{jls623sup=hNl*Tq2dcF?@#7c(N;pQ`cQQF2>!9_X zk8j!I($iA92$*F6efVP^@UgbQC7gGYq$Jy1N6gc0o$Ug%@fhzhQKPIzqNP{UoDMmC zL$T{CP&UG!PmB>nFzIqWvc)IMve`-b@B~1>FMv9dSz5c}P%S)4g{1AY#4vz4>8h?P&x zub10&3+-yHZ|?^C;R;F4?llGN!s{bC0c|bALR%xLpH*^95O?pruUO>5EVI1n6Oak4 zG)}ADm3_gwdq&wB!f!gkM{WS0?8A@pm>h~jlETOb^E}qdtA+)8VzZ}mp^R%%d(0>t zt%q{b;#Ak|$(in%j$=o_PQI6_Z^ZTdTX~cA0Mkxr;GS2QHMp(G?h??*;?+RS3X<;< z9ZnHq(%s{d$BP(z4x5+`@X<+h?|xSoQ=LtOIO|~Ir1rhykEVuWlBX|Ly$J)3)&wlq z+i~;=a%CzO?|nb+T$Tv@Xn0RQ+o>6pNjB%a?0s;M!WG0KSgM}y zQnHQadvB|0M@tFt$xzpluY<<9Y^WR z)3QKdKYR8BdNx+5-AxS&7bVHPzQQl}roY+Un)ch|r?BZqZz;Z8ZC2di*I=A2A3*DH z?5tIj=%E8<`YL}$+CU>cz0g4Sj``AOSH1Haj6f0pLamuspvzz>95 zt;W^&ntVxYZ|kdH8^LcT$^;B?pP}x-q_deg+lBA4OjQY|?j(_(TxGDs;4fdE-^q^e z&K0XSjqIfm!UD}EY)m_Y$A1af9V%eGvM1f5U&Mzt(@B6Q=Lh7exf$b12}t6?!^4$w zM+B?s6L$aaV}skFdp>p%1Cd=$-GYg4+J=mUB9v6r+k**UEV6y?b{4g5T`aOX2)OAB zJs$R`K=VhtG)Lp6W2P-z^rQ{0vpT@2f0ptKm6J}V?#I!xKOu>GFDQ7p&=KJ|D9IqT z=g=_Yh~W(W06l5-ltL8S{G8Wc-$%;1`=N|0Y%(*`fpDI5xYSZT8Xqo>i|4XF-=8w? zI@sd$i%#cr{@8fRT%OFqg~_qk<}$v%={y65*rf9;zIuy@0U&mu$WxE3$9~(}eYw{i zI}dd8o3VYPU9Z8$Du<6bV`1p|y0N1`Hs-y4tIemmk)TOo57+MxeD%v#!vW>jaJg8c zT=;4d7u7kT-NFw#LR z(YCnjn2d#b<0NZrxq@PBZc8>Vr0)Cg_+g<#a_(fgGA(MF{#;SAfh2@M$P3y`q&CVp zRIgu@wN8a3uj4?>^;=S5_YV_{#Fc+STHG$G)}$?9nxdLkXcy%c9nz99#w5%ToCbF> zN^1@wt>!A@fUdGBZLjTB(MFd?g-8E+3t$T3T0)LR2~B5*ePS^_wV!h;z4#$VEa_*W z1%%I7;e7!iGf`M@=(D``-#<@0(8Dgvf$wnDFF<CK0m_o*xjvAZu-TC@* zN@kC#gv&tRz;-4R0n~ZPKBc_1x#ju(^t}Y+!~n`Z_5Jq*jW>PHGQwO9C&RQ~Eb zj8E48geY9S%-wqUP4EZE8v3inP9(X}zr;#c>+};%xVQOgO7sgm>)5uxzWx$XWrD@M zTNM=KjV$3Y5~Fg9R=^tRrbNn~O-I5a4}|@F*U(ij!!Afo4O2dAvCqyL;=E}^z7g(15IcDxG52X#(e*RAS=LoPjDPJ;{fOH z5vpaFKQ10I1@EtHe1p{O3?!bMQ9P(hbO4MvZrY;VZkD^My+-!xbwR)y>pj;$mk%rg zqsd$^=c{X3ZNQydev^*0LV_Z*)tMM0NVcG7MbGdT9ZWs#< z#iQ2USf^5`ncSY5>De48ivlc}n3yP!w>@o1xFi63IyuRsNm1#%;2{lIk)dEIm!yoJ zMj^n2WqC;d<6FSY5@zn(ag0$@6cN?6jW~XM`LYbjc(otZ`eb+enf!oB}Y-@7{ISPUgPhG z7sx@;S&cJ1GIf9+fA)^c?q~)Gr@8p9wyuGIC~kME^=lv85Ad76gFq~!#*oX+-h2eA zEbYyMBP%zcO28f|V%+WFhkS0fklScti0BDUh%7}6?^yY_BtnQOM%??Y8$~W zEAU0$`viQ-3TE`5T6g3*6p1iNCa8a2pX@X6X}&Cb#__y9L8L_GN)zD*G$QV` z1ma8oR~)^hzM+0J)kN>W#4#dFw>)_eW^HolycdQ$eD8J`>5IA6=F)6XuToeDcy(x_ za8ze@8b74mnkN=0aIbfEQjY|LY;ZP~7_H5rTkZ3SLHYy)A>8y@{c&d2ok=z;8qd-N zxHHlT)#-!&AyvXf$l%-H0Qg@2oVc8(XfXg_X+wSc+8mwEsINeB>(r=e5PY$*Fz%EM zS=1hSQ(yladDN$k6m!_S-iOoQ5BVhphsoKF=f4SVZZ`E0#GuI(VzXMbU>bvG24X&^ zr?<0)H*q=GOA$+#)k!|!EUO2miuu2IAOp(6$yiXk)wm5z&(Mb+H5o1mWIOM6k3qgmrC4Eej( zR5DfNGGVahK=SVP5yq)1gp^Hl-o_Q&;d$r$OKf48w@CZ#E1>$LV`E#q_U{w-TK%F2 ztjZJjz3J|M$oV6GC2hLL1Id;`YVG!FWc|Tpk-sbq>ulQO^NV~r%u0bC_19iu8oa)G zn3CFG;zmC+t1K`A0H<2(eTl2XO4$AuN=}eF`B@)um>HQY+PrqNQ%u?xPnPk=^%aHW z@o#5`(p*)xj^&+9wzBp4nj8%L7Or#Z)0{s9TqwkODQ`~yMZAIUodnWjkPfL$Q?kmFIjxTAVcFRwJt)l1&H__#BD>MC$G7k)QnN>3I%t6zsEl zz-4Kxu8X86)d!vwsZ*-Ln?X+LaijK=-MxwkDPRBF&1Jiv!55=w+t;^t*sHlTi51bn&8;O8XX3&!~T^x2-IZ}D|vY3VM2PL2y64UQ4tK;h+E zkvK{b$YQC4JAaaZW-Ab4Y24~+clsPcn1GvK9@2Twp5)!j6S$o&&Hml8Je+px%s(-t z?5C35cFjqN@Ie5R`~=cC@xv99ggDUW{iAyMYSB3@=U79M7&)4`(jQj1gat(*%duVb z)t*QHHn`DLCo@Z9M>V_A^RA2t*%^2iaV6ffF)>KgB&Z{f62kDhw)-;4EOgBp>N+o4 zm^*4!OaI#4r95d|@PrG-B%)A50{Izy#oB?X%Qz$|`YExpvNFGdizPk6U+_qR*YDsz z2ROaF;^wzP0L;9o-~Sq#G9q~X;)P(l>P@q(GUKG+!H4EA{hzSR)LGF=i~j)BkdAN+ zYAGutW&HPj^ZxJo>$)JCZGd9!ve8H4?$$>MeAJ^aly<&S-`>rz=$A&PZ_a+b+`;#nKJbJ9ClbKK;LuPUl`wQ6`gxzM?6_&CpT~W< z|I;5EKO?LSkRt^J1!*oz%*qR5E?wWhLF$PZB>Zn@T9E@H+QWTGk>y(Da;m1et*!`} zAbTpKoWjDwxZD<_YUxj9;?+4ZjX5!3PtS(0Uw_rmD?ZF5d|v+t@3EY$%%G{$V|SZQ zAfalWDUT{C_YtErQQ~LUwD@(F3ar{2tfVHqIyl zITX+G%Ex;jUcx{OX-xxvyuMiPublk~KkS7RP!A<>haADS3l`FYT@aK|#l{Z39ztfE z=TVzHl3M6U;`Cq(^#y?%EI~|DRLu??g2xoNiHM0@CZWv<32U2ch(0A#|KFFwF_VsU zke7JMhRwypKTizPl#^~0Z!6!3PN&^QVAK`tR@%?v9iERFwYu$HFN-@^clw{17%<{` z6*e|Ml;>^JF+mMVOd*ft&HpLKVGYv=#lus8Y3vNT8r|ML(gp#n zm>3RmanNChZl1&b5JZwXoiLQ`{oCd_bf@Jh%EZ zfpTNEMvF*52i#lQVzOIpdn?sXMrdv>ul5CF96rN0T4FcpNqsJ7WEiC33`yCVC5|RF znN_1C<@3peGGa^{!KCadXvL3a9oY-(rkrcBc?gY$k18>VLRWq~|GxK;UVVnSiN)}E z4)w{r6wt|Pa*go~e9I6lyAZCzo}$-chXdpwZG2+VivGdaBh|_0c(XTB-|ZegSFKSD zD(j-wCd=S!Eg$EtQQ1JBu+pzeFqQa00!>6Lg7X4@13ugacdFE4$B)fI*bYsIEz|>t z-G8q&2Nd3jdX~&)q9)R%R;HELd3hx4zc?=GI&^Gu0{=G|fjjoSKs()0XUfIMobD{u z?d(!K{7;m|VO&*0)wG>0;Xn75FjdnP=%o_V(sP6UFVp~ng`GR1EaqPkdDN3*D+V<` zv#6{GkR+1i<{e4~a0UD13#uEs%I}T^vD$01=SX@B?#!^IRjsmVx0gE@lqf`iAiT}R zJVJkNOh%BJPp=OG7_XDM4eX+b1dWJWZhL@HTFpjzNK13zs3^&}r(JgB<~SREA==$~ zw88ztmZ9f(km$ud1gqoesU*D#x6^yUD`S@=l5$f)c2>RI^zbW*LIml!Xf^Pkb5-Q_ zIN1GWDx?B_eTA>!mM<$R*7Dczf3@|FPL=yQoE%`v zweL->JUa77AkQ0mflk8IJnNcv|>pxcJY z$hWP5LvVp$b;_Jcq!27s?*ORSn_gnJy5!kY!s_W_7b6#51{VObf>@p%O*2$mi!Pd* zn~#|ytemaw?Y=mhn^%%X0u7nUmB{_}Ly;Xa9}f>tMD>9(`^L0L94Ow&e8{qF4qnQ; zMDM$cpoMzNQtg(8>q1~(^V<9!PJiSA|71I3H_@Ci48(xJ8`Cl1)BzbmMMW(ETvvUK z>D3WjAw^*p@;exCvKacA(TNGO%jA%xFs#x>a@|oW6_xRHgEs1;C6J3qXGx#)^R11Y z8sIGC&IxNT+gnw=)yM$5)MEM0TIb6_;@ouSEQH$BWRhpgfuL^<789KWEb{4{U+spW3;fO6dgUH zr0l%x_s*DQFlTvmk|Be%z@TM)@W9bzH#3&(`sZ2FcmeyU0p!iW$ZO8qO(e zhFZv?EUB=&4l7D02H`1CmBSu|CqPAG4^StCX{x}ynjr4fs{Efo-XcoUR1Xg_N}_jR z0me%J>7xfE7M7;;4btOsYApd(Uo#(1Pn7J9}>CWc^^nRuTRiTVMjzsa!n9mNp|+@ zyM9$5+a{64y?6>%yncrHYES7TcL03>?3i$8mIr@03r7!oS*TF%N z$j;1f&0m;sXPC!%uFjjzggxH?0dbkUZ7JFxk@VNHc5z4=7WY_H8BKz6#y#wAO@ohn z8pg_619Qr)ELUSkTc6PigD0E68VlHKyy*z|i!OKN&{S1ry*1YJXtKTuDoaC2sl{Ph zptCh~ zugn;k>FMcOa=hz`h-FLcZF1BNH=)h+4ZMHx{Q1@WMu|yxNwLzGRbV>Sk|-({>QpnC zKLg9PyEwEmXMI03de=9SE$;Q-7{=g_wS|z%oZ20h0ZY_khg{>MaG9yr*go&25w5eE z(jUCMokhLesV>#(;{Nyeq+S<4HV^(@Xn(a4c9D59oX24}w0V)clIO8=IeQO{xDl71 z1KbI?K89ee4YtP1*L)VArKPooLj{0h*wG;lRn9bRapZ|PM$YvqY)}Gd%nNBQ&~h%$ z6{^bQlf5ZX&43Rvv_NT$Sw~n{`W~NI=J9@$J?;Fp-iXR;_qn?-)Wt?JPs6}d3mj?% zD+wQgyvn=9qf$L(;htvz4gfA9lQQoj|@P-h5MfDI)}V1Pm3Htx)lw3$=dGZsTg z0vU)r({29_YiZGH&OZc3`u^)DNS)2a{cZ2?O?_HiO;`zBBmaXxy1?uGb(GW|8K{-z zd>K@BtVs>eBIWdZ8hCpEw$#$ytq6E8;eGnil_E_t+YTr_Y!RhzJE{2_kDQL=|-Df8@LumMkdov>_GC$)^3KP zaD9v2$p4Df-uikw+B;e8t#7^!CLks{0@5X`erZz z+g4;ZoLjiPZEe*_f6th~-(X{@m3;jI6Uw)KqxgzF#s1;MgG_-;=j|)~}Mha+`S5^9pAf`cmv1c@Y79;(L#Fn&y(Si9W0dIN`3&KUoAgy%BZCx|k<1 z{g8s;VdOo<;E&7F;y-VZr4mdo7Th$5k$tMobUxoWV} zNPCwJ-#-cba->y`>>2(b3HpuF_>3jM(3?abjBfcB<^>`!pN&} zSGu)O0SD+B&>%faU|*yNTxjs9wdpAliI4!#=Z#Gt|9x|Yp7pZs z^{Yt$db7k_VE*2Rr^=x4KX;ayX_aY>(TSQ}uY=p3<-7v@$&Jbuct~10ulHOyAp2r!y%A`R)geo8I0;Xa4z6uZ$xpKmRK{u7;oR zv%#;Mvot_EMn^|pC!)L^On?#C`oc=$qtK&sgUxI=bi7!bLo9KWwgJ z+jLUN`DAgm^|h(nyFRzK+R~OiKr;oC0#Gc-8+o?}wCJsGmi(=3n5uDlr+GaL2FYPx z9kqK&MJC{KRSZUv@K@++7Z$u>$Q288dLbtl`|~#`wheG@#l}o0U<)T7iMXsl|J-Y0 zUCctnN}`NOU!OztpXoaC@(3oz~A20 zRxh@a>Lxam=ZmWl=36s&z}M5IOzL(C=$y%AeJB3lZ#t(fsz`bX=z_~k^c9B?y{HG| z_P6s?Sh-g5?x9pksA_Jf&(M#{5Ki>+shRK>O)9J7T894O;h0!y=yNs_2 zVNU_-1urbP^#k-KkMP-(6c!WQ#hr8Ye>ggmsV|{@J>0x7jfEDgJM+ixRST^TfKTpJ zuPEg3$^a263a_kjOIaV-Q(@_{e`gBVO0kY5Sx4ASJ7|p{e@^u+4vmd%_q0?zYHN&r5C}|dY=n`n?+pu~ z^Kd;a9E2fV%1*v8T^C8p0K^bX+&xeYCkRw1;B(U@v&KOlzDW0+!rZ7?+dBsr`p>NI z#Qbsjn!tpdonUGBonzC+ZMa=bxsT?LVoSJJUW)~+{QOAu>V@y+Os_S#VxZ)%gxh4b zX-=Gd5>Hkic%`zIR%L$ENXwh(yx$_O>r43>c~C zn5XoTfq!PUReRX(U|bWXB=N&=KQZL2?19GxIQK)hv)GC>2LpH{KT&B-UZ)2-nIx}+ zpO3Fm@#FPF_y2vy_{R4EvUmLlgdYWg4kaPgC-LmEjlRPxz|)v?xapdtb7WU(4)b$5+ONw<=H&9vgWs+UtwTfwTu?%iadzkEKzP|)SCa!(*2M!45U69lY}zHM*r?6nGW8?1 zTF(R^xEyf2+`0wv0I6mu3XxZ@EY`{(R5;O380uPJrY&x`r7fBi1(+1CsD(x0{9GOn zkGi^gLc*WBSD9|WGwGc$^{U928EdI2Yjbn4%Cy)|%ugU%Qb5C&+;6x@`e@YnUYTIB zY!4#XbkAA4^Z)mFFui&owiE7oE~-xP{VafdcI6etkfN^y6Wloluy zcMTK?5VUA;3Pp++2@XMuyKCSq_Ph5u_rtwk{^Nc)rb?OQ-wUU}GnXf{@d67BmdUS6>IYdbGzh``+rz6V4e zrt;>agf`O}{o)gh`v{8htwuanR>f`E!h_>OgbGxI-*2-c>LV`2G7TU5r)T+$Pu_&3 z@N@};$qF8rN99EARw&x z3B3z3zgOo%ngiCTaSAmA zsj7z$rSoomjcjbJb(kh|hGKumU1m&Io6=9RlwxFcEmpyWWR zeud+zM$jC51E5XZXZ2}!==83bUju-PEinD+LSqhAR-b`!e}JdcksqoO;lZ%T#K6En za5iA=)rNcekii?$gSx`)f+|5;yXN7vi50gEm zymJrqwz7bwHv}%Xv&-9f5qKiJGj=o?&~HaSlca$>^a(grVL z1Xk<6a#6R+i7q_&O!k)c1)(0gWpA>gDjDdSjn(_#-(-Wy@Qd`*((UJb-B7E|w#Z%8 z)bf>*x z{((e?TWd>Gf1sO-%`=j|C;2lA3L?h3HkIt?xk@v|UXoMwEC+jM{)|{gugSWt7~j<= z>My4OOeQOx67Yx60b!5Dh}3TI+jMpr(xjm<+gs$%X)r+Mi7gP`q8sp2-7YQ-LDH)c zWq>io!N%Pk&o{YNtv_48*uhd=ji6%=S{MH?J=G_u$%?v)&bq#S$P4#miIda@GLbEr zrNLtBCb$@RH$ByCvFURIGD;1xS-WFtV<+a|G*P$epvg)CgqTymX`wpUmeP~9$#TFh z^1~;9-iM4+f9Kk|Pw!L#l?RAfb~Gxp<6JdsgUQF&?{w21P|Zy^pTCm#E-!B-vzmVe zdsh}uh@na#cM6`Pfe>I=SrO0(5g?tQo?F{S@HrICE&J&hG@~Xlcrdc*edcz72m8?} z=IQeb`|}WZaDDX*s~YnVaL_+JQIunacd;TbN4Eklb&ZbVIVtIp`wIcMy0z8&_hx42 z8b^~i9zZw%Sl^n;Rxr?%e~G&?RqHpMBrb>QK3Msc)H4ja05nUUe@tw)$&JAjBjFyL zmV8jJLBjq)*Q!oRdJ>D)-ynKiQrymv9W2MWXxPx*Y>0PfitEB6k_`w+-?UC=cW_;NCuNfkK&_e#X2W{37IzVjjTwx@@mwZR55s-vIBjJ z-nu=Q&t0SPpoOruQ2mCKNoT*fa8<|>DSK|ZU*3}>>@POQk%%i(9;GZpT@w)Zpni6= zetnXe1lJr$n!7oa#qrwj-#L8=SkCKlHM8WLOKGtxg$L_mHdpYUJYnx2pqwbPvo(d! z`~Dj1Fxw4!Q!KcLVy>W0Td-x4bi3*0V3PY1Gx^KvSBH0Ywn-F0&mXlPitv$N zzt%@i8dFE=pKPI2Hm|sSuYbU>R16vd(hzXhd>HsHT!9-NlBjgTA{v& zbj9_WhbOYfspd|_H?%6H`o=8E%>5V#kE@9 zn>x$oXUpi7WG51Oc7lnjx;Ija-(bfw`L2#f+T84$wwO1M=92J+Oy?4wVW-EO`$ zXtt6bvL*JqA2EsfUdT3AbI9QL`v`b+sl&l04h~6@+O_B5 zAtme_y(Da}0-OXj4E?p41`H8LaZhgE0Lq@plO3hQ4Eu6*`RFaxQ~@N`4>vf+dX7~F z@6UAQ+B%?_`jXibrnx(RIF$bJ{>ktx#4WlY9K8AjZ86Eq&#$nyG*)6%^T~U5W$=W9 z65^;{&^zE8J!IIDJ=Y;?*u1$iBY=1*`0X8QqU~x_WEAih#?8kUu{EOI9u0?{{$g;x z8d8;L0Tc}al3!S#YTeG2-&F{a6X1Hg(EF5)O$j88XurrabyVFO!ivh$=eLZ2C|lT> z@p*nhAj)nGI)sudMM z)ZWQr-k4tl&(3f!PAt|h%>eA}j%AItL6t*I>-7~5^C-Yq^{pnU%+CW1(>oez zHW)L$xTPx#l&=6s=Jn>n`ST8C|iPv-^~ z`1y`h(q;TyXk}((WMmb&{IdM~fQ~2cbF`oDe1mj;SD;dH50aGQ?0VC8M3P#GegiQc zKxJi)I(WTg)Zwv0ba8r>-_Xr_|GYrR@p}AvpuBX~k#Pi)!y|NOg7 z^XWfp>iT^7&l3Q$MaoU}A;VR1&cpZqdJQgg zEZCgc8#>GyS8Cbe`_RVK%ybW$dFfHqg1IU2-lATakrFw-9`Sv!zlQjyY2~KZ>y}bI z{jKErXCEb1{Y5p=0njAl8HGdpwMhDa4e|TuM`K8hlby4(7ys|w89slNMth!&spm)- zKK{|VJ!GF9k&ks_4t2mY=M&%Ox^mTL&fN%v>c-h;|CO5-09OWmY+ac^&Kg^5U@tgc zoN%0JPm?@2*AMXT!z2m>-@8dNM!Vb^q=WB42kGWqaAct$bJP~l#|22`ud;#A(X4p^ z7RpCA%21z~JS&oOLCl7I{9S{Dgc-)RLIRS=2e%xpw&`%-Gsg?V8Frc6AJD$NX^Xor z=?6>*C=E03qYn#^x}S#Wa)Cw@39pe zzj7O_NxsDb$0mr}IXFx5vi%>t;>J;I!jWC>_~^5MK4YrYcs%y-wnef6#`BH#{0tMe zlW_m!N9&%dUBQz=tQ&uYD%jHqMv}Xp{JnvczU#@G5y!B*@qNleKfN2yBZbzN>U_A@ zcsIRCh3^m$grPK>>oK4y+aN#9!OA_qPSQz}VBY@MzJP=BnmlFNZs zmo&=ZsYbqxPkMRlDoOC#pqhSIQg585t~#yjsZ5_ZbhrC{Xt)Q%rCeWwy*9zH&SA?& zo#ff_y$%`Cr^=O;4y>}!*P`CpZY1(P3K?H<4SVq5xvxi*mLQOIMI&aKM{!0^3v$5P zhu{t7nBzDhQqqPvaz(koyfbnQwKtts53DC5ae>zi*+=TqaW(hG%cw{bq8=!K*WjTH zw)aa61zGP75;UkptT6sSr_llOP6U?$2bTOIuH?~okGaBcz?q+laLF(@5FJ)5A{xddJNiF;xxpk$Pk|A3?#%rZL~^dYw4oK-5nI?$x1{z4jC;*^;8rZZ zBo8q(I4JxZ^e7qWf=&2^Twiv6td?1=3(}7fhE=&C~y^z$m!K^+Sa*1 zw2y8Ip{)OEf30>4VJM37B00~!LC8aB4w(1lFdDIiB6nlG+=?v>dVh=rF+2(ghYCE2 z!~?PH>t9!ySQ%g|1frL+@THc)^0?Pzw{{ei zyv_f9pP=nOyLL27y~6$Hzt?+2|Jmf^x9ESH{kYtGvL2S-E7)wl`%Io|WB zPzn0~^Hs(Fe@%b3Vjcs*;{0Of(TTVE6xx5p^a=<_TI zSBPWs7z^6R>x72)YN&Neh_ru4!e3ey)DiKL>XcfXE$9_D_k7d)CZeUTIl1MvGR0rv z6wfI+(*+>d&R1=tQ+UdlCTw z7hRZ%JxN9km5#V=9wO|ZPmnG|MfZ5C+``Vx>-_*bC}@bhm2pn?`V#MkR3(aK6T;c- z&<(o%@vWm79QLUmZ`GL`+^PC2i&;U)c0}eti1(@BR2_M=@15rM(Y!W+XJvFzZvcQV%~D zu3PQ6U%FY1dsalW~XwU5Gh`oOxfOS3W3po2% z7F#h<`_H~BWYhaNg+w0j`R&xBwSK*PtCkF1URIK?z3}j{EuliG(dp&KZeQ2JyxEXr z^V$gZT@tRJ^GB^AQnyL%!kOk?XGJZl*zFs!4b!AzA@QC)YsAgK|?72Mbek1P#SYgT&8+?DSS$BYY^W=cFpDwabNG>gRN#(uSX| zb##OI@L!(DW8m<`XzS4GCLk*W`&(n@@weD^$%JM^;%oxGrCU``dqc~mN7XP2}u~HjTv7*)IX&ZcZKXF z>Ys8LAvH{4B&W5hBXD9c1%)3K(?qdhE)bAuF0cJDH~=FyT%JQ2Eq-C2R+LC)z4sG* zUfI0=wmsJp28&EAH~y&Ka|vE2kcIjWY4Je^?ZcU5Wn{<;$EQ1cxaE?bkgeu}L#==M z{_*e>^*a1eMN98$HlS1Fl&Kzkl;`o5Sd}29trKB&ld-r+>|FZ$yR0`z8sg@5-DZ`X z5;&C+?cOVmU9urV=q5>@)vrx? zrd89ZK5}xfK~sRLUd}t_h$r|jUbye!17I8ufN_kp9;$pZXUhQcl!Us7CV~-P-?sSh zB`#l~Rv9ovMR<-;4UeY&>B05!#TQj}O`)M(($OWK;~lIa1Jd-{aZgIN(kjzZ#R`_L z5q#g9j_7l?F2e2EGUtI|-eeBlR;4H;YZ5ENoRI6qDxq;(S1*q(<3tC>jf#y1(Huhc zWjxQ*`Kx8HR&)2ZxCf`R<3d&j)2tkAn{Bpk;8Y&|2ZRu4S-k02 zSYN)5ZW6Y#2iO6(bBI=VU*s9|HbL&LGrMO zh^Jr*=EN065+H^H=l5ZIk^#;)(=fV#`OTHDN)t?ce*1^R&m$}b)>-E!Jr?pV4_|n@ zPEP6IfTCc{Im84-S0~~#C!&P@mWJB0hgdZ=bxn(#jEb!F-P|=v zzc%B9@u>>0Km%}SbN65mox$Z#jfs4@!pkK?o0+p)UQRX-2H%HxP$qrXoj|cQ?c90}R5AWSL-l?`5 z9984y$hBdW&rDe@Ui4*hjY#X?Ks`!d|L%W2va2gx3M4rI(uZJCs^Uw{zCq(=4q~np z?4BL_*|`z4?=@J(HNfinu5kHKM(ZZg@42w$nWh0WnbIJ9f&#H|dV z;mI0JObDv4Kq;P;nPGbxhE>(*w~Jh#kp2f{#EdW8eZZ1y34 zN|}H2?wynT=Rv9RS)Xs}hz6v?-yGZgHu+h4hdSkYQ)#4%g_6Yv2M;v9xRZk+*4e&K z9A5y%I%YQt9l2Y9RVz85BXuWS|CrMMs!anV4eN#H)qPj$Yfuv0R)>B76o3E+#onJ3 zFm}c5`9(b&GKo3GcX*oS5ZC6Cjw3E!2cq?k?QcMn} zo9pfKX~XPy32aHwfz!_bq`igl1QUH2Kiqq)XxxnXHoDNWjOC$X;+Q@=pAYVt+~yJy zkv*wNQxDKq%70P@DRLT$<*kO!<~_0<5h*A#E-lHGs-)>-)V7&E8eQX>E|!s&#RWZi zlJIP`gw^P8?VAkUwa7i=JguuBH`;R+U0(Pz@cE;^GMk)~{k>6@GH|Lds@>k2d&upn z7cX+h?IeGfYGOWqbBxs3wkrYDQD*apss!aeDAQShOL>id55vWt@_4leJimsm$8*b* z+Ha}d{lcM2B#{(X#?7ri?xeA!ReJhSJ=}Au$?8*BMeHfAfL2lxnT5hl3m`Q40B!oC zoK@@Z0z_C(*wMt2F^6{NDm?tpT#a85QI379b0a|(F?bANV6zfI3=XyALU$e+w0?XI zW9o`qhiJf1bs3-N%zB6J>?}j&pGp4RisU`|r3Ty}=}z@v zf-;z9+7!fN6RMUJhQba`F%*j3JHpYx;N)sGih)IB}%Ao%LeF_BJ=RBjzWU0 z7KYMRck}@u5eA=+3c7|=e`XwXG(uJqwU?UtU$hTh*yxWy2syg9YpB&1w(10CTxk!D8D(1pKiwoPuN~Ji zLYlUUPM^@Vo~_qY8t2|>^2(JwMb|u$aNGPax=Y`=H(7;P+oSjG_9#`}TjB$J5~$-3 zXpWI^Ln~V$+RvCx78rrn-<|>|+WN@lm~!LSYpd?TMCy*lQc^!n#HXdDWmWW>Bm!GG zQ!8RkjzkiJiF~6n)Eq@MT9+3ljT0hI4y~nviMj`kV&g~8Y@m^!tQRa&0V67u73rx?Q51{NDF_sO4r{ ziwqdDo4f@%8Ci={&2B#Ry?f0vfN?&5$+4vklgP1@x6;|TG|Z#50dO_h=94=7Eh9$M z)r#L0{>Z8YBj^hc&v@3kho4Jb0YV|&IzTWDi6^GJHNYz)F zD=zFGZT$3Abhfn8IiF%fj^rt(4sgKK5h?sdLj%65e>QBN)}@8~_!dLfEPJ*!=B5)Z z0LFd@e*=NIC014-ViMu?d@dRVmB7U-8@tX;Rs~CRmaj_~$OQqGU_4j(c5r}?Op95U zIWtcD*|X)k%2&Z)V(qH-jsrsMk<5;+-@o7OHWa&lr8;3yORIT{4SY7(+6k)n&vzRH zhvH4_jaiL4{%opX*|z_pqD%6Wa=gl33Q_-OhA@+ICC8mLIjOxxlrRgm$0ziP*@Mq> zu;jUILUd$jAk}sk zmaXlT^zME=&N%@=UUz3jmLRX=?Zl?Th}h<_8M!Ar!+IF__z(?!5H?}7Q@_5Z(fSto z@0N_!Ck6@4!rMJd6R8oeh`w<(2P3&&Xd}**c10~n2VAs=h}-Zo(e`F!mgc@ zRGuGhqZ)w$_ZmwDADSi8Qc8ZWN=PMuH3$XnfdcSt6OxN0+;Q=ucMdMMd~1XFij^%a z>5bE^4V0>^_fnMvgNZh;m>)hg2V(I_3S7Wp)QVZ?(LZa&C@U6=dtDy>?om2?y#sV+ z&9*lB#_HHkI=0!dZQHh;bexWD+qP|VY}+>eoO||v?%8{M_tqG1tufYkpQozkoV8Fj z*PNi)Tq5LaW?f+4*}(6!IrUjJX%5vyT!lgF*7-6~IgXq?5p+MMOp*&x-$`nAP6hEB zFz8!vVZv~rYo!%?g@B$we&;neh92&PA$+MTD)V!w60nF~*I;J@&uhKMjrBjB-X1vb zet0J11Mzp`b3i({9-{3B-6*jMgic6Jp3%s_xL;%c;)H$}3b%FuEijO@L>iuW^L=-l zTmg-UG-O(YIJxj%AW`2l1pnQUS(xg53;I=>vtaL==VL_F8#v`L+wr0w5pYrnac8D) zZ)Z_v)qhCZF=W>OxR-TFUkZypJx%I5QQb0jS{g&bvhnj}SR2&n7 za8N-bUBH^IZ%0ST?k_zj^Vy;JM;UWBZ~46x#J3Rm9lgU2oZcwvCfu?I9Ys^y-}ld_)?w)mc(Ve5TK>+K&zy0ef}a zo=7YdDxymmQqVUw2Eczir@Tihw%7T@|Gk$5CuU?A7Lt%S6+qQ}Qlt)wqgm1n*56WmZ&BJ+_q`+z3JE{8IW?O;!Tv=@F%WYU}IIDNoZ)O?Q;cR zCdKE`+M-6kw~cVg6a$h|Jb?%=EItrm6V~kN9wk_S03S%~b!r}5(O98Am_fVdZf724 zEPffC1m+18;nN+2rUcRfrC60i ziqY*dk~C;!YAyo98G@gWYc{gKpykxtI{#?bl}1hJNG2iypqd(>t5~san92+lslU|+Ef5$asONn%NxR6(yq+_jV9cS%ShJ9~LFvJ3}yvZOW~!n7E0N`ZB<2o<)`aOk%?$R>5w!$?}8QO9w;c=g>>`!VPR2~M%@{s zs9@PC11}1~u|OVrIEeW)&SIVD?{{L5BZ|SZoiT+-CR2OLH9tLq$&D1_SuKm=av2=$F8|Ya3m;rAS(^QgC6e+gT2qW*xrc zqNf+&qSDgQZc4&3ckF$5gmve&j-gtt2nZ8Vr|{6eboHODid(mZs@ ze<1n-F`ch2CKO%=SO9Y%Avhs|TejjUMMHl#-_YDc=0Pw>t5mAyPCunK>T98s^{jC- z?@p7I$_wi&{-TCaisd9=$W(bpHE)CzQ{h3M!JsitL9uKwJJ7lAesEMg;qJYzK_vz< zG*W+g@2w}x`ibNC2VfY>+9ahmED^NBVVm{08mMCQ>_p>1eD#qDIQ0G)a{}hW{iRms z{oZag?GWx%A3z|pUzsh(WYATRG>RV*QQf>w!RSM9bxBXh?EpsI-xQ--h**X+EPEE6 z4@u|=tyuYhgAm5so8`1?T1+NE8r9@ta^{D3X>mEku-!8Hvyec3`r#M5S6DdA>%F+d zxPDbnJ!8OI_8iSNy?Ri-U7Ln@F}3}+VkG6Ppt_3OP`MmC0bDjGt2-kRYCt z_+Y8RJcSCFtJn(Vti3LUiAia!O?PE-G`IA#BH@_YN5AFymsuhqEYDw{<0AHfkhV2sbPCf16S?Y0?2Ee>`>6OKU1tvnv)0J?Uq@-o=S5`T8_`1%ZX zj(Xd1eWs4;8>09DX(m9uvzbk8$n{h(jA+-4LsN^OhjxV9Aw}$ z-JR&4aB$`gKn{W^xf*G}4B%s1Tsu3DtWNydr6?TUiTg!9^86sM&E()Gp$90 zv4(_{T}tMpph%9KW^XmQ1txe<_Vh$klxwhs@ezBGou;$OHwo+Z?Tx2-QWma9y1L|P z>XMV1*9F^@RK-irpw7&qm*S+kROco~XLnbt)|z|Z8U|plG4UNV9ov!OTDESsbr3eq z378F=sA%0_sTnan>%I5GK1ZW^F5F2}b?ALt)+c05tZ?3drM^cr96u$sad%Cw+8;KeA*N+{p1PxyguIYT_ z=X;kgNGTD?i9D{_cD%WQx;!{Iu(s$~-hL2cR(EcqpRGI}Run}Ztp2Y+`iDecXOc5H z@`Fml1zc4X`32dbwnwLHk%&|k>w@4qz1%m%YXW!ML@;e2PqO9(C&d}5UO~1Y9{}VZ zmLA&1Su}%lkY`jeuA*z-As-v?ywTGa+lhurdxQcweb5q)98Xd8?AAf!z>{3Ln*{Qa zV6LB9E~aBI!m)S!&*s7EjiJYW^~Mbc@U8&j=Xr;&{X;|p<>o| z@(mrVRVUkuL-)RS#<)6tV`|Syk@fbotlOK%5POBbmyiMW_f@t@9fq{PTuvgkte{L7 zF0_IDLOv|{`R!e})wl@13 zsmDi3O6)8a1L?A{NjGY{%Q>_?k##3WXR(w)pkVnffgLihVYsY6fQm=LR(n8NQyx&d zzQfR7M{HcgQS0C!*>A-pHcON)A?N1j?mS?*15TIakRq~EM^mg`)0GEIch)@*s9s*h z3K0h;FDylV0>E-|W@bWLWWD)apH_fqhSMh0PgvNVwZv;ctZANh0<^(JFI6a#%0xb& z95$@#D~C(C_O$ZQz0T`D3~}STyF8~K;H(6&=-(9m?D=LPagWbNH``qW-CUdRPi{|+ z{6n+_BY{k7103uIRG+0#_+@!^HWSQ4u*u1NFfrFYtr}6#*`SMJ4V~kAw>(`XyD{(J z_OkZbD{sc?StFGw>U+n(I0YRG#JyzT3s1L4(1h%jl-q=E8;KWk#sm=E8~nb#0vXC+ z_#~PqAJ3N`nnU3Nv+=V2cxKJNN}ZXe|CVyZ{Yw%2x)<5}#WhoplW4}Q9BSa3<$6yv zuBz$K+KeK(#-Cw;gm-?(k(LT06hM@_hOjo!YrwhYL8j-vATukDs|j1$f+)`_R`I0x zywdaBV9>w2T1kk$-_)T5TSPmtt?GE`?Hrb^{;^rbB4O>8!Zu3yTdIIB)>ww;Mwn6_ zj$l~y(CH1-_6dJOU8I1_^T%4!X};EXus^$Fk6ctStnE3ow}$n z9}?Gr90{3JED_piy<2E-X~9ro3`$@vD^g-Kr=2#a-9yilP$SHu+T?~iiM zrQmzj_p*XyFx!C=IoO-K8Wo3dwj)yfVqFo|ySY%n_%f^bV0t>8m0Gt?s-=!fHEDAB zeo|1kFH~>h^!9bx(o*hXzt&;Fz)*{G=U@Xz2`QCVx}Ao%9ZKmaOsYgoYgP(`{u#yM zT|pkCb8-WBG%@!Yc{w&BGLJRbR3NyLY$QvS8C8cG`T4uqk|f^86T&Sgr>7_Ox)%!-Ak zYq|q(?&XH&6fEsP0F(_3>%(+HOI?4#y4dL!DT}{h`x*#mQK~QZJ<3b^ODCPw&{6Ii zD`wD>U|)5wV?9%9aRBX9L`_=HvE<37lnxfzcR0;rxV&H;^}pFdaY4YCT@s=&!{VK5 zd#TI6o>~hPK!_&c-5xbxz2(|P#zd_}@$`1mSg9Ky5agNrLX+3un)HRvpxKr5p;d*K zmHj!vYOiip;L3pmWO)%WhK`PC(DU{QJbTW~DMGmfV^2XV_AbNYR~3NHFfS(2bI$@n zui+h7n$n}Uo_Fw&B8S!6Y;sLj*EPZ-wEL-{OkHs^bbF~@p+^jzCMC1v2Vwv9kY^nX z4h3!g721YoQ=aNpwl#)P~{e;_u(5=rGvcd(XmYR;%Y;=RW;&^mfP9eFFBa z{9OuyXv1?pMf`iu07V7ix?gwpT;E&yR93KF2C(CfN-Tw6nD0N%Zgiue7`XcbPm1T$ zCW!M!$6R4Nv~{y1My*y7YkZS{(S@pHy`M@=d(#or(8udHdw)UPEgUu$Rvwi^J(O9zdq!D*;44-ajKCn)Et-Oorq zAWCArTmtH?m52~jA=`_%9&66BLnR52TMfLDtK`|I?;x)}d>&OVJEM;sj)1fz3g3^N zuMXT5i)@Bj%bnCeJDv;!w1r(zm$qkUWH|={Sx6S{Hn&y%3h}Y(luLbbz0%_^9E?Ey z*b&)(6Tw=rFw<%o$IfgN6GKK=HRzZPW8AF-|6TK6RP_yCct5M|BJ4L&`}QDo%Kr?L zJbHK#d_#)j7QZ^zzuD^c@pZ+1oO40hBI~e;=jjvAN?pUmhA$c@?_D+b^DHwaxp#Uf z+p@cFD00EU$s%oArn`dWsEWXHFt*>paGd!(%he2WhF?xs)(anui>#Gg^jvJPg?6>} zi{EmX_2k`Y5HDa+pMdTg3wsL8*}N(_m><&U1SsI;B~I*Sv-&M<9ED})v=ENx%R1LF zB8BiwbVL&VqM$riS&-1k6juq0$2ECR;A_4i_6RedbTpa>g_w43V9t=YcZZr8ft&l} zH&m$Vytup^6kqqMu84q!V^W!oOpg}G&$G+g9x8+HFXe)qqe>0CdbHIUq=&i`htuuA z&XfVIV<9GPsWznz|I2Gwe=m_Uj{s!UJ1!kPxwRl(&+ga8Xg@>ckT>WECKe>hj4O8> zqzjFK*{=1+p6_U(P`lqiKDv8i+Wl8_`%?NY>#pOMz$k4pPSELTl?!r%H;16GM`2>XsRx zTTe+SKT4;QfpG-?BnzJ=c{anaj%+FZ@1#@Tp&ecd6$-QMj0so2jAooFrS~Kj00h?w z-nWsXajQx~vajlgp=U)7A9lM=cMJ%QU@neS!Wl(Xg)REZJ7j07!z4?C%a;tWaD z@yvaDJtwEppU`Y~}pBZ?dYD(M|38Qqo3*DRKYDVIXa!^fIHgzr;Kab=N_ zlc7f=a@+1PLNdFGHM0H#YoAF6BNC){ZtuY=1xCzq13HWD7;K!i6tzXAOP*FEE{-Co zYPF@1Ix^~<%;H8wjA48aXM8b!_@%&$g`lor|9!oJg+Jofd6bpfr#qK8)3HN6#eEiB7WrExU98Lwsl-M9O{x2vGkw59R;-Tjmy z;3Wa+j_ZUN3d#PhA@iDSDKu zDT%iYK=VdwMYOfHXyVybCB5Wr5omOk4OJ{5-lW>pN>ZVi-s%^bOK3CmhVHG)M} zlM=g0QF>_tM23wULVCBx{yX1mJ1dy-9|o-GjSE9}|MW;*I>7$%>M}VIm1K2qUARAL|Af$%kNShXLVGpU7PWe;Za#d$v&f{HzCi@0tPI4=5v04T2=M% z^5ha2&aE$a96sL<3w>Yxi&aQ||5-Ig)KiALLfZ_YUmw$=eZ|E4UnV|Jt+U;{zdKjOpR1 zaobI6Mv~P@IzH>in)fl1l)w4hSHjq4m8L=J1I!cxghxSxvZTh*3FP@!d?k6$eDv7w!w2GQP;7zK+c4{34tSXilt z_Z!&iqUFju#hMEi3X9~4R70Tnr# z>NkES6LolPu#{Ib{c}WGhh~fh&P%*|PI}ostoCR%FPO!U>r!&P7aNiF#oc0~gNbhhz50B%K5njV{xUFJZGEB=^A z4)sx!dtlcA)EUKd_O_mMAcle`pv&s($q*vVgTW1hPrFMoBE1Po-~l@CSgrmyFYKnZ z&c4*fs;5Ch7IOwzGjwau0mD2#8AN^lS&R%#Jh!}jjmd+5D}G?=okT>SIPm6WdfH`y z`7lHD_@Vb>xoMYXfZ(ti^S*jpSzXoFqDzbxx=ZZE-CrS_5UMlLhy%rKr0wPC*5Xj- z@AQZuDe4+3CUB4h1kD}g)Rt5)EzB4*;rXM6Lsj+o%4!qWR zs9s50Smsfra(HGdYj-@@JizPCjTmg6YdFL8k5N&hQE<789OJj*kDcA@u91u{d(8&! z@ughmI2F>2rVz$-8!0Ujml4=GQgTxBWebEQJgjlmXqOeSOXf(gZ5|WEEtUAX`D1Ti zl*z3Wu3es3xP~vrV?O1C+Pk1E?j%?mGuCF~f1#UsT@Dc+fG0 zMnL(E;K8i4wU^a8T5=`d1gN#GpFRKUMnq?m+im6wPw!9d_<#-mdq@S)sKMAJ_23JwG}9o9 zaO3^GC43CZLyLFT;0m(SI{~->Ut?PRmFlWm?qy5EoXM4J#UI#NPJNN4@ej(QQG^b& z6=AyFT^-)O+h>Q1yc~lru74&;yfD_9euq}Ul9SGx@5y42}Zdl@_~YM=;| zOAU`xjW~6Q4LpB#XCEr#R6WQhTSnZD;A})OZ2Q%&Bxn`l`IuDbKiu5%znu%#psTuI zEiF0+Q7|LMVD|k0ksr5cuHRU1q~`4=%=efab8T3)M6f&7;8?X^)aJ~owDaB&3iu%w zsLr?7E9#$2areG%t4^c~jMcvL7|kPH7A>9t9kb1#+n+?q8!`1O!Dbff?dfnK_+|RBH~OI+-81`de_SXgrIjc& zR=;}1fxG;{wv8WojAxF-KH=cA5&|4ZB&FmOJ~WPV;?LPiiP32;EnwZho?zDUDe8pP zlay@Lsy8OV!<%zdq)fO<+keZq&1I-?R9TG6jsl_mgwu68;09ewt<19sziQJLJ*T?W z4l=Ni@h)`t4^XI^C!@F?h(hSs5Gsg78ik*R7OonqmJj1DZ zE7iVA-V!NXKaEi*87a@s>M2u)wAxzrK~Jd)ti8@_FgtIy{2;fP30QcghEK!@l|fCT zsy*rlzvE7pQexU!{=N={!>-?>gMbCpWmvMbs)%a(#S!;dX9ewI6$K_2gH4;8@f?f8 z?yB}kBaKNBBmrd3JpxU)XNz%gbx=TPTS&xSBCE*R-AIqlOgh`lU>oQZJO9GmXBqJu zBCZB>T;V}w#mWmUoErPzkQ?W)OMapa3yASa&?K^FSwL%%F&l5bI#x?sswJk>!1SVV z!`)>QBWWxP&`DPNOT8Zxpoa2yl%O}$Naa;1a8>IWN!zHjrlED9_|~QqY7DY0YjH2^ zFN%x10PR1?kp%B}tjENqf$I_RG!o~)dcL(a zdN2N(gMzogOs;46-aer%))oKhA`D`)sJPN+6Z*v+K$(z`gb{d^b&hIx;yObT)uJ?5 z=6;SYEXPpucYjHMX1`;3VSSRcg^hBadgSSk`i1iC25op2pE5WykZ~G8njGie`_vO@ zRzDjS#K0eh{xT8UAVG8o3!&Jxycg8^xlWElK8HX`sLR)@XyXE%JfZwrrATb7oda-T znI-EWaN!77PdmsTSrH4p+=jS-^5b=0px7nK&m6lrTpu$v+x%C|5jKTQ1d;;q`K;lw zO&sFq4VNhg&&abwT`fyZNlTX4%NNWg4WsSlH#yqDGADc_uZv+kwqhN) z{{HqN`MrrT{qBtxj>u*%k3rqaxh0bES~mXUE+cLLT{Ji!l|gm!QkeHckMrwrbZQZg zaQEyM-+cXVg()7&`HO&khl9e=%bnC^b0>{HJx^)TyvgnzSU3Mi$X>KpqtT8b&Yu!G zANV0u_8h_Yb-_it*6M6evw@#)3Cfb=^B$+Wu%>l64SZWL8#@-vNjy*83YV>^ttl<} z!TDv5a6Jmp6G?K!<}kG?@F+ZwzsZ+cdUv@vkIc;Iyr0qDuQ49#(ym)|RRmKSB*U!I ztEIw7PWZ%;eIQ!r6~H;D%J=>gXNuFn8Obu19uU|4ZXs2vRzsKz*F^+Ms=e`NgBs)38RAV)yl)s(K zK>8?08RqVNDw5_lG>(#aB?swXABLdwy)r!mXREg^Al#=a0~hQcl=?h6x0-JfP&nHV zNN&42Cg3vyWfkEYJHcjmRL$;qdb+!MSf7>|Wr?n-xM!)Z8yENH?lHjXLs4qgH9|lj z83CzvX|cS=V2PRkSTt;#8r2zd5S=;!u`n!RHFT&z$R$#G;L3_(Wyt0Y<9leV!cSD2 zF4^m`TLtwpMn-Q(Cw5bdIm2zJwFlmbjS4J%v1q1+9NyZPfdpgzPRV_O3yLcm#XLM;9Hb22X92}4=69Ht9=zlqaAEeg z(;;`%$0HxVfN+_lD??LkNl|rAZaugon?8F%I@;UW+J;pAT53i&Jw_Io9;yeLk}DbC zt{JhTD!|0_K3CZX<~kQZH#w13?5yLBD;(GAE?6xpSRVyy%ey#Yl^p8gt@52$?5SOs zvixHfypFlSEy7If~1&KSVE2DYJ`b9=^S?o>`nDX(3OB!^X;(o*|oH4Tk&( z6Jy}=(GDow?_Z=B-+m<`ux`=26@-~F+!!@;TT{xOJZqvW9f$7Ln$vjMYl5G&T0&HM z);36MC9n=zTBZrivNZ(eqc~@>(%ga}^Ir_GaV3n|F3OEj80_j$c2{a<;gSJ)j1Kr) z;dq2qpl7D7*JEYX9?A1yC0q!&s}NLq@ug8RketkAjx02VDb+Q6z7to66MqFG<%B)m z0yL#ogx{v_dee{`qd9mg2u>}qqx-d30!#(VIn{Y#iAt?q!*|z)p{VNp57AK9qH%?s z%VI_@1w|Fq{s07K13#-$aaFrd`@Rio1 z?K^QRC!i^)k%hr`;`fuHfXVaQ!z6p8)0dY(#}ZmbHuu|%$_-KC<(#CXpx8M|n8kaX z1by_hk60rR&@@vZRH!xK>9& zH}=z-Rb=XXfF|{z0(^=2ZGLivk>*p)KxPg~_bZjzD(dw&oUpx1Y8~>PdH@jZA6VhR~K*+^aR5v z7agi%22$n>)Y^rEs1n2k{xT9TXnv41Cg&3DC}bycXo26;vQW%ntih)IJf^qi)^(Ta zICS1^=0&sffO}3d*h%!L`79i$On0cmN))(dnp>rs-o`tmm<;;$lV~Z#RMHl;l!Xs# zcwI1{>q~-BXOz6V*XjnG5Px(Se4WIamNTA-qr@SJNC|ngjQGi9kc3cd zTw3x*@fB?zX%G%~d3OsNR4H{@h1W>bXU^ZP>GvNa_gqgrG(FVpwi@E3aN#h_Jn5yh z*)5JT87~yWh*OSi6xf?A>$$PLLeN&$E2jnEfLRe&0k+Bkj0+<-|7W`XDj~{SxZ*v) zJ5y$Dh2#{|otSiX5a~1$xrIMmidLM4g3s{CP|uME?;vUf@4-51uwZ63??oAvo3m~d zmUkn!lM==)wFbA`H^G2PQ0O2g2`hRYYdu z2SbNrzg*W$IaY3{;*%CI{Jux(I)lRFt`O%*NE^iGq_>-~-z}J`-cdH915--A+%cul zCkb003G3RV3Rm}t&#XQ{*=*PbgK$#GF{!p#t=Bgqi%yP^G^9HUxGeysgxRm&<%O@s z%3+0Ygzhm&EK;}>t3D^~?IEv~Dcd~nO9~-~?A@34%O`0RstEn60LLGUWrO z?Oz6JygS~Zla^3D&3}XD*8qH3N)!(tD)4)kLsp4U5*dzw*SVvTE-X9qbSsd@)y1gZ5WrSac^^XpVBv&zPPgX>6%NABY|C(CXZSEA# z_|4RY3(Gp#lD2%fs2=#FPNF|^gX!cRn;Y-={3rtRLMVtvgF%NhC(B5>kN1blXJn&R zQktkt=tMe7BV{4N&+36va4(DP-DsB6$rVo(3lD?7Q*5@GqmIm$8~?BnP_p*31L{^< zlhLD}cDCkzC~{%bj}0H!$L`aqXv(D;Aq$uS$wQM0e?Xj<7_yrxD+3?+bXDFu*z)HH zs||gdm++@?sa=As-CAZxBV2P?JWX^wnC}w$3Tj#Dd^6@pI}Uv@t{D66Td@-cB&C`m zrIkIry$W0+&fx)3`aAMPc(JxUVUK<;maX0m}zG*7h#X8k*B z$>O7xL#^vu*?mvu&<@T)ej4HR&Zxn@)M8K`(po6I_0yC+(4dnm=AB7)`)0VwL9<2k z`tPjeJshDRX)g&mp8Qo3m`YVTxUR*Um}RM|s|v3_+FDbqJC+48B18V7$d=A;H&Bq{ zOx>H-A#A7E+Ftq&4#SVub5i8KHl;A`W9Ntxgw>@#1hRR(T|@Q3P^~XmnLtvbTFzB+ z-PWiJN6Ge;vo9F-titcxUVr#z=#g0!fH)+lzCew%A`)mL*S20JR*I3iZ4b*@+qWDL z(tgftf9MEB)r~DYs560fH0(&}RfrUiZBSF7@xyu+iC>{eQBbHO*Y7wBF?6&>&kjcu zg$R1aSkO1_n$hpE+2y4D9M1ikdb}5Nrf+B7g=Tq~Bq5aLeh}glX~9p$us16=p@_?j z3xaMqT@}e(b4w2*Dnt#3EK@hUOP-CZYn-eiRp z?2dX`3|E*Taula$0Nb&!RsNzvGAEVmIEP7UmLH2o+WBX#7*Ujz6FA5QYc^HOMGE>w zNI(PscDke?YZ81Vd&aIq{puI_GV99NC9ZFr<0mWGG=Y1>5d4z(_?hB$=-r8gzVV`@ z8}hacsn@&-(rg046-|o`ar^e)W9N>Q#6t1Y(I2r}?;4(xR}6Pj$JSsy2JXtJ^UH-T z=PP}Au3}I{YKG?CEvV_))UB(O25TN=xB*4U2&{I+Vxpi^H(ebWtHU1Rx?;eb4~h+N z$9}4%-M6x(jnnEPr0Zm3xz+r_t{YlnTj+xG3uka-x|p1Cxbg9VAo^yPo_Z&}UGqxu zmcSNCmc_^ihc$p|u|PNQ6xZoV(PJj+=o_mz24blJ$*aU6qQo6lai2fT$!WlkX>lAL z22}Md_!0}c@+MUCOSo^BWZTn*pv-uFtQq&8rA^b%#NkGBaaqH_KS34CXNNUY(S?XB zX3{Jvkj~Lahu~)OK3oty^viat3_yyOBrNrUV}qZGr}zzyq8Db;m?KAKXYyeaYidp+ zC3&phZp`6I$a&ldjLxjJ&eS@)6X!~rOMPe?)e5Ju)0eGX73XwSw>-?3mVVX98}U_2 zb6i^k^R3d4+lF|0U_DL=z>s%jZp&O}p~Me;aFT22qUY3ZljtvFD%xnIryu69(@L2Y zd_K21J2AiRWq`Mlu93uG|IO%*G{1hp>sjVOKs6iJ;P%$#`@vy|FdLqP?xl5SSG0jhgl#k7Vbx%e@QlFg9^0<#eJWf#=_78}GTmEqX5rXJC;n&UO-jYE_z(rZtjkMq zK&`bjx7fD#?n>lt<(a4O9GzV94EHWOHP6iJZdE(8(utZM{A`2F2(bYpVQ2Nzv!MMW zSlEXZK2@;bz8=k9@xy8zIa_0^%+hqwNIHmbmo!4JT70HAPsAksq|+KTY2DuJD1Z(! z))5g78q@EjL}hV~fk6_6Y8(C|o?NGh_v=uf=Zc>@nf|m8bdEl5e@IO+OD&Enrt|-d zQG;)_N@1>GZW-vgecTCZSu@TaoaP?Y27wS|J`RpM|BcFp)h615n|c~pvX-6xVCdd9 zxwW45N0iW(Rzo?@sK%*GgGCy==rzzG?33@N1oBdR6T%ke%Dht7^a;zR`w;VbNuogn z1+Fi-2whZIj$8ygiABD8$>?q1q>rtVjQQd1SgBMoU~FSnek5K#j~lCiU`^He36mG9 zLlDYFf%)t7)5j=7Ipj&@CH^qx`qI5{l0wKL^y_I%lEu0R(VhiT@+Rh?HRVR9itz?> zUNU8Wj;sOJDM)mS_$X&pnslKOPiqSL&{d!C=&nCwYG%?)+=KHcDB(*Pp{%Xku!!Z( zGZD0PNSeEw%U*r)kLW3?^Gz9_g=dMpeTIS1K?hS|ysK_wjGd(zTx1XhgO+w$7PHHI zvj;>V*Bv0MMxH7)Sf1OATVAU)PvHizQu<(%!L8OvsfnNA1vg((4@ETU(_j**?+DlC z2CWorz|UyvziqBH%pA_l#p$2wcsA{;&{tgH((hY~CYrdto(*(RogXZ2M}5wPez<4n zLsb2FWTc}jLYCL)T|&-RMh58Ga|+^%pn%x;M4c>ejPt8*5pvD4nN7<~%1p!NI#$2T zU^`>d4f6xZFs}IY#Yq5Gh$8k?0%pY}i-Az^`?217a=J$>&0i85hTM8^Hm@L>6bb@1 z&DJX|Cw9P<4L1WbJI`-h-&|#M*Mqopk_*VQvRV=QL_%+6>=8sm$#&YrXVXJ)tjQ#L z7a%YS-l5m%WO@-bzEj0O@kHs!(~Gs z_$zdmKCkK1KO|f~!H=L$gk;nqEby_fvjv{)OdY{6TjXIUVqE`)X+eHN2HS&nYU?7o zEFV8hiR^n(=#JX4fGELi>P>^NT^ES84AzQ|frVQx77@+S)nX>TO)hX_?w_7oAPjb9oF+gAg}O=?q%|s^!^Cu7_!?LN5hOJuh^>}g z*`=nb^+NV5Rk@>f$VU(|@r{92)LYNW>V!|x0$yN)2RK3DYoUHXMSFMGOWZ7i3!M}E zSW5~M7UIM(1pJ2+$wL2uJJJV1H8kmVPjfy0UaqPGj^XKt`5 zIwRLJsb?%`#|aPhyd4wR<$|dw}U(ST~hU9 zwvF%JeMx+mZ=SZ=XUGJQ_2>p+$22JpyH>3Tr5D^%lu_Uw$Ahs}n2lF|YtE`)Xl@5< z;>p>)C_4PeSDat=dBYzWW-Qc@P!i$!@$x8MPHU}LQc>9Aq5VlRW4i-L~b@ql8j~d?_*vY3V zG{wrpG}cMKMeK){Jw>@#+hP83$Lyv!dDYf7PMnhHAASvq{3ZByS$L7yk&Vtw{Lt+# zbm>iW!-K=IMb~||D$i{#%<+@Xo%9+WJRsNBH@E2L?ovOe^?%#f6Ud4|HoL#O< zgY25gUKIs|z!7^`I;t7SMolFW6)v}I4l_7PVw+qFOGmB1vsq}3^nOs-!%V5rJan{r zf^g>IHx;-!MSB8s8gj;?w`o(d4lWc{^Crt5HSiNU;6~8XlSh>s62UilJzfi8fb^SB zGO?kcM^HI%#j0zsy5Qt*m|ALH1rar99UAF9!yZ)je_0Sdx*8;8o(ydHi+96o$x??r zTmn9mR1MfczlhKZUu~^v=6scs7r$sq9`5m#i*9{En}I)R29+M836=t9d|5T{N}4ts zL7orj0tVQ!R{Osu1x+k=Q@Y=kq{HaiUv$rVoj+ZUwa>3yaC(vzd}&%iRz3?!9AEs$ zbq}|6o!%dCkk`P5Ba77)Y?ziIfKv4hy03=`|_*E-!WYM$} z3;+lu007Xx&l=ep$~oBDInp_qIa?dp=$l*7TG$zzUZ_~wAuFTsw0p8qSWhC5)1W}~ zwKMh<&Gstk_(L0ojTuG`RK~H+i;xb@I11~8_v`1pSeZygrffe zV(i9$-_SK~(^zH4UM_Kt%IX9-Zf@<{0ayZ?{TR!upEuBGvuYLJf}xJ^XC4V=PS%7* z=fFYr3$WN}vp<2PM}e2cU;nBmnj{jl0g!^Zj}WzD$2J45fn3!RfSgQcbY`eSV$ZIG zvIq_QM4vu~ju zp;_?ZxCCk=A7NfFbPK4_vZ<2O%B*kLD|svnu|kkl+s1H5>SL>s1*a%kOsf-DV><+( z0eTN@cEjY#2eJyj#DNkyhWy9F*o8MUviwJtyed2PT%Z^lL%dhVQ4BO=GD?g9eeBCV z4`Vb+eq+o8X3CkE#&=*J7lJ9uP(7tG%^yh*E3p{^9v8dN-ETedM^$OKZM3F@S+Wig ze0^{OiF5I1TT73hBSH~)v(8^T_ukfW&h?+Srq4cI5ZRsYqk;asz1aih=zr*&{o>?_ zHhoCoDJTN=vD$8udV{8U=7Zv#R4b2RtEOe#%*X;86O$=(y*2tQcq~3w)(tnUHZ4AH z(rDpVNoLd^Fvqk_=z##o9 zeXpDqhGmLTiP!*>5vBvIaWKU(CinGb+>&I~ApH0>=GE!8Woetn{cEmzDW3u-PT<1Q z`PZ@)WAHxG8%ukW-{nDzfax6S*`J<*^fIdXgVQmJ=%eCv|1JTq)v8tJOKc?q;?lUY zjH+|aHr11J(m}G{1TZv=+-8-z*A{3|-m9Ylpn z*D_`6cL8ELUffTsonW%0i}U`5yXl;;0c&j{M1F2yM(S+(-^c==!wJ3dH8nnW0$|W* z74a4P=vR8?R@|lyMc}WINFm_u#?<{9eFzvljjb-~mTgg2;8?5lvW~ZRGn5PdBI^}? z;n`Tu5Hw>4gk6FgLWfg0L?EgW^<$Km&?U2}Sm#mqCKoMS*!_uEtN zxMk^?PkJ->h8}*>n6rFoAe(hKqXyl5M_i+Nl#QGuZ0wtm_*_va+}{K zWV9Deb$BkG`}cWP3^v8hGJ3i@OJD4gJbP^5^=e+-RVVC=DLRgyE{5Rw?Eh^%!}Ijo zD=N z588=#d2sZ!W_+CfN{zecQw-G0lq1pUfM97VvgxBVr>vwRWqV`a>X)K1ND#>>C)^2+ z4Lgx(;EUaX1e{Y1e33smmRZj4f2_WkLLd8h;NOCxJVuB;WJ*UpIjP0GR)a{yzEvZGThf zIv86y($W4`{hz@4c05wSZ%{J`0D$;!K%nn4|8ws#v~@84r*`kx*3i$sTd)EJ01*BS z?)ZHR`yaTzo!vj7i5$t{ahm`D#z>g|XguOu5U#ckMs(j4&eq>!|0lRuYaoxzcQ2EW z005kSYkax$U-17P`Tr*QM=2!Zig`ED0RX9LU;y}kW76yW7n7rtyOpuyKXpUT-G7dQ z1psiY1_xmM8(8q>-@vNoPG-U;CdP(N|HzZiE27)|J)9$`|5QZ-DbRmQ!_nBu$=t^D zAK}Lu2a14iRWyD7{>!rdZ}9`lqx=`#)!0Ds|A*m?BgfJ3+ZNuS0f29j{!j4(ny2~~ zgUPogD(M?o{i87?@c(QX0tW!vDFFb~|3Uwk5t`Ee3-4rRY;FAgB=cP}{F5xR{5Y42 zzoFpYgZTG}pvM9PFm!fwvb9#TwxTn4GPeFl0-mvhg>U5p$i4~i{;dz}tpA(fzYXJm zX#UYE8r!9$cfL6czPT{|jf;Wpe{=m8%m4F;_K!V^nF$HA{8nq&w@Ch7s$%T_l8Vju zgPpO%w_^WEB$*6k+oa!GA^(=_zfZBfU;o0J8S5JvJN#qoRXwd9%HL>4$p1vM@%)cY zZJqu<&QGzh0p6^@XahCm#Ti}#OGM>sz=Dkd0A4AnlK=n! literal 0 HcmV?d00001 diff --git a/ProjectManual.md b/ProjectManual.md new file mode 100644 index 0000000..f895f60 --- /dev/null +++ b/ProjectManual.md @@ -0,0 +1,1606 @@ +# FlashOps 项目开发手册 (Project Manual) + +本文档用于 FlashOps / STORAGE LABOS 项目的开发、测试、部署、运维与交接。内容以 +2026-07-27 的实际源码和生产环境为准;目标架构与尚未实现的能力会明确标注,避免把原型能力 +误认为真实硬件能力。 + +> **文档状态**:V1.2 · 已与当前代码、Git 仓库和云端部署边界核对 +> +> **生产地址**: +> +> **团队 Git**: +> +> **后端代号**:FlashOps +> +> **控制台品牌**:STORAGE LABOS +> +> **安全提醒**:本文不记录 SSH 密码、Gitea 管理员密码、私钥或其他明文凭据。 + +--- + +## 目录 + +1. [项目概述](#1-项目概述) +2. [快速开始](#2-快速开始) +3. [系统架构](#3-系统架构) +4. [核心业务流程与状态机](#4-核心业务流程与状态机) +5. [安全门禁与危险动作](#5-安全门禁与危险动作) +6. [数据库与领域模型](#6-数据库与领域模型) +7. [API 接口设计](#7-api-接口设计) +8. [前端控制台](#8-前端控制台) +9. [工作流、Agent 与适配器](#9-工作流agent-与适配器) +10. [证据、失败分析与指标](#10-证据失败分析与指标) +11. [配置与环境变量](#11-配置与环境变量) +12. [腾讯云生产部署与运维](#12-腾讯云生产部署与运维) +13. [测试、质量门与开发规范](#13-测试质量门与开发规范) +14. [已知边界与演进路线](#14-已知边界与演进路线) +15. [故障排查](#15-故障排查) +16. [术语表与 FAQ](#16-术语表与-faq) +17. [变更记录](#17-变更记录) + +--- + +## 1. 项目概述 + +### 1.1 背景 + +固件回归测试通常跨越数小时甚至数天,期间可能发生 Agent 崩溃、操作系统蓝屏、测试盘掉盘、 +网络中断或整机失联。传统做法依赖工程师通宵值守、手工重启、记录截图和拼装报告,成本高, +而且很难证明“当时到底发生了什么”。 + +FlashOps 的目标是把一条真实实验室 SOP 变成可执行、可恢复、可审计、可取证的状态机: + +- 自动执行固件 A/B 回归与循环测试; +- 在破坏性操作前阻止错盘、系统盘和未授权 DUT; +- 主机失联后通过独立带外通道逐级恢复; +- 从安全检查点继续,而不是盲目重跑非幂等步骤; +- 统一记录控制平面、Agent、OOB 和人工操作事件; +- 生成可回放的 Evidence Bundle; +- 用无人值守完成率和人工触碰次数量化节省的值守成本。 + +### 1.2 主要用户 + +| 用户 | 主要任务 | +|---|---| +| 固件 / SSD 测试工程师 | 创建回归任务、查看实时进度、分析失败证据 | +| 实验室管理员 | 管理 DUT、测试主机、带外控制器和危险动作授权 | +| 研发工程师 | 对比固件版本、复现失败、读取时间线与环境指纹 | +| 测试负责人 | 查看 UCR、证据完整率、阻断问题和工位利用情况 | +| 运维人员 | 维护控制平面、数据库、证书、日志和备份 | + +### 1.3 当前可运行基线 + +当前版本已经具备一条无需真实硬件即可端到端运行的纵向链路: + +```text +创建任务 + → 六项安全预检 + → DUT / 测试主机资源加锁 + → N 次模拟回归循环 + → 注入 Agent 心跳丢失 + → L1 Agent 软恢复失败 + → L2 OS 重启失败 + → L3 带外 Reset 恢复 + → 校验环境指纹并从检查点续跑 + → 生成 Evidence Bundle + → 控制台展示状态与事件时间线 +``` + +### 1.4 能力状态 + +| 能力 | 状态 | 说明 | +|---|---|---| +| FastAPI 控制平面 | 已实现 | 任务、预检、状态、人工操作、看板接口 | +| 14 张持久化表 | 已实现 | SQLite 可直接建库和灌种子数据 | +| Run 事件溯源 | 已实现 | 状态变化统一经 `events/recorder.py` 写入 | +| Run 状态转移约束 | 已实现 | 非法转移抛出异常,终态不可继续 | +| 六项安全门禁 | 已实现 | 序列号、授权、系统盘、固件、Host、OOB | +| L1–L5 恢复决策 | 已实现 | 演示链路实际执行到 L3;L4/L5 为策略能力 | +| 检查点续跑 | 模拟实现 | 当前保存循环边界检查点 | +| Evidence Bundle | 最小实现 | `manifest.json` + `events.ndjson` | +| 控制台 | 部分动态 | 任务中心和实时运行接 API,其余主要为产品原型 | +| 生产部署 | 已实现 | 腾讯云 CVM + systemd + Nginx + HTTPS | +| 团队 Git 服务 | 已实现 | Gitea 1.27 + HTTPS + PR/Issue + COS 定时备份 | +| 独立 Host Agent | 部分实现 | 注册、token 摘要、主机探针、心跳及状态老化已实现;Step 租约待实现 | +| 真实 NVMe / OOB 接入 | 未实现 | 尚未连接可牺牲 DUT、PDU 或 KVM | +| 失败指纹聚类执行逻辑 | 未实现 | 数据模型和界面已定义,服务逻辑待接入 | +| 应用级账号与 RBAC | 未实现 | FlashOps 预览站当前匿名开放;接真实硬件前必须恢复认证与审批 | + +### 1.5 系统边界 + +当前版本是“可演示、可开发、可部署的控制平面基线”,不是已经可以对真实盘执行刷写和 +Sanitize 的生产硬件平台。以下行为不得通过修改模拟数据来伪装完成: + +- 不得宣称 Step 租约、真实命令执行和真实 OOB 已经交付; +- 不得把 `sim://` 的固件、OOB 和证据 URI 当作真实硬件结果; +- 匿名预览环境不得接入真实硬件、客户数据或有效危险命令;接入前必须启用应用级认证、 + 审批和命令模板白名单; +- 不得直接把生产部署的 SQLite 单机形态扩展为多 worker; +- 不得绕过安全门禁向真实设备下发自由文本命令。 + +### 1.6 技术栈 + +| 层 | 技术 | 当前用途 | +|---|---|---| +| 后端 | Python 3.9+ / FastAPI | HTTP API 与应用生命周期 | +| ORM | SQLAlchemy 2.x Async | 领域模型、事务和查询 | +| 开发数据库 | SQLite + aiosqlite | 零外部依赖启动 | +| 目标数据库 | PostgreSQL 16 + asyncpg | 多工位生产形态,尚未切换 | +| 服务进程 | Uvicorn | ASGI 运行时 | +| 校验 | Pydantic 2.x | API 请求体校验 | +| 工作流配置 | YAML / JSON | SOP 与步骤定义 | +| 测试 | pytest / pytest-asyncio / httpx | 纯函数与 API 端到端测试 | +| 前端 | 静态 HTML + Design System JS/CSS | 产品控制台原型和部分 API 接入 | +| 生产守护 | systemd | 单 worker 服务、开机自启、故障重启 | +| 入口 | 宝塔 Nginx | HTTPS、反代和安全响应头;FlashOps 预览站匿名开放 | +| Git 协作 | Gitea 1.27 | 仓库、提交历史、分支、Issue、Pull Request 与成员管理 | +| 证书 | Let's Encrypt / Certbot | HTTPS 与自动续期 | + +### 1.7 目录结构 + +```text +STORAGE LABOS/ +├── .github/ PR 模板与 CI 工作流模板 +├── .gitignore / .gitattributes 忽略规则与跨平台文本规则 +├── README.md Git 仓库首页 +├── CONTRIBUTING.md 团队 Git 协作入口 +├── ProjectManual.md 本手册 +├── flashops/ 后端与技术文档 +│ ├── Makefile 本地开发统一入口 +│ ├── README.md 项目短说明和能力状态 +│ ├── docker-compose.yml 目标生产拓扑草案 +│ ├── deploy/ 当前腾讯云生产配置 +│ │ ├── README.md +│ │ ├── flashops.service +│ │ ├── nginx-http.conf +│ │ ├── nginx-https.conf +│ │ └── certbot-reload-nginx.sh +│ ├── docs/ 架构、协议、状态机、ADR +│ │ ├── architecture.md +│ │ ├── domain-model.md +│ │ ├── state-machine.md +│ │ ├── workflow-spec.md +│ │ ├── agent-protocol.md +│ │ ├── adapter-sdk.md +│ │ └── decisions/ +│ ├── services/control-plane/ +│ │ ├── requirements.txt +│ │ ├── flashops_control/ +│ │ │ ├── api/ HTTP 路由 +│ │ │ ├── engine/ 状态转移与恢复决策 +│ │ │ ├── events/ 事件写入口 +│ │ │ ├── evidence/ 证据包生成 +│ │ │ ├── models/ 14 张表 +│ │ │ ├── safety/ 六项安全门禁 +│ │ │ ├── services/ Run 编排和模拟执行器 +│ │ │ ├── cli.py 建库、种子、演示命令 +│ │ │ ├── config.py 配置入口 +│ │ │ ├── db.py 异步会话与 SQLite 并发保护 +│ │ │ └── main.py FastAPI 应用入口 +│ │ └── tests/ +│ ├── services/host-agent/ +│ │ ├── README.md 独立 Agent 运行与配置 +│ │ ├── flashops_agent/ 注册、指纹、凭据和心跳客户端 +│ │ └── tests/ +│ └── var/ 本地数据库、对象和证据(不入库) +└── 前端UI八页面完成/ 控制台静态页面与设计系统 + ├── Dashboard.dc.html + ├── Tasks.dc.html + ├── LiveRun.dc.html + ├── Evidence.dc.html + ├── Failures.dc.html + ├── Assets.dc.html + ├── Compare.dc.html + ├── Workflows.dc.html + ├── ConsoleNav.dc.html + ├── ds-base.js / support.js + └── _ds/ 设计系统资源 +``` + +### 1.8 服务地址与端口 + +| 环境 | 地址 / 端口 | 用途 | +|---|---|---| +| 本地开发 | `http://localhost:8000` | API 与控制台同源服务 | +| 本地控制台 | `/console/Dashboard.dc.html` | 控制台入口 | +| 本地 API 文档 | `/docs` | FastAPI OpenAPI UI | +| 生产内部监听 | `127.0.0.1:18080` | Uvicorn,仅服务器本机可访问 | +| 生产公网 | `https://flashops.imagebrewing.com` | Nginx HTTPS 入口 | +| 团队 Git | `https://git.imagebrewing.com` | Gitea 页面、HTTPS clone、PR 与成员管理 | +| 生产 HTTP | `80` | ACME challenge;其他请求跳转 HTTPS | +| 生产 HTTPS | `443` | TLS + 反向代理;FlashOps 预览站无需登录 | + +--- + +## 2. 快速开始 + +### 2.1 环境准备 + +- macOS、Linux 或 WSL; +- Python 3.9 或更高版本; +- GNU Make; +- 本地运行不需要 Node、Docker、PostgreSQL 或 Redis。 + +### 2.2 首次初始化 + +```bash +cd "/Users/yuanshuai/Desktop/STORAGE LABOS/flashops" +make setup +``` + +`make setup` 会执行以下动作: + +1. 创建 `flashops/.venv`; +2. 安装 `services/control-plane/requirements.txt`; +3. 重建本地 `var/flashops.db`; +4. 创建 `var/objects/`; +5. 灌入模拟工作流、DUT、Host、OOB 和固件数据。 + +> `make setup` 内含 `db-reset`,会删除本地 `var/` 中的开发数据。不要在生产目录执行。 + +### 2.3 启动开发服务 + +```bash +make dev +``` + +打开: + +- 总览: +- 任务中心: +- 实时运行: +- API 文档: + +### 2.4 跑一条完整演示 + +```bash +make demo +``` + +演示默认运行 8 个循环,并注入一次心跳丢失。完成后会输出 Run ID 和 Evidence Bundle 路径。 + +也可以在控制台“任务中心”先执行安全预检,再创建任务,然后进入“实时运行”观察事件时间线。 + +### 2.5 运行测试 + +```bash +make test +``` + +当前基线共有 25 项测试,覆盖: + +- Run 状态转移; +- L1–L5 恢复阶梯选择; +- 系统盘 / 分区保护; +- 六项安全预检; +- 完整模拟 Run、故障恢复、Evidence Bundle; +- 暂停、继续、紧急停止与人工触碰审计; +- Agent 注册、token 轮换、Bearer 鉴权和本地凭据权限; +- 心跳状态老化:15 秒降级、30 秒离线。 + +### 2.6 常用 Make 命令 + +| 命令 | 作用 | +|---|---| +| `make setup` | 创建虚拟环境、安装依赖、重建开发库 | +| `make setup-py` | 只准备 Python 依赖 | +| `make db-reset` | 删除本地数据库和对象目录后重建 | +| `make seed` | 向空库灌入种子数据;已有工作流时不重复写 | +| `make demo` | CLI 跑完整模拟链路 | +| `make dev` | 启动 API 和同源控制台 | +| `make dev-agent` | 注册 Agent 并发送一次真实进程心跳 | +| `make dev-agent-loop` | 持续运行 Agent 心跳循环 | +| `make test` | 执行完整测试集 | +| `make e2e` | 只跑端到端纵向测试 | +| `make clean` | 清理本地 `var/`、缓存和 `__pycache__` | + +--- + +## 3. 系统架构 + +### 3.1 五层架构 + +```text +┌──────────────────────────────────────────────────────────────┐ +│ 交互与集成层 静态控制台 · CLI · OpenAPI │ +├──────────────────────────────────────────────────────────────┤ +│ 控制平面 FastAPI · Safety · Run Service · Event Store │ +├──────────────────────────────────────────────────────────────┤ +│ 执行平面 当前:内置模拟器 + Agent 心跳;目标:Step 执行 │ +├──────────────────────────────────────────────────────────────┤ +│ 带外平面 当前:模拟 OOB;目标:KVM / PDU / ATX / AC │ +├──────────────────────────────────────────────────────────────┤ +│ 证据与智能层 统一事件流 · Evidence Bundle · Failure Signature│ +└──────────────────────────────────────────────────────────────┘ +``` + +### 3.2 依赖方向 + +```text +Browser / CLI ──HTTP──▶ Control Plane ◀──HTTP pull── Host Agent(部分落地) + │ │ + ├──▶ Database ├──▶ Adapters + ├──▶ Object Store └──▶ OOB + └──▶ Event Timeline +``` + +硬规则: + +1. Agent 不导入控制平面代码,只按 `docs/agent-protocol.md` 通信; +2. 控制平面不主动反连客户主机,Agent 采用拉模式; +3. 状态机纯逻辑不依赖 FastAPI、SQLAlchemy、文件系统或真实时钟; +4. API 路由只做校验与服务调用,不承载复杂业务决策; +5. 危险动作必须先过控制平面安全门禁; +6. Run 状态不得绕过 `events/recorder.py` 直接修改; +7. 日志正文和大文件进入对象存储,事件表只保存索引、摘要和 URI。 + +### 3.3 当前运行架构 + +```text +Internet + │ + ▼ +DNSPod: flashops.imagebrewing.com → 62.234.39.66 + │ + ▼ +Nginx :443 + ├── TLS 1.2 / 1.3 + ├── 安全响应头 + └── proxy_pass http://127.0.0.1:18080 + │ + ▼ + systemd: flashops.service + │ + ▼ + Uvicorn 单 worker / FastAPI + ├── SQLite: var/flashops.db + ├── Evidence: var/objects/ + └── Console: ../前端UI八页面完成/ +``` + +### 3.4 开发形态与目标形态 + +| 组件 | 当前开发 / 线上基线 | 目标多工位形态 | +|---|---|---| +| 数据库 | SQLite | PostgreSQL 16 | +| 事务并发 | 应用级串行 SQLite session | 数据库行锁与队列 | +| 进程数 | 1 worker | 多 worker / 多实例 | +| 事件总线 | 进程内任务 | Redis / NATS | +| 对象存储 | 本地目录 | MinIO / S3 / COS | +| 执行器 | Run 仍由内置模拟器执行;独立 Agent 已能注册和心跳 | Agent 领取并执行 Step | +| OOB | 模拟 | JetKVM / PDU / 主板控制器 | +| 认证 | 匿名预览,无应用账号 | OIDC / SSO + RBAC + 审批 | + +### 3.5 关键架构决策 + +`flashops/docs/decisions/` 记录已经接受的 ADR: + +- ADR-0001:Monorepo 与技术栈; +- ADR-0002:Run 采用事件溯源; +- ADR-0003:首版自研状态机,不依赖 Temporal / Airflow; +- ADR-0004:安全门禁放在控制平面,Agent 保持简单; +- ADR-0005:模拟器是一等产品能力,不是临时测试脚手架。 + +修改这些边界前,应新增 ADR,而不是只改代码。 + +--- + +## 4. 核心业务流程与状态机 + +### 4.1 创建任务 + +任务创建时会冻结以下信息: + +- 工作流 key、version 和 `spec_hash`; +- DUT、Host、固件 A、固件 B; +- 循环次数和是否注入故障; +- OS、Kernel、BIOS、Agent、工具链、DUT 序列号和型号; +- 环境指纹哈希; +- 创建人和创建时间。 + +创建后依次写入 `RUN_CREATED` 和 `RUN_QUEUED` 事件,再启动模拟执行任务。 + +### 4.2 Run 状态机 + +```text +QUEUED ──▶ PREFLIGHT ──▶ RUNNING ──▶ COMPLETED + │ │ │ + │ └──▶ REJECTED │ + │ ├──▶ PAUSED ──▶ RUNNING + │ ├──▶ RECOVERING ──▶ RUNNING + │ │ └──▶ FROZEN + └──────────────────────────┴──────────────▶ ABORTED +``` + +| 当前状态 | 允许转移到 | +|---|---| +| `QUEUED` | `PREFLIGHT`, `ABORTED` | +| `PREFLIGHT` | `RUNNING`, `REJECTED`, `ABORTED` | +| `RUNNING` | `RECOVERING`, `PAUSED`, `FROZEN`, `COMPLETED`, `ABORTED` | +| `RECOVERING` | `RUNNING`, `FROZEN`, `ABORTED` | +| `PAUSED` | `RUNNING`, `ABORTED` | +| `FROZEN` | 无,终态 | +| `COMPLETED` | 无,终态 | +| `ABORTED` | 无,终态 | +| `REJECTED` | 无,终态 | + +非法转移由 `engine/states.py::assert_run_transition()` 拒绝。 + +### 4.3 Step 状态机(目标契约) + +```text +PENDING → DISPATCHED → RUNNING → SUCCEEDED + ├──→ FAILED + ├──→ TIMED_OUT + ├──→ SKIPPED + └──→ CANCELLED +``` + +`run_steps` 表已经定义状态、attempt、租约、输入输出和错误字段,但当前内置模拟器主要在 Run +和循环层执行,完整 Step runtime / Agent 租约尚未接入。 + +### 4.4 恢复阶梯 + +| 级别 | 名称 | 条件与动作 | +|---|---|---| +| L1 | `L1_AGENT_SOFT` | Agent 在线时优雅停止或重启执行进程 | +| L2 | `L2_OS_REBOOT` | Host 网络仍在线时请求操作系统重启 | +| L3 | `L3_OOB_RESET` | OOB 在线时触发主板 Reset | +| L4 | `L4_OOB_ATX_POWER` | 模拟 ATX 长按关机并重新开机 | +| L5 | `L5_OOB_AC_CYCLE` | 整机 AC 断电,等待安全间隔后上电 | +| Freeze | `FREEZE` | 停止自动动作,保留现场并等待人工 | + +数据完整性失败不走逐级恢复,直接 `FREEZE`,防止自动动作覆盖关键证据。 + +### 4.5 检查点语义 + +当前模拟执行器在循环结束时保存: + +```json +{ + "loop_index": 3, + "next_step_key": "regression-loop", + "dut_fw": "B" +} +``` + +恢复成功后必须先确认环境指纹和物理状态仍符合预期,再写 `CHECKPOINT_RESUMED`。 +刷写、Format、Sanitize 等非幂等步骤默认不得因为进程重启自动重复执行。 + +### 4.6 暂停、继续与紧急停止 + +- 暂停:仅 `RUNNING → PAUSED`; +- 继续:仅 `PAUSED → RUNNING`; +- 紧急停止:任何非终态可进入 `ABORTED`; +- 每次人工操作先写 `HUMAN_TOUCH`,递增 `human_touches`,并把 + `unattended_completion` 设为 `false`; +- 紧急停止会释放资源锁并取消内置模拟任务。 + +### 4.7 SQLite 并发保护 + +模拟器与人工暂停可能同时写 `run_events`。SQLite 只允许一个 writer;如果两个会话同时读取 +`event_seq` 再写入,会发生唯一键冲突。当前 `db.py` 对 SQLite 的完整 `session_scope` 事务按事件 +循环串行化,保证事件序号和投影一致。 + +这项保护只适合单进程 / 单 worker 基线。切换 PostgreSQL 后不使用应用级锁,并需要增加 +PostgreSQL 并发集成测试。 + +--- + +## 5. 安全门禁与危险动作 + +### 5.1 默认拒绝原则 + +安全判断发生在控制平面,并且必须早于命令下发。Agent 只能执行已批准模板和经过 schema +校验的参数,不能接收来自界面的自由文本 shell 命令。 + +### 5.2 六项预检 + +| key | 门禁 | 通过条件 | +|---|---|---| +| `serial` | DUT 序列号白名单 | 期望序列号非空且等于现场发现序列号 | +| `destructive` | 破坏性写入授权 | `duts.allow_destructive = true` | +| `system_disk` | 系统盘 / 分区保护 | DUT 路径不命中系统盘及其任一分区 | +| `firmware` | 固件适配型号 | DUT 型号在固件适用列表中,或列表为空 | +| `host` | 测试主机与 Agent | Host 状态为 `ONLINE` | +| `oob` | 带外控制器 | 绑定 OOB 存在且状态为 `ONLINE` | + +六项全部通过,`passed` 才为 `true`。 + +### 5.3 系统盘保护 + +`safety/gates.py::_same_device()` 同时比较完整设备名和分区归属。例如: + +- 目标 `/dev/nvme0n1`,系统盘 `/dev/nvme0n1`:拒绝; +- 目标 `/dev/nvme0n1p2`,系统盘 `/dev/nvme0n1`:拒绝; +- 目标 `/dev/nvme1n1`,系统盘 `/dev/nvme0n1`:可继续检查其他门禁。 + +真实 Agent 接入时还应补充:挂载点、root filesystem、启动标志、Windows Disk Number、BDF +和序列号的现场交叉校验。 + +### 5.4 危险级别 + +| 级别 | 含义 | +|---|---| +| `none` | 只读、报告或普通控制动作 | +| `low` | 有状态变化但可逆 | +| `high` | 刷写、Format、Sanitize、断电等,需要审批与审计 | + +### 5.5 进入真实实验室前必须补齐 + +1. 命令模板注册表与 JSON Schema 参数校验; +2. 不可绕过的系统盘识别; +3. 应用账号、RBAC、危险动作审批和双人复核; +4. Agent 身份、短期令牌、请求签名与重放保护; +5. 审批人、模板版本、参数、执行结果和撤销动作审计; +6. 真实 OOB 的安全间隔、最大恢复次数和硬件熔断; +7. 真实 DUT 的可牺牲测试环境,禁止先在业务盘验证。 + +--- + +## 6. 数据库与领域模型 + +### 6.1 当前数据库 + +- 本地:`flashops/var/flashops.db`; +- 生产:`/data/wangzhan/app/storage-labos/flashops/var/flashops.db`; +- 驱动:`sqlite+aiosqlite`; +- 表由 SQLAlchemy `Base.metadata.create_all()` 创建; +- 应用启动时会确保表和种子数据存在; +- 当前无 Alembic 迁移,修改表结构时需要先补迁移方案。 + +### 6.2 14 张表 + +| 领域 | 表 | 作用 | +|---|---|---| +| 资产 | `oob_controllers` | 带外控制器、能力、状态、电源和温度 | +| 资产 | `test_hosts` | 操作系统、Agent、工具链、心跳和 OOB 绑定 | +| 资产 | `duts` | 序列号、型号、BDF、设备路径、危险授权和健康信息 | +| 资产 | `firmware_artifacts` | 版本、哈希、签名、适用型号和文件 URI | +| 工作流 | `workflows` | SOP spec、版本、哈希、危险级别和审批人 | +| 运行 | `runs` | 当前状态投影、环境指纹、进度、检查点和结论 | +| 运行 | `run_steps` | 步骤状态、attempt、租约、输入输出和错误 | +| 事件 | `run_events` | 每个 Run 内单调递增的 append-only 时间线 | +| 恢复 | `recovery_actions` | 触发原因、恢复级别、结果、详情和证据 URI | +| 调度 | `resource_locks` | DUT / Host 独占锁,防止并发踩踏 | +| 分析 | `failure_signatures` | 失败聚类签名和统计 | +| 分析 | `run_failures` | 单次失败实例及其分类 | +| 证据 | `evidence_bundles` | 证据包 URI、manifest、大小和完整率 | +| 审计 | `audit_log` | 操作者、动作、命令模板、参数、审批和结果 | + +### 6.3 事件溯源 + +```text +run_events(顺序真相) + │ + ├──投影──▶ runs + ├──投影──▶ run_steps + └──关联──▶ recovery_actions / evidence_bundles / failures +``` + +`runs` 是为了查询效率保存的当前投影,`run_events` 才是完整顺序真相。事件的 `seq` 由控制平面 +分配,不能用不同机器的时间戳代替排序。 + +### 6.4 关键字段 + +- `runs.spec_hash`:任务使用的工作流不可变版本; +- `runs.env_fingerprint` / `env_fingerprint_hash`:A/B 可比性和失败聚类输入; +- `runs.event_seq`:每个 Run 的下一事件序号来源; +- `runs.checkpoint`:安全续跑位置; +- `runs.unattended_completion` / `human_touches`:UCR 与人工介入统计; +- `duts.serial` / `device_path` / `allow_destructive`:危险动作三信号; +- `firmware_artifacts.sha256` / `signature`:固件完整性与来源; +- `evidence_bundles.completeness` / `missing_fields`:证据质量; +- `resource_locks` 的资源类型和资源 ID 唯一约束:防止同一资产被重复占用。 + +### 6.5 数据文件与 Git + +以下内容属于运行产物,不进入 Git: + +```text +flashops/var/ +flashops/.venv/ +flashops/.pytest_cache/ +*.db +*.db-journal +*.log +.env +.env.local +``` + +--- + +## 7. API 接口设计 + +### 7.1 基础约定 + +- 前缀:`/api/v1`; +- 数据格式:JSON; +- 时间:API 输出 ISO 8601 UTC 字符串; +- 开发文档:`/docs`; +- 当前应用内部没有用户认证中间件; +- 当前公网预览站未启用 Nginx Basic Auth,页面和普通 API 可匿名访问; +- 匿名预览只能使用模拟资产。进入真实硬件或多用户阶段前必须增加应用级认证、RBAC、 + 审批和审计上下文。 + +### 7.2 接口清单 + +| 方法 | 路径 | 作用 | +|---|---|---| +| GET | `/api/v1/health` | 服务健康检查 | +| POST | `/api/v1/preflight` | 对指定或默认资产执行六项预检 | +| POST | `/api/v1/runs` | 创建 Run 并启动模拟执行 | +| POST | `/api/v1/runs/demo` | 用默认参数创建演示 Run | +| GET | `/api/v1/runs?limit=30` | 查询最近 Run,limit 限制 1–100 | +| GET | `/api/v1/runs/{run_id}` | 查询 Run 当前投影和 Evidence Bundle | +| GET | `/api/v1/runs/{run_id}/events?after_seq=0` | 增量查询事件时间线 | +| POST | `/api/v1/runs/{run_id}/pause` | 人工暂停 RUNNING 任务 | +| POST | `/api/v1/runs/{run_id}/resume` | 人工继续 PAUSED 任务 | +| POST | `/api/v1/runs/{run_id}/emergency-stop` | 紧急停止非终态任务 | +| GET | `/api/v1/dashboard/summary` | 汇总任务数、活动数、完成数和 UCR | +| POST | `/api/v1/agent/register` | 首次注册或轮换 Agent token | +| POST | `/api/v1/agent/{agent_id}/heartbeat` | Bearer 心跳、主机状态和探针上报 | +| GET | `/api/v1/agent/hosts` | 查询 Host / Agent 在线投影,不返回 token | + +### 7.3 请求模型 + +#### PreflightBody + +```json +{ + "dut_id": null, + "host_id": null, + "firmware_id": null, + "discovered_serial": null +} +``` + +全部为空时使用第一组种子资产。`discovered_serial` 可用于模拟现场序列号不一致。 + +#### CreateRunBody + +```json +{ + "name": "固件 A/B 无人值守回归", + "workflow_id": null, + "dut_id": null, + "host_id": null, + "firmware_a_id": null, + "firmware_b_id": null, + "loops": 8, + "inject_failure": true, + "created_by": "console-demo" +} +``` + +API 当前允许 `loops` 为 1–500;工作流种子 spec 的产品目标上限为 10000,两者尚未统一。 + +#### HumanActionBody + +```json +{ + "actor": "engineer-name", + "reason": "检查暂停" +} +``` + +### 7.4 调用示例 + +本地: + +```bash +curl -sS http://localhost:8000/api/v1/health + +curl -sS -X POST http://localhost:8000/api/v1/preflight \ + -H 'Content-Type: application/json' \ + -d '{}' + +curl -sS -X POST http://localhost:8000/api/v1/runs \ + -H 'Content-Type: application/json' \ + -d '{"loops":8,"inject_failure":true,"created_by":"manual"}' +``` + +公网预览环境可直接访问: + +```bash +curl https://flashops.imagebrewing.com/api/v1/health +``` + +### 7.5 常见状态码 + +| 状态码 | 场景 | +|---|---| +| 200 | 查询或动作成功 | +| 201 | Run 或 Agent 注册成功 | +| 400 | 资产或工作流数据无法解析 | +| 401 | Agent 注册口令或 Agent bearer token 无效 | +| 404 | Run / DUT / Host 等资源不存在 | +| 409 | 当前状态不允许暂停、继续或停止 | +| 422 | Pydantic 请求参数校验失败 | +| 503 | 生产环境尚未配置 Agent 注册口令 | +| 500 | 应用未处理异常或数据约束冲突 | + +--- + +## 8. 前端控制台 + +### 8.1 挂载方式 + +`main.py` 把后端仓库的同级目录 `前端UI八页面完成/` 挂载到 `/console`: + +```text +STORAGE LABOS/ +├── flashops/ +└── 前端UI八页面完成/ +``` + +生产服务器必须保持同样的兄弟目录关系,否则根路径会跳到 `/docs`,控制台路径返回 404。 + +### 8.2 核心页面 + +| 页面 | 文件 | 当前状态 | +|---|---|---| +| 总览 | `Dashboard.dc.html` | 产品级静态样例,看板 API 尚未全面接入 | +| 任务中心 | `Tasks.dc.html` | 已接预检与创建 Run API | +| 实时运行 | `LiveRun.dc.html` | 已接 Run、事件、演示、暂停、继续、急停 API | +| 证据浏览器 | `Evidence.dc.html` | 主要为静态样例,真实 Evidence 下载待接 | +| 失败中心 | `Failures.dc.html` | 静态产品原型,聚类服务待实现 | +| 资产中心 | `Assets.dc.html` | 静态产品原型,资产 CRUD 待实现 | +| 版本比较 | `Compare.dc.html` | 静态产品原型,真实 A/B 查询待实现 | +| 工作流模板 | `Workflows.dc.html` | 静态产品原型,编辑与发布 API 待实现 | + +`ConsoleNav.dc.html` 提供导航与全局停止交互原型;`Deck.dc.html` 和 `_template/` 用于展示稿, +不属于正式业务路由。 + +### 8.3 前端调用约定 + +- 页面与 API 同源,不配置独立 API Base URL; +- 所有动态请求使用相对路径 `/api/v1/...`; +- 前端代码不得保存任何生产密码或 Agent token; +- Run ID 应通过 URL 或浏览器状态传递; +- 事件增量读取使用 `after_seq`,不要每次重复拉取全部事件; +- 页面中静态样例必须用“演示 / 示例”标识,避免与真实数据混淆。 + +### 8.4 下一步前端接入优先级 + +1. 总览接 `/dashboard/summary` 与最近 Run; +2. 证据页接 Run Evidence Bundle 和真实事件; +3. 资产页增加只读 API,再增加受审批保护的写接口; +4. 工作流页面接版本、spec hash、发布和审批; +5. 失败中心接失败签名和人工分类; +6. 版本比较接真实环境指纹与指标; +7. 引入统一的 loading、empty、error、401、409 状态。 + +--- + +## 9. 工作流、Agent 与适配器 + +### 9.1 种子工作流 + +默认工作流: + +```text +key: fw-ab-regression +name: 固件 A/B 电源状态回归 +version: 3 +danger_level: high +``` + +步骤: + +1. `preflight`:安全预检; +2. `flash-fw-b`:高危、非幂等固件刷写,完成后检查点; +3. `regression-loop`:fio、设备枚举、完整性校验,循环边界检查点; +4. `report`:汇总报告。 + +每个发布版本保存完整 spec 和稳定 `spec_hash`。同 key 的修改应创建新版本,不覆盖历史版本。 + +### 9.2 工作流字段原则 + +- `key`:稳定机器标识; +- `version`:不可变整数版本; +- `danger_level`:工作流整体风险; +- `params`:类型、默认值、范围; +- `steps[].adapter`:调用的能力边界; +- `steps[].template`:命令模板,而不是任意命令文本; +- `idempotent`:是否允许安全重试; +- `checkpoint`:是否允许从此边界恢复; +- `on_fail`:retry / fail_run / continue / freeze / recover。 + +详见 `flashops/docs/workflow-spec.md`。 + +### 9.3 Host Agent 当前实现与目标模型 + +独立 Agent 已作为 `services/host-agent/flashops_agent` 实现注册、主机指纹发现、 +本地 `0600` 凭据文件、Bearer token 和心跳。控制平面只保存 token 的 SHA-256 摘要; +生产注册口令缺失时默认拒绝注册。心跳迟到 15 秒时 Host 自动进入 `DEGRADED`, +丢失 30 秒时进入 `OFFLINE`;安全预检会刷新状态后再判断 Host 是否可用。 +当前 Run 执行仍由内置模拟器完成。 + +下一阶段继续按拉模式实现: + +```text +Agent 注册 / 心跳 + → 拉取可执行 Step 租约 + → ACK 接手 + → 按模板执行 + → 上报输出摘要与对象 URI + → 完成 / 失败 / 超时 + → 租约续期或到期回收 +``` + +拉模式用于适配客户内网、NAT 和不允许控制平面反向连接的测试主机。 + +### 9.4 Adapter 边界 + +目标适配器包括: + +- `nvme_cli`:识别设备、固件下载 / commit、SMART、Format / Sanitize; +- `fio`:负载执行、指标和错误提取; +- `shell`:只允许登记模板; +- `oob`:Reset、ATX、AC、画面 / 电源状态; +- `builtin`:预检、等待、报告和证据处理。 + +模拟适配器与真实适配器必须通过同一套契约测试。真实实现不得在接口外增加隐藏行为。 + +### 9.5 幂等、租约和重放 + +- 每次 Step dispatch 带唯一 idempotency key; +- Agent 重复上报不能重复产生危险动作; +- 非幂等步骤中断后默认 `INCONCLUSIVE` 或人工确认; +- 租约到期只代表执行权回收,不代表命令一定未执行; +- 重派前必须根据模板类型和现场状态决定是否安全; +- 任何重放都必须在事件流中留下原因和原始 dispatch 引用。 + +--- + +## 10. 证据、失败分析与指标 + +### 10.1 Evidence Bundle 当前内容 + +每个完成 Run 的对象目录: + +```text +var/objects/runs// +├── manifest.json +└── events.ndjson +``` + +`manifest.json` 当前包含: + +- schema version; +- Run ID; +- workflow key / version / spec hash; +- environment fingerprint; +- checkpoint; +- event count; +- 文件路径和字节数。 + +`events.ndjson` 每行一条按 `seq` 排序的事件,包含时间、来源、kind、严重度、消息和 payload。 + +### 10.2 目标证据包 + +真实硬件阶段应补充: + +- Agent stdout / stderr 和工具原始输出; +- SMART、identify、PCIe、OS、驱动、BIOS 快照; +- fio JSON、校验 hash、失败 LBA 范围; +- 蓝屏 / panic dump、系统日志和屏幕证据; +- OOB 电源状态与画面指纹; +- 固件文件 hash 与签名验证结果; +- 审批、命令模板和参数; +- 文件级 SHA-256、缺失字段和生成器版本。 + +### 10.3 失败分类 + +| 分类 | 含义 | +|---|---| +| `DUT_DEFECT` | DUT / 固件自身缺陷 | +| `INFRA_FAILURE` | 主机、网络、供电、OOB 等基础设施问题 | +| `SCRIPT_FAILURE` | 测试脚本、适配器或参数问题 | +| `DATA_INTEGRITY` | 数据不一致,默认冻结现场 | +| `UNKNOWN` | 证据不足或尚未分类 | + +基础设施故障必须与 DUT 缺陷分开统计,否则会污染固件质量结论。 + +### 10.4 失败签名目标 + +建议由以下稳定要素归一化后计算 hash: + +```text +workflow step ++ normalized error codes ++ normalized log templates ++ host state ++ DUT enumeration state ++ data integrity state ++ recovery outcome ++ environment fingerprint +``` + +原始时间、随机 ID、绝对路径等高基数字段不应直接进入签名。 + +### 10.5 核心产品指标 + +| 指标 | 定义 | +|---|---| +| UCR | 无人值守完成 Run / 已完成 Run | +| Human Touches | Run 执行期间人工操作次数 | +| Evidence Completeness | 已收集必需证据字段 / 应收集字段 | +| Recovery Success Rate | 自动恢复成功次数 / 自动恢复尝试次数 | +| Infra False Positive Rate | 被误判为 DUT 缺陷的基础设施故障比例 | +| Reproduction Rate | 可由证据与最小步骤成功复现的失败比例 | + +当前 `/dashboard/summary` 已提供总 Run、活动 Run、完成 Run 和 UCR 的最小聚合。 + +--- + +## 11. 配置与环境变量 + +所有应用变量使用 `FLASHOPS_` 前缀。 + +| 变量 | 开发默认值 | 说明 | +|---|---|---| +| `FLASHOPS_ENV` | `development` | 环境标识 | +| `FLASHOPS_DATABASE_URL` | `sqlite+aiosqlite:///.../var/flashops.db` | SQLAlchemy DSN | +| `FLASHOPS_OBJECT_STORE_URL` | `.../var/objects` | 当前必须为本地路径 | +| `FLASHOPS_BUS_URL` | 空 | 目标 Redis / NATS 地址,当前未启用 | +| `FLASHOPS_AGENT_ENROLLMENT_TOKEN` | 空 | 控制面与 Agent 共享的首次注册口令;生产控制面缺失时拒绝注册 | +| `FLASHOPS_API_HOST` | `0.0.0.0` | 监听地址 | +| `FLASHOPS_API_PORT` | `8000` | 监听端口 | +| `FLASHOPS_CORS_ORIGINS` | `http://localhost:3000` | 逗号分隔 CORS 来源 | +| `FLASHOPS_ENGINE_TICK_S` | `0.5` | 引擎 tick 间隔 | +| `FLASHOPS_TIME_SCALE` | `1.0` | 模拟时间倍率;测试使用更小值 | + +### 11.1 时间策略默认值 + +| 配置 | 默认值 | +|---|---:| +| 心跳间隔 | 5s | +| 心跳降级 | 15s | +| 心跳丢失 | 30s | +| Step 租约 TTL | 60s | +| 租约拉取超时 | 20s | +| Step 默认超时 | 600s | +| 恢复后稳定等待 | 20s | +| AC 断电安全间隔 | 10s | +| 单循环最大恢复 | 3 | +| 单 Run 最大恢复 | 20 | + +当前这些时间策略在 `config.py::TimingPolicy` 中定义,还未全部开放为环境变量。 + +### 11.2 Host Agent 运行变量 + +| 变量 | 默认值 | 说明 | +|---|---|---| +| `FLASHOPS_AGENT_SERVER` | `http://127.0.0.1:8000` | 控制面基础地址 | +| `FLASHOPS_AGENT_HOST_ID` | 空 | 绑定已有 Test Host ID | +| `FLASHOPS_AGENT_HOST_NAME` | 本机 hostname | 按名称绑定或新建 Test Host | +| `FLASHOPS_AGENT_STATE_PATH` | `~/.flashops/agent-state.json` | 本地 bearer 凭据文件,权限固定为 `0600` | +| `FLASHOPS_AGENT_ENROLLMENT_TOKEN` | 空 | 与控制面一致的首次注册口令 | +| `FLASHOPS_AGENT_BASIC_USER` | 空 | 可选上游认证网关用户名;当前预览站未使用 | +| `FLASHOPS_AGENT_BASIC_PASSWORD` | 空 | 可选上游认证网关密码;当前预览站未使用 | + +用户名和密码必须同时配置。Agent 不会把 bearer token 输出到终端;首次注册响应中的原始 token +只写入本机状态文件。重新注册会轮换 token,使旧 token 立即失效。 + +### 11.3 配置原则 + +- 凭据不得写进仓库、本文档、systemd unit 或 Nginx 注释; +- 生产密码仅保存在受控凭据文件、密码管理器或服务器哈希文件; +- 修改生产环境变量后必须重启 `flashops.service`; +- 数据库和对象目录必须可写,其余应用目录应只读; +- SQLite URL 使用四个斜杠表示绝对路径; +- 多 worker 前必须先切换 PostgreSQL 和外部事件总线。 + +--- + +## 12. 腾讯云生产部署与运维 + +### 12.1 生产资源 + +| 项目 | 当前值 | +|---|---| +| 云厂商 | 腾讯云 CVM | +| 操作系统 | Ubuntu 24.04 | +| 公网 IP | `62.234.39.66` | +| 域名 | `flashops.imagebrewing.com`、`git.imagebrewing.com` | +| DNS | DNSPod A 记录,TTL 600 | +| 反向代理 | 宝塔 Nginx | +| 应用服务 | `flashops.service` | +| 应用用户 | `ubuntu` | +| 内部端口 | `127.0.0.1:18080` | +| 应用根目录 | `/data/wangzhan/app/storage-labos` | +| 持久化目录 | `/data/wangzhan/app/storage-labos/flashops/var` | +| Nginx vhost | `/www/server/panel/vhost/nginx/flashops.imagebrewing.com.conf` | +| 证书 | `/etc/letsencrypt/live/flashops.imagebrewing.com/` | +| 发布包备份 | `/data/wangzhan/backups/flashops-release-20260727.tar.gz` | +| Git 服务 | Gitea 1.27.0 Docker 容器,回环端口 `127.0.0.1:13000` | +| Git 实时数据 | `/data/gitea/data`,本地文件系统 | +| Git 云端备份 | `/chucun/wangzhan-production/backups/gitea/`,每日定时 dump + SHA-256 | + +初次证书签发于 2026-07-27,初始到期日为 2026-10-25。Certbot 已配置自动续期,并通过 +`--dry-run` 验证;续期成功后会执行 `/etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh`。 + +> Agent 注册 / 心跳能力已在本地代码与进程联调中通过,但本节所述线上版本尚未发布该增量。 +> 发布前需创建 root-only `/etc/flashops/flashops.env` 并配置 +> `FLASHOPS_AGENT_ENROLLMENT_TOKEN`;不得把注册口令写进 systemd unit 或仓库。 + +### 12.2 生产安全边界 + +- Uvicorn 仅监听回环地址,不直接暴露 18080; +- Nginx 统一处理 TLS;FlashOps 当前作为匿名半成品预览开放; +- ACME challenge 路径不要求认证,以支持自动续期; +- systemd 启用 `NoNewPrivileges`、`PrivateTmp`、`ProtectSystem=full` 和 `ProtectHome`; +- 仅 `flashops/var` 允许应用写入; +- 当前 SQLite 生产基线固定一个 worker; +- 公开预览不得绑定真实 DUT、客户数据、真实 OOB 或有效危险命令;接入前必须先启用应用级 + 账号、RBAC、审批与命令模板白名单。 + +### 12.3 服务管理 + +```bash +sudo systemctl status flashops --no-pager -l +sudo systemctl restart flashops +sudo systemctl stop flashops +sudo systemctl start flashops +sudo systemctl enable flashops +``` + +健康检查: + +```bash +curl -fsS http://127.0.0.1:18080/api/v1/health +curl https://flashops.imagebrewing.com/api/v1/health +``` + +### 12.4 日志 + +```bash +# 应用实时日志 +sudo journalctl -u flashops -f + +# 最近 200 行 +sudo journalctl -u flashops -n 200 --no-pager + +# Nginx 访问 / 错误日志 +sudo tail -f /www/wwwlogs/flashops.imagebrewing.com.log +sudo tail -f /www/wwwlogs/flashops.imagebrewing.com.error.log +``` + +### 12.5 Nginx 与证书 + +```bash +sudo nginx -t +sudo systemctl reload nginx +sudo certbot certificates +sudo certbot renew --cert-name flashops.imagebrewing.com \ + --dry-run --non-interactive --no-random-sleep-on-renew +``` + +任何 Nginx 修改都必须先 `nginx -t`,只有成功后才能 reload。 + +### 12.6 发布流程 + +标准流程: + +1. 本地 `make test`; +2. 确认前端和后端兄弟目录结构; +3. 打包时排除 `.venv`、`var`、缓存和 `__pycache__`; +4. 上传到服务器临时目录; +5. 解压到独立 incoming 目录; +6. 安装服务器虚拟环境和依赖; +7. 保留生产 `var/`,不要用本地空目录覆盖; +8. 安装 / 校验 systemd unit; +9. 重启服务并轮询内部 health; +10. `nginx -t` 后 reload; +11. 从服务器和外部网络各验证一次匿名 HTTPS 200 和 API health; +12. 保存带 SHA-256 的发布包到 `/data/wangzhan/backups/`。 + +### 12.7 SQLite 备份 + +推荐使用 SQLite 在线备份 API,避免直接复制正在写入的数据库: + +```bash +sudo /data/wangzhan/app/storage-labos/flashops/.venv/bin/python - <<'PY' +import datetime +import sqlite3 +from pathlib import Path + +source = Path('/data/wangzhan/app/storage-labos/flashops/var/flashops.db') +stamp = datetime.datetime.now().strftime('%Y%m%d-%H%M%S') +target = Path('/data/wangzhan/backups') / f'flashops-db-{stamp}.db' +target.parent.mkdir(parents=True, exist_ok=True) +with sqlite3.connect(source) as src, sqlite3.connect(target) as dst: + src.backup(dst) +print(target) +PY +``` + +恢复数据库是高影响操作:先停止服务,核对目标备份并额外备份当前数据库,再替换文件、修复 +`ubuntu:ubuntu` 所有权、启动服务并检查事件序号连续性。不得在未确认备份内容时直接覆盖。 + +### 12.8 公网预览访问策略 + +2026-07-27 起,`flashops.imagebrewing.com` 已取消 Nginx Basic Auth 和 IP 访问限制,匿名用户 +可以查看控制台并调用模拟 API。取消前的 Nginx 配置保留在: + +```text +/www/server/panel/vhost/nginx/flashops.imagebrewing.com.conf.before-public-20260727 +``` + +这是临时产品演示策略,不是最终安全方案。接入真实硬件或非公开数据前,不能只恢复 Basic Auth; +必须优先实现应用账号、RBAC、危险动作审批和审计上下文。 + +### 12.9 发布验收清单 + +- [ ] `flashops.service` 为 active; +- [ ] Nginx 为 active 且 `nginx -t` 成功; +- [ ] `getent ahostsv4 flashops.imagebrewing.com` 指向 `62.234.39.66`; +- [ ] HTTP 返回 301 到 HTTPS; +- [ ] HTTPS 证书域名正确且未过期; +- [ ] 未登录访问控制台最终返回 200; +- [ ] `/api/v1/health` 返回 `status=ok`; +- [ ] `/api/v1/dashboard/summary` 返回合法 JSON; +- [ ] 生产 `var/flashops.db` 和 `var/objects` 可写; +- [ ] 应用最近日志无 error; +- [ ] Certbot 模拟续期成功; +- [ ] 发布包和数据库备份已记录。 + +### 12.10 Gitea 团队 Git 服务 + +| 项目 | 当前值 | +|---|---| +| 页面与 clone 地址 | `https://git.imagebrewing.com` | +| 项目仓库 | `https://git.imagebrewing.com/yuanshuai/storage-labos` | +| 容器 | `gitea` / `gitea/gitea:1.27.0` | +| HTTP 监听 | `127.0.0.1:13000`,不直接暴露公网 | +| Git 传输 | HTTPS;当前不开放独立 SSH 端口 | +| 匿名访问 | 可查看 public 仓库与最近提交 | +| 注册 | 开放申请,但必须由管理员人工批准后才能登录 | +| 实时数据 | `/data/gitea/data`,不得放在 COSFS 上 | +| 备份 | 每日约 03:20 dump 到 `/chucun/wangzhan-production/backups/gitea/` | + +Gitea 管理员凭据只保存在本机被 `.gitignore` 排除的 `gitea-admin.env.local`,不写进手册、 +仓库或服务器部署文件。团队成员先在网页注册,再由管理员在“站点管理 → 用户账户”中批准, +随后把成员加入仓库协作者。 + +```bash +# 服务与健康 +sudo docker ps --filter name=gitea +curl -fsS http://127.0.0.1:13000/api/healthz + +# 日志 +sudo docker logs --tail 200 gitea + +# 备份定时器与手工备份 +sudo systemctl status flashops-gitea-backup.timer --no-pager +sudo systemctl start flashops-gitea-backup.service +``` + +生产服务器没有启用 Gitea Actions Runner。原因是 Runner 需要执行仓库中的任意代码,直接挂在 +同一台生产服务器会放大供应链风险;当前 PR 必须附本地 `make test` 结果。未来 CI 应部署到 +隔离机器或一次性 Runner,而不是把 Docker socket 交给生产仓库任务。 + +--- + +## 13. 测试、质量门与开发规范 + +### 13.1 当前测试基线 + +截至 2026-07-27: + +- 测试总数:25; +- 含 Agent 增量的完整测试集本地连续 20 轮全部通过; +- 腾讯云生产环境依赖下连续 20 轮全部通过; +- 服务器单轮约 1–2 秒; +- 证书续期 dry-run 通过; +- systemd 重启后 health 恢复通过; +- FlashOps 匿名 HTTPS 200、Gitea HTTPS 200 与两个证书域名验证通过。 + +### 13.2 测试分层 + +| 层 | 文件 | 重点 | +|---|---|---| +| 状态机 | `test_state_machine.py` | 合法 / 非法转移与终态 | +| 恢复策略 | `test_recovery.py` | Agent、网络、OOB、完整性触发 | +| 安全 | `test_safety.py` | 序列号、系统盘、分区和门禁组合 | +| 端到端 | `test_e2e_vertical_slice.py` | 创建、恢复、证据、暂停、继续、急停 | +| Agent 安全 | `test_agent_enrollment.py` | 生产缺少注册口令时默认拒绝 | +| Agent 状态 | `test_agent_status.py` | 新鲜、迟到、失联和主动降级心跳 | +| Agent 客户端 | `services/host-agent/tests/test_client.py` | HTTP 契约、401、凭据 `0600` | + +### 13.3 提交前检查 + +```bash +cd "/Users/yuanshuai/Desktop/STORAGE LABOS/flashops" +make test +make demo +``` + +如果改了部署配置,再检查: + +```bash +systemd-analyze verify deploy/flashops.service # 在 Linux 上执行 +sudo nginx -t # 在目标服务器执行 +``` + +### 13.4 开发规则 + +1. 状态变化必须追加事件; +2. 新状态必须更新枚举、转移表、文档和测试; +3. 新事件 kind 只增不改,历史事件已经落库; +4. 安全规则保持纯函数,拒绝发生在下发之前; +5. 危险步骤默认不可自动重试; +6. API 路由不堆业务逻辑; +7. 真实适配器与模拟适配器使用同一契约; +8. 大日志写对象存储,不塞进数据库 JSON; +9. 生产数据和凭据不进 Git; +10. 修改数据结构必须同时提供迁移和回滚说明; +11. 文档中的“已实现”必须能由代码或验收记录证明; +12. 生产发布必须保留可核验的归档包和数据库备份。 + +### 13.5 Git 仓库与团队协作 + +当前 Git 基线: + +| 项目 | 当前值 | +|---|---| +| 本地仓库根 | `STORAGE LABOS/` | +| 默认分支 | `main` | +| 远程 | `https://git.imagebrewing.com/yuanshuai/storage-labos.git` | +| 网页 | `https://git.imagebrewing.com/yuanshuai/storage-labos` | +| 可见性 | public:匿名可读;提交、Issue 和 PR 写操作必须登录 | +| 管理员 | `yuanshuai`;密码只在本机忽略文件中保存 | +| 团队规则入口 | 根目录 `CONTRIBUTING.md` | + +不要通过聊天工具反复传 ZIP 继续开发。团队以远程仓库为唯一代码与文档版本源,新成员执行: + +```bash +git clone https://git.imagebrewing.com/yuanshuai/storage-labos.git +cd storage-labos/flashops +make setup +make test +``` + +分支规则: + +- `main`:始终保持可测试、可发布,禁止直接开发和强制推送; +- `feat/`:功能; +- `fix/`:缺陷; +- `docs/`:文档; +- `chore/`:仓库、依赖、CI 和部署。 + +日常开发: + +```bash +git switch main +git pull --ff-only +git switch -c feat/agent-step-lease + +# 修改后先验证 +cd flashops +make test +make demo +cd .. + +# 只暂存本次相关文件;混合工作区不要直接 git add -A +git status -sb +git add <明确的文件或目录> +git diff --cached --stat +git diff --cached --check +git commit -m "feat(agent): add step lease polling" +git push -u origin "$(git branch --show-current)" +``` + +采用 Conventional Commits:`type(scope): subject`。 + +| 类型 | 用途 | 示例 | +|---|---|---| +| `feat` | 新功能 | `feat(agent): add step lease polling` | +| `fix` | 修复 | `fix(safety): reject stale host heartbeat` | +| `docs` | 文档 | `docs(manual): add gitea operations` | +| `test` | 测试 | `test(agent): cover token rotation` | +| `refactor` | 不改变行为的重构 | `refactor(events): isolate projection writer` | +| `perf` | 性能优化 | `perf(api): reduce timeline query cost` | +| `chore` | 工具、依赖、部署 | `chore(repo): initialize collaboration repository` | + +每项工作使用独立分支和 Pull Request。PR 必须说明改动、原因、影响、验证结果、风险和回滚; +至少一名团队成员评审后再合并。优先 Squash merge,合并后删除功能分支。只允许对自己的未合并 +分支使用 `--force-with-lease`,严禁对 `main` 强推;已共享的错误提交使用 `git revert` 撤销。 + +团队成员在 Gitea 注册后需要管理员人工批准。批准后在仓库“设置 → 协作者”中授予写权限; +不要共用管理员账号。离职或设备丢失时立即移除成员、撤销 token 并检查审计记录。 + +以下内容永不入库:`.env`、密码、token、私钥、证书私钥、Agent state、SQLite、Evidence、日志、 +生产备份、`.venv`、`node_modules` 和未脱敏客户数据。若凭据误入提交,先轮换凭据,再清理历史; +仅删除当前文件不能消除 Git 历史中的泄露。 + +### 13.6 CI 与 Pull Request 质量门 + +根目录 `.github/workflows/ci.yml` 已提供 Python 3.9 / 3.12 测试矩阵模板,执行控制平面与 +Host Agent 测试并编译全部 Python 模块。它可用于后续 GitHub 镜像或启用 Gitea Actions。 + +当前生产 Gitea 未配置 Actions Runner,因此这个工作流不会自动执行。这样做是刻意的:把 +Runner 和 Docker socket 放在同一台生产服务器,会允许仓库代码获得过大的服务器权限。 +现阶段 PR 必须附上本地 `make test` 与相关演示结果;下一阶段把 Runner 放到隔离机器或一次性 +执行环境,再把检查设为 `main` 的必需状态。 + +仍待补充的质量门:PostgreSQL 集成、Ruff / mypy、工作流 schema、依赖漏洞与 secret scan、 +Nginx / systemd 静态检查、模拟器长跑、发布包 SBOM 和签名。 + +--- + +## 14. 已知边界与演进路线 + +### 14.1 当前已知边界 + +| 边界 | 风险 | 处理方向 | +|---|---|---| +| SQLite 单 writer | 多并发会阻塞 | 当前单 worker;后续 PostgreSQL | +| 无 Alembic | 表结构难升级 | 引入版本化 migration | +| 无应用账号 / RBAC | 无细粒度审计与授权 | OIDC/SSO、角色、审批 | +| 匿名公网预览 | 页面和模拟 API 可被任何人调用 | 不接真实资产;真实阶段启用 OIDC/RBAC/审批 | +| Agent 无 Step 租约 | 只能注册和心跳,不能领取真实任务 | 实现 lease、ACK、续租和完成上报 | +| OOB 为模拟 | 无法验证真实断电恢复 | 接可牺牲硬件和独立网络 OOB | +| Step runtime 不完整 | 工作流只是部分执行 | planner/runtime/lease 落地 | +| Evidence 最小 | 不足以支撑真实缺陷结论 | 接工具原始输出、hash、dump 和画面 | +| 失败聚类未实现 | 失败中心为静态原型 | 归一化、签名、合并 / 拆分和复现任务 | +| 多数页面静态 | UI 与真实数据可能不一致 | 按 8.4 顺序接 API | +| 依赖范围较宽 | 重新安装可能拿到不同版本 | 生成并维护 production lock file | +| 无定时 DB 备份 | 数据恢复点不稳定 | systemd timer + 备份校验 + 保留策略 | + +### 14.2 建议演进顺序 + +#### Phase 1:独立 Agent 契约 + +- 已完成:注册、token 轮换、心跳、状态老化、主机探针和本地凭据; +- 待完成:租约、ACK、续租、结果上报; +- idempotency key 和重放保护; +- 模拟 Agent 与控制平面完全分进程; +- Agent 崩溃、网络断开、控制平面重启测试。 + +#### Phase 2:真实只读硬件接入 + +- NVMe identify / SMART / BDF / device path; +- Host 环境探针; +- OOB 只读电源和画面状态; +- 不执行刷写、Format、Sanitize 或断电。 + +#### Phase 3:受控危险动作 + +- 命令模板白名单; +- 审批、双人复核、短期授权; +- 可牺牲 DUT; +- 真实刷写、Reset、ATX、AC 阶梯; +- 完整 Evidence Bundle。 + +#### Phase 4:多工位与生产化 + +- PostgreSQL、外部事件总线、对象存储; +- 多工位调度与资源配额; +- SSO / RBAC / 审计; +- HA、监控、告警、备份和灾备; +- 评估 Temporal 是否只替换 runtime。 + +#### Phase 5:失败智能与版本决策 + +- 失败签名聚类; +- 环境可比性检查; +- 自动裁剪最小复现工作流; +- A/B 指标和证据门禁; +- AI 只生成带证据引用的摘要,不替代工程师结论。 + +--- + +## 15. 故障排查 + +### 15.1 公网返回 502 + +```bash +sudo systemctl status flashops --no-pager -l +sudo journalctl -u flashops -n 200 --no-pager +curl -v http://127.0.0.1:18080/api/v1/health +sudo nginx -t +sudo tail -n 100 /www/wwwlogs/flashops.imagebrewing.com.error.log +``` + +常见原因:服务未启动、虚拟环境缺依赖、端口不一致、数据库目录不可写、systemd 安全策略阻止写入。 + +### 15.2 公网返回 401 / 403 + +当前预览站允许匿名访问,首页和普通查询 API 不应由 Nginx 返回 401 / 403。遇到问题时: + +- 用无痕窗口访问,排除浏览器缓存的旧认证状态; +- 检查 Nginx 生效配置中是否残留 `auth_basic`、`allow` 或 `deny`; +- 区分普通页面与 Agent API:Agent 注册口令或 bearer token 无效仍会返回 401; +- 执行 `nginx -t`,确认无误后 reload; +- 查看站点 access/error 日志,确认状态码来自 Nginx、应用还是上游安全产品。 + +### 15.3 HTTPS 证书错误 + +```bash +getent ahostsv4 flashops.imagebrewing.com +sudo certbot certificates +sudo nginx -T | grep -A8 -B3 flashops.imagebrewing.com +openssl s_client -connect 62.234.39.66:443 \ + -servername flashops.imagebrewing.com /dev/null \ + | openssl x509 -noout -subject -issuer -dates +``` + +检查 DNS 是否指向正确 IP、证书路径是否存在、Nginx 是否已经 reload。 + +### 15.4 控制台 404 + +确认目录关系: + +```text +/data/wangzhan/app/storage-labos/ +├── flashops/ +└── 前端UI八页面完成/ +``` + +`main.py` 通过 `REPO_ROOT.parent / "前端UI八页面完成"` 查找控制台。 + +### 15.5 SQLite locked / 事件序号冲突 + +- 确认 Uvicorn 仍为一个 worker; +- 不要从多个进程同时直接操作同一个 SQLite 文件; +- 所有应用事务必须经 `session_scope()`; +- 所有 Run 状态写入必须经 `append_event()`; +- 检查是否有脚本绕过服务直接写库; +- 若需要多进程并发,迁移 PostgreSQL,不要继续堆 SQLite 锁。 + +### 15.6 服务不断重启 + +```bash +sudo systemctl show flashops -p NRestarts -p ExecMainStatus +sudo journalctl -u flashops --since '30 minutes ago' --no-pager +``` + +重点检查:`PYTHONPATH`、依赖安装、数据库 URL、目录权限、配置拼写和 18080 端口占用。 + +### 15.7 测试本机通过、服务器失败 + +比较: + +```bash +.venv/bin/python --version +.venv/bin/pip freeze +``` + +当前 requirements 使用范围约束而非完整 lock,同一天不同环境可能安装不同 FastAPI、Starlette、 +httpx 或 SQLAlchemy 版本。应先复现服务器依赖,再决定修代码或锁版本,不能只在本机降级掩盖并发缺陷。 + +### 15.8 Gitea 无法访问、注册或推送 + +```bash +sudo docker ps --filter name=^gitea$ +sudo docker logs --tail 100 gitea +curl -fsS http://127.0.0.1:13000/api/healthz +getent ahostsv4 git.imagebrewing.com +sudo nginx -t +``` + +- 公开仓库页面应允许匿名查看和克隆; +- 新成员注册后需要管理员在 Gitea 后台批准,未批准时不能登录; +- 推送必须使用已批准账号,不要把密码或访问令牌写入远程地址; +- 若备份失败,检查 `gitea-backup.service` 日志和 `/chucun` 挂载状态; +- Gitea 实时数据必须保留在 `/data/gitea/data`,不得迁移到 COSFS 挂载目录。 + +--- + +## 16. 术语表与 FAQ + +### 16.1 术语表 + +| 术语 | 含义 | +|---|---| +| DUT | Device Under Test,被测 SSD / NVMe 设备 | +| Host | 连接 DUT 并运行测试工具的主机 | +| Agent | 部署在 Host 上,拉取并执行已批准步骤的服务 | +| OOB | Out-of-Band,主机失联后仍可观测 / 控制的带外通道 | +| Run | 一次完整工作流执行实例 | +| Step | Run 中最小可调度执行单元 | +| Workflow | 版本化 SOP 和步骤定义 | +| Checkpoint | 可安全恢复的执行边界 | +| Evidence Bundle | 一次 Run 的证据清单与文件集合 | +| Event Sourcing | 用 append-only 事件作为状态变化真相 | +| Projection | 从事件派生的当前状态读模型 | +| UCR | Unattended Completion Rate,无人值守完成率 | +| Failure Signature | 归一化失败要素生成的聚类标识 | +| Idempotency | 同一请求重复执行不会产生额外副作用 | +| Lease | 控制平面临时授予 Agent 的步骤执行权 | +| BDF | PCIe Bus:Device.Function 地址 | + +### 16.2 FAQ + +#### 为什么生产还用 SQLite? + +当前是单工位、单 worker、内部演示基线,SQLite 能降低部署摩擦。它不是多工位最终方案;增加并发前 +必须切换 PostgreSQL。 + +#### 为什么不用 Airflow / Temporal? + +恢复语义跨越 Agent、OS、OOB 和物理供电,且非幂等步骤默认不重跑。首版用纯函数状态机更容易 +精确控制和测试。多工位跨节点调度成为瓶颈时,再评估用 Temporal 替换 runtime。 + +#### 为什么事件不能按时间戳排序? + +Host、OOB 和控制平面时钟可能不同,主机崩溃时还会丢失最后日志。控制平面分配的 `seq` 才能提供 +稳定、可重放的总顺序。 + +#### 为什么数据完整性失败直接冻结? + +自动重启、重跑或写盘可能覆盖最关键的现场。宁可暂停等待工程师,也不能为了完成率破坏证据。 + +#### 为什么 Agent 要用拉模式? + +客户测试主机通常位于 NAT、内网或防火墙后面。由 Agent 主动向控制平面发起连接更容易部署, +也减少暴露入站端口。 + +#### 为什么控制台和后端放在一起? + +当前静态控制台由 FastAPI 同源挂载,避免单独的前端构建和 CORS 配置,适合原型与演示。后续如果 +切换 Next.js 或独立 SPA,可以保持 `/api/v1` 契约不变。 + +#### 管理凭据在哪里? + +本文档不保存明文密码。Gitea 管理员、SSH 与云平台凭据通过本机受控文件、系统钥匙串或密码管理器 +交接;这些文件必须命中 `.gitignore`,不得进入提交历史。 + +#### 可以直接把 18080 暴露公网吗? + +不可以。该端口没有应用级认证和 TLS,必须只绑定 `127.0.0.1`,公网只走 Nginx 443。 + +--- + +## 17. 变更记录 + +### V1.2 — 2026-07-27 + +- 上线 `git.imagebrewing.com` Gitea 团队 Git 服务和公开项目仓库; +- 增加分支、提交、评审、密钥和本地验证规范; +- 使用 `/chucun/wangzhan-production/backups/gitea/` 保存每日 Gitea 校验备份; +- FlashOps 预览站取消 Nginx Basic Auth 与 IP 限制,普通页面和查询 API 可匿名访问; +- 明确匿名预览不得连接真实硬件、危险动作或非公开数据,正式生产前必须完成 SSO / RBAC。 + +### V1.1 — 2026-07-27 + +- 新增独立拉模式 Host Agent; +- 新增 Agent 注册、token 轮换、Bearer 心跳和 Host 状态查询 API; +- 控制平面只保存 token SHA-256 摘要,Agent 凭据文件权限固定为 `0600`; +- 生产环境缺少 Agent 注册口令时默认拒绝注册; +- Agent 保留可选网关 Basic Auth 能力,当前匿名预览环境不启用; +- 新增 Agent 客户端、注册安全、状态老化和进程联调测试;全量测试增至 22 项; +- Step 租约、ACK、事件、完成与产物上传仍为下一阶段。 + +### V1.0 — 2026-07-27 + +- 根据实际源码建立首版完整项目手册; +- 记录控制平面、14 张表、状态机、六项门禁和 Evidence Bundle; +- 记录 8 个核心控制台页面及真实 / 静态边界; +- 记录腾讯云、DNSPod、systemd、Nginx 和 Let's Encrypt 部署; +- 记录 SQLite 并发写入修复和单 worker 约束; +- 记录本机与服务器连续 20 轮测试结果; +- 给出生产发布、验收、备份、密码轮换和故障排查流程; +- 明确独立 Agent、真实硬件、RBAC、PostgreSQL 和失败聚类为后续工作。 + +--- + +## 文档维护要求 + +以下变化发生时,必须同步更新本文: + +- 新增 / 删除 API; +- 新增状态、事件种类或恢复级别; +- 修改表结构或迁移策略; +- 修改环境变量; +- 调整域名、端口、服务器路径或服务名; +- 新增真实 Agent、Adapter 或 OOB; +- 安全门禁、审批或认证方式变化; +- Evidence Bundle schema 变化; +- 生产发布和回滚流程变化; +- 能力从“模拟 / 原型”变为“真实已验收”。 + +文档里的完成状态必须由代码、测试或生产验收记录支撑。 diff --git a/README.md b/README.md new file mode 100644 index 0000000..464f52c --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +# STORAGE LABOS / FlashOps + +存储实验室固件回归测试的无人值守控制平面。当前仓库包含 FastAPI 控制面、独立 Host Agent、 +静态控制台、架构与部署文档,以及无需真实硬件即可运行的故障恢复演示。 + +## 快速开始 + +```bash +cd flashops +make setup +make test +make demo +make dev +``` + +启动后访问: + +- 控制台: +- API 文档: + +## 团队协作 + +- Git 网页: +- 克隆地址:`https://git.imagebrewing.com/yuanshuai/storage-labos.git` +- 项目完整说明:[ProjectManual.md](ProjectManual.md) +- Git、分支、提交与 PR 规则:[CONTRIBUTING.md](CONTRIBUTING.md) +- 后端与 Agent 状态:[flashops/README.md](flashops/README.md) + +所有功能从独立分支开发,经本地测试和 Pull Request 评审后合并到 `main`。禁止把 `.env`、 +Token、私钥、数据库、Evidence Bundle、虚拟环境或本机 Agent 凭据提交到仓库。 + +## 当前边界 + +当前真实 Host Agent 已支持注册、鉴权、主机探针、心跳和在线状态老化;实际 Run 仍由内置 +模拟执行器完成。Step 租约、真实 NVMe 危险动作、真实 OOB、应用级 RBAC 尚未交付。 diff --git a/Storage_LabOS_固件回归测试值守机器人_完整方案_V1.0.docx b/Storage_LabOS_固件回归测试值守机器人_完整方案_V1.0.docx new file mode 100644 index 0000000000000000000000000000000000000000..9daceff7b41269aa9eea891aa3ac2e1d2a4e0c9c GIT binary patch literal 516839 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

ewsA3@PiTg3DgU%>~z~7s^uXjvGj?dR-frJ34)F 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

qz$d__{`es9xhe3!7}&5M_>Dwl@1EH87qwkqcQB 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%0A5Mu?!3Q7j#5kFbrZg^UmEMIOw<;{ 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%0DlhX$^ZJ+~>sV{D!*^rd8_&Iue>MO2Z^7DIhTY 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

%fp8WJxb|Rj-*mKs3VVG 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%0AW)INelvv+=rumz!wf(Aeo}GU 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 a<-nn+wdi?x9g;d{?IzP_$Eq*s4W4R*Q4k;-y zKNWHLvur>eHMnK*%d=!gHaaGa)Ph8BfT6KlrFU!tZVelm?(ba)OBAdAP(%xc0y;ZP z4XdG}Kvha7f>vdJ>9RGT!03CT!j18Mvc{c~{xBP}U2z4sBPch0)^7aTA)EmKVpmeW zr;R8;@=-m0ISl=46=NAAlTHRPWzbf4@raE4fu*&Pr9auRZ6nugE%%&;27pu14-Nz0 z{Wz_vz#nuTFUO<>m^e2n`7lCpGSkj?t_A@=P=mLY#!PEVrKxH2fFZvM(m6;7{P31G z(q(HpyCZ-Kh{tJf+b)iJCj>ES+0RoYUY+Nt5iwca3=ow~I0J2>gF0~-DL~}B%#_68 z3soG#iI%?3@6l@cv1}?Cw3k-p^W=fSHg8xN5GhTJzEI$0iYgr17~gMS{+@?kG$BvC zB@Mzl#|-~&?6I4yQ5Qa}^$|DoiD~FK`KeIueXO0X_Wo1aM@`$P{sXz(Z1AVUb3L9+ zPBR(%O_gmO+J@Ff1r_}q-ky%eO87gLV$)r%%*@xNraO4J{7c$%)P(@0hy7f#Hr>TD zld7VNflRoOk-Siwu&bU}|4r8JZr#5+EVfQOCjBRLbK@?&5nQZ`vNlqo2uPR5%RTEz zlqQREZu3E#)~=+(V{A5;%;3La*0%v4mr!wZND5_lkDv>ieJvsFbpTdGSoomtC+N@qPeGFK)X*v!L8g}zcDI48NjhDF_fwU1xdj0tb=fbJno)swVLGBIDMR%4xu<%BEfV*?AQWu(Mwr>k1REz zV1dCuK##|%wiX>OahQ>rl}0bod}rrn>3V817xG%+o~%xX46uJ}DY zt~QY+fwX{)k-Mbn+~W+GiLnA-iNxt_e%rs6?ZLCvbbpsR=+_X#^ThrLMH!6f2=vGZ zCZ-xul%^&wlIaEUTsp-X%D1GKyVg`1^sUFP{ED@grk2003a@H?>OfpRS-l$L~v$MT9LZ9wHU0}kI z{{EG-Lp_Cn&8t3kuh^WWF6fsWiH`eq50aJ>0XG`YtuH+`_L1_VRUXOa-0yu2hnHPQ ztPT&QCC~{4yx-qNJ6%K)N-44gqy;7AJ}v9(g6%Exx=n93dkdz68|XxChF*%W@xH5A z8pV;4kbHL6qM^YlQ1f%Y+jWN^A0b0N1U$DhVMKO`%k#&Ybs%0gP$wjoKeNI zQ@#G_`C)5t+`gH+kOgahB6^vT6bHb zVVXRzo!uk!qohVta`0`rbn2&fS{D8jfZKkzUW0Dk_P(~efPj5wa$;=}_fkc-fkVW5 zm!WBY&aP{g`xrJj-}K)2Wdc#i*;Siqzq6@^;!#`BNm#ftEtT7T%A{PG2?nW1`^8U( zuOBuKcWTc!y%tRmtimOF=~7tlZD+pw$_@ODUb#VgQxvX@}X?q~9 ztX9IX7wHZNi^*zxg^MbMfk9UQIO=kR4!2G&VPa}{J?F(%7wvTZqWktFH=#bl^yUZp z`4urgyUoO=TBwp9ea)Bprsf^|I7Zx&f`t0}f~}6;gyW9hOxdz4bk%EBwE+wgVj@qv zO+8)KwXllH>a$NSssgu6Z@7&g_VoITcQKmhCqz6&L{JTpEoHTXM@WZz6Y59GGvYuL z*Jf@H9iHk(ep;>-S@U0Yt;^E+x}VyaYVzDg<0zi2U!HD8a}Yhf?qd(8DZb`W41Ac5 z&eWJ|dR#v}#y!4sPghrwU9x|=PtD3HuBmBpTr%>rzd6ik6KOuZ_3cYBPu;N2tH}jx zae4prukQG%@4(4$G8nyLWp#uUiY(%ObG*{r{gO;s!fw3fp4sT7YM0(q?E6eq zfpXVEl~07d&#i2Fhk7GjxMZ!-mVgDB7B8 zjD4YuH>#5A2|FfeQNE8-u0f|`~Gvg$lYdaNADJt*M>-h>M(~- zjbDT5>%`UO#*Dy|P>tn>Y*Jtttu5+l>3N(LF4~tw3#6r@~{$bDV5va<` zs%B;qWxgjg{y4rbFtT@BSXY*e&Hn0qe{4!E9(YC#wK&l&RB#pIIlFIKZ2gWKEOxNF zcmK0jdmO`+foQ4wzH|HgSEf=n{TF99MEvZ`<#X`YiTgF{!)h;{!P_mom>(-@>~4lK z(X-MN48{2uN19c56I1Z8GYi!G`Wf!D@$?AIoDiOl7h1JGI^582S9*mN)=%|W^xHU% zvt85a@9C@7kO7{S+SK9QCYP&HR(e)WqK-uO9yp2%w7VnI|bWdJKxk zuT$-owNKhq_%&Mf-)6=k!cor7J{_g3)rEhlEwbtBZjVMsM?<^pH;PxF?Iz9?m6#bo z2V16RgIjMP2cx`Ogdx4~J`_4!(ln2sY8%33Wo{pD#;%*^KYT1QA#4^#xN(A3=cdXv zY)zkoMPM22OOHH8qXzC^dfdm~!z3pnSIQ(U$w}adATg>DCVHv@*RG18aV7;lv|n@Cq`{t~;p8l{gNs1V7cc(LmuY|KNkVP?wYILG@< zrW5f9gA-(LeNUU$Y8&c|2-Ip;ezD!n7E)PK z_R;bp{pis6+AruS@@bB@YWLAxEo8wHCzdqdeJKjc_tQtrkD{F%Q9(Iu%Kn$#T3 z_=w!K83P-D(E}W*Ye!_p^758bAu3$dT=!pgJjRFh-;<&!cw%!l%GLb%d@@a7#;Cv1Gzw-Nehl!M=%hKUDAuEbE1b z?^kb|*xwELT>LH@>0L^+J|d=#B3_-B+Obk37IL2S&m+5wRVL?5Qe5I!B|mGHpxVU2 zTxUsT3j5O7!BLZEF&ih7%pxJUmW3RG7)>HPG*fk8+#R3a!->iEcu;eK)~7%!6cmPb zdDXF+y^9*0nb=v87+CRVE3WK)*xXWAURiB8%3Tjw>?x6z)~lu&T8!rOIfR#`?3p>0 z#*ks-t;1Aj2BPU%S(Ifbo-o77lg+Y_w-)jPLcg!P)N?Q^&*io?WBR?ET}9Zm{XA zHdqLQacHpXowD_$yrW@6mx{rXu@8{(33m_TRu68BZAS>OaYv*2F+pPML4=yuG@iH>- zpA~4qjL9d^*C`3{W4;=R$+~gLy5Dkkpz;G_E-WlHf^IY!=u$pHYx?fTpKSs9*5*Do z((4WT9gib$arf6EG*RQ{Is{U)iinalmf9YUUq8Hl33G34*0`+I<&q(BBjevRu`lJQ zs|Fkq=w|1TaDi9%Fr6ztasV7$uR<*z-i;_o;4r2ZPewUdTpI1lskTivG9i?ck-fS8 zw9Cd0fUkn=1TojEG!Ygh+SG*wd35wE8Y2emg&(5)x@Wz{XWz$rv zv7-0%m^p&xCLh^L=IplD9wnv+q>5D;@FUUr+3Vz;cJOhDhzXs&58QI^SCi$WmKPUa z*{ajy8r2Q0&Z^r|9Fi1)jb8$&ygIzDy;j{^{b*$q5E^N$td5trr}~vl`<(%J;}a(X z%jCkvI1>RuO43qAh5BOjlLzTrU!Z0=*FIxBx}Qq}Xbmv)Ejc^7`r1C1KO`{;1_f$5 z%G4Q2ilRBbeqeq{L_}=$SkvQbvbVRPAa`-&*lnvgVONyyr!275+`Z3hvy^S1RexA_ zxAKHHOP}a-w_-+9h#M{u0`mm0AaM}Gel4BF3u8q~XSI2f<*y}H)$ji8C1-x=Ot}!a zf9*QIcvkqYojfP3|9(B&fBb)RL++vf*A9gA|91L6>me|*u>dUJNGd-;=k?a|FV<*+YazuO!=VcFFVoPzCU)I_cH;Y1fKdRu3LfR+qlWl8QL%*otWgu$mpd}TpQf)zPD*v3xrxLB}ZtydqXaCus^1&rQ!_P+# zv{u|56aNTn1GUNfWq+JAFdz_hJE$=(>h5CoKbBHR| z+-mrv5I^ju0-+V>!E4O&$=3zsR^S&K^Z0NGI+b|Rw_oozAp1W-@zoI4q|KS&1(Zqc zHg;C$O>TJSl>gl~KWBk&+~EITq8;{)3oV^sO3@xjhstl(ti6Vdb^Tf{Hc!@r7 zA0IdO>&pvhP9g7>8m!F?G-*449(li?>87DHKRX9jp95;PL5J_f_x>X~whz$AYBKGeBiH$Tv=|2{5FsE_D6 zq6S?u<4}tO9|GhR%FTDmY@JMRxQ_zu{Wkoz#0+j;0HqZpWjatQji{11D(2jglXnuD zI1cis{lvk$2AkA-cirr>h7E!!4M-t%`(5v~Pq6Km7BKE9lR5ponGpOy>eXNjnhd?~ zT;uV6+(Txo#zJ}Kvqk^{O|qoDLG_s!UFP^U9wMYf&uAD+L$&$ZuZD$p>#ornG`aog zwk4*bSmi%7E4tCY>MRvklN?X!m6{yCd019R@YvO4?}Y+dlYEU^ZEy!mqr_(1A7v~j z45@48+8>{t=S|X3zp{gZ@&Kyg*3n$OJ~uT!IyO8vtpD03z3gI0sKMImNCb8oD|}22 zy3C5mvW^(wZ*t?FPq}n72fam+%7>mUOm#c`+}XI9*dM1RM1n&?uT|Gt z-*&y8Tv1_Vbyr;qnp6{hvQ(2Z!|*!ZvbcFHmoAAV8Cbhp?Td`b?RGu2vZ1)b0C~PY zj!CtapMkXzfXZu=$YJYIdmp)4>R}d+Qf3}BUQSuDq47CIP#7Y}C+{7tf!j5zo7!vK zwES`;(e9rgt*>6&Z#UIPlz(N?e>iXPTT)L7<8XS>b$_z){6^SmV#aG`6M)78~wYbJ$n`({F$3#IJAQeAkO5`3QcHlkLf~M*WyT?n zgAD0>ekX#nz*#`i=Y0kOx4hC)!B-l}z(E%N9Atov-IHGk7-Ffp)73LNn8#tbq|Xd6 zMmB&U5x zvK;k{mstlF0iYm+n#tB&`n?pF))63bME_&~Q%Kw9iCRRN+eA77t!@QjV^}oYa|0UUNk- zcfB)R%Rav4RpWGOe_-IRhK!sFd%J?hX2p%W15F$~%#=QNw~% z_F^PT3H=xTi!%yF|8Wm1li9g_igXJ6$ptbvf4f&-o7iLWZmm^7pp>wi5Q<_R08tk{ zG6-D~y$}!F%wavQQ^?;@MsH8ZHlViUnp!Zp94+q^KjoZ>F#R?7peB>ktiO@#=*W&S`5$ zK{+NsHie3)_A?6Vly-~6G&kt7;eG-RtQ_U52F|#vy`!NrTqaR&nR7IYv!6gLq~}1H zOj&2(^rYmZD=y0N+uNo#=Mk#?_@$lG>!OOG(36U=e-YV2UO9=FnVxlfUD`QU^DZ{V@*((N`Vuk+r)xQd|2|Zloq-eo@PvGg2SvzvTgV);Qsbk6p$p4` zui3=0Vr)|*=;Wy4%}a+Pj+F>l$Z4nWfUxMDr_tB}CW+g*eOJ?Y{zs9C`7wAO!7eZR ziD7%XJo{6!GBrSk26pxHg= zk9}S0=eH+!#Iru1a>Ls#n}NM^xA(Y>HY2}=;4h5((Y(QPgz(f%-_*s|#pO>fw)J0S z4!6f{R=X5sHO=bfxH(ZI~nlw`c;AY+(0}wH3iJWH9~4rB{9~{p+xuw(y0;K0UK_! z^LAArLV$$jtOpzv51v+3Rk%6T-?+NDHa6g|w#9!#-nb{vj$7`W2>WyR&RRsZU&olb zP`L@liMA})!}e1jeg%SH3^8_8pN}1}q4`Az-9jPx+hs&nnb~rq2~5eW<5!%4-tD}E zh#kH@I+?HnbD(VmKKU}YLdwJFY zg;#!0iM;q)u#erKYU6wis_XSt1T<;QyoS`|0@nS^Aj&2htpW);%`odXkoKdlscmf5 zw{0j#I!HeDZi;Pl`g7?Vd^q$O4@tTNJsi#`R(9n~dG+xD?ArD;%Fr;g>uE#=S8ddT zX;WL~%%09J)F`}#8HCzNatYK1K>XD=gYrgJ^A8i9H$A-FZgcJ2J>8*zikhGfztae@i*c z#A-PGjQF>VtU$lU z_%plke>CgtOtO?0TuG!@DFBK8lVw{j3-8JS`e72>=yUv!vQYjyef@}ViDye8u)OZ) z-&Jrj!_w6GG4t?z0w*A0`R% zME`RGf&W*GvVmJZB9#h+6(FK(vQFnHV+YUuStqlwOZkN0CJ{3dr7e_{LC&A|qTc?~ z!mR4#3I6~xi{hF3a-amtDBKuS0H)pQ>aMOvWhNWMCEXpH4xDcG@W$Anu!JAp0z={l zz@gGnM3Ju=lAZx65C~gZl%|EBeD}ai)3b;S$@As8jt_-*j$@@O;wO%x!hwTuR4K^< z2WeBN7!>Bf_Gg_r{Hy0^qvtU-CL)A`OhLw_Zh$@k+g~8RlUl~h3nTA&quVn|BDhwZ z{|*jmEL9c2Adp(7#Vo4%BA*quJLuU!*T!Ho)^^(Y%GathFFQ8_Uy-735voggxBSH~ z>cLfbwx4WmHB)Fxv1gmW6^eMKc7%9xKig;lBOLJE=v`cpdN4k2!GS1vY<{x8mf$7R z5~%ZH3(M7Ev)C^!5m1wMp(oVHjQTm_lH1ys^h~5lIRCn|1n(AQplk0N(0f_ndXAR* zxAPj^DLYM%a+UIzhcZh^;efgtKKART`0E&-rZW13CSixr=M279K4K@ziqiEede5bF z>8OAES5fj4CjHzmrqp@r;1ZMR~XtHM)(^yr0`fYL1hZ5`&CeQLnELDX6pm=nn#W6Jz97IYd zDfZ(rf-^M>@tuq$Tw6SbS>b~Sp@ys!RwO_dlfxtsF0i9~{B!bdjSXms-U0E&qE7V^ z{f9I#W1azfu|CP_xbgI&E$_pn@7#EnC)|pqIp8P7)uj?kY{7qcpE#HIUuU9ZER>yT zt{4DffRb4FIz9sa5-WLXw!5Vqy5B=j0nF}c@xSh)m?{9X3(;TZC}}Lt1ucu|4&VZ_ zds-}DTrPrKn86c`nCCb1ufXNp;<6=vA^KFpN38?|Y~Bkl^Y2$s1{+XD2}NwHFG-XU zC5tHA_SN4$FAA>0)Q9B|_D@V5M~ zlzUAL5|U0FOr^a+7hSPD|1HLdI_czW=zSpZZ%FcOK_pP+F+*4}XBvJ|mTmG(L)3xjtn)} z2s+gOaEW#^1&h+9?sm*biGnj~ByH!t8j*^3jGg$I&U~=FgaEp*slaX`iIDO*UE0p4ouU`PX6e!27e@^J^iL5pZcC;q6aphX|*C_ zJ({5WASUrr-0A5JQ|krlSM}GY5WoE>Rh1kP-6Zdl*AGTJ0hrOuS#9&1*TaVu)iz#h z<6d8ke?Aj;3a!>FYUZkVbzovRJ^YiQ;s@Eiz?D|80%HP%pg4;~fnQc4g*BhmkaK66 zxL7sc++v)2wDrCw|7&4*bZC6AlQdEjzk-ILoWt_%NI(%BrvZU1TAMRAgaJhg4&?d1 zNgeikuagzu3_3wbhre!?@OYN=LxfElCqA{QIJ#~sG*pR!&}=5~1v8oetmWdPk&dPZ z4K|VNYcfnJUj3NchiUY>_is5DZ^GkMo=egQ7{3f3TAvLYK6q&L5oe5pLZ(sXlqf03pwB=;wC`u?@H{XA}Tumm_ zwSK{Cjw}=&6xOBPt)2fKD?YI5$~JJSwWzUWp<0b2DmQiIj!g*rc)xgBls1(BKh<;} zuf)Wp)NJo{vFW;kTgFcT;TFd46Q!LnxaF1AgRk_t04bn8#*KTtfeJoJSKM>UR~X zTDID8y3HE2oi|K;#F(i3G{P=N<@h`sU(i&8fK@dICy~VK74NlwUGmY8X?K||b?W@y z0QoB_aVKO}LYC2(uKHb5AgpwuhNtltc6Smq2Lv^Ceu+X#e4WBJd)8zJ`uCePBNtn< z>$|vIQ^u2PjC6@g531=D2I&;JF1Gs+Jd$84S?QeMn!4)yAF$oyZman@viuo?)1gAb zVk!Yo<@qME5}q6cvrcWbgdDdEcI@XtRH?N@2L!z4AJ%Q4yvxRudS=(YsM_LNXB6Rt zRKypHvUcP<>-?=;Y{ljr6tY=4bZ zQ{Qc?0ax^ER95zza3?W=8zC0wk+RuJZt3x)`T6KeM=v+nTk+?QVF(}#I5+dq^AX1D z--%G(#T6Z8G699+=nvKI+lkO!M?`D}+=#k9q;f^cBa$Lpp~&3Q%+N?!l&ym#H_Lb1%u!o%Hx=6P(Z*y^$%~awgE7e~HhXxS>2(3Y#@+d#vOe^1m1|N$ zvdnz(J|?VkmAcI}zPAYH_;cVBp|;Q5Sf7E;*O2y*iMA7jh8n0kqe*c(_$rE7;9R14 zz3<2ILpf?<7`@15+ThP%GgsjjA9X!bUl*0~<@O!n@{7p|)C5Q4>-s?+{lFDDNg}DT zB;Mw$D5~)MronFsm+}(oaqd6NzXy6s;oEZKM_fIFrvw72prcj1saPBMoFWjcPAgm5 z&R;zxp?bXAdfqbRA)&6DGFDPxifW{*YsL5{ytva~wH~S` zys#P^=n~ghC_FUTL(K3wcJ{=O$7Sx?A23nk8Bt`=U`z+o#9mjE<_miWDQaY*7wp; zrdo1=?1;2uG(FLO7X5j8j71E=A^us&%5kFP__aWV76;{-&0CVpv^GdMI8-vE>FG=5 zYQSBtM`W13=RI80ZGBz*=g>&%cK*lJF2IU5DrM;IObr>|$=3{YUSBFw%!XeA-+?<#V-JH4zalaQsTVxp2#7UGpi9EE=6~ z!%=f8))CQ}Jpo~#D^znHimOT66)=6Zc5|K$Deu> zEAD7Uu|Cp*?jEB|5=lPBsddFK7HCiIrM@AQ!9D2j{TPR)?j4jx?@(`X-j_;Lhj$`o9O3e>Q@eG7C(+&V-QE9J) zEPdkFT|Y@KnLw$ds;G&fiG{h5iM^qF5hrUpK^*3}4HUh6NPHVP7Csvo!2_4EgBF}9a6h%pA3 z$b{?@?U_K0jc>Ptcy2@?riu5RITQ=YHLWYXSjh`>sS9&-_{lj6WB2!qx200(`h?iC z(aKZyX^%Z62b>pUeck*XNGVnPOyoQbGPDdYRw4EL= zRaqS!zKD?5Bh_sV2#-Y=$%A*C-guF$rHc7d1m&n zWRgjC@44r7cJF)lK+GM}Rh=Qb@@M6b3T>I~yCIqpQ*Zb)*U<{&s=r^ggmi>a@vnwe zs~P7$0780f_EkT|Yku}cG6T9t(FC%v3iJ=P$O!$r ziHT5{rb=Rw8NFY`t`r`AZK;h3Do*o65giZwe{*e&`^)eRb^Jk`G1sxktbEq9pe#s2 z5{~uX0k}k%`oWHAVa~FqnI2cd(=>@o6({AU4g7{!4ZwPX<_{OO8}UqJHztS*n6lOV z3%#4UATk5RO!GcIX>_>5`@chO_rF6P&0kqLR9S*M@0hpoBBScKAz;}P-RWP<)36LspOEUI0Y<>l{&L*WF^mU>@QNeSpP{;yKahqp2n9!3h=;ng&%Qdw#G z+D4*N%RPPiH~K#b0w)PHKE;HW5Ty0d*icJv4OMBYY^�X`J_~R=^76ityUb#^3y$ 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

  • LcaclD(0QL)N(~mMn(Z( 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 literal 0 HcmV?d00001 diff --git a/Storage_LabOS_顾问评估报告_可行性与竞品调研_V1.0.md b/Storage_LabOS_顾问评估报告_可行性与竞品调研_V1.0.md new file mode 100644 index 0000000..93d3534 --- /dev/null +++ b/Storage_LabOS_顾问评估报告_可行性与竞品调研_V1.0.md @@ -0,0 +1,360 @@ +# Storage LabOS · Regression Worker 顾问评估报告 + +**可行性分析 · 竞品调研 · 方案完善建议 · 总体规划** + +| | | +|---|---| +| 版本 | V1.0 | +| 日期 | 2026-07-27 | +| 评估对象 | 《Storage LabOS 固件回归测试值守机器人 完整方案 V1.0》 | +| 调研方法 | 方案全文评审 + 四组并行联网调研(直接竞品 / 量产与中国本土 / 隐形竞品与 DIY / 市场与客户),关键结论均有一手来源交叉验证;查不到之处明确标注 | +| 适用读者 | 两位联合创始人 | + +--- + +## 0. 执行摘要 + +### 总体结论:有条件立项(Conditional Go) + +方向对、切口对、时机对,但商业预期需要校准、若干关键判断需要修正。这不是一个"超大项目"的正确打开方式是先做大平台——恰恰相反,V1.0 里最值钱的判断(先做单工位值守机器人、不做测试仪、不碰协议合规)经过本次调研全部得到**证实和强化**。 + +### 六条核心判断 + +1. **差异化空白是真的。** 五家直接竞品(ULINK / OakGate / SANBlaze / Quarch / PyNVMe3)的公开资料中,"测试主机卡死自恢复、跨工具证据包、失败聚类、断点续跑、AI 判障"五项能力**均无成品级对应**;中国市场上也没有任何公司以独立软件产品形态销售"存储测试实验室编排系统"。空位真实存在——但窗口不会开三年(详见 §3.6)。 + +2. **差异化的表述必须修正。** DUT 侧的供电/复位/边带控制已是全行业标配(ULINK PSPA、SANBlaze 每盘位电控、Quarch 全系)。对外把"带外自救"讲成"给盘断电重启"会被当成已有功能。正确锚点:**测试主机失联的检测 → 分级恢复 → 从检查点续跑的闭环**——这在"通用主机 + 软件工具"型实验室(正是国内主控/模组厂的典型形态)价值最大。 + +3. **自组树莓派带外控制器在 2026 年是负资产。** JetKVM($69)、Sipeed NanoKVM($20 起)、GL.iNet Comet、PiKVM(HTTP API/IPMI/Redfish/ATX 控制齐全)已把"看画面 + 键鼠 + 重启 + 进 BIOS"做成商品。正确姿势:**兼容任意商品 KVM/PDU 作执行器**,把差异化全部押在商品盒子没有的四层软件——心跳判定语义、分级恢复策略引擎、与工作流状态联动的续跑、死机瞬间的证据留存。这四层目前没有任何现成开源实现。 + +4. **市场真实但是利基,融资策略要据此校准。** 可数目标客户:中国约 30-40 家、全球 60-90 家;按工位算 SAM:中国约 400-900 工位(对应年软件盘子约 ¥1,000-3,000 万),全球约 1,200-2,200 工位。这撑得起一家 10-50 人、年营收数千万级的专精产品公司,**撑不起典型 VC 规模叙事**——更适合天使 + 产业资本/设备商战投/专精特新路线,或 bootstrap。扩大盘子的路径是后期向邻近垂直(服务器 BMC/固件测试、GPU 老化、存储系统)延伸。 + +5. **时机是近五年最好的。** 存储超级周期:2024 年中国企业级 SSD 市场同比 +187.9%(IDC),2026Q1 企业级 SSD 价格环比 +80-100%,供需缺口预计持续到 2027 年底。客户在扩产、招测试人、买设备——测试产能是显性瓶颈,正是卖"无人值守"的窗口。反面:客户忙于出货,POC 时间难约,交付必须低打扰。 + +6. **"LabOS" 这个名字必须改。** 软件类目全球至少两个在营同名产品(labos.co 医疗 LIS、增材制造 LabOS),中国第 9 类商标已被注册且正处"撤三"争夺。主品牌应造独特词,"Storage LabOS"只可作描述性副题。 + +### 立项的四个前置条件 + +0. **领域合伙人("同学")或等效 SOP 来源在 30 天内书面落定**——注意:截至本报告日,"同学"只是意向对象,SOP、样品、客户引荐都尚未承诺。在此落定之前不启动产品工程(允许一个例外:2-4 周时间盒的零售盘技术样机,用作招募道具,且必须与合伙谈判、客户访谈并行推进——见 Phase 1a); +1. 30 天内完成 ≥3 家公司、5-10 人访谈,拿到 ≥2 套真实 SOP(防止过拟合单一公司样本); +2. 首个 POC 客户书面意向(可免费 POC + 验收付费条款); +3. 首客户工具链清点完成——每个工具标注 CLI / API / GUI-only,GUI-only 刷写工具风险有预案。 + +### 三个 Kill Criteria + +1. 访谈中"值守/复现"痛点排不进客户前三; +2. POC 8 周内无法稳定完成 20 循环 A/B,或注入故障恢复成功率 <60%; +3. 第二个客户起连接器复用率 <40%(项目制泥潭信号)。 + +### 本周就该做的五件事 + +1. 和"同学"把合作谈起来——先做**最小承诺测试**:本周约谈,请对方给一套脱敏 SOP(或口头带你走一遍流程)+ 30 分钟讲实验室值守现状。这一步对他成本近乎为零;若连这都推进不了,合伙就是假设而非事实,趁早启动替代路径(见 §4 Phase 0); +2. 约首客户测试主管做工具链清点(CLI/GUI 清单决定 MVP 技术路线); +3. 联系上海森弗(Saniffer)/深圳锐测(Reetest)询价 SANBlaze/ULINK/Quarch 在华价格(补定价锚点,顺带探渠道合作意向); +4. 启动新名字的商标检索(9/42 类 + 美国); +5. FMS 2026 是 8 月 4-6 日(圣克拉拉,距今一周)——来不及参展,若有美国朋友可代为观展收集竞品资料;国内主战场定为 2027 年 3 月深圳 CFMS|MemoryS。 + +--- + +## 1. 对 V1.0 方案的评价 + +### 1.1 做得好的地方(保留并强化) + +1. **战略克制**——"不做什么"清单(不做协议合规套件、不做 Gen5/6 高速背板、不做 EDA、AI 不碰危险命令)是全文档最值钱的部分,本次调研全部证实其正确性; +2. **北极星指标选择正确**——UCR + 释放工时,且配了"基础设施误报率"这种反直觉但关键的护栏指标; +3. **失败状态模型**(INFRA_* 与 DUT_* 分离)是真正的领域洞察,多数自研脚本死在这里; +4. **Evidence Bundle 具体到目录结构**,不是空话; +5. **竞品策略正确**——把竞品连接器化而不是对抗,调研证实 OakGate/SANBlaze 的 REST/Python API 完整,技术上可行; +6. **决策门设计**——每一步扩张都有前置证据要求; +7. **风险清单诚实**——自己点破了"Jenkins 套壳"和"定制泥潭"两大死法。 + +### 1.2 关键缺口清单 + +**P0(不补就无法立项/融资/启动)** + +| # | 缺口 | 说明 | +|---|---|---| +| 1 | 全文没有钱、没有时间 | 没有一个货币数字、一个时间盒。缺:POC 预算、18 个月资金需求、定价、收入预测、阶段时长。本报告 §5 已补一版供修订 | +| 2 | 没有市场规模 | "中型 SSD 团队"有多少家可数客户没有回答。本报告 §2.2 已补 | +| 3 | Windows GUI 工具风险被系统性低估 | MVP 排除"视觉操作",但大量厂商刷写工具(MPTool 类)是 GUI-only。若首客户刷写工具无 CLI,MVP 第一步就被卡死。预案:(a) 要求客户提供 CLI 版;(b) pywinauto/UIA 自动化作受控例外;(c) 换场景 | +| 4 | 缺 Phase 0 客户发现 | 立项动作直接从"拿 SOP 开发"开始;应先访谈 ≥3 家、拿 ≥2 套 SOP 再写代码 | +| 5 | 命名冲突 | "LabOS"必须改(详见 §2.2 市场部分与执行摘要) | + +**P1(POC 前后必须补)** + +| # | 缺口 | 说明 | +|---|---|---| +| 6 | 硬件策略过时 | 树莓派自组方案应降级为"兼容的执行器之一",改为适配商品 KVM/智能 PDU(JetKVM/NanoKVM/PiKVM 等),省下的精力投入判定/策略软件层 | +| 7 | 测试主机镜像/队伍管理缺章 | hibernate/resume 在真实 Windows 上有大量坑(快速启动、驱动、唤醒源、BitLocker、Windows Update 干扰)。需要 golden image + 组策略固化 + 主机健康自检方案——这本身就是护城河 know-how | +| 8 | Agent 自身可靠性 | "Agent 崩溃不丢证据"有验收,但没有"谁来救 Agent"的机制设计(本地看门狗、开机自启、双进程互监) | +| 9 | 法务与责任 | DUT 损坏责任条款(行业范式:破坏性测试知情免责 + 过错赔偿上限=合同额)、适配私有工具的 IP 约定、开源许可合规、POC 合同模板 | +| 10 | ROI 测量协议 | "人工执行一遍并记录"应升格为正式基线测量协议,写进 POC 合同,否则"显著减少人工"无法被客户财务认可 | +| 11 | 交付成本模型 | 每个 POC 人天预算、连接器复用率目标(>60%)——没有度量,"项目制陷阱"条款无法落地 | +| 12 | 竞品名单五处补遗 | 通用编排层(NI TestStand/OpenTAP/OpenHTF+TofuPilot)、量产设备商、中国本土(鸾起/置富)、测试服务商、商品 KVM。详见 §3 | + +**P2(产品化阶段补)** + +13. 开源策略未讨论(连接器 SDK/Agent 是否开源,各有利弊); +14. 多客户私有化部署矩阵——发布通道/LTS 政策要早定,否则升级成本爆炸; +15. UCR 可被刷(任务切小刷高),需定义"触碰"口径,以"每百小时介入次数"为主指标; +16. 文档应拆三份:内部战略版(现有)、客户 pitch 版、投资人版(加财务)。 + +--- + +## 2. 可行性分析 + +### 2.1 技术可行性:高(4/5) + +**结论:无科研级风险,全部是工程问题;真正的风险不是"能不能做出来",而是"在客户杂乱环境里稳不稳"。** + +- 所有组件均有成熟先例:商品 KVM/PDU 执行器 + 状态机 + 对象存储 + 采集管道。开源积木充足——labgrid 已解决电源/串口/资源互斥抽象(支持 30+ 种 PDU),Temporal 语义上完美匹配持久工作流(官方支持"分钟到数年"的执行)。 +- **真正难写对的三层**(也是壁垒所在): + 1. **判定层**:把"卡死"判对。误判一次 = 一台跑到第 60 小时的 3 天 retention 测试被无辜断电,比不自动化更糟。区分主机挂/盘挂/进程挂/网络抖,需要按机型、固件、测试类型积累的启发式阈值库——没有任何开源件自带; + 2. **物理状态与代码状态的对账**:durable engine 只保证代码状态持久,不保证物理状态一致(工作流认为在第 7 步,真实世界里主机已重启过、固件槽位已切换)。断电这类不可幂等动作的护栏 + 恢复对账,是全项目最难写对的代码; + 3. **取证顺序**:死机瞬间抓什么、按什么顺序抓(取证与快速恢复互相冲突)、怎么和固件版本/步骤对齐。 +- Windows 生态脏细节(GUI 工具、休眠唤醒、驱动、更新)是最大的工程摩擦源,必须用 golden image + 镜像管理对冲。 +- POC 3-4 个月时间盒内可验证。 + +### 2.2 市场可行性:中(3/5)——真实、在扩张、但是利基 + +**可数客户(自上而下)** + +| 客户类别 | 全球 | 中国大陆 | +|---|---|---| +| SSD 主控厂 | 独立主控 ~10 家 + 原厂自研 6 家 | 16-20 家(联芸、得一微、英韧、忆芯、华澜微、国科微、大普微、华存、兆芯、特纳飞……) | +| 企业级/DC SSD | 7 家原厂系 | 12-15 家有独立固件/验证团队(忆联、忆恒创源、大普微、得瑞、ScaleFlux、泽石、芯盛……) | +| 模组厂(有固件介入能力) | 全球有名有姓 SSD 制造商 235 家(多数无固件能力) | 30-50 家(江波龙、佰维、德明利、朗科、金泰克、七彩虹、嘉合劲威、宏旺、记忆科技……) | +| 工业/车规存储 | 25-35 家(Swissbit、宜鼎、宇瞻、ATP、Virtium……) | 若干家 + 大厂工规线 | +| Hyperscaler qual 团队 | 6-8 家海外 + 阿里/腾讯/字节/百度 | 不是首批客户(自研体系),但 OCP 规范是需求放大器:被验收方(SSD 厂)要买工具自证合规 | + +**中间层估算**(5-50 工位、有回归压力、无成熟自研平台):**中国约 30-40 家,全球约 60-90 家**;按每家 8-25 个可付费工位 → **SAM:中国 400-900 工位,全球 1,200-2,200 工位**。按 §2.3 定价折算,中国年软件盘子约 ¥1,000-3,000 万——**撑得起专精产品公司,撑不起典型 VC 故事**。上行空间:兼容性测试柜(方向 4)扩大单客户工位数、邻近垂直(服务器固件/BMC 测试、GPU 老化)、海外工业存储。 + +**痛点证据链(本次调研实证)** +- 联芸(猎聘 JD):"固件测试自动化开发、持续集成建设、失败用例分析定位"——这些岗位就是编排层缺失的人肉补丁; +- 江波龙 JD:"回归测试确保固件健康度";大普微 JD:"开发测试机台程序"(自建平台直接证据); +- 江波龙/佰维/记忆科技/晶存的测试装置专利全部强调"提高自动化程度/并行规模"——每家都在重复造执行层轮子,编排层仍靠人; +- 置富科技已用"一键启动、全程无人值守"营销测试柜——无人值守是被客户认可的卖点。 + +**行业周期**:2024 中国企业级 SSD 市场 $62.5 亿(+187.9%,IDC);2026Q1 企业级 SSD 价格环比 +80-100%,缺口预计到 2027 年底;江波龙 2025 营收 227.66 亿、佰维净利 +429%、德明利营收破百亿、大普微 IPO 推进中。**客户数量与测试工位都在增加,测试人手是瓶颈——窗口期成立。** + +### 2.3 商业可行性:中(3/5) + +**定价建议(有推理链)** +- 客户价值 = 省 0.5-1 个测试工程师(深圳/北京 SSD 测试工程师 15-25K×14 薪,企业年成本 ¥28-47 万)+ 夜间/周末设备利用率提升 30-50%(对 ¥300-1,200 万测试资产即 ¥18-60 万/年等效产能)→ 单客户年价值 ¥30-80 万; +- 定价取价值 20-35%:**软件 ¥6,000-12,000/工位/年**(30 工位以上阶梯降)+ **POC 交付服务一次性 ¥5-15 万** + **带外控制盒 ¥3,000-8,000/工位**; +- 典型 20 工位客户:首年合同 ¥25-40 万,续年 ¥15-25 万 ≈ 0.5-1 名工程师人力成本——ROI 一页纸讲得清;海外工业客户 $2,000-4,000/工位/年; +- **两个定价纪律**:绝不落进 $50/席位的 SaaS 锚点(TofuPilot 教训);年费必须绑定设备商不做的三样东西——跨厂商编排、客户 SOP 资产化、回归结果数据库——否则会被"硬件送软件"(Quarch 明示 API 无年费、SANBlaze 自带 OCP 脚本)替代; +- 行业公开锚点:PyNVMe3 软件 $59,000/年(不限部署)、NI 软件合同均值 ~$19k/年、DIY 三年 TCO >$500k(硅谷人力)/约 ¥150 万(国内人力)——"买 vs 造"话术的核心数字。 + +**销售周期与合同形态**:POC 1-3 个月 + 商务 1-6 个月,总周期按 3-9 个月规划;决策链 = 测试经理发起 → 固件总监批预算 → 安全审查私有化 → 采购走谈判/招标;准备"订阅"与"一年期服务合同"双合同形态(国企/上市公司报销体系)。 + +**生死度量**:客户现场 UCR 与每百小时介入次数(产品价值)、连接器复用率 >60%(产品公司 vs 外包公司分界)、每 POC 交付人天(服务毛利)。 + +### 2.4 团队可行性:条件分(落定前 2/5,落定后 3/5) + +- **最大的团队事实:合伙尚未落定。**「同学」目前只是意向对象,SOP、样品工位、客户引荐都还不是承诺。在其角色落定之前,本项目实际上是**单人项目**——单人做 to-B 硬科技(无领域背景、无客户通路)不成立,因此团队可行性在落定前按 2/5 看待,这是当前第一优先级和唯一阻塞项; +- 若落定,两人组合(产品/全栈/AI + 存储领域/客户/资金)是经典配置,覆盖 POC 阶段,恢复 3/5; +- 推进方式:用最小承诺测试逐级升级(见 §4 Phase 0 第 1 条),四周内走到"联合创始人 / 顾问 / 客户 champion"三选一,不允许停留在模糊状态。三种角色都能支撑项目启动,但对应不同的股权与替代招聘方案; +- **硬缺口**:全职验证工程师(Phase 1 可兼职借调,Phase 2 必须全职)、嵌入式工程师(改用商品 KVM 后需求后移,Phase 3 再考虑); +- 落定后仍要管理的结构性风险:既是渠道又可能是首客户,依赖与冲突并存——股权、竞业与客户关系归属要在书面协议里写清。 + +### 2.5 财务可行性(框架估算,按实际薪资修正) + +| 阶段 | 时间 | 团队 | 现金消耗(累计) | 里程碑 | +|---|---|---|---|---| +| Phase 0 排雷 | 第 1 个月 | 创始人 2 | ≈0 | Go/No-go 备忘录 | +| Phase 1 POC | 第 2-5 月 | 2 + 兼职 | 硬件 2-5 万;累计 30-60 万 | 7×24 无人值守 Demo | +| Phase 2 付费试点 | 第 5-9 月 | 4-5 人 | 累计 150-250 万 | 首笔收入(POC ¥5-15 万×1-2 单) | +| Phase 3 产品化 | 第 10-18 月 | 5-8 人 | 累计 400-600 万 | 3-5 客户、ARR ¥100-200 万 | + +融资建议:**天使/产业资本 300-500 万**(代理商、模组厂 CVC、地方产业基金都比纯财务 VC 匹配),或自有资金 + POC 收入滚动。叙事对标存在但要诚实:硬件测试数据平台 Nominal 2026 年 3 月达 $10 亿估值(10 个月融 $155M)、AI SRE 公司 Resolve.ai 估值 $15 亿——资本已验证"硬件测试"与"AI 根因调查"两个故事,而**"控制平面"(把机器救活继续跑)无人占位**;但你的可数市场决定了讲法应是"利基里的绝对领先 + 邻近垂直扩张",不是平台故事。 + +### 2.6 总体结论 + +**有条件立项。** 前置条件与 Kill Criteria 见执行摘要。最大的三个风险按序:**领域合伙人未落定(当前唯一的阻塞项,条件 0)** → 市场厚度(中间层客户数量有限)→ 项目制泥潭(连接器复用率)。技术不在前三。 + +--- + +## 3. 竞品调研(四组联网调研合并) + +### 3.1 五家直接竞品:逐项核实结果 + +**五项差异化主张 vs 竞品现状**(公开资料核实,2026-07) + +| 能力 | ULINK | OakGate | SANBlaze | Quarch | PyNVMe3 | 判定 | +|---|---|---|---|---|---|---| +| 测试主机卡死自恢复 | 无 | 架构性缓解¹ | 架构性缓解¹ | 有零件无闭环² | 无 | **真空白** | +| 跨工具统一证据包 | 无 | 单生态强 | 单生态 | 功耗+边带同轴 | 单生态 | **真空白** | +| 失败聚类去重 | 未见 | 未见 | 未见 | 无 | 未见 | **全行业无人交付** | +| 断点续跑 | 未见 | 无 checkpoint | 未见 | 无 | pytest 语义,无 | **真空白** | +| AI 辅助判障 | 无³ | 无 | 无 | 无 | 无⁴ | **最干净的差异化** | + +¹ 专用 Linux appliance 即测试主机,环境受控、客户端分离——痛点被架构降低而非功能解决;² Quarch 模块走独立 LAN/USB 通道,是自救的现成执行器,但不提供"检测→恢复→续跑"编排;³ ULINK 的 AI(DA SmartQuest)面向在役硬盘故障预测,与实验室无关;⁴ PyNVMe3 的"LLM workload"是用 AI 负载测盘,不是 AI 分析失败。 + +**各家快照与威胁评级** + +| 竞品 | 近况(2025-2026) | 威胁 | 合作 | 策略 | +|---|---|---|---|---| +| ULINK DriveMaster | DM10 v10.1.1900、PSPA+ Gen5、无 Gen6 路线、无公开 API、Windows GUI 封闭 | 2/5 | 1/5 | TCG 认证细分互补;GUI 封闭反而难集成 | +| Teledyne LeCroy OakGate | PCIe 6.0 方案 2025-08 可订购;REST/Python/CLI/C API 完整;Automation Tool 单生态编排 | 4/5 | 2/5 | 视为高价值执行器,用其 API 接入 | +| SANBlaze | SBExpress-RM6 业界首个 Gen6 系统(2025-10);OCP 2.6 + Azure 深度绑定;REST/XML/Python | 4/5 | 3/5 | 同上;其 OCP 地位是"被验收方买工具"逻辑的最好注脚 | +| Quarch | Gen6 全家桶 + Aon 桌面一体机;quarchpy 全线 Python;被 SerialTek/PyNVMe3 集成的先例 | 1/5 | **5/5** | **天然盟友,尽早建集成/转售关系** | +| PyNVMe3 / GYTech | $59k/年不限部署 + F6 12 盘服务器 $39k(公开价);已建实验室层雏形(槽位编排、Grafana 监控);中国主控/原厂渗透深 | **4/5(对中国 5/5)** | 3/5 | **最大战略威胁**:同构(Python/CI/年费/软件优先),向上一步就是编排层。既是最优先集成对象,也是最可能相撞者;注意其 EULA 禁止用于开发竞品,商务需切割 | + +关键修正:**最需警惕的不是"谁已经做了",而是"谁最容易补上"**——OakGate/SANBlaze 给自家 appliance 加 watchdog 的工程成本不高,但商业惯性(卖盒子、单生态)使其大概率不做跨厂商编排。LabOS 应死守的定位:**异构工具之上的中立层**。 + +### 3.2 V1.0 完全遗漏的五类竞品 + +**① 通用测试编排层**(能力不重叠,但销售时会被拿来比价) +- **NI TestStand + SystemLink**(现属 Emerson):行业标准测试序列器;"单站、有人值守、产线节拍"范式,无主机自救概念。价格参考:NI 软件合同 $3k-40k/年(均值 ~$19k); +- **Keysight OpenTAP**:开源序列引擎,生态以自家射频仪器为中心,无存储案例——证明"水平化测试编排平台长不出垂直深度",反向支持做垂直; +- **OpenHTF(Google 开源)+ TofuPilot(瑞士,2022)**:画像最像的创业公司——OSS 楔子 + SaaS 分析层,$50/用户/月 + $50/站/月。但做产线短测试(分钟级、良率视角),不做编排/恢复/取证。它证明了模式,也划出了**必须避开的低价锚点**; +- **Nominal**($1B 估值,Founders Fund/Sequoia,10 个月融 $155M)与 **Sift**(ex-SpaceX,$42M B 轮):硬件测试数据平台已被资本验证——但全部是**数据平面**(遥测进、分析出),**控制平面无人占位**。这是融资叙事的现成对标,也是远期威胁(Nominal Connect 已做边缘测试执行,切入存储只缺动机); +- Averna / Marvin ATEasy:测试集成商——"大厂不自研时会雇的人",应加入竞品清单。 + +**② 量产/可靠性测试设备商**(离研发回归很远,但要主动切割叙事) +- Neosem(Gen5 测试机,供三星/美光/英特尔;中国独家代理=深圳锐伺)、EXICON(三星老化机主力,单批订单 1.65 亿元人民币)、Advantest MPT3000(SLT,百万级整机)、Teradyne(芯片级 ATE + HDD 产线)、Chroma(已淡出 SSD 测试); +- **"存储测试国产化"的资本叙事(精智达 ~13 亿订单、悦芯 12 亿融资、武汉精鸿长存中标)全部在芯片级 ATE**——与盘级固件回归是两个市场,给投资人讲故事必须主动切割,否则被错误对标。 + +**③ 中国本土两家必须写进方案的公司** +- **鸾起科技**(苏州,2022;创始人岑彪 ex-AMD/LSI/CNEX,《深入浅出 SSD》作者之一;2026-01 中科创星领投 B 轮近亿元):"国产 SANBlaze"生态位——eBird 研发端测试平台(Gen5,协议级到系统级,Turnkey 用例包)+ Phoenix 量产 RDT。忆恒创源已导入,与联想/长江存储有合作。**公开资料未见实验室编排产品**——它既是最可能向编排层延伸的本土竞对,也是最合理的集成/渠道伙伴(eBird 可作被编排执行器); +- **置富科技**(深圳,北交所):2025-04 发布五款宽温智能测试设备(128-256 盘位),营销话术就是"开放式工单配置平台 + 一键启动、全程无人值守"——**"无人值守"心智已被抢注**,但其软件绑定自家柜体,反而验证了"硬件无关的编排软件"差异化成立。最需盯防的邻位竞对。 + +**④ 第三方测试服务商 = 互补而非替代** +- 百佳泰 Allion(SSD 顾问/Workload 采集/竞品对标)、GRL(PCIe 官方合规认证)、宜特 iST(芯片可靠性)、UNH-IOL(NVMe 合规权威,SANBlaze 是其执行平台)、赛宝/中析(送样检测,用的正是 DriveMaster); +- 外包适合低频里程碑事件(认证/对标/摸底);高频固件回归外发有**保密 + 周转**两大硬伤。真正的替代品是"多招两个测试工程师值夜班 + 自写脚本"。 + +**⑤ 商品 KVM / OOB 硬件浪潮**(对 V1.0 硬件方案的直接修正) + +| 产品 | 价格 | ATX 控制 | 可编程性 | +|---|---|---|---| +| JetKVM | $69(众筹 $400 万+/3 万人) | 官方 ATX 扩展板 | Go 后端开源 | +| Sipeed NanoKVM / Pro | $20 起 | 有 ATX 版 | 开源;Pro 已带**多节点批量管理 + AI 助手** | +| GL.iNet Comet | PoE 版 $109.99;Comet X 一拖四 | 官方 ATX 板 | 集中管理 | +| PiKVM | 数百美元级 | 官方 ATX 板 | HTTP API、**IPMI & Redfish**、Prometheus、宏 | + +服务器场景 OOB 本是标配(IPMI/BMC、Redfish、Intel AMT、智能 PDU)。**结论:硬件本身零差异化;商品盒子没有且短期不会有的是四层软件**——心跳判定语义、分级恢复策略引擎(升级/退避/冷却/熔断 + 恢复前先取证)、与工作流状态联动、证据留存。警惕商品盒子从下往上长(NanoKVM Pro 已加批量管理和 AI 助手)。 + +### 3.3 DIY 威胁的定量刻画(最重要的竞争事实) + +> **一个 2-3 人的内部团队,3-6 个月能拼出"能演示的 80%";拼不出"连续 90 天无人值守的 80%"。产品的全部价值在后者。** + +- 拼得出(这就是每家 SSD 厂都有 Jenkins 脚本坟场的原因——DIY 不是假想敌,是已发生的现实):商品 KVM + 智能 PDU + labgrid(1-2 周)→ Temporal 包 SOP(1-2 月)→ pytest + 正则聚类 + 模板报告(再 1-2 月); +- 拼不出的 20%(DIY 团队在第 6-18 个月撞上): + 1. 判定层误判致死(一次误断电毁掉跑到第 60 小时的 retention 测试)——靠 incident 数量堆出来的阈值库; + 2. 物理状态与代码状态的对账 + 不可幂等动作护栏——全项目最难写对的代码; + 3. Evidence Bundle 的领域深度(抓什么、什么顺序、怎么对齐); + 4. 失败聚类冷启动(算法几周,可信聚类需几个季度的带标注语料); + 5. 机群运维长尾(USB 重枚举、EDID、串口猝死——Linaro/Pengutronix 为此养全职团队); +- DIY 真实 TCO:2-3 人×6 月建设 + 永久 ~1 FTE 维护 + 关键人一走就腐烂;三年 TCO 国内人力约 ¥150 万、硅谷 >$500k——**这是定价天花板依据和"买 vs 造"销售话术的核心数字**。 + +### 3.4 可防御空间排序(护城河修正版) + +1. **机型级判定/恢复知识库**——唯一随时间复利、DIY 团队永远只有单厂样本的资产; +2. **Evidence Bundle schema 与取证顺序**做成事实标准(对标 OCP telemetry 生态,配合"报告可直接交给下游客户审计"叙事); +3. **每客户私有失败语料 + 共享解析器/模型架构**(行业保密性强,跨客户共享语料几乎不可能——V1.0 §9.2 数据飞轮的脱敏设计是对的,但护城河强度要打七折); +4. **"无人值守"作为 SLA 卖**——买的是夜班消失,不是软件席位; +5. **不可防御、不要投入**:OOB 硬件、KVM 软件、工作流引擎、测试框架、通用聚类算法——全部用现成的。 + +### 3.5 窗口期判断 + +三面夹击的时间表:上有 Nominal($155M 弹药)/TofuPilot 下探,下有 NanoKVM Pro/PiKVM 往批量管理和 AI 助手上长,侧有 PyNVMe3/鸾起/置富从执行层向编排爬。**窗口真实存在,但按 18-24 个月规划,不按三年规划**——这也是 Phase 1/2 必须严格时间盒的原因。 + +--- + +## 4. 总体规划(重排路线图) + +核心修正:V1.0 阶段 A-E 只有内容没有时间和钱。以下为带时间盒、预算、验收和 Kill 条件的版本。 + +### Phase 0 — 合伙落定、客户发现与排雷(第 1-4 周,现金 ≈0) + +写代码之前完成(第 1 条是其余一切的前提): +1. **谈定领域合伙人(真正的第 0 步——目前"同学"尚未承诺任何事)**。用升级阶梯推进,避免一上来就要"辞职入伙"这种大到只能拖延的请求: + - ① 最小承诺测试(本周,对方成本≈0):一套脱敏 SOP 或口头走一遍流程 + 30 分钟值守现状访谈。可以拿本报告当谈判工具——竞品与市场数据是现成的"这事值得干"论证; + - ② 第二级(第 2-4 周):2-3 个访谈引荐 + 联合做一次人工基线测量; + - ③ 第三级(POC 启动前):角色三选一并书面化——联合创始人(股权 + 时间承诺)/ 顾问(小比例顾问股 + 明确交付清单)/ 首客户 champion(不占股,客户关系)。三种都能支撑启动,但必须选一个; + - **决断时限**:四周内走不到第②级,即启动替代路径——付费聘请在职/离职 SSD 验证工程师做顾问(§2.2 的 JD 调研证明这个人群在深圳/上海可及),并经 ssdfans 社区、CFMS 人脉、森弗/锐测代理商冷启动接触 2-3 家中型厂谈 design partner; +2. ≥3 家公司、5-10 人分层访谈(用 V1.0 §11.5 清单:固件工程师/验证工程师/实验室负责人); +3. 拿到 ≥2 套真实 SOP(合伙人来源 + ≥1 外部); +4. 人工全程执行一遍 SOP,录屏计时 → ROI 基线测量协议(未来 POC 合同附件); +5. 首客户工具链清点:每个工具标 CLI/API/GUI-only → GUI 风险预案; +6. 新名字 + 商标检索(9/42 类 + 美国); +7. 向森弗/锐测询价补齐 SANBlaze/ULINK 在华价格锚点。 + +产出:Go/No-go 备忘录 + 方案 V1.1。 +Kill:领域合伙人与替代路径双双落空;无人愿给 SOP;或"值守/复现"痛点排不进前三。 + +### Phase 1 — 单工位 POC(第 2-5 月,3.5 个月时间盒,硬件预算 2-5 万) + +Phase 1 拆为 1a/1b 两段,依赖不同: + +**1a 技术样机(可提前与 Phase 0 并行;2-4 周时间盒;零售/二手盘;无任何外部依赖)** +- 验证四层差异化能力:心跳判定、分级恢复、断点续跑、证据采集——这四层与盘上跑什么固件无关(蓝屏就是蓝屏); +- 刷写机制用 nvme-cli 标准通道排练:对同一固件镜像反复 download/commit/激活即可跑通全部机制,A/B 对比引擎用"任意两个变体"(两块盘/两套配置)先行验证; +- DUT 来源:零售或闲鱼二手盘(¥200-800/块,刷坏不心疼);选型前实测目标型号的 fw-commit 行为与降级策略;国产 SMI/联芸主控盘的开卡工具生态可作内部台架的补充手段(灰色来源,仅限内部开发,不得用于对外演示); +- 产出:一台"会自救的演示台"——同时是合伙人与客户谈判的最强道具; +- 纪律:时间盒必须硬。造东西是舒适区,访谈是不适区;1a 结束时若合伙谈判与访谈无进展,该停就停。 + +**1b 真实 SOP 落地(被前置条件 0 门控:需要真实样品、固件 A/B 与厂商刷写工具)** +- 团队:创始人 2 + 兼职验证工程师; +- 硬件:x86 测试主机 + 可牺牲 DUT 若干 + **商品 KVM(JetKVM/PiKVM)+ 智能 PDU** + 温度传感 + UPS(树莓派方案降级为兼容选项); +- 范围(相对 V1.0 MVP 再收缩):OS 按首客户 SOP 二选一;Web 控制台降级为 CLI + 静态 HTML 报告;AI 只做日志摘要 + 报告草稿。全部工程量押在**状态机 / 分级恢复 / 证据采集**三件事上; +- 硬验收(在 V1.0 §4.5 基础上加硬): + - 连续 7×24 无人值守运行不崩; + - 100 循环 A/B 完整跑通 ≥2 次; + - 三类注入故障(杀 Agent、蓝屏/panic、拔网线)自动恢复成功率 ≥80%; + - 误盘 = 0;失败发生 → 证据包可下载 <5 分钟。 +- Kill:8 周内无法稳定完成 20 循环;或恢复成功率 <60%。 + +### Phase 2 — 首个付费试点(第 5-9 月,团队 4-5 人,累计现金 150-250 万) + +- 商业:1-2 家付费 POC。两种打法:A. 付费 POC ¥8-20 万/单(含连接器开发)验收转订阅;B. 免费 POC + 验收付费 ¥30-50 万转订阅(标杆客户); +- 产品化:安装部署包、角色权限、审计、正式控制台、连接器 SDK v0、缺陷系统对接(Jira/禅道); +- 客户画像(按调研修正):珠三角/长三角的中型主控厂(得一微/忆芯/华存/兆芯/特纳飞档)、企业级新锐(大普微/得瑞/泽石/芯盛档)、头部模组厂固件测试部(江波龙/佰维/德明利档);10-30 工位、已有 SANBlaze/Quarch/温箱资产者优先; +- 渠道:与森弗/锐测谈联合方案或转售分成(它们有全部目标客户关系,主业卖硬件,与编排层互补;风险:设备商自家软件向上长时渠道会站队); +- 现场指标:客户现场 UCR ≥90%;"每周释放工时"报告由客户签字确认(销售武器); +- 门槛:首笔外部收入 + 第二套 SOP 连接器复用率 ≥50%。 + +### Phase 3 — 产品化与多工位(第 10-18 月,累计现金 400-600 万) + +- 3-5 家客户、20+ 工位、2-3 份年订阅合同(目标 ARR ¥100-200 万); +- 多工位调度、资产/许可证管理、跨工位失败聚类(= V1.0 阶段 C 裁剪);发布通道/LTS 政策定版; +- 硬件工程样机外包设计(若客户确有需求);失败指纹库跨客户沉淀(脱敏规则同步、客户授权制); +- GTM:CFMS|MemoryS 2027(3 月·深圳)正式亮相;FMS 2027 看海外工业存储线索; +- 决策点:产业资本融资扩张 vs 利润自养。 + +### Phase 4 — 决策门触发的扩张(18 月+) + +兼容性循环测试柜(方向 4)、RMA 初检、来料质检、运营分析——维持 V1.0 §10.6 决策门设计,不排日历。新增一条远期选项:**向邻近垂直扩**(服务器 BMC/固件测试、GPU 老化、存储系统),这是突破利基天花板的主路径。 + +### 对外叙事 + +- 不讲"AI 测试 SSD",讲**"存储实验室的无人值守执行层 / 控制平面"**; +- 对投资人:硬件测试数据平面已出独角兽(Nominal $1B)、AI 根因调查已被验证(Resolve.ai $1.5B)——**控制平面无人占位**,我们从存储垂直切入;同时诚实给出利基市场数字与邻近垂直扩张路径; +- 对客户:固件回归不再需要工程师通宵值守(V1.0 原话保留,很好);ROI 一页纸 = 续年费 ≈ 0.5-1 名工程师年成本。 + +--- + +## 5. 数据缺口与两周补齐计划 + +| 缺口 | 补齐方法 | +|---|---| +| SANBlaze/ULINK/OakGate 在华成交价 | 以采购名义向森弗(上海)/锐测(深圳)询价;或开千里马/采招网付费账号查历史中标 | +| "值守/夜班"一手抱怨文本 | 人工登录 BOSS 直聘/脉脉检索"SSD 测试 值班/夜班/两班倒";访谈中直接问 | +| 美国商标明细 | USPTO TESS 人工检索新名字 | +| 客户支付意愿实证 | Phase 0 的 10 个访谈中放入定价卡片测试(¥6k/¥9k/¥12k 每工位三档) | +| PyNVMe3 实际部署形态 | 若访谈对象中有其客户,追问其值守/断点/取证痛点(验证互补空间) | + +--- + +## 附录 A:主要信息来源(节选) + +竞品官网与文档:ulinktech.com;teledynelecroy.com/ssdtesting;sanblaze.com(rest-interface / python-docs);quarch.com;pynv.me(pricing / EULA);github.com/pynvme/pynvme;serialtek.com;viavisolutions.com;labgrid.readthedocs.io;docs.lavasoftware.org;opentap.io;openhtf.com;tofupilot.com/pricing;nominal.io;siftstack.com;jetkvm.com;docs.pikvm.org;gl-inet.com;docs.temporal.io。 +行业与市场:StorageNewsletter(OakGate/SANBlaze Gen6、GYTech、SSD 制造商清单);futurememorystorage.com(FMS 2026);chinaflashmarket.com(CFM/MemoryS);IDC 中国企业级 SSD 数据(转引);东方财富/雪球/新浪财经(江波龙/佰维/德明利/大普微业绩)。 +中国本土:投中网/上证报(鸾起科技);爱集微(置富科技);realsys.com.cn(锐伺/Neosem);saniffer.com;reetest.com;0101semi.com(价格锚点);猎聘/BOSS 直聘 JD(联芸/江波龙/大普微/忆恒创源);国家专利(江波龙 CN121922187A、佰维 CN223167249U)。 +命名:labos.co;阿里云商标库(LABOS 第 9 类)。 + +*调研执行说明:部分搜索引擎与招标平台存在反爬/付费墙限制,凡未能取得一手数据处均在正文标注"未查到"并给出替代估算方法;重要结论均有至少两个独立来源交叉验证。竞品"缺口"结论基于公开资料,不排除存在未公开功能,建议关键项通过评估机/demo 实测复核。* + +--- + +*本报告由外部顾问基于方案 V1.0 与 2026-07-27 联网调研撰写,供两位创始人决策参考。建议以本报告 §1.2 缺口清单和 §4 路线图为基础修订出方案 V1.1。* diff --git a/flashops/.gitignore b/flashops/.gitignore new file mode 100644 index 0000000..0bc05b6 --- /dev/null +++ b/flashops/.gitignore @@ -0,0 +1,26 @@ +# Python +.venv/ +__pycache__/ +*.py[cod] +.pytest_cache/ +.mypy_cache/ +*.egg-info/ + +# Node +node_modules/ +.next/ +out/ +.turbo/ + +# 本地运行产物(开发态的 SQLite 库、对象存储、日志) +var/ +*.db +*.db-journal +*.log + +# 环境 +.env +.env.local + +# macOS +.DS_Store diff --git a/flashops/Makefile b/flashops/Makefile new file mode 100644 index 0000000..a781d6d --- /dev/null +++ b/flashops/Makefile @@ -0,0 +1,74 @@ +.PHONY: help setup setup-py setup-web db-reset seed demo dev dev-api dev-web dev-agent dev-agent-loop test test-py e2e clean + +SHELL := /bin/bash +ROOT := $(CURDIR) +PY := "$(ROOT)/.venv/bin/python" +PIP := "$(ROOT)/.venv/bin/pip" +CP := $(ROOT)/services/control-plane +AGENT := $(ROOT)/services/host-agent +CONSOLE := $(ROOT)/../前端UI八页面完成 +export PYTHONPATH := $(CP):$(AGENT) + +help: + @echo "FlashOps —— 常用命令" + @echo "" + @echo " make setup 建 venv、装依赖、建库、灌种子数据" + @echo " make demo 无硬件跑通一整条固件 A/B 回归(含故障注入与恢复)" + @echo " make dev 起控制平面与同源控制台 :8000" + @echo " make dev-agent 向已启动的控制平面注册并发送一次真实 Agent 心跳" + @echo " make test 后端单测 + 端到端 smoke" + @echo " make db-reset 删库重建并重灌种子" + @echo " make clean 清理本地运行产物" + +setup: setup-py db-reset + @echo "" + @echo "✅ 就绪。下一步:make demo(看它跑)或 make dev(起服务)" + +setup-py: + @test -d .venv || python3 -m venv .venv + @$(PIP) install --quiet --upgrade pip + @$(PIP) install --quiet -r services/control-plane/requirements.txt + @echo "✅ 后端依赖就绪" + +db-reset: + @rm -f "$(ROOT)/var/flashops.db" + @rm -rf "$(ROOT)/var/objects" + @mkdir -p "$(ROOT)/var/objects" + @$(PY) -m flashops_control.cli init-db + @$(PY) -m flashops_control.cli seed + @echo "✅ 数据库已重建并灌入种子数据" + +seed: + @$(PY) -m flashops_control.cli seed + +demo: + @$(PY) -m flashops_control.cli demo + +dev: + @echo "控制台 http://localhost:8000/console/Dashboard.dc.html · API http://localhost:8000/docs" + @$(PY) -m uvicorn flashops_control.main:app --host 0.0.0.0 --port 8000 --reload + +dev-api: + @$(PY) -m uvicorn flashops_control.main:app --host 0.0.0.0 --port 8000 --reload + +dev-web: + @cd "$(CONSOLE)" && "$(PY)" -m http.server 3000 + +dev-agent: + @$(PY) -m flashops_agent --server http://127.0.0.1:8000 --once + +dev-agent-loop: + @$(PY) -m flashops_agent --server http://127.0.0.1:8000 + +test: test-py + +test-py: + @"$(ROOT)/.venv/bin/pytest" services/control-plane/tests services/host-agent/tests -q + +e2e: + @"$(ROOT)/.venv/bin/pytest" services/control-plane/tests/test_e2e_vertical_slice.py -q -s + +clean: + @rm -rf "$(ROOT)/var" "$(ROOT)/.pytest_cache" + @find "$(ROOT)" -name __pycache__ -type d -prune -exec rm -rf {} + + @echo "✅ 已清理" diff --git a/flashops/README.md b/flashops/README.md new file mode 100644 index 0000000..8bbd120 --- /dev/null +++ b/flashops/README.md @@ -0,0 +1,103 @@ +# FlashOps — 存储实验室无人值守执行层 + +> 固件回归测试的**控制平面**:把一条真实 SOP 变成可执行、可恢复、可取证的状态机, +> 让工程师不必通宵值守。 + +**命名是临时的。** `FlashOps` 只是后端代号,控制台目前仍显示 `STORAGE LABOS`; +商标与最终品牌确认后,需要统一后端常量、控制台标题和文档。 + +--- + +## 当前可运行基线 + +现在已有一条**无需硬件即可端到端跑通**的真实纵向链路: + +``` +建任务 → 六项安全预检 → 资源加锁 → N 次模拟循环 + → 注入 Agent 心跳丢失 → L1/L2 失败 → L3 带外 Reset 恢复 + → 从循环检查点续跑 → Evidence Bundle 打包 → 前端实时可见 +``` + +全程使用内置模拟 DUT、测试主机与带外控制器,一条命令即可完成。当前实现重点是 +事件溯源写路径、安全门禁、状态转移、恢复记录和可复现演示;独立 Host Agent +已经完成注册、token 与心跳最小链路,但步骤租约、真实硬件适配器、失败聚类执行逻辑 +与完整权限体系仍是后续工作,不在此基线中伪装完成。 + +--- + +## 快速开始 + +前置:Python 3.9+。**不需要 Node 或 Docker。** + +```bash +make setup # 建 venv、装依赖、建库、灌种子数据 +make demo # 跑一条 8 轮模拟回归(含故障注入、恢复与证据包) +make dev # 起控制平面与控制台 :8000 +make dev-agent # 注册独立 Host Agent 并发送一次心跳 +make test # 控制平面 + Agent + API 端到端测试 +``` + +`make demo` 结束会打印 Run ID 与 Evidence Bundle 路径;`make dev` 后打开 +,运行预检并创建任务,再进入“实时运行” +即可看到同一条 Run 的事件时间线。API 文档在 。 + +--- + +## 仓库结构 + +``` +flashops/ +├─ docs/ 架构与规范(先读这里) +│ ├─ architecture.md 五层架构 → 代码目录的逐层映射 +│ ├─ domain-model.md 7 个核心领域对象 → 数据库表 +│ ├─ state-machine.md Run/Step 状态机、恢复阶梯、检查点语义 +│ ├─ adapter-sdk.md 工具适配器契约(产品扩张的关键边界) +│ ├─ workflow-spec.md SOP → YAML 工作流的 schema +│ └─ decisions/ ADR:为什么这么选,以及什么时候该推翻 +├─ services/ +│ ├─ control-plane/ FastAPI 控制平面(事件、安全、模拟执行、证据) +│ └─ host-agent/ 独立拉模式 Agent(注册、凭据、心跳) +├─ ../前端UI八页面完成/ 控制台原型;由 FastAPI 挂载到 /console +├─ docker-compose.yml 目标生产拓扑草案(尚未作为发布物验收) +└─ Makefile +``` + +--- + +## 三条必须守住的架构红线 + +写后续代码时,这三条一旦破了,返工成本最高: + +1. **控制面与数据面分离**——任务状态的唯一真相在控制平面数据库,测试主机本地只有缓存。 + Agent 挂了、主机重装了,Run 状态不丢。 + +2. **事件溯源**——所有状态变化以 append-only 事件写入 `run_events`, + 当前状态是事件的投影而非独立真相。时间线、审计、复现全部由此派生。 + *禁止*绕过 `events/recorder.py` 直接 UPDATE Run 状态。 + +3. **安全默认拒绝**——当前序列号、破坏性授权、系统盘、固件型号、Host 与 OOB + 任一不满足即在 `safety/` 层拒绝。真实 Agent 接入前还必须补签名命令模板, + 保证 Agent 只执行控制平面批准的动作。 + +--- + +## 当前状态与下一步 + +| 能力 | 状态 | 说明 | +|---|---|---| +| 14 张持久化表 | ✅ 已落地 | SQLite 建表与种子数据可重复执行 | +| Run 事件溯源 | ✅ 已落地 | 状态只能经 `events/recorder.py` 投影 | +| Run 状态转移 | ✅ 已落地 | 纯函数转移表,终态不可恢复 | +| 六项安全门禁 | ✅ 已落地 | 序列号、破坏性授权、系统盘、固件、Host、OOB | +| L1–L5 恢复决策 | ✅ 已落地 | 纯函数;演示链路实际执行 L1–L3 | +| 循环检查点续跑 | ✅ 模拟落地 | 循环边界保存,恢复后续跑 | +| Evidence Bundle | ✅ 最小实现 | `manifest.json` + `events.ndjson`,完整率 100% | +| 控制台 | 🟨 部分接入 | 任务中心与实时运行接 API;其余页面仍为静态样例 | +| 独立 Host Agent | 🟨 部分落地 | 注册、token 摘要、心跳、主机探针与 15s/30s 状态老化已实现;Step 租约待实现 | +| 真实 nvme-cli 与 OOB | ⬜ 待实现 | 需要可牺牲 DUT 与 JetKVM/PDU | +| 失败签名执行与聚类 | ⬜ 待实现 | 数据表已定义,服务逻辑未接入 | +| 多工位调度、认证与权限 | ⬜ 待实现 | 进入真实实验室前必须补齐 | + +下一步建议实现 Step 租约、ACK、续租、完成上报与幂等事件,再把内置模拟执行器迁到 +独立 Agent;完成这层后再接真实 `nvme-cli` 与 JetKVM,才能保证硬件接入不绕过 +控制面安全规则。 diff --git a/flashops/deploy/README.md b/flashops/deploy/README.md new file mode 100644 index 0000000..6b182cc --- /dev/null +++ b/flashops/deploy/README.md @@ -0,0 +1,35 @@ +# FlashOps production deployment + +- Domain: `flashops.imagebrewing.com` +- App root: `/data/wangzhan/app/storage-labos` +- Backend bind: `127.0.0.1:18080` +- Process manager: `systemd` unit `flashops.service` +- Reverse proxy: Baota Nginx vhost `flashops.imagebrewing.com.conf` +- Persistent data: `/data/wangzhan/app/storage-labos/flashops/var` +- Private environment file: `/etc/flashops/flashops.env` + +The service deliberately uses one worker because the current production store is +SQLite. The current preview console is anonymously readable and writable through +Nginx; do not connect real hardware or production data until application RBAC and +approval gates are implemented. The ACME challenge path remains available so +certificate renewal can complete. + +Before enabling Agent enrollment, create the environment file without putting +the secret in the repository or unit: + +```bash +sudo install -d -o root -g root -m 0755 /etc/flashops +sudo install -o root -g root -m 0600 /dev/null /etc/flashops/flashops.env +sudoedit /etc/flashops/flashops.env +``` + +Add `FLASHOPS_AGENT_ENROLLMENT_TOKEN=`, then restart the service. + +Useful checks: + +```bash +sudo systemctl status flashops +curl http://127.0.0.1:18080/api/v1/health +sudo nginx -t +sudo certbot renew --dry-run +``` diff --git a/flashops/deploy/certbot-reload-nginx.sh b/flashops/deploy/certbot-reload-nginx.sh new file mode 100644 index 0000000..a5a5e40 --- /dev/null +++ b/flashops/deploy/certbot-reload-nginx.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +/usr/bin/systemctl reload nginx diff --git a/flashops/deploy/flashops.service b/flashops/deploy/flashops.service new file mode 100644 index 0000000..512ca52 --- /dev/null +++ b/flashops/deploy/flashops.service @@ -0,0 +1,31 @@ +[Unit] +Description=FlashOps control plane +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +User=ubuntu +Group=ubuntu +WorkingDirectory=/data/wangzhan/app/storage-labos/flashops +EnvironmentFile=-/etc/flashops/flashops.env +Environment=PYTHONPATH=/data/wangzhan/app/storage-labos/flashops/services/control-plane:/data/wangzhan/app/storage-labos/flashops/services/host-agent +Environment=FLASHOPS_ENV=production +Environment=FLASHOPS_API_HOST=127.0.0.1 +Environment=FLASHOPS_API_PORT=18080 +Environment=FLASHOPS_DATABASE_URL=sqlite+aiosqlite:////data/wangzhan/app/storage-labos/flashops/var/flashops.db +Environment=FLASHOPS_OBJECT_STORE_URL=/data/wangzhan/app/storage-labos/flashops/var/objects +Environment=FLASHOPS_CORS_ORIGINS=https://flashops.imagebrewing.com +ExecStart=/data/wangzhan/app/storage-labos/flashops/.venv/bin/uvicorn flashops_control.main:app --host 127.0.0.1 --port 18080 --workers 1 --proxy-headers --forwarded-allow-ips=127.0.0.1 +Restart=on-failure +RestartSec=3 +TimeoutStopSec=15 +NoNewPrivileges=true +PrivateTmp=true +ProtectSystem=full +ProtectHome=true +ReadWritePaths=/data/wangzhan/app/storage-labos/flashops/var +UMask=0027 + +[Install] +WantedBy=multi-user.target diff --git a/flashops/deploy/gitea/README.md b/flashops/deploy/gitea/README.md new file mode 100644 index 0000000..51dfefb --- /dev/null +++ b/flashops/deploy/gitea/README.md @@ -0,0 +1,41 @@ +# Gitea deployment + +The team Git service runs as Gitea 1.27.0 on the existing CVM: + +- public URL: `https://git.imagebrewing.com`; +- container HTTP bind: `127.0.0.1:13000`; +- persistent data: `/data/gitea/data`; +- database: Gitea-managed SQLite; +- Git transport: HTTPS only; no extra public SSH port; +- anonymous users may browse public repositories; +- account registration requires administrator approval before sign-in. +- daily backup target: `/chucun/wangzhan-production/backups/gitea/`. + +The service is intentionally separate from the FlashOps runtime and database. +Back up `/data/gitea/data` before an image upgrade. Pin the image version and +review the Gitea release notes before changing it. + +The current server does not have the Docker Compose plugin. The checked-in +`docker-compose.yml` is the declarative service record for future rebuilds; +the running container was created with the equivalent pinned `docker run` +settings. Routine checks and restarts therefore use Docker directly: + +```bash +sudo docker ps --filter name=^gitea$ +sudo docker restart gitea +sudo docker logs --tail 100 gitea +curl -fsS http://127.0.0.1:13000/api/healthz +``` + +Install Compose or recreate the container from the checked-in definition only +during a planned maintenance window, after a verified backup. + +Nginx terminates HTTPS and proxies to the loopback-only container port. Run +`nginx -t` before every reload. Credentials and API tokens are never stored in +this directory or committed to Git. + +`gitea-backup.timer` runs daily at 03:20 Asia/Shanghai with a randomized delay. +It uses Gitea's own dump command, writes the ZIP and SHA-256 sidecar to the +mounted COS bucket, and removes the temporary local dump after a successful copy. +The live repository and SQLite database remain on the local filesystem because +COSFS is a backup destination, not a POSIX database filesystem. diff --git a/flashops/deploy/gitea/backup.sh b/flashops/deploy/gitea/backup.sh new file mode 100644 index 0000000..d96d20c --- /dev/null +++ b/flashops/deploy/gitea/backup.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +set -euo pipefail + +backup_dir=/chucun/wangzhan-production/backups/gitea +container_dump=/data/gitea-backup.zip +host_dump=/data/gitea/data/gitea-backup.zip +stamp=$(date -u +%Y%m%dT%H%M%SZ) +target="$backup_dir/gitea-$stamp.zip" + +install -d -o ubuntu -g ubuntu -m 0770 "$backup_dir" +if [ -e "$host_dump" ]; then + unlink "$host_dump" +fi + +docker exec -u git gitea sh -c \ + 'mkdir -p /tmp/gitea-dump && find /tmp/gitea-dump -mindepth 1 -delete' +docker exec -u git gitea gitea dump \ + --config /data/gitea/conf/app.ini \ + --file "$container_dump" \ + --tempdir /tmp/gitea-dump + +cp "$host_dump" "$target" +sha256sum "$target" > "$target.sha256" +unlink "$host_dump" +printf 'Gitea backup created: %s\n' "$target" diff --git a/flashops/deploy/gitea/docker-compose.yml b/flashops/deploy/gitea/docker-compose.yml new file mode 100644 index 0000000..13948ce --- /dev/null +++ b/flashops/deploy/gitea/docker-compose.yml @@ -0,0 +1,28 @@ +services: + gitea: + image: gitea/gitea:1.27.0 + container_name: gitea + restart: unless-stopped + environment: + USER_UID: "1000" + USER_GID: "1000" + GITEA__database__DB_TYPE: sqlite3 + GITEA__database__PATH: /data/gitea/gitea.db + GITEA__server__DOMAIN: git.imagebrewing.com + GITEA__server__ROOT_URL: https://git.imagebrewing.com/ + GITEA__server__HTTP_PORT: "3000" + GITEA__server__DISABLE_SSH: "true" + GITEA__server__OFFLINE_MODE: "true" + GITEA__service__DISABLE_REGISTRATION: "false" + GITEA__service__REGISTER_MANUAL_CONFIRM: "true" + GITEA__service__REQUIRE_SIGNIN_VIEW: "false" + GITEA__service__DEFAULT_ALLOW_CREATE_ORGANIZATION: "false" + GITEA__repository__DEFAULT_PRIVATE: public + GITEA__security__INSTALL_LOCK: "true" + GITEA__cron__ENABLED: "true" + GITEA__log__MODE: console + GITEA__log__LEVEL: Info + ports: + - "127.0.0.1:13000:3000" + volumes: + - /data/gitea/data:/data diff --git a/flashops/deploy/gitea/gitea-backup.service b/flashops/deploy/gitea/gitea-backup.service new file mode 100644 index 0000000..8530b3b --- /dev/null +++ b/flashops/deploy/gitea/gitea-backup.service @@ -0,0 +1,11 @@ +[Unit] +Description=Back up Gitea to mounted COS bucket +Requires=docker.service +After=docker.service network-online.target + +[Service] +Type=oneshot +ExecStart=/usr/local/sbin/flashops-gitea-backup +Nice=10 +IOSchedulingClass=best-effort +IOSchedulingPriority=7 diff --git a/flashops/deploy/gitea/gitea-backup.timer b/flashops/deploy/gitea/gitea-backup.timer new file mode 100644 index 0000000..e4262eb --- /dev/null +++ b/flashops/deploy/gitea/gitea-backup.timer @@ -0,0 +1,11 @@ +[Unit] +Description=Daily Gitea backup timer + +[Timer] +OnCalendar=*-*-* 03:20:00 Asia/Shanghai +RandomizedDelaySec=10m +Persistent=true +Unit=flashops-gitea-backup.service + +[Install] +WantedBy=timers.target diff --git a/flashops/deploy/gitea/nginx-http.conf b/flashops/deploy/gitea/nginx-http.conf new file mode 100644 index 0000000..40782fb --- /dev/null +++ b/flashops/deploy/gitea/nginx-http.conf @@ -0,0 +1,25 @@ +server { + listen 80; + server_name git.imagebrewing.com; + + access_log /www/wwwlogs/git.imagebrewing.com.log; + error_log /www/wwwlogs/git.imagebrewing.com.error.log; + + location ^~ /.well-known/acme-challenge/ { + root /var/www/html; + default_type text/plain; + } + + location / { + proxy_pass http://127.0.0.1:13000; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_read_timeout 300s; + proxy_send_timeout 300s; + } +} diff --git a/flashops/deploy/gitea/nginx.conf b/flashops/deploy/gitea/nginx.conf new file mode 100644 index 0000000..84cc788 --- /dev/null +++ b/flashops/deploy/gitea/nginx.conf @@ -0,0 +1,47 @@ +server { + listen 80; + server_name git.imagebrewing.com; + + location ^~ /.well-known/acme-challenge/ { + root /var/www/html; + default_type text/plain; + } + + location / { + return 301 https://$host$request_uri; + } +} + +server { + listen 443 ssl; + http2 on; + server_name git.imagebrewing.com; + + ssl_certificate /etc/letsencrypt/live/git.imagebrewing.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/git.imagebrewing.com/privkey.pem; + ssl_protocols TLSv1.2 TLSv1.3; + ssl_session_timeout 1d; + ssl_session_cache shared:GiteaSSL:10m; + ssl_session_tickets off; + + access_log /www/wwwlogs/git.imagebrewing.com.log; + error_log /www/wwwlogs/git.imagebrewing.com.error.log; + + client_max_body_size 100m; + add_header X-Content-Type-Options nosniff always; + add_header Referrer-Policy strict-origin-when-cross-origin always; + add_header X-Frame-Options SAMEORIGIN always; + + location / { + proxy_pass http://127.0.0.1:13000; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_read_timeout 300s; + proxy_send_timeout 300s; + } +} diff --git a/flashops/deploy/nginx-http.conf b/flashops/deploy/nginx-http.conf new file mode 100644 index 0000000..946feb0 --- /dev/null +++ b/flashops/deploy/nginx-http.conf @@ -0,0 +1,26 @@ +server { + listen 80; + server_name flashops.imagebrewing.com; + + access_log /www/wwwlogs/flashops.imagebrewing.com.log; + error_log /www/wwwlogs/flashops.imagebrewing.com.error.log; + + location ^~ /.well-known/acme-challenge/ { + auth_basic off; + root /var/www/html; + default_type text/plain; + } + + location / { + proxy_pass http://127.0.0.1:18080; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_read_timeout 300s; + proxy_send_timeout 300s; + } +} diff --git a/flashops/deploy/nginx-https.conf b/flashops/deploy/nginx-https.conf new file mode 100644 index 0000000..fc09a4a --- /dev/null +++ b/flashops/deploy/nginx-https.conf @@ -0,0 +1,47 @@ +server { + listen 80; + server_name flashops.imagebrewing.com; + + location ^~ /.well-known/acme-challenge/ { + auth_basic off; + root /var/www/html; + default_type text/plain; + } + + location / { + return 301 https://$host$request_uri; + } +} + +server { + listen 443 ssl; + http2 on; + server_name flashops.imagebrewing.com; + + ssl_certificate /etc/letsencrypt/live/flashops.imagebrewing.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/flashops.imagebrewing.com/privkey.pem; + ssl_protocols TLSv1.2 TLSv1.3; + ssl_session_timeout 1d; + ssl_session_cache shared:FlashOpsSSL:10m; + ssl_session_tickets off; + + access_log /www/wwwlogs/flashops.imagebrewing.com.log; + error_log /www/wwwlogs/flashops.imagebrewing.com.error.log; + + add_header X-Content-Type-Options nosniff always; + add_header Referrer-Policy strict-origin-when-cross-origin always; + add_header X-Frame-Options SAMEORIGIN always; + + location / { + proxy_pass http://127.0.0.1:18080; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_read_timeout 300s; + proxy_send_timeout 300s; + } +} diff --git a/flashops/docker-compose.yml b/flashops/docker-compose.yml new file mode 100644 index 0000000..347c60d --- /dev/null +++ b/flashops/docker-compose.yml @@ -0,0 +1,78 @@ +# 生产形态(客户内网私有化单机部署)。 +# 开发不需要它:make dev 用 SQLite + 进程内总线 + 本地目录,零外部依赖。 +# +# 注意:Host Agent 不在这里。它跑在客户的测试主机上(Windows 服务 / systemd), +# 不进容器——它要碰真实设备、真实驱动、真实串口。 + +services: + postgres: + image: postgres:16-alpine + environment: + POSTGRES_DB: flashops + POSTGRES_USER: flashops + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?必须设置} + volumes: + - pgdata:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U flashops"] + interval: 5s + timeout: 3s + retries: 10 + restart: unless-stopped + + redis: + image: redis:7-alpine + command: redis-server --appendonly yes + volumes: + - redisdata:/data + restart: unless-stopped + + minio: + image: minio/minio:latest + command: server /data --console-address ":9001" + environment: + MINIO_ROOT_USER: ${MINIO_USER:-flashops} + MINIO_ROOT_PASSWORD: ${MINIO_PASSWORD:?必须设置} + volumes: + - miniodata:/data + ports: + - "9001:9001" # 控制台,仅内网暴露 + restart: unless-stopped + + control-plane: + build: + context: . + dockerfile: services/control-plane/Dockerfile + environment: + FLASHOPS_DATABASE_URL: postgresql+asyncpg://flashops:${POSTGRES_PASSWORD}@postgres:5432/flashops + FLASHOPS_BUS_URL: redis://redis:6379/0 + FLASHOPS_OBJECT_STORE_URL: s3://minio:9000/flashops + FLASHOPS_OBJECT_STORE_KEY: ${MINIO_USER:-flashops} + FLASHOPS_OBJECT_STORE_SECRET: ${MINIO_PASSWORD} + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_started + minio: + condition: service_started + ports: + - "8000:8000" # Agent 要能连上,所以对实验室网段开放 + restart: unless-stopped + + console: + build: + context: . + dockerfile: apps/console/Dockerfile + environment: + FLASHOPS_API_BASE: http://control-plane:8000 + depends_on: + - control-plane + ports: + - "3000:3000" + restart: unless-stopped + +volumes: + pgdata: + redisdata: + miniodata: diff --git a/flashops/docs/adapter-sdk.md b/flashops/docs/adapter-sdk.md new file mode 100644 index 0000000..2945aa7 --- /dev/null +++ b/flashops/docs/adapter-sdk.md @@ -0,0 +1,90 @@ +# Adapter SDK:产品扩张的关键边界 + +方案 §6.4 的判断是对的——**适配器是产品扩张的关键**。每接一个客户, +新增的工作量应该收敛到"写一个适配器",而不是改引擎。这一波把这条边界钉死。 + +实现:`services/host-agent/flashops_agent/adapters/` + +## 契约(7 个方法,一个都不能少) + +```python +class ToolAdapter(Protocol): + name: str + version: str + + def discover(self, ctx: AdapterContext) -> Capabilities: ... + def precheck(self, ctx: AdapterContext) -> CheckResult: ... + def execute(self, step: StepSpec, ctx: AdapterContext) -> ExecutionHandle: ... + def collect(self, handle: ExecutionHandle) -> EvidenceArtifact: ... + def cancel(self, handle: ExecutionHandle) -> None: ... + def health(self) -> HealthStatus: ... + def normalize_result(self, raw: RawResult) -> UnifiedResult: ... +``` + +| 方法 | 职责 | 什么时候被调 | +|---|---|---| +| `discover` | 报告本工具在这台主机上能干什么(版本、支持的设备、能力位) | Agent 启动 / 资产刷新 | +| `precheck` | 执行前自检:工具在不在、权限够不够、设备在不在、参数合不合法 | 每个步骤执行前,**失败即拒绝执行** | +| `execute` | 启动执行,**立即返回句柄,不阻塞** | 步骤开始 | +| `collect` | 从句柄收集产物:stdout/stderr、结果文件、设备日志 | 步骤结束 / 中途取证 | +| `cancel` | 终止执行(含进程树),保证不留孤儿进程 | 紧急停止 / 超时 / 恢复前 | +| `health` | 适配器自身健康(工具还在吗、许可证过期没) | 心跳周期 | +| `normalize_result` | 把工具原生输出翻译成统一结果模型 | `collect` 之后 | + +## `normalize_result` 是最重要的一个 + +它决定了失败签名能不能跨工具聚类。原生输出千奇百怪,统一模型只有一种: + +```python +@dataclass +class UnifiedResult: + outcome: Literal["PASS", "FAIL", "ERROR", "TIMEOUT"] + error_codes: List[str] # 归一化后的错误码,如 ["NVME_STATUS_0x2002"] + log_templates: List[str] # 日志模板化后的指纹,数字/路径已替换为占位符 + metrics: Dict[str, float] # iops / latency_p99 / temperature_c ... + device_state: DeviceState # 枚举状态、固件版本、SMART 关键项 + integrity: IntegrityState # OK / MISMATCH / NOT_CHECKED + artifacts: List[str] # 产物 URI +``` + +**适配器的实现者只需要保证一件事**:同样的故障,`error_codes` 与 +`log_templates` 要稳定。不稳定 → 签名散开 → 聚类失效 → 同一个问题重复提单, +客户第一时间就会发现这个系统在制造噪音。 + +日志模板化规则在 `flashops_agent/adapters/templating.py`: +数字 → ``,十六进制 → ``,路径 → ``,UUID → ``, +时间戳 → ``。所以 +`"nvme0n1: I/O error, sector 12345678 at 2026-07-27T03:14:15"` +归一为 `"nvmen: I/O error, sector at "`。 + +## 这一波带的适配器 + +| 适配器 | 状态 | 说明 | +|---|---|---| +| `ShellAdapter` | ✅ 真实 | 执行签名命令模板,进程树管理、超时、输出捕获 | +| `NvmeCliAdapter` | ⚠️ 真实骨架 + 模拟回退 | 命令与解析是真的;无真实设备时走模拟器 | +| `FioAdapter` | ⚠️ 真实骨架 + 模拟回退 | 解析 fio `--output-format=json` | +| `SimulatedDutAdapter` | ✅ 模拟 | 可注入故障的假 DUT,让全链路无硬件可跑 | +| `VendorFlashAdapter` | ⬜ 占位 | 客户私有刷写工具——**这个必须等拿到真实 SOP 再写** | + +`VendorFlashAdapter` 故意留空并在导入时抛 `NotImplementedError`。 +猜客户的刷写工具长什么样是纯浪费——报告 Phase 0 的结论是先拿 SOP 再写代码。 + +## 写一个新适配器的清单 + +1. 继承 `BaseAdapter`,实现 7 个方法 +2. 在 `adapters/__init__.py` 的 `REGISTRY` 里注册(key 就是工作流 YAML 里的 `adapter:`) +3. 危险命令**必须**在控制平面 `safety/templates.py` 注册签名模板; + 适配器里不允许拼接任意命令行——参数只能来自模板 schema 校验过的字典 +4. 写一个 `tests/adapters/test_.py`:至少覆盖 + `precheck` 失败路径、超时路径、`normalize_result` 的两个不同故障输出 +5. 跑 `make test` 里的适配器契约测试(`test_adapter_contract.py` 会对 + `REGISTRY` 里每个适配器自动断言 7 个方法齐全且签名正确) + +## 边界纪律 + +- 适配器**不知道** Run、Workflow、状态机的存在。它只认 `StepSpec` 和 `AdapterContext`。 +- 适配器**不做**重试和恢复决策。挂了就如实报告,重试与恢复是控制平面的事。 +- 适配器**不写**数据库,产物写本地临时目录,由 Agent 上传。 +- 适配器里**不允许**出现 `if customer == "X"` 这种分支。客户差异靠不同适配器 + + 工作流参数表达,不靠代码里的 if。 diff --git a/flashops/docs/agent-protocol.md b/flashops/docs/agent-protocol.md new file mode 100644 index 0000000..a383428 --- /dev/null +++ b/flashops/docs/agent-protocol.md @@ -0,0 +1,90 @@ +# 控制平面 ↔ Host Agent 协议 + +> **当前状态(2026-07-27)**:独立 Host Agent 已实现注册、注册口令、bearer token、 +> 本地 `0600` 凭据文件、主机指纹和心跳;控制平面只保存 token SHA-256 摘要。 +> 心跳迟到 15 秒会把 Host 降级为 `DEGRADED`,丢失 30 秒会标记为 `OFFLINE`; +> 安全预检会先刷新该状态,避免失联 Host 被误判为可用。 +> Step 租约、事件、完成与产物端点仍是下一阶段契约。`make demo` 暂时继续使用 +> 控制平面内置模拟执行器验证状态、恢复与证据链。 + +Agent 是**拉模式**。控制平面永远不主动连接测试主机。 + +理由:客户测试主机在内网/NAT 后面,很多实验室根本不给外部反连; +拉模式还顺带解决了 Agent 重启后的重新接入问题。 + +## 端点 + +| 状态 | 方法 | 路径 | 用途 | +|---|---|---|---| +| 已实现 | POST | `/api/v1/agent/register` | 首次注册 / token 轮换;上报主机指纹与工具能力 | +| 已实现 | POST | `/api/v1/agent/{agent_id}/heartbeat` | bearer 心跳,上报健康和设备探针;返回待办指令 | +| 已实现 | GET | `/api/v1/agent/hosts` | 查看 Host 与 Agent 在线投影,不返回 token | +| 待实现 | POST | `/api/v1/agent/{agent_id}/lease` | 领取下一个步骤(长轮询,最多挂 20s) | +| 待实现 | POST | `/api/v1/agent/{agent_id}/steps/{step_id}/events` | 批量上报执行事件与日志片段 | +| 待实现 | POST | `/api/v1/agent/{agent_id}/steps/{step_id}/complete` | 上报步骤终态 + UnifiedResult + 产物清单 | +| 待实现 | POST | `/api/v1/agent/{agent_id}/artifacts` | 上传产物(日志 / 结果文件 / 画面) | + +带外控制器走独立端点(它必须能在主机死后独立上报): + +| 方法 | 路径 | 用途 | +|---|---|---| +| POST | `/api/v1/oob/{controller_id}/heartbeat` | 带外心跳 + 电源状态 + 温度 + 画面指纹 | +| POST | `/api/v1/oob/{controller_id}/observation` | 主动上报观测(蓝屏画面、掉电、按钮触发) | + +## 心跳返回的指令 + +心跳响应已经带 `commands` 字段;当前固定为空数组。命令队列接入后,Agent 收到后立即执行: + +```json +{ + "ok": true, + "server_time": "2026-07-27T03:14:15Z", + "commands": [ + {"kind": "CANCEL_STEP", "step_id": "..."}, + {"kind": "SOFT_RESTART", "reason": "recovery_L1"}, + {"kind": "EMERGENCY_STOP", "run_id": "..."}, + {"kind": "REFRESH_ASSETS"} + ] +} +``` + +紧急停止走心跳而不是新连接——心跳是唯一能保证到达的通道。 +最坏情况延迟 = 心跳间隔(5s)。真正需要毫秒级的停止靠带外物理急停,不靠软件。 + +## 租约(lease)语义 + +``` +Agent ──lease──▶ 控制平面 + ├─ 有活:分配步骤,step → DISPATCHED,写租约(TTL 60s) + └─ 没活:长轮询挂起最多 20s,返回 204 +Agent ──ack───▶ step → RUNNING +(租约到期未 ack 或未 complete)→ step 回 PENDING,重新派发 +``` + +租约 TTL 必须**大于**步骤超时?不——恰恰相反:租约由 Agent 在执行期间通过心跳续期。 +Agent 死了 → 心跳停 → 租约到期 → 步骤回收。这是 Agent 崩溃能被发现的机制之一 +(另一条是心跳超时判定,见 state-machine.md §5)。 + +## 认证 + +首次注册带 `X-FlashOps-Enrollment-Token`。开发态未配置注册口令时允许本机演示; +生产态未配置时注册接口返回 503。注册成功下发 bearer token,之后每个请求带 +`Authorization: Bearer `。`agent_id` 与 `test_host_id` 绑定,重新注册会轮换 token。 + +原始 token 仅存于 Agent 本机 `0600` state 文件;控制平面数据库只保存 SHA-256 摘要。 +Agent 客户端保留可选 gateway Basic Auth 能力,供未来重新启用边界认证或部署在其他网关后使用; +当前 `flashops.imagebrewing.com` 预览环境未启用这层认证。 + +**下一波必须升级**:方案 §6.2 要求"每个 Agent 使用唯一证书或密钥"。 +bearer token 在客户内网够用,但要进客户安全评审得上 mTLS。 +升级点在 `api/deps.py::require_agent()` 一处。 + +## 幂等(待实现) + +Step 租约接入时,所有 Agent → 控制平面的 Step 写请求必须带 +`Idempotency-Key`(Agent 生成的 UUID)。控制平面需要记录并拒绝重复副作用; +`run_events` 已有唯一约束 `(run_id, idempotency_key)`,但当前注册 / 心跳链路尚未实现 +通用的请求幂等存储。 + +这一条在真实实验室里不是可选项:主机重启、网线松动、Wi-Fi 掉线是常态, +没有幂等就会出现"一次故障记了三条"的时间线,取证时说不清。 diff --git a/flashops/docs/architecture.md b/flashops/docs/architecture.md new file mode 100644 index 0000000..73da7b4 --- /dev/null +++ b/flashops/docs/architecture.md @@ -0,0 +1,99 @@ +# 架构:五层 → 代码目录的逐层映射 + +> **实现状态(2026-07-27)**:本文描述目标架构。当前已落地控制平面的模型、 +> 安全门禁、事件记录、Run 转移表、恢复决策、最小证据包、内置模拟执行器,以及 +> 独立 Host Agent 的注册、token、心跳和 Host 状态老化链路;Step 租约、Adapter +> 执行、消息总线替换和生产对象存储仍未落地。 + +方案 §5.1 定义了五层架构。这里给出每一层**落到哪个目录、边界在哪、谁不能调用谁**。 + +``` +┌─────────────────────────────────────────────────────────────┐ +│ 交互与集成层 apps/console (Next.js) · CLI · Open API │ +├─────────────────────────────────────────────────────────────┤ +│ 控制平面 services/control-plane/flashops_control/ │ +│ services/ 编排 safety/ 门禁 api/ 接口 │ +├─────────────────────────────────────────────────────────────┤ +│ 执行平面 services/host-agent/flashops_agent/ │ +│ adapters/ 工具适配器 │ +├─────────────────────────────────────────────────────────────┤ +│ 带外平面 services/host-agent/flashops_agent/oob/ │ +│ (独立进程/独立网络,模拟实现在 simulator/) │ +├─────────────────────────────────────────────────────────────┤ +│ 证据与智能层 control-plane/.../evidence/ · signatures/ │ +│ events/ 事件总线 │ +└─────────────────────────────────────────────────────────────┘ +``` + +## 依赖方向(单向,不可逆) + +``` +console ──HTTP/SSE──▶ control-plane ◀──HTTP──── host-agent + │ │ + │ ├─▶ adapters ─▶ 客户工具 + ▼ │ + 数据库 └─▶ oob ─▶ 带外控制器 +``` + +**硬规则:** + +- `host-agent` **不得**导入 `control-plane` 的任何模块。两者只通过 `docs/agent-protocol.md` + 定义的 HTTP 契约通信。理由:Agent 要能单文件分发到客户 Windows 机器, + 控制平面代码不进客户测试主机。 +- `control-plane` **不得**主动连接 Agent(Agent 是拉模式)。理由:客户测试主机在 + 内网/NAT 后面,反向连接在真实实验室里活不下来。 +- `engine/` **不得**直接读写数据库。它只操作 `Snapshot` 值对象,返回 `Effect` 列表。 + 持久化由 `runtime.py` 施加。理由:状态机要能不起数据库单测。 +- `api/` **不得**包含业务判断。路由只做校验 + 调用 `engine`/`services`。 +- 任何危险动作(刷写、Format、Sanitize、断电)**必须**先过 `safety/`, + 且 `safety/` 的拒绝发生在下发给 Agent 之前。 + +## 控制平面内部分层 + +``` +flashops_control/ +├─ config.py 配置(产品名、DSN、路径、超时策略) +├─ db.py 引擎/会话/建表 +├─ models/ SQLAlchemy 表定义(贫血模型,只管持久化) +├─ schemas.py Pydantic 出入参(当前最小 API 契约) +├─ events/ +│ ├─ bus.py 进程内事件总线(生产换 NATS/Redis,接口不变) +│ └─ recorder.py 事件溯源写入:唯一允许改 Run 状态的入口 +├─ engine/ +│ ├─ states.py Run/Step 状态枚举 + 转移表(纯数据) +│ ├─ recovery.py 五级恢复阶梯策略(纯函数) +│ └─ (目标)planner/runtime:独立 Agent 接入后补齐 +├─ safety/ +│ ├─ gates.py DUT 绑定 / 系统盘保护 / 破坏性白名单 +│ └─ templates.py 签名命令模板注册表 + 参数 schema 校验 +├─ signatures/ (目标)失败签名(8 要素哈希)与聚类 +├─ evidence/ 最小 Evidence Bundle(manifest + 事件流) +├─ services/runs.py 当前内置模拟编排(后续拆成 Agent + runtime) +├─ seed.py 可重复执行的模拟资产与工作流 +└─ api/ FastAPI 路由 +``` + +**`engine/` 的纯度是刻意的。** 当前 `states.py` / `recovery.py` +不导入 SQLAlchemy、不导入 FastAPI、不做 I/O、不看时钟 +(时间从 `Snapshot.now` 传入)。这让状态机的全部分支都能用普通 pytest 覆盖, +不需要起库、不需要 sleep。后面几波会不断往状态机里加分支(新故障类型、 +新恢复策略、多工位调度),这条边界是唯一能防止它烂掉的东西。 + +## 开发形态 vs 生产形态 + +| 组件 | 开发(`make dev`) | 生产(`docker-compose`) | 换的时候动哪 | +|---|---|---|---| +| 数据库 | SQLite (aiosqlite) | PostgreSQL 16 | 只改 `DATABASE_URL` | +| 队列/总线 | 进程内 asyncio | Redis / NATS | `events/bus.py` 换实现 | +| 对象存储 | `var/objects/` 本地目录 | MinIO | `storage.py` 换实现 | +| Agent | 内置模拟执行器 + 独立 Agent 心跳 | 客户主机上的 systemd/Windows 服务 | 补齐 Step lease/runtime | +| 带外 | 模拟控制器 | 树莓派 / JetKVM / 智能 PDU | `oob/` 换实现 | + +三处"换实现"都在接口后面,且开发态实现本身就是测试替身——不存在"生产才发现跑不通"。 + +## 为什么不用 Temporal / Airflow + +见 [ADR-0003](decisions/0003-own-state-machine-over-temporal.md)。一句话: +恢复语义(带外断电、冻结现场、误盘防护)是本产品的差异化本身, +不能交给通用工作流引擎的重试模型。等到多工位跨节点调度成为瓶颈时再评估 Temporal, +`runtime.py` 是唯一需要替换的文件。 diff --git a/flashops/docs/decisions/0001-monorepo-and-stack.md b/flashops/docs/decisions/0001-monorepo-and-stack.md new file mode 100644 index 0000000..4755ee9 --- /dev/null +++ b/flashops/docs/decisions/0001-monorepo-and-stack.md @@ -0,0 +1,39 @@ +# ADR-0001:Monorepo 与技术栈选型 + +- 日期:2026-07-27 +- 状态:已接受 + +## 背景 + +第一波要同时出前端控制台、控制平面、Host Agent 三个可交付物,团队规模是 1-2 人。 + +## 决定 + +单仓库(monorepo),三个可独立部署的单元:`apps/console`、`services/control-plane`、 +`services/host-agent`。技术栈按方案 §6.1:Next.js + FastAPI + PostgreSQL。 + +**开发态零外部依赖**:SQLite 替 Postgres、进程内 asyncio 替 Redis、 +本地目录替 MinIO。三者都在接口后面,`docker-compose.yml` 给出生产形态。 + +## 理由 + +- 1-2 人团队用多仓库,跨仓改一个接口要开三个 PR,纯损耗。 +- 控制平面与 Agent 的 HTTP 契约会在接第一个客户时频繁改。同仓库能一次改完、 + 一次跑通端到端测试。 +- 开发态零依赖是为了**降低启动摩擦**:这台机器上没有 Docker,客户现场的 + Windows 测试主机上也大概率装不了 Docker。能 `python -m` 直接跑起来的东西, + 在实验室里活得久。 +- Python 3.9 兼容:客户测试主机的 Python 版本不可控,Agent 必须往低了兼容。 + 所以全仓库用 `Optional[X]` 而不是 `X | None`,用 `List[X]` 而不是 `list[X]`。 + +## 代价 + +- SQLite 与 Postgres 有行为差异(并发写、JSON 查询、事务隔离)。 + 缓解:ORM 层不用任何方言特有类型;CI 后续要在 Postgres 上再跑一遍测试。 +- monorepo 在团队超过 5 人后会需要更强的 CI 分区。届时再拆。 + +## 什么时候推翻 + +- 团队 >5 人且前后端分离开发节奏明显不同步 → 拆仓。 +- Agent 需要单文件分发到无 Python 环境的 Windows → 把 Agent 用 Go 重写 + (方案 §6.1 已经把这条写成演进建议)。届时 HTTP 契约不变,只换实现语言。 diff --git a/flashops/docs/decisions/0002-event-sourcing.md b/flashops/docs/decisions/0002-event-sourcing.md new file mode 100644 index 0000000..2a26ca3 --- /dev/null +++ b/flashops/docs/decisions/0002-event-sourcing.md @@ -0,0 +1,44 @@ +# ADR-0002:以事件溯源作为 Run 的唯一真相 + +- 日期:2026-07-27 +- 状态:已接受 + +## 背景 + +产品要交付的三件事——**统一时间线**、**审计**、**自动复现**——都需要回答同一个问题: +"当时到底按什么顺序发生了什么"。 + +同时,观测是**双通道**的:Agent 报一套,带外控制器报一套,两者时钟不同步, +主机断电时 Agent 那一路会直接消失。 + +## 决定 + +`run_events` 是 append-only 的唯一真相。`runs` / `run_steps` / `recovery_actions` +是可以从事件重放重建的**读模型**。 + +序号 `seq` 由控制平面单点分配(不是时间戳排序),Agent 事件与带外事件进同一条序列。 + +仓储层**不提供** `update_run_state()` 类 API。改状态的唯一入口是 +`events/recorder.py::record()`,它写事件并同步更新投影。 + +## 理由 + +- 主机断电时,Agent 的最后几条日志可能永远到不了。带外控制器的观测 +(掉电时刻、画面指纹)是那段时间唯一的证据。两路事件必须在同一条时间线上 +才能交叉校验——"Agent 最后一条日志 seq=812,带外报掉电 seq=813"这种判断 +只有单点序号能给。 +- 审计要求记录"操作者、审批者、命令模板版本、输入参数、结果、撤销动作" +(方案 §6.6)。这些天然是事件,硬塞进当前状态表会做成一堆冗余字段。 +- 自动复现(§8.4)需要"失败前后的最小步骤区间"。有完整事件流才能裁剪。 + +## 代价 + +- 写路径变长,每次状态变化多一次插入。 +- `run_events` 会很大:100 循环 × 每轮 ~30 事件 = 3000 条/Run。 + 缓解:事件按 run_id 分区友好,日志正文不进事件表(只存对象存储 URI)。 +- 开发者容易忍不住直接 UPDATE。缓解:仓储层不给这个 API,code review 卡这一条。 + +## 什么时候推翻 + +不推翻。真要优化,是加快照(每 N 个事件存一次状态快照加速重放), +不是放弃事件溯源。 diff --git a/flashops/docs/decisions/0003-own-state-machine-over-temporal.md b/flashops/docs/decisions/0003-own-state-machine-over-temporal.md new file mode 100644 index 0000000..dd95a38 --- /dev/null +++ b/flashops/docs/decisions/0003-own-state-machine-over-temporal.md @@ -0,0 +1,51 @@ +# ADR-0003:自研状态机,不用 Temporal / Airflow + +- 日期:2026-07-27 +- 状态:已接受(方案 §6.1 把 Temporal 列为演进建议,这里给出不在首版用的理由) + +## 背景 + +工作流编排有成熟方案:Temporal、Airflow、Prefect、OpenTAP。 +自研状态机通常是坏味道。 + +## 决定 + +首版自研:`engine/states.py` 转移表 + `engine/state_machine.py` 纯函数 ++ `engine/runtime.py` 异步循环。 + +## 理由 + +产品的差异化恰好落在通用引擎**不管**的那一层: + +1. **恢复语义不是重试。** Temporal 的重试模型是"再调一次这个 activity"。 + 我们需要的是"主机蓝屏了 → 带外触发主板 Reset → 等主机起来 → 验证 DUT + 重新枚举 → 从检查点续跑"。这是跨越进程、跨越主机生死的物理恢复, + 不是函数重试。硬套通用引擎会变成在 activity 里塞一堆状态判断,比自研更难维护。 + +2. **非幂等步骤默认不重跑。** 通用引擎的默认值是"重试是安全的"。 + 我们这里最贵的一条规则是"刷写步骤挂了**不要**自动重跑"。 + 跟框架默认值对着干,不如自己控制。 + +3. **冻结现场是一等状态。** 数据完整性失败要立刻停止一切覆盖性动作并保留现场。 + 通用引擎里这是"失败",我们这里它是一个需要保持很久、等人来看的活状态。 + +4. **可测试性。** 纯函数状态机能把"30 秒心跳超时后带外在线则走 L3"这种规则 + 在毫秒内测完。挂在 Temporal 上要起测试环境。后面几波会疯狂往状态机加分支, + 测试成本是决定性因素。 + +5. 依赖成本:Temporal 需要自己的数据库和服务集群。客户是**内网私有化部署**, + 多一个必须运维的组件就多一个交付摩擦。 + +## 代价 + +- 跨节点调度、持久化定时器、版本化工作流这些 Temporal 白送的能力要自己做。 + 这一波不需要(单工位),Phase 3 多工位时会痛。 +- 自研状态机容易随时间腐化成 if 堆。缓解:转移表是纯数据、`decide()` 是纯函数、 + 每加一个分支必须配单测,三条规矩写进了 `docs/state-machine.md §6`。 + +## 什么时候推翻 + +多工位跨节点调度成为瓶颈时(Phase 3,预计 20+ 工位)。 +届时替换范围仅限 `runtime.py`——`states.py` / `state_machine.py` / `recovery.py` +是纯逻辑,可以原样搬进 Temporal 的 workflow 定义里。 +这也是把它们做成纯函数的第二个理由。 diff --git a/flashops/docs/decisions/0004-safety-in-control-plane.md b/flashops/docs/decisions/0004-safety-in-control-plane.md new file mode 100644 index 0000000..c4a7cea --- /dev/null +++ b/flashops/docs/decisions/0004-safety-in-control-plane.md @@ -0,0 +1,51 @@ +# ADR-0004:安全门禁放在控制平面,Agent 保持"笨" + +- 日期:2026-07-27 +- 状态:已接受 + +## 背景 + +危险动作有三类:刷固件、Format/Sanitize、断电。任何一次误盘 = PoC 判定失败 +(方案 §9.3:0 次错盘、0 次系统盘破坏)。 + +门禁可以放在 Agent(离设备近,判断准)或控制平面(离决策近,可审计)。 + +## 决定 + +**全部放控制平面**,且拒绝发生在**下发之前**。Agent 只执行已批准的命令模板 + +schema 校验过的参数,自己不做任何"这条命令安不安全"的判断。 + +Agent 侧保留的唯一防线是 `precheck`(设备在不在、路径对不对), +它是**执行前自检**,不是安全决策。 + +## 理由 + +- **可审计**:审批记录、模板版本、操作者、参数必须与决策在同一个地方, + 否则审计链断在 Agent 上。客户安全评审第一个问的就是这个。 +- **Agent 可信度低**:Agent 跑在客户的测试主机上,那台机器会蓝屏、会被人手动改配置、 + 会装乱七八糟的工具。安全判断不能依赖一个随时可能处于异常状态的环境。 +- **升级路径**:安全规则改了,改控制平面就全网生效。要靠 Agent 判断, + 就得推送 Agent 升级到每台客户主机——在实验室里这是以周计的事。 +- **可测试**:门禁是纯函数(`safety/gates.py`),误盘场景可以在单测里穷举, + 不需要真的接一块盘来试。 + +## 具体门禁(`safety/gates.py`) + +1. **DUT 绑定**:序列号 + 设备路径 + `allow_destructive` 标签三信号一致才放行。 + 任一不匹配 → 拒绝,记 `SAFETY_REJECTED` 事件。 +2. **系统盘保护**:解析目标设备的挂载点/启动标志/分区表,命中系统盘立即拒绝。 + 这一条**没有** override 开关,代码里不给绕过的口子。 +3. **命令模板白名单**:危险命令只能来自 `safety/templates.py` 注册表, + 参数受 JSON Schema 约束。不接受自由文本命令行。 +4. **环境指纹一致性**:A/B 对比的两次运行环境指纹不一致 → 结论标记为不可比。 + +## 代价 + +- 控制平面必须掌握足够的设备信息才能判断(依赖 Agent 上报的设备探针数据)。 + 上报延迟 → 判断基于稍旧的数据。缓解:危险步骤执行前强制刷新一次探针, + Agent 的 `precheck` 再做一次现场核对,两者不一致直接拒绝。 +- 多一次往返。危险动作本来就不该快。 + +## 什么时候推翻 + +不推翻。可以增强(加人工审批门、加双人复核),但不下放到 Agent。 diff --git a/flashops/docs/decisions/0005-simulator-as-first-class.md b/flashops/docs/decisions/0005-simulator-as-first-class.md new file mode 100644 index 0000000..0272d8e --- /dev/null +++ b/flashops/docs/decisions/0005-simulator-as-first-class.md @@ -0,0 +1,43 @@ +# ADR-0005:模拟器是一等公民,不是测试脚手架 + +- 日期:2026-07-27 +- 状态:已接受 + +## 背景 + +第一波没有真实硬件(没有可牺牲的 DUT、没有带外控制器、没有温箱)。 +常规做法是先写代码、等硬件到位再联调。 + +## 决定 + +把**模拟 DUT + 模拟带外控制器 + 故障注入器**做成产品代码的一部分 +(`services/host-agent/flashops_agent/simulator/`),与真实适配器共用同一套接口, +而不是塞进 `tests/` 当替身。 + +模拟器支持注入的故障至少覆盖报告 Phase 1a 要求验证的三类: +杀 Agent、蓝屏/panic、拔网线;外加掉盘与数据完整性失败。 + +## 理由 + +1. **它是长期资产,不是临时替身。** 有了真硬件之后,模拟器仍然是唯一能 + 在 CI 里跑"100 循环 + 注入 20 次故障"的东西。真设备跑一轮要几小时, + CI 里不可能天天跑。 +2. **恢复逻辑的测试覆盖只能靠它。** 五级恢复阶梯里的 L4/L5(ATX 长按、AC 断电) + 在真机上每测一次都有风险且很慢。这条路径恰恰是产品价值所在,必须能高频回归。 +3. **它是谈判道具的底座。** 报告把 Phase 1a 的产出定义为"一台会自救的演示台—— + 同时是合伙人与客户谈判的最强道具"。在拿到硬件之前,模拟器版本已经能把 + 完整故事演一遍:注入蓝屏 → 看着它自己救回来 → 断点续跑 → 出证据包。 +4. **它划清了接口。** 能被模拟器替换掉的地方,就是硬件接入的边界。 + 写模拟器的过程本身就在逼迫接口设计正确。 + +## 代价 + +- 模拟器与真实实现可能漂移(模拟器里能过、真机上过不了)。 + 缓解:`tests/test_adapter_contract.py` 对模拟与真实适配器跑**同一套契约测试**; + 真实适配器接入后,契约测试是第一道闸。 +- 有"在模拟器上跑通了就以为完事了"的风险。缓解:README 的能力表里, + 模拟实现一律标 ⚠️ 或"模拟",不标 ✅ 真实。 + +## 什么时候推翻 + +不推翻。真实硬件接入后模拟器保留,作为 CI 的默认执行后端。 diff --git a/flashops/docs/domain-model.md b/flashops/docs/domain-model.md new file mode 100644 index 0000000..73c010d --- /dev/null +++ b/flashops/docs/domain-model.md @@ -0,0 +1,96 @@ +# 领域模型:7 个核心对象 → 14 张表 + +方案 §5.3 列了 7 个核心领域对象。当前 SQLAlchemy 元数据包含 14 张表。 +额外表用于事件溯源、恢复动作、资源锁、失败实例与审计;它们不是新的顶层产品概念, +而是核心对象的行为记录和读模型。 + +## 对象 → 表 + +| 方案对象 | 表 | 补充说明 | +|---|---|---| +| DUT | `duts` | 序列号是防错盘的第一信号 | +| Test Host | `test_hosts` + `oob_controllers` | 带外控制器独立成表:它必须能在主机死后独活 | +| Firmware Artifact | `firmware_artifacts` | 哈希 + 签名 + 适用型号,缺一不可审计 | +| Workflow | `workflows` | 存 spec 原文 + spec_hash,改一个字就是新版本 | +| Run | `runs` + `run_steps` + `run_events` + `recovery_actions` | 见下 | +| Failure Signature | `failure_signatures` + `run_failures` | 签名是聚类锚点,失败实例挂在它下面 | +| Evidence Bundle | `evidence_bundles` | manifest 记录完整率,缺字段要能查出来 | +| —(新增) | `resource_locks` | DUT/主机独占,防并发踩踏 | +| —(新增) | `audit_log` | 谁在什么时候用哪个模板做了什么 | + +## Run 为什么拆成四张表 + +`runs` 只存**当前投影**(状态、进度、结论)。真相在 `run_events`。 + +``` +run_events (append-only, 唯一真相) + │ projection + ▼ +runs / run_steps / recovery_actions (可重建的读模型) +``` + +任何时刻都能靠重放 `run_events` 重建 `runs` 的状态——这是"事件溯源"落地的含义, +也是统一时间线、审计、自动复现三个功能的共同地基。 + +**代价**:写路径必须走 `events/recorder.py`。仓储层故意**没有** +`update_run_state()` 这种 API。想改状态?记一条事件,投影自己会跟上。 + +## 关键字段的设计理由 + +### `duts.allow_destructive` + `duts.serial` + +破坏性动作(Format / Sanitize / 刷写)的三重校验:序列号匹配、 +`allow_destructive=True`、设备路径不是系统盘。三个信号缺一个就拒绝执行。 +误盘一次 = PoC 判定失败(方案 §9.3),所以这个字段不给 API 直接改, +只能走带审批记录的资产管理接口。 + +### `runs.env_fingerprint`(JSON,不可变快照) + +任务开始时冻结:主板 / BIOS / OS / 内核 / 驱动 / Agent 版本 / 工具版本 / DUT 固件。 +A/B 对比的前提是环境相同——固件之外任何一项变了,对比结论就不成立。 +签名哈希也吃这个指纹,所以"换了台机器复现不出来"能被自动识别为不同签名。 + +### `runs.unattended_completion` + `runs.human_touches` + +这两个字段是**销售武器**,不是技术指标。UCR(无人值守完成率)和人工触碰次数 +是客户签字确认 ROI 的凭据(方案 §9.3、报告 Phase 2 现场指标)。 +从第一行代码就记,不要等到要卖了才补。 + +### `run_events.seq`(每个 run 内单调递增) + +时间戳会因为主机断电、时钟漂移、带外控制器与主机时钟不同步而乱序。 +`seq` 由控制平面单点分配,保证时间线可重放。带外事件与 Agent 事件 +进同一条序列——双通道观测的交叉校验靠它。 + +### `failure_signatures.hash`(8 要素) + +``` +hash(workflow_step, normalized_error_codes, log_templates, host_state, + dut_enumeration_state, data_integrity_state, recovery_outcome, + environment_fingerprint) +``` + +只用错误码会把"掉盘"和"脚本超时"归成一类,聚类就废了。 +`log_templates` 是日志模板化后的结果(数字/路径/时间被替换为占位符), +不是原始日志——否则每条日志都是新签名。 + +### `run_failures.failure_class` + +`DUT_DEFECT` / `INFRA_FAILURE` / `SCRIPT_FAILURE` / `DATA_INTEGRITY` / `UNKNOWN`。 + +**`INFRA_FAILURE` 必须与 `DUT_DEFECT` 分开统计**(方案 §4.3)。 +把网络断了、磁盘满了算成 SSD 缺陷,客户第一周就不信任这个系统了。 +基础设施误报率 <5% 是 MVP 硬指标。 + +## 状态字段一览 + +| 表 | 字段 | 取值 | +|---|---|---| +| `runs` | `state` | QUEUED / PREFLIGHT / RUNNING / RECOVERING / PAUSED / FROZEN / COMPLETED / ABORTED / REJECTED | +| `runs` | `verdict` | PASS / FAIL / INCONCLUSIVE / null | +| `run_steps` | `state` | PENDING / DISPATCHED / RUNNING / SUCCEEDED / FAILED / TIMED_OUT / SKIPPED / CANCELLED | +| `test_hosts` | `status` | ONLINE / DEGRADED / OFFLINE / UNKNOWN | +| `duts` | `status` | IDLE / IN_USE / QUARANTINED / MISSING | +| `recovery_actions` | `outcome` | RECOVERED / FAILED / ESCALATED / FROZEN | + +详见 [state-machine.md](state-machine.md)。 diff --git a/flashops/docs/state-machine.md b/flashops/docs/state-machine.md new file mode 100644 index 0000000..16f5db5 --- /dev/null +++ b/flashops/docs/state-machine.md @@ -0,0 +1,134 @@ +# 状态机、恢复阶梯与检查点语义 + +这是整个产品的核心。差异化不在"能跑命令",在**跑挂了之后会发生什么**。 + +当前实现:`engine/states.py`(Run 转移表)、`engine/recovery.py`(恢复纯函数)、 +`events/recorder.py`(事件与投影写入口)以及 `services/runs.py`(内置模拟编排)。 +Step 租约状态机与独立 runtime 属于下一阶段。 + +--- + +## 1. Run 状态机 + +``` + ┌──────────┐ + │ QUEUED │ 等资源(DUT/主机独占锁) + └────┬─────┘ + │ 锁到手 + ┌────▼─────┐ + │ PREFLIGHT│ 安全门禁:序列号绑定、系统盘保护、 + └──┬────┬──┘ 破坏性白名单、环境指纹冻结 + 门禁拒绝 │ │ 全过 + ┌────▼┐ │ + │REJEC│ │ + │ TED │ │ + └─────┘ │ + ┌───────▼──────┐ + ┌─────────▶│ RUNNING │◀────────┐ + │ └──┬───┬───┬───┘ │ 恢复成功, + │ 人工继续 │ │ │ │ 从检查点续跑 + ┌────┴───┐ │ │ │ ┌────┴──────┐ + │ PAUSED │◀───────┘ │ └───────▶│ RECOVERING│ + └────────┘ 人工暂停 │ 心跳超时/ └────┬──────┘ + │ 蓝屏/掉盘 │ 阶梯耗尽 + 全部循环完成 │ 或数据完整性失败 + ┌─────▼─────┐ ┌────▼────┐ + │ COMPLETED │ │ FROZEN │ 冻结现场, + │ PASS/FAIL │ └─────────┘ 停止一切覆盖性动作 + └───────────┘ +``` + +任何非终态 → `ABORTED`(紧急停止:Web / 物理按钮 / 带外均可触发)。 + +**终态**:`COMPLETED` / `ABORTED` / `FROZEN` / `REJECTED`。终态不可再转移, +`assert_transition()` 会抛 `IllegalTransition`——这个异常在生产里意味着有代码 +绕过了事件溯源,属于必须修的 bug,不是可以吞掉的告警。 + +转移表是 `states.py` 里的一份纯数据 `RUN_TRANSITIONS: Dict[RunState, FrozenSet[RunState]]`。 +加新状态时只改这张表 + 补一条单测,不改 `runtime.py`。 + +## 2. Step 状态机 + +``` +PENDING ──▶ DISPATCHED ──▶ RUNNING ──┬──▶ SUCCEEDED + ▲ ├──▶ FAILED ──┐ + │ ├──▶ TIMED_OUT┤ + └──── 重试(attempt+1)◀───────────┴─────────────┘ + └──▶ CANCELLED / SKIPPED +``` + +- `DISPATCHED`:控制平面已把步骤租给某个 Agent,等待 Agent 确认接手。 + 租约有超时——Agent 领了活就死了,租约到期步骤回到 `PENDING` 重新派发。 +- 重试次数由工作流步骤的 `retry` 声明,**默认 0**。 + 危险步骤(刷写、Format)默认不重试:重试一次刷写可能把盘刷成砖。 + +## 3. 五级恢复阶梯 + +对应方案 §7.2。触发条件是**双通道观测**的判定结果,不是单一信号: + +| 级别 | 动作 | 前提 | 典型触发 | +|---|---|---|---| +| L1 | `AGENT_SOFT` Agent 优雅停止/软重启进程 | Agent 心跳还在 | 测试脚本卡死、进程僵死 | +| L2 | `OS_REBOOT` 通过 OS 远程通道重启 | 主机网络还通 | Agent 进程崩溃、驱动异常 | +| L3 | `OOB_RESET` 带外触发主板 Reset | 带外控制器在线 | 心跳超时 + 带外仍在线(蓝屏典型) | +| L4 | `OOB_ATX_POWER` 带外模拟 ATX 长按关机再开机 | 带外控制器在线 | Reset 无效(挂在 BIOS/固件态) | +| L5 | `OOB_AC_CYCLE` 整机 AC 断电 → 安全间隔 → 上电 | 带外控制器在线 | ATX 无效;也是 DUT 掉盘的最后手段 | +| — | `FREEZE` 冻结现场,停止自动恢复 | — | 超过限定次数;或**数据完整性失败立即触发** | + +**关键规则(`recovery.py` 里是硬编码的,不给配置覆盖):** + +1. **数据完整性失败直接跳到 FREEZE**,不走阶梯。 + 哈希/读回比较不一致意味着现场有价值,任何重启都可能毁掉证据。 +2. **带外控制器离线时,L3-L5 不可用**,直接降级到 FREEZE 并标记 + `INFRA_FAILURE`——不能因为带外没接就把 DUT 判成坏盘。 +3. **每一级恢复都要留证**:恢复前抓画面/串口/温度,恢复后验证 DUT 重新枚举。 + `recovery_actions` 表记录每一级的 trigger / outcome / evidence_uri。 +4. **恢复成功 ≠ 步骤成功**。恢复只是把系统救回可执行状态, + 原步骤按检查点语义决定是续跑还是重跑。 + +## 4. 检查点与断点续跑 + +检查点在**步骤边界**创建,不在步骤中间——中间态无法保证幂等。 + +``` +loop_index=37, step=fio-workload, state=SUCCEEDED + └─▶ checkpoint 写入:{loop_index: 37, next_step: verify-enumeration, dut_fw: "A"} +``` + +恢复后的续跑规则: + +| 挂在哪 | 恢复后 | +|---|---| +| 步骤已 `SUCCEEDED`,检查点已落 | 从下一步继续 | +| 步骤 `RUNNING` 时挂了,步骤幂等(`idempotent: true`) | 重跑该步骤 | +| 步骤 `RUNNING` 时挂了,步骤非幂等(默认,如刷写) | **不重跑**,标记 `INCONCLUSIVE`,进入人工确认 | +| 步骤是循环体中的一环 | 回到该 `loop_index` 的起点重跑整轮 | + +非幂等步骤不自动重跑,是这一层最保守也最重要的默认值。 +"自动重试把盘刷坏"是这个产品最容易砸招牌的失败模式。 + +## 5. 心跳与失联判定 + +``` +Agent 心跳间隔 5s + ├─ 15s 无心跳 → 主机 DEGRADED,记事件,不动作 + ├─ 30s 无心跳 → 判定失联,查带外: + │ ├─ 带外在线 + 主机有电 → 走恢复阶梯 L3 + │ ├─ 带外在线 + 主机无电 → INFRA_FAILURE(供电问题,不是 DUT) + │ └─ 带外也离线 → INFRA_FAILURE + FREEZE(不能瞎判) + └─ 心跳恢复 → 校验 Run 状态一致性,续跑 +``` + +阈值在 `config.py`,但**判定逻辑在 `state_machine.py` 里是纯函数**: +输入 `(last_heartbeat_age, oob_online, oob_power_state, now)`,输出判定。 +所以"30 秒超时"这种行为可以不等 30 秒就测出来。 + +## 6. 怎么给状态机加东西(后续几波会反复做) + +1. 在 `states.py` 加状态/事件枚举 + 改转移表 +2. 在 `state_machine.py::decide()` 加分支,返回新的 `Effect` +3. 在 `runtime.py` 加该 `Effect` 的施加逻辑(唯一碰 I/O 的地方) +4. 在 `tests/test_state_machine.py` 加纯函数单测——不起库、不 sleep + +如果第 2 步发现需要在 `decide()` 里做 I/O,说明抽象漏了, +应该把需要的数据加进 `Snapshot`,而不是在纯函数里开个口子。 diff --git a/flashops/docs/workflow-spec.md b/flashops/docs/workflow-spec.md new file mode 100644 index 0000000..bfcfd3c --- /dev/null +++ b/flashops/docs/workflow-spec.md @@ -0,0 +1,123 @@ +# 工作流规范:SOP → 可执行状态机 + +> **当前状态**:这是待实现的发布与物化规范。数据库中已经保存一份符合该结构的 +> 演示工作流,但 `WorkflowSpec` 完整 schema 校验、YAML 发布器与 `planner.py` +> 尚未落地;当前 API 不接受任意工作流上传。 + +工作流必须是**确定性的结构化配置**,不是让大模型自由生成命令(方案 §6.3、§8.1)。 +AI 可以把自然语言 SOP 草拟成下面这份 YAML,但**必须过 schema 校验 + 人工发布**才能执行。 + +目标实现位置:`engine/planner.py`(物化)、`schemas.py::WorkflowSpec`(校验) +与 `workflows/fw-ab-regression.yaml`(版本化示例)。 + +## Schema + +```yaml +key: fw-ab-regression # 全局唯一,改 key = 新工作流 +name: 固件 A/B 回归 +version: 3 # 每次发布 +1;spec_hash 变了但 version 没变 → 拒绝发布 +danger_level: high # none | low | high —— high 需要审批记录 +source_sop: "客户X_固件回归SOP_v2.1(脱敏)" + +params: # 运行时参数,带类型与默认值 + loops: {type: int, default: 100, min: 1, max: 10000} + dut_serial: {type: string, required: true} + host: {type: string, required: true} + fw_a: {type: string, required: true} # firmware_artifact id + fw_b: {type: string, required: true} + +resources: # 独占锁,PREFLIGHT 阶段获取,终态释放 + - {type: dut, ref: params.dut_serial, exclusive: true} + - {type: test_host, ref: params.host, exclusive: true} + +policy: + heartbeat_timeout_s: 30 + max_recovery_per_loop: 3 # 单轮循环内恢复超过 3 次 → FREEZE + max_recovery_total: 20 + on_data_integrity_failure: freeze # 硬编码值,写在这里只是为了显式 + +steps: + - key: preflight + type: precheck + adapter: safety + + - key: flash-fw-a + type: command + adapter: nvme_cli + template: nvme_fw_download_commit # 只能引用已注册的签名模板 + params: {firmware: "{{ params.fw_a }}", slot: 1, action: 3} + danger: high + timeout_s: 300 + idempotent: false # 默认值,写出来是为了提醒:挂了不自动重跑 + checkpoint: true + + - key: regression-loop + type: loop + count: "{{ params.loops }}" + body: + - key: workload + type: command + adapter: fio + template: fio_seq_rw + timeout_s: 600 + retry: 1 + idempotent: true + - key: enumeration-check + type: device_check + adapter: nvme_cli + expect: {enumerated: true, link_speed_min: "8GT/s"} + - key: integrity-check + type: command + adapter: shell + template: sha256_readback + on_fail: freeze # 覆盖默认处置 + checkpoint: true # 每轮结束落检查点 + + - key: report + type: report + adapter: builtin +``` + +## 步骤类型(MVP 六种) + +| type | 语义 | 备注 | +|---|---|---| +| `command` | 执行签名命令模板 | 唯一能碰危险动作的类型 | +| `device_check` | 设备探针断言(枚举/固件版本/链路速率/SMART) | 不改变设备状态 | +| `wait` | 等待固定时长或条件 | 用于温度稳定、上电间隔 | +| `loop` | 固定次数循环,body 是步骤列表 | 支持嵌套一层 | +| `precheck` | 安全门禁 | 每个工作流的第一步都应该是它 | +| `report` | 生成报告与 Evidence Bundle | 内置适配器 | + +企业版才加的:`http`、`parallel`、`subflow`、`approval`、`instrument`。 +这一波故意不做——`planner.py` 里遇到未知 type 直接拒绝发布,不静默跳过。 + +## 模板变量 + +只支持 `{{ params.X }}` 和 `{{ loop.index }}` 两种插值,**不支持表达式求值**。 +理由:能求值就能注入。需要计算的场景写进适配器,不写进 YAML。 + +## 版本与 Git + +工作流 YAML 进 `workflows/` 目录、进 Git。发布时控制平面记录: + +``` +workflows.spec 原文 +workflows.spec_hash sha256(规范化后的 spec) +workflows.version 发布号 +``` + +`spec_hash` 变了而 `version` 没变 → 拒绝发布。理由:A/B 对比的结论必须能追溯到 +**具体哪一版流程**,否则"上周跑的和这周跑的是不是同一个流程"就说不清了。 + +## `on_fail` 的可选处置 + +| 值 | 行为 | +|---|---| +| `retry`(默认,受 `retry:` 次数约束) | 重试该步骤 | +| `fail_run` | 整个 Run 判 FAIL 并结束 | +| `continue` | 记失败,继续下一步(用于非关键采集步骤) | +| `freeze` | 立刻冻结现场,停止一切覆盖性动作 | +| `recover` | 进入恢复阶梯 | + +数据完整性相关的步骤**只允许** `freeze`,planner 校验时强制。 diff --git a/flashops/services/control-plane/flashops_control/__init__.py b/flashops/services/control-plane/flashops_control/__init__.py new file mode 100644 index 0000000..6cad310 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/__init__.py @@ -0,0 +1,5 @@ +"""FlashOps 控制平面。""" + +from .config import APP_NAME + +__all__ = ["APP_NAME"] diff --git a/flashops/services/control-plane/flashops_control/api/__init__.py b/flashops/services/control-plane/flashops_control/api/__init__.py new file mode 100644 index 0000000..7f786b1 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/api/__init__.py @@ -0,0 +1 @@ +"""FastAPI 路由。""" diff --git a/flashops/services/control-plane/flashops_control/api/agents.py b/flashops/services/control-plane/flashops_control/api/agents.py new file mode 100644 index 0000000..3a9b3f7 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/api/agents.py @@ -0,0 +1,276 @@ +"""拉模式 Host Agent 的注册、认证与心跳 API。""" +from __future__ import annotations + +import asyncio +import hmac +import secrets +import time +import uuid +from typing import Dict, List, Optional + +from fastapi import APIRouter, Header, HTTPException, Response, status +from sqlalchemy import select + +from ..config import get_settings +from ..db import session_scope +from ..enums import HostStatus +from ..models import TestHost, iso_z, utcnow +from ..schemas import ( + AgentHeartbeatBody, + AgentLeaseBody, + AgentRegisterBody, + AgentStepAttemptBody, + AgentStepCompleteBody, + AgentStepEventsBody, +) +from ..services.agent_status import refresh_agent_host +from ..services.step_leases import ( + StepLeaseConflict, + acknowledge_step, + complete_step, + record_step_events, + renew_step, + try_lease_next_step, +) +from .deps import agent_token_digest, require_agent + +router = APIRouter(prefix="/api/v1/agent", tags=["host-agent"]) + + +def _idempotency_key(value: str) -> str: + if len(value) > 60: + raise HTTPException(status_code=422, detail="Idempotency-Key 过长") + try: + uuid.UUID(value) + except (ValueError, AttributeError) as exc: + raise HTTPException( + status_code=422, detail="Idempotency-Key 必须是 UUID" + ) from exc + return value + + +def _lease_conflict(exc: StepLeaseConflict) -> HTTPException: + return HTTPException(status_code=status.HTTP_409_CONFLICT, detail=str(exc)) + + +def _check_enrollment_token(provided: Optional[str]) -> None: + settings = get_settings() + required = settings.agent_enrollment_token + if settings.env == "production" and not required: + raise HTTPException( + status_code=status.HTTP_503_SERVICE_UNAVAILABLE, + detail="生产环境尚未配置 Agent 注册口令", + ) + if required and not hmac.compare_digest(provided or "", required): + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Agent 注册口令无效", + ) + + +async def _resolve_host(body: AgentRegisterBody) -> Dict[str, object]: + async with session_scope() as session: + host: Optional[TestHost] = None + if body.host_id: + host = await session.get(TestHost, body.host_id) + if host is None: + raise HTTPException(status_code=404, detail="Test Host 不存在") + elif body.host_name: + host = await session.scalar( + select(TestHost).where(TestHost.name == body.host_name) + ) + else: + host = await session.scalar(select(TestHost).order_by(TestHost.created_at)) + + if host is None: + host = TestHost(name=body.host_name or "agent-host-" + uuid.uuid4().hex[:8]) + session.add(host) + await session.flush() + + raw_token = secrets.token_urlsafe(32) + host.agent_id = host.agent_id or "agent_" + uuid.uuid4().hex[:20] + host.agent_token = agent_token_digest(raw_token) + host.agent_version = body.agent_version + host.os_family = body.os_family + if body.os_version is not None: + host.os_version = body.os_version + if body.kernel is not None: + host.kernel = body.kernel + if body.cpu is not None: + host.cpu = body.cpu + if body.motherboard is not None: + host.motherboard = body.motherboard + if body.bios_version is not None: + host.bios_version = body.bios_version + if body.ip_address is not None: + host.ip_address = body.ip_address + if body.toolchain: + host.toolchain = body.toolchain + if body.labels: + host.labels = {**(host.labels or {}), **body.labels} + host.status = HostStatus.ONLINE.value + host.last_heartbeat_at = utcnow() + payload = { + "agent_id": host.agent_id, + "host_id": host.id, + "token": raw_token, + "heartbeat_interval_s": get_settings().timing.heartbeat_interval_s, + "server_time": iso_z(host.last_heartbeat_at), + } + return payload + + +@router.post("/register", status_code=status.HTTP_201_CREATED) +async def register_agent( + body: AgentRegisterBody, + enrollment_token: Optional[str] = Header( + default=None, alias="X-FlashOps-Enrollment-Token" + ), +) -> Dict[str, object]: + _check_enrollment_token(enrollment_token) + return await _resolve_host(body) + + +@router.post("/{agent_id}/heartbeat") +async def heartbeat( + agent_id: str, + body: AgentHeartbeatBody, + authorization: Optional[str] = Header(default=None), +) -> Dict[str, object]: + async with session_scope() as session: + host = await require_agent(session, agent_id, authorization) + host.status = ( + HostStatus.ONLINE.value if body.healthy else HostStatus.DEGRADED.value + ) + host.last_heartbeat_at = utcnow() + if body.agent_version: + host.agent_version = body.agent_version + if body.ip_address: + host.ip_address = body.ip_address + if body.toolchain: + host.toolchain = body.toolchain + if body.device_probe: + host.labels = { + **(host.labels or {}), + "agent_probe": body.device_probe, + } + return { + "ok": True, + "server_time": iso_z(host.last_heartbeat_at), + "heartbeat_interval_s": get_settings().timing.heartbeat_interval_s, + "commands": [], + } + + +@router.post("/{agent_id}/lease") +async def lease_step( + agent_id: str, + body: AgentLeaseBody, + authorization: Optional[str] = Header(default=None), +) -> object: + deadline = time.monotonic() + min( + body.wait_timeout_s, get_settings().timing.lease_poll_timeout_s + ) + while True: + async with session_scope() as session: + host = await require_agent(session, agent_id, authorization) + lease = await try_lease_next_step(session, host) + if lease is not None: + return lease + remaining = deadline - time.monotonic() + if remaining <= 0: + return Response(status_code=status.HTTP_204_NO_CONTENT) + await asyncio.sleep(min(get_settings().engine_tick_s, remaining)) + + +@router.post("/{agent_id}/steps/{step_id}/ack") +async def ack_step( + agent_id: str, + step_id: str, + body: AgentStepAttemptBody, + authorization: Optional[str] = Header(default=None), + idempotency_key: str = Header(alias="Idempotency-Key"), +) -> Dict[str, object]: + key = _idempotency_key(idempotency_key) + try: + async with session_scope() as session: + host = await require_agent(session, agent_id, authorization) + return await acknowledge_step(session, host, step_id, body.attempt, key) + except StepLeaseConflict as exc: + raise _lease_conflict(exc) from exc + + +@router.post("/{agent_id}/steps/{step_id}/renew") +async def renew_step_lease( + agent_id: str, + step_id: str, + body: AgentStepAttemptBody, + authorization: Optional[str] = Header(default=None), + idempotency_key: str = Header(alias="Idempotency-Key"), +) -> Dict[str, object]: + key = _idempotency_key(idempotency_key) + try: + async with session_scope() as session: + host = await require_agent(session, agent_id, authorization) + return await renew_step(session, host, step_id, body.attempt, key) + except StepLeaseConflict as exc: + raise _lease_conflict(exc) from exc + + +@router.post("/{agent_id}/steps/{step_id}/events") +async def step_events( + agent_id: str, + step_id: str, + body: AgentStepEventsBody, + authorization: Optional[str] = Header(default=None), + idempotency_key: str = Header(alias="Idempotency-Key"), +) -> Dict[str, object]: + key = _idempotency_key(idempotency_key) + try: + async with session_scope() as session: + host = await require_agent(session, agent_id, authorization) + return await record_step_events( + session, host, step_id, body.attempt, body.events, key + ) + except StepLeaseConflict as exc: + raise _lease_conflict(exc) from exc + + +@router.post("/{agent_id}/steps/{step_id}/complete") +async def finish_step( + agent_id: str, + step_id: str, + body: AgentStepCompleteBody, + authorization: Optional[str] = Header(default=None), + idempotency_key: str = Header(alias="Idempotency-Key"), +) -> Dict[str, object]: + key = _idempotency_key(idempotency_key) + try: + async with session_scope() as session: + host = await require_agent(session, agent_id, authorization) + return await complete_step(session, host, step_id, body, key) + except StepLeaseConflict as exc: + raise _lease_conflict(exc) from exc + + +@router.get("/hosts") +async def list_agent_hosts() -> List[Dict[str, object]]: + async with session_scope() as session: + hosts = ( + await session.scalars(select(TestHost).order_by(TestHost.name)) + ).all() + for host in hosts: + refresh_agent_host(host) + return [ + { + "host_id": host.id, + "host_name": host.name, + "agent_id": host.agent_id, + "agent_version": host.agent_version, + "status": host.status, + "last_heartbeat_at": iso_z(host.last_heartbeat_at), + "ip_address": host.ip_address, + "toolchain": host.toolchain, + } + for host in hosts + ] diff --git a/flashops/services/control-plane/flashops_control/api/deps.py b/flashops/services/control-plane/flashops_control/api/deps.py new file mode 100644 index 0000000..bb87e04 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/api/deps.py @@ -0,0 +1,47 @@ +"""HTTP dependencies shared by Agent endpoints.""" +from __future__ import annotations + +import hashlib +import hmac +from typing import Optional + +from fastapi import HTTPException, status +from sqlalchemy import select +from sqlalchemy.ext.asyncio import AsyncSession + +from ..models import TestHost + + +def agent_token_digest(token: str) -> str: + return hashlib.sha256(token.encode("utf-8")).hexdigest() + + +def bearer_token(authorization: Optional[str]) -> str: + scheme, separator, value = (authorization or "").partition(" ") + if not separator or scheme.lower() != "bearer" or not value.strip(): + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Agent bearer token 缺失", + headers={"WWW-Authenticate": "Bearer"}, + ) + return value.strip() + + +async def require_agent( + session: AsyncSession, + agent_id: str, + authorization: Optional[str], +) -> TestHost: + host = await session.scalar(select(TestHost).where(TestHost.agent_id == agent_id)) + token = bearer_token(authorization) + if ( + host is None + or not host.agent_token + or not hmac.compare_digest(host.agent_token, agent_token_digest(token)) + ): + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Agent 身份无效", + headers={"WWW-Authenticate": "Bearer"}, + ) + return host diff --git a/flashops/services/control-plane/flashops_control/api/routes.py b/flashops/services/control-plane/flashops_control/api/routes.py new file mode 100644 index 0000000..0d00274 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/api/routes.py @@ -0,0 +1,258 @@ +"""控制台所需的最小纵向 API。""" +from __future__ import annotations + +from typing import Dict, List + +from fastapi import APIRouter, HTTPException, status +from sqlalchemy import func, select + +from ..db import session_scope +from ..enums import EventKind, EventSource, RunState, Severity +from ..events import append_event +from ..models import EvidenceBundle, Run, RunEvent, ResourceLock, utcnow +from ..schemas import CreateRunBody, HumanActionBody, PreflightBody +from ..services.runs import ( + cancel_simulation, + create_run, + event_to_dict, + prepare_agent_run, + preflight_for_body, + run_to_dict, + start_simulation, +) + +router = APIRouter(prefix="/api/v1") + + +@router.get("/health") +async def health() -> Dict[str, str]: + return {"status": "ok", "service": "flashops-control-plane"} + + +@router.post("/preflight") +async def preflight(body: PreflightBody) -> Dict[str, object]: + try: + async with session_scope() as session: + return await preflight_for_body(session, body) + except LookupError as exc: + raise HTTPException(status_code=404, detail=str(exc)) from exc + + +@router.post("/runs", status_code=status.HTTP_201_CREATED) +async def create_run_route(body: CreateRunBody) -> Dict[str, object]: + try: + async with session_scope() as session: + run = await create_run(session, body) + if body.execution_mode == "agent_dry_run": + await prepare_agent_run(session, run) + payload = run_to_dict(run) + if body.execution_mode == "simulated": + start_simulation(run.id) + return payload + except LookupError as exc: + raise HTTPException(status_code=400, detail=str(exc)) from exc + + +@router.post("/runs/demo", status_code=status.HTTP_201_CREATED) +async def create_demo_run() -> Dict[str, object]: + return await create_run_route(CreateRunBody()) + + +@router.get("/runs") +async def list_runs(limit: int = 30) -> List[Dict[str, object]]: + async with session_scope() as session: + runs = ( + await session.scalars( + select(Run).order_by(Run.created_at.desc()).limit(min(max(limit, 1), 100)) + ) + ).all() + return [run_to_dict(run) for run in runs] + + +@router.get("/runs/{run_id}") +async def get_run(run_id: str) -> Dict[str, object]: + async with session_scope() as session: + run = await session.get(Run, run_id) + if run is None: + raise HTTPException(status_code=404, detail="Run 不存在") + payload = run_to_dict(run) + bundle = await session.scalar( + select(EvidenceBundle) + .where(EvidenceBundle.run_id == run_id) + .order_by(EvidenceBundle.created_at.desc()) + ) + payload["evidence"] = ( + { + "id": bundle.id, + "uri": bundle.uri, + "completeness": bundle.completeness, + "size_bytes": bundle.size_bytes, + } + if bundle + else None + ) + return payload + + +@router.get("/runs/{run_id}/events") +async def get_events(run_id: str, after_seq: int = 0) -> List[Dict[str, object]]: + async with session_scope() as session: + exists = await session.get(Run, run_id) + if exists is None: + raise HTTPException(status_code=404, detail="Run 不存在") + events = ( + await session.scalars( + select(RunEvent) + .where(RunEvent.run_id == run_id, RunEvent.seq > after_seq) + .order_by(RunEvent.seq) + ) + ).all() + return [event_to_dict(event) for event in events] + + +@router.post("/runs/{run_id}/pause") +async def pause_run(run_id: str, body: HumanActionBody) -> Dict[str, object]: + async with session_scope() as session: + run = await session.get(Run, run_id) + if run is None: + raise HTTPException(status_code=404, detail="Run 不存在") + if run.state != RunState.RUNNING.value: + raise HTTPException(status_code=409, detail="只有 RUNNING 任务可以暂停") + await append_event( + session, + run, + EventKind.HUMAN_TOUCH.value, + "{0}: {1}".format(body.actor, body.reason), + source=EventSource.HUMAN.value, + projection={ + "human_touches": run.human_touches + 1, + "unattended_completion": False, + }, + ) + await append_event( + session, + run, + EventKind.RUN_PAUSED.value, + "任务已在安全检查点暂停", + source=EventSource.HUMAN.value, + target_state=RunState.PAUSED.value, + ) + return run_to_dict(run) + + +@router.post("/runs/{run_id}/resume") +async def resume_run(run_id: str, body: HumanActionBody) -> Dict[str, object]: + async with session_scope() as session: + run = await session.get(Run, run_id) + if run is None: + raise HTTPException(status_code=404, detail="Run 不存在") + if run.state != RunState.PAUSED.value: + raise HTTPException(status_code=409, detail="只有 PAUSED 任务可以继续") + await append_event( + session, + run, + EventKind.HUMAN_TOUCH.value, + "{0}: {1}".format(body.actor, body.reason), + source=EventSource.HUMAN.value, + projection={ + "human_touches": run.human_touches + 1, + "unattended_completion": False, + }, + ) + await append_event( + session, + run, + EventKind.RUN_RESUMED.value, + "人工确认后从检查点继续", + source=EventSource.HUMAN.value, + target_state=RunState.RUNNING.value, + ) + return run_to_dict(run) + + +@router.post("/runs/{run_id}/emergency-stop") +async def emergency_stop(run_id: str, body: HumanActionBody) -> Dict[str, object]: + async with session_scope() as session: + run = await session.get(Run, run_id) + if run is None: + raise HTTPException(status_code=404, detail="Run 不存在") + if run.state in { + RunState.COMPLETED.value, + RunState.ABORTED.value, + RunState.FROZEN.value, + RunState.REJECTED.value, + }: + raise HTTPException(status_code=409, detail="终态任务不能再次停止") + await append_event( + session, + run, + EventKind.HUMAN_TOUCH.value, + "{0}: {1}".format(body.actor, body.reason), + source=EventSource.HUMAN.value, + severity=Severity.CRITICAL.value, + projection={ + "human_touches": run.human_touches + 1, + "unattended_completion": False, + }, + ) + await append_event( + session, + run, + EventKind.RUN_ABORTED.value, + "紧急停止已执行,现场与检查点已保留", + source=EventSource.HUMAN.value, + severity=Severity.CRITICAL.value, + target_state=RunState.ABORTED.value, + projection={"ended_at": utcnow()}, + ) + await session.execute( + ResourceLock.__table__.delete().where(ResourceLock.run_id == run.id) + ) + payload = run_to_dict(run) + cancel_simulation(run_id) + return payload + + +@router.get("/dashboard/summary") +async def dashboard_summary() -> Dict[str, object]: + async with session_scope() as session: + total = await session.scalar(select(func.count()).select_from(Run)) or 0 + running = ( + await session.scalar( + select(func.count()).select_from(Run).where( + Run.state.in_( + [ + RunState.QUEUED.value, + RunState.PREFLIGHT.value, + RunState.RUNNING.value, + RunState.RECOVERING.value, + ] + ) + ) + ) + or 0 + ) + completed = ( + await session.scalar( + select(func.count()).select_from(Run).where( + Run.state == RunState.COMPLETED.value + ) + ) + or 0 + ) + unattended = ( + await session.scalar( + select(func.count()).select_from(Run).where( + Run.state == RunState.COMPLETED.value, + Run.unattended_completion.is_(True), + ) + ) + or 0 + ) + ucr = round(unattended / completed * 100, 1) if completed else 0.0 + return { + "total_runs": total, + "active_runs": running, + "completed_runs": completed, + "unattended_completion_rate": ucr, + } diff --git a/flashops/services/control-plane/flashops_control/cli.py b/flashops/services/control-plane/flashops_control/cli.py new file mode 100644 index 0000000..56e90e6 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/cli.py @@ -0,0 +1,74 @@ +"""开发与演示命令行。""" +from __future__ import annotations + +import argparse +import asyncio + +from sqlalchemy import select + +from .db import drop_db, init_db, session_scope +from .models import EvidenceBundle, Run +from .schemas import CreateRunBody +from .seed import ensure_seed_data +from .services.runs import create_run, run_to_dict, simulate_run + + +async def _init_db() -> None: + await init_db() + + +async def _seed() -> None: + await init_db() + async with session_scope() as session: + await ensure_seed_data(session) + + +async def _reset() -> None: + await drop_db() + await init_db() + await _seed() + + +async def _demo() -> None: + await _seed() + async with session_scope() as session: + run = await create_run( + session, + CreateRunBody(loops=8, inject_failure=True, created_by="cli-demo"), + ) + run_id = run.id + print("Run {0} 已启动:将注入一次心跳丢失并自动升级到 L3 恢复。".format(run_id)) + await simulate_run(run_id) + async with session_scope() as session: + run = await session.get(Run, run_id) + bundle = await session.scalar( + select(EvidenceBundle) + .where(EvidenceBundle.run_id == run_id) + .order_by(EvidenceBundle.created_at.desc()) + ) + assert run is not None + payload = run_to_dict(run) + print( + "完成:{state} / {verdict},循环 {loop_done}/{loop_target},恢复 {recovery_count} 次。".format( + **payload + ) + ) + if bundle: + print("Evidence Bundle: {0}".format(bundle.uri)) + + +def main() -> None: + parser = argparse.ArgumentParser(prog="flashops") + parser.add_argument("command", choices=["init-db", "seed", "reset-db", "demo"]) + args = parser.parse_args() + commands = { + "init-db": _init_db, + "seed": _seed, + "reset-db": _reset, + "demo": _demo, + } + asyncio.run(commands[args.command]()) + + +if __name__ == "__main__": + main() diff --git a/flashops/services/control-plane/flashops_control/config.py b/flashops/services/control-plane/flashops_control/config.py new file mode 100644 index 0000000..57bd714 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/config.py @@ -0,0 +1,107 @@ +"""配置。 + +产品名只出现在这里和 apps/console/lib/brand.ts —— 改名成本 = 改两个常量。 +商标检索未完成前,任何地方都不要再硬编码产品名。 +""" +from __future__ import annotations + +import os +from dataclasses import dataclass, field +from pathlib import Path +from typing import Optional + +APP_NAME = "FlashOps" +APP_TAGLINE = "存储实验室无人值守执行层" + +# 仓库根目录:.../flashops +REPO_ROOT = Path(__file__).resolve().parents[3] + + +def _env(key: str, default: str) -> str: + return os.environ.get(f"FLASHOPS_{key}", default) + + +def _env_int(key: str, default: int) -> int: + return int(os.environ.get(f"FLASHOPS_{key}", str(default))) + + +def _env_float(key: str, default: float) -> float: + return float(os.environ.get(f"FLASHOPS_{key}", str(default))) + + +@dataclass(frozen=True) +class TimingPolicy: + """时间策略。 + + 全部集中在这里,且引擎不直接读它 —— 引擎从 Snapshot 拿数值。 + 这样"30 秒心跳超时"这类规则可以在测试里用 0.03 秒验证。 + """ + + heartbeat_interval_s: float = 5.0 + heartbeat_degraded_after_s: float = 15.0 + heartbeat_lost_after_s: float = 30.0 + lease_ttl_s: float = 60.0 + lease_poll_timeout_s: float = 20.0 + step_default_timeout_s: float = 600.0 + recovery_settle_s: float = 20.0 # 恢复动作后等待主机回来的时间 + ac_cycle_off_s: float = 10.0 # AC 断电后的安全间隔(方案 §7.2) + max_recovery_per_loop: int = 3 + max_recovery_total: int = 20 + + +@dataclass(frozen=True) +class Settings: + app_name: str = APP_NAME + env: str = field(default_factory=lambda: _env("ENV", "development")) + + # 开发态:SQLite。生产:postgresql+asyncpg://... + database_url: str = field( + default_factory=lambda: _env( + "DATABASE_URL", "sqlite+aiosqlite:///" + str(REPO_ROOT / "var" / "flashops.db") + ) + ) + # 开发态:本地目录。生产:s3://minio:9000/flashops + object_store_url: str = field( + default_factory=lambda: _env("OBJECT_STORE_URL", str(REPO_ROOT / "var" / "objects")) + ) + # 开发态:进程内 asyncio。生产:redis://... / nats://... + bus_url: Optional[str] = field(default_factory=lambda: os.environ.get("FLASHOPS_BUS_URL")) + # Agent 首次注册口令。开发态未配置时允许本机演示;生产态缺失时拒绝注册。 + agent_enrollment_token: Optional[str] = field( + default_factory=lambda: os.environ.get("FLASHOPS_AGENT_ENROLLMENT_TOKEN") + ) + + api_host: str = field(default_factory=lambda: _env("API_HOST", "0.0.0.0")) + api_port: int = field(default_factory=lambda: _env_int("API_PORT", 8000)) + cors_origins: str = field(default_factory=lambda: _env("CORS_ORIGINS", "http://localhost:3000")) + + # 引擎主循环的 tick 间隔。demo/测试里调小以加速。 + engine_tick_s: float = field(default_factory=lambda: _env_float("ENGINE_TICK_S", 0.5)) + # 演示/仿真加速倍率:1.0 = 真实速度 + time_scale: float = field(default_factory=lambda: _env_float("TIME_SCALE", 1.0)) + + timing: TimingPolicy = field(default_factory=TimingPolicy) + + @property + def is_sqlite(self) -> bool: + return self.database_url.startswith("sqlite") + + @property + def object_store_path(self) -> Path: + return Path(self.object_store_url) + + +_settings: Optional[Settings] = None + + +def get_settings() -> Settings: + global _settings + if _settings is None: + _settings = Settings() + return _settings + + +def reset_settings() -> None: + """测试用:让下一次 get_settings() 重新读环境变量。""" + global _settings + _settings = None diff --git a/flashops/services/control-plane/flashops_control/db.py b/flashops/services/control-plane/flashops_control/db.py new file mode 100644 index 0000000..b9eabb8 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/db.py @@ -0,0 +1,106 @@ +"""异步数据库连接与会话。 + +连接按当前配置惰性创建,测试可以安全地切换到临时 SQLite 数据库。 +""" +from __future__ import annotations + +import asyncio +from contextlib import asynccontextmanager +from typing import AsyncIterator, Optional +from weakref import WeakKeyDictionary + +from sqlalchemy.ext.asyncio import ( + AsyncEngine, + AsyncSession, + async_sessionmaker, + create_async_engine, +) + +from .config import get_settings +from .models import Base + +_engine: Optional[AsyncEngine] = None +_engine_url: Optional[str] = None +_session_factory: Optional[async_sessionmaker[AsyncSession]] = None +_sqlite_session_locks: WeakKeyDictionary[asyncio.AbstractEventLoop, asyncio.Lock] = ( + WeakKeyDictionary() +) + + +def _sqlite_session_lock() -> asyncio.Lock: + """Return one transaction lock per event loop for the SQLite prototype. + + SQLite permits only one writer at a time. Serializing the complete + session_scope transaction prevents the simulator and human control routes + from reading the same event sequence and then racing on commit. PostgreSQL + deployments skip this application-level lock. + """ + + loop = asyncio.get_running_loop() + lock = _sqlite_session_locks.get(loop) + if lock is None: + lock = asyncio.Lock() + _sqlite_session_locks[loop] = lock + return lock + + +def get_engine() -> AsyncEngine: + global _engine, _engine_url, _session_factory + url = get_settings().database_url + if _engine is None or _engine_url != url: + _engine = create_async_engine(url, future=True) + _engine_url = url + _session_factory = async_sessionmaker(_engine, expire_on_commit=False) + return _engine + + +def get_session_factory() -> async_sessionmaker[AsyncSession]: + get_engine() + assert _session_factory is not None + return _session_factory + + +@asynccontextmanager +async def _transaction_scope() -> AsyncIterator[AsyncSession]: + session = get_session_factory()() + try: + yield session + await session.commit() + except Exception: + await session.rollback() + raise + finally: + await session.close() + + +@asynccontextmanager +async def session_scope() -> AsyncIterator[AsyncSession]: + if get_settings().is_sqlite: + async with _sqlite_session_lock(): + async with _transaction_scope() as session: + yield session + return + + async with _transaction_scope() as session: + yield session + + +async def init_db() -> None: + engine = get_engine() + async with engine.begin() as connection: + await connection.run_sync(Base.metadata.create_all) + + +async def drop_db() -> None: + engine = get_engine() + async with engine.begin() as connection: + await connection.run_sync(Base.metadata.drop_all) + + +async def dispose_db() -> None: + global _engine, _engine_url, _session_factory + if _engine is not None: + await _engine.dispose() + _engine = None + _engine_url = None + _session_factory = None diff --git a/flashops/services/control-plane/flashops_control/engine/__init__.py b/flashops/services/control-plane/flashops_control/engine/__init__.py new file mode 100644 index 0000000..ad213d3 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/engine/__init__.py @@ -0,0 +1,5 @@ +"""无 I/O 的编排规则。""" + +from .states import IllegalTransition, assert_run_transition + +__all__ = ["IllegalTransition", "assert_run_transition"] diff --git a/flashops/services/control-plane/flashops_control/engine/planner.py b/flashops/services/control-plane/flashops_control/engine/planner.py new file mode 100644 index 0000000..35f3bf3 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/engine/planner.py @@ -0,0 +1,159 @@ +"""Materialize a published Workflow snapshot into sequential RunStep rows. + +The planner deliberately supports a small, deterministic subset of the workflow +schema. It never evaluates expressions and it never turns free-form text into a +command. Host Agents only receive already-published adapter/template references. +""" +from __future__ import annotations + +import re +from typing import Any, Dict, List, Optional + +from sqlalchemy.ext.asyncio import AsyncSession + +from ..config import get_settings +from ..enums import OnFail, StepType +from ..models import Run, RunStep, Workflow + +_PARAM = re.compile(r"^\{\{\s*params\.([A-Za-z_][A-Za-z0-9_]*)\s*\}\}$") +_LOOP_INDEX = re.compile(r"^\{\{\s*loop\.index\s*\}\}$") +_HOST_STEP_TYPES = { + StepType.COMMAND.value, + StepType.DEVICE_CHECK.value, + StepType.WAIT.value, +} + + +class WorkflowPlanningError(ValueError): + """The published workflow cannot be safely materialized.""" + + +def _resolve(value: Any, run_params: Dict[str, Any], loop_index: Optional[int]) -> Any: + """Resolve only exact, allow-listed template tokens; no expression evaluation.""" + + if isinstance(value, str): + parameter = _PARAM.fullmatch(value) + if parameter: + key = parameter.group(1) + if key not in run_params: + raise WorkflowPlanningError("工作流参数不存在: {0}".format(key)) + return run_params[key] + if _LOOP_INDEX.fullmatch(value): + if loop_index is None: + raise WorkflowPlanningError("loop.index 只能在循环体内使用") + return loop_index + if "{{" in value or "}}" in value: + raise WorkflowPlanningError("模板只允许完整的 params.X 或 loop.index 占位符") + return value + if isinstance(value, dict): + return {key: _resolve(item, run_params, loop_index) for key, item in value.items()} + if isinstance(value, list): + return [_resolve(item, run_params, loop_index) for item in value] + return value + + +def _step_row( + *, + run: Run, + spec: Dict[str, Any], + seq: int, + loop_index: Optional[int], + checkpoint_after: bool, +) -> RunStep: + step_type = str(spec.get("type", "")) + if step_type not in _HOST_STEP_TYPES: + raise WorkflowPlanningError("Host Agent 不支持步骤类型: {0}".format(step_type or "")) + key = str(spec.get("key", "")).strip() + adapter = str(spec.get("adapter", "")).strip() + if not key or not adapter: + raise WorkflowPlanningError("步骤 key 与 adapter 不能为空") + + retry = int(spec.get("retry", 0)) + timeout_s = float(spec.get("timeout_s", get_settings().timing.step_default_timeout_s)) + if retry < 0 or retry > 20: + raise WorkflowPlanningError("步骤 retry 必须在 0..20 之间") + if timeout_s <= 0: + raise WorkflowPlanningError("步骤 timeout_s 必须大于 0") + + return RunStep( + run_id=run.id, + seq=seq, + loop_index=loop_index, + step_key=key, + step_type=step_type, + adapter=adapter, + template=spec.get("template"), + params=_resolve(dict(spec.get("params") or {}), run.params, loop_index), + max_retry=retry, + timeout_s=timeout_s, + idempotent=bool(spec.get("idempotent", False)), + danger=str(spec.get("danger", "none")), + on_fail=str(spec.get("on_fail", OnFail.RETRY.value)), + checkpoint_after=checkpoint_after, + ) + + +def plan_run_steps(run: Run, workflow: Workflow) -> List[RunStep]: + """Expand one workflow snapshot into the exact ordered steps for a Run.""" + + if not workflow.published: + raise WorkflowPlanningError("工作流尚未发布") + raw_steps = workflow.spec.get("steps") if isinstance(workflow.spec, dict) else None + if not isinstance(raw_steps, list) or not raw_steps: + raise WorkflowPlanningError("工作流没有可执行步骤") + + planned: List[RunStep] = [] + seq = 1 + for raw in raw_steps: + if not isinstance(raw, dict): + raise WorkflowPlanningError("工作流步骤必须是 object") + step_type = str(raw.get("type", "")) + + # Safety preflight and evidence/report generation live in the control plane. + if step_type in {StepType.PRECHECK.value, StepType.REPORT.value}: + continue + + if step_type == StepType.LOOP.value: + body = raw.get("body") + if not isinstance(body, list) or not body: + raise WorkflowPlanningError("循环步骤必须包含非空 body") + for loop_index in range(1, run.loop_target + 1): + for index, child in enumerate(body): + if not isinstance(child, dict): + raise WorkflowPlanningError("循环体步骤必须是 object") + planned.append( + _step_row( + run=run, + spec=child, + seq=seq, + loop_index=loop_index, + checkpoint_after=bool(child.get("checkpoint", False)) + or (bool(raw.get("checkpoint", False)) and index == len(body) - 1), + ) + ) + seq += 1 + continue + + planned.append( + _step_row( + run=run, + spec=raw, + seq=seq, + loop_index=None, + checkpoint_after=bool(raw.get("checkpoint", False)), + ) + ) + seq += 1 + + if not planned: + raise WorkflowPlanningError("工作流没有 Host Agent 可执行步骤") + return planned + + +async def materialize_run_steps( + session: AsyncSession, run: Run, workflow: Workflow +) -> List[RunStep]: + planned = plan_run_steps(run, workflow) + session.add_all(planned) + await session.flush() + return planned diff --git a/flashops/services/control-plane/flashops_control/engine/recovery.py b/flashops/services/control-plane/flashops_control/engine/recovery.py new file mode 100644 index 0000000..0ac67e8 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/engine/recovery.py @@ -0,0 +1,37 @@ +"""五级恢复阶梯的纯函数决策。""" +from __future__ import annotations + +from dataclasses import dataclass + +from ..enums import RecoveryLevel, RecoveryTrigger + + +@dataclass(frozen=True) +class RecoveryContext: + trigger: RecoveryTrigger + attempt: int + agent_online: bool + host_network_online: bool + oob_online: bool + + +def next_recovery_level(context: RecoveryContext) -> RecoveryLevel: + if context.trigger == RecoveryTrigger.DATA_INTEGRITY: + return RecoveryLevel.FREEZE + + ladder = [] + if context.agent_online: + ladder.append(RecoveryLevel.AGENT_SOFT) + if context.host_network_online: + ladder.append(RecoveryLevel.OS_REBOOT) + if context.oob_online: + ladder.extend( + [ + RecoveryLevel.OOB_RESET, + RecoveryLevel.OOB_ATX_POWER, + RecoveryLevel.OOB_AC_CYCLE, + ] + ) + if context.attempt >= len(ladder): + return RecoveryLevel.FREEZE + return ladder[context.attempt] diff --git a/flashops/services/control-plane/flashops_control/engine/states.py b/flashops/services/control-plane/flashops_control/engine/states.py new file mode 100644 index 0000000..147c70d --- /dev/null +++ b/flashops/services/control-plane/flashops_control/engine/states.py @@ -0,0 +1,44 @@ +"""Run 状态转移表。""" +from __future__ import annotations + +from typing import Dict, FrozenSet + +from ..enums import RunState + + +class IllegalTransition(ValueError): + pass + + +RUN_TRANSITIONS: Dict[RunState, FrozenSet[RunState]] = { + RunState.QUEUED: frozenset({RunState.PREFLIGHT, RunState.ABORTED}), + RunState.PREFLIGHT: frozenset( + {RunState.RUNNING, RunState.REJECTED, RunState.ABORTED} + ), + RunState.RUNNING: frozenset( + { + RunState.RECOVERING, + RunState.PAUSED, + RunState.FROZEN, + RunState.COMPLETED, + RunState.ABORTED, + } + ), + RunState.RECOVERING: frozenset( + {RunState.RUNNING, RunState.FROZEN, RunState.ABORTED} + ), + RunState.PAUSED: frozenset({RunState.RUNNING, RunState.ABORTED}), + RunState.FROZEN: frozenset(), + RunState.COMPLETED: frozenset(), + RunState.ABORTED: frozenset(), + RunState.REJECTED: frozenset(), +} + + +def assert_run_transition(current: str, target: str) -> None: + current_state = RunState(current) + target_state = RunState(target) + if target_state not in RUN_TRANSITIONS[current_state]: + raise IllegalTransition( + "Run 状态不允许从 {0} 转到 {1}".format(current_state.value, target_state.value) + ) diff --git a/flashops/services/control-plane/flashops_control/enums.py b/flashops/services/control-plane/flashops_control/enums.py new file mode 100644 index 0000000..4fe206e --- /dev/null +++ b/flashops/services/control-plane/flashops_control/enums.py @@ -0,0 +1,234 @@ +"""全部领域枚举。 + +放在包根、不依赖任何东西 —— models / engine / schemas / api 都从这里取, +保证"状态"这个概念在全仓库只有一份定义。 +""" +from __future__ import annotations + +from enum import Enum + + +class StrEnum(str, Enum): + """Python 3.9 没有 enum.StrEnum,自己来一个。""" + + def __str__(self) -> str: # pragma: no cover - 只影响日志可读性 + return self.value + + +# ---------------------------------------------------------------- Run / Step + +class RunState(StrEnum): + QUEUED = "QUEUED" # 等资源 + PREFLIGHT = "PREFLIGHT" # 安全门禁 + 环境指纹冻结 + RUNNING = "RUNNING" + RECOVERING = "RECOVERING" # 恢复阶梯进行中 + PAUSED = "PAUSED" # 人工暂停 + FROZEN = "FROZEN" # 冻结现场,停止一切覆盖性动作(终态) + COMPLETED = "COMPLETED" # 终态 + ABORTED = "ABORTED" # 紧急停止(终态) + REJECTED = "REJECTED" # 安全门禁拒绝(终态) + + +class StepState(StrEnum): + PENDING = "PENDING" + DISPATCHED = "DISPATCHED" # 已租给 Agent,等确认接手 + RUNNING = "RUNNING" + SUCCEEDED = "SUCCEEDED" + FAILED = "FAILED" + TIMED_OUT = "TIMED_OUT" + SKIPPED = "SKIPPED" + CANCELLED = "CANCELLED" + + +class Verdict(StrEnum): + PASS = "PASS" + FAIL = "FAIL" + INCONCLUSIVE = "INCONCLUSIVE" # 非幂等步骤中断后不自动重跑 → 需人工确认 + + +# ------------------------------------------------------------------ 恢复阶梯 + +class RecoveryLevel(StrEnum): + """方案 §7.2 的五级阶梯。顺序即升级顺序。""" + + AGENT_SOFT = "L1_AGENT_SOFT" # Agent 优雅停止 / 软重启进程 + OS_REBOOT = "L2_OS_REBOOT" # OS 远程通道重启 + OOB_RESET = "L3_OOB_RESET" # 带外触发主板 Reset + OOB_ATX_POWER = "L4_OOB_ATX_POWER" # 带外模拟 ATX 长按关机再开机 + OOB_AC_CYCLE = "L5_OOB_AC_CYCLE" # 整机 AC 断电 → 安全间隔 → 上电 + FREEZE = "FREEZE" # 冻结现场,不再自动恢复 + + @property + def requires_oob(self) -> bool: + return self in ( + RecoveryLevel.OOB_RESET, + RecoveryLevel.OOB_ATX_POWER, + RecoveryLevel.OOB_AC_CYCLE, + ) + + +class RecoveryOutcome(StrEnum): + RECOVERED = "RECOVERED" + FAILED = "FAILED" + ESCALATED = "ESCALATED" + FROZEN = "FROZEN" + + +class RecoveryTrigger(StrEnum): + HEARTBEAT_LOST = "HEARTBEAT_LOST" + STEP_TIMEOUT = "STEP_TIMEOUT" + HOST_CRASH = "HOST_CRASH" # 蓝屏 / kernel panic + DUT_NOT_ENUMERATED = "DUT_NOT_ENUMERATED" + DATA_INTEGRITY = "DATA_INTEGRITY" # → 直接 FREEZE,不走阶梯 + MANUAL = "MANUAL" + + +# -------------------------------------------------------------------- 资产 + +class HostStatus(StrEnum): + ONLINE = "ONLINE" + DEGRADED = "DEGRADED" # 心跳迟到但未判失联 + OFFLINE = "OFFLINE" + UNKNOWN = "UNKNOWN" + + +class DutStatus(StrEnum): + IDLE = "IDLE" + IN_USE = "IN_USE" + QUARANTINED = "QUARANTINED" # 疑似坏盘,隔离待人工确认 + MISSING = "MISSING" # 探针找不到 + + +class PowerState(StrEnum): + ON = "ON" + OFF = "OFF" + UNKNOWN = "UNKNOWN" + + +class DangerLevel(StrEnum): + NONE = "none" + LOW = "low" + HIGH = "high" # 需要审批记录 + + +# -------------------------------------------------------------------- 失败 + +class FailureClass(StrEnum): + """INFRA_FAILURE 必须与 DUT_DEFECT 分开统计 —— 见 domain-model.md。 + + 把网络断了算成 SSD 缺陷,客户第一周就不信任这套系统。 + """ + + DUT_DEFECT = "DUT_DEFECT" + INFRA_FAILURE = "INFRA_FAILURE" + SCRIPT_FAILURE = "SCRIPT_FAILURE" + DATA_INTEGRITY = "DATA_INTEGRITY" + UNKNOWN = "UNKNOWN" + + +class IntegrityState(StrEnum): + OK = "OK" + MISMATCH = "MISMATCH" + NOT_CHECKED = "NOT_CHECKED" + + +# ------------------------------------------------------------- 事件(时间线) + +class EventSource(StrEnum): + CONTROL_PLANE = "control_plane" + AGENT = "agent" + OOB = "oob" # 带外通道 —— 主机死后唯一还在说话的 + HUMAN = "human" + + +class Severity(StrEnum): + DEBUG = "DEBUG" + INFO = "INFO" + WARNING = "WARNING" + ERROR = "ERROR" + CRITICAL = "CRITICAL" + + +class EventKind(StrEnum): + """统一时间线的事件种类。 + + 新增事件种类是常事;删除/改名不是 —— 历史事件已经落库,改名会让旧 Run 的 + 时间线读不出来。只增不改。 + """ + + # Run 生命周期 + RUN_CREATED = "RUN_CREATED" + RUN_QUEUED = "RUN_QUEUED" + RUN_PREFLIGHT_STARTED = "RUN_PREFLIGHT_STARTED" + RUN_PREFLIGHT_PASSED = "RUN_PREFLIGHT_PASSED" + RUN_REJECTED = "RUN_REJECTED" + RUN_STARTED = "RUN_STARTED" + RUN_PAUSED = "RUN_PAUSED" + RUN_RESUMED = "RUN_RESUMED" + RUN_COMPLETED = "RUN_COMPLETED" + RUN_ABORTED = "RUN_ABORTED" + RUN_FROZEN = "RUN_FROZEN" + + # 循环与步骤 + LOOP_STARTED = "LOOP_STARTED" + LOOP_COMPLETED = "LOOP_COMPLETED" + STEP_DISPATCHED = "STEP_DISPATCHED" + STEP_LEASE_RENEWED = "STEP_LEASE_RENEWED" + STEP_LEASE_EXPIRED = "STEP_LEASE_EXPIRED" + STEP_STARTED = "STEP_STARTED" + STEP_OUTPUT = "STEP_OUTPUT" + STEP_SUCCEEDED = "STEP_SUCCEEDED" + STEP_FAILED = "STEP_FAILED" + STEP_TIMED_OUT = "STEP_TIMED_OUT" + STEP_RETRYING = "STEP_RETRYING" + STEP_CANCELLED = "STEP_CANCELLED" + + # 检查点 + CHECKPOINT_SAVED = "CHECKPOINT_SAVED" + CHECKPOINT_RESUMED = "CHECKPOINT_RESUMED" + + # 心跳与双通道观测 + HEARTBEAT_DEGRADED = "HEARTBEAT_DEGRADED" + HEARTBEAT_LOST = "HEARTBEAT_LOST" + HEARTBEAT_RECOVERED = "HEARTBEAT_RECOVERED" + OOB_OBSERVATION = "OOB_OBSERVATION" + OOB_POWER_STATE = "OOB_POWER_STATE" + + # 恢复 + RECOVERY_STARTED = "RECOVERY_STARTED" + RECOVERY_ESCALATED = "RECOVERY_ESCALATED" + RECOVERY_SUCCEEDED = "RECOVERY_SUCCEEDED" + RECOVERY_FAILED = "RECOVERY_FAILED" + + # 设备与数据 + DUT_ENUMERATION_LOST = "DUT_ENUMERATION_LOST" + DUT_ENUMERATION_RESTORED = "DUT_ENUMERATION_RESTORED" + INTEGRITY_MISMATCH = "INTEGRITY_MISMATCH" + + # 安全与资源 + SAFETY_APPROVED = "SAFETY_APPROVED" + SAFETY_REJECTED = "SAFETY_REJECTED" + LOCK_ACQUIRED = "LOCK_ACQUIRED" + LOCK_RELEASED = "LOCK_RELEASED" + + # 人与产物 + HUMAN_TOUCH = "HUMAN_TOUCH" # 每一次人工介入都记 —— UCR 的分母来源 + FAILURE_SIGNED = "FAILURE_SIGNED" + EVIDENCE_BUNDLED = "EVIDENCE_BUNDLED" + + +class StepType(StrEnum): + COMMAND = "command" + DEVICE_CHECK = "device_check" + WAIT = "wait" + LOOP = "loop" + PRECHECK = "precheck" + REPORT = "report" + + +class OnFail(StrEnum): + RETRY = "retry" + FAIL_RUN = "fail_run" + CONTINUE = "continue" + FREEZE = "freeze" + RECOVER = "recover" diff --git a/flashops/services/control-plane/flashops_control/events/__init__.py b/flashops/services/control-plane/flashops_control/events/__init__.py new file mode 100644 index 0000000..465d278 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/events/__init__.py @@ -0,0 +1,5 @@ +"""事件溯源写入。""" + +from .recorder import append_event + +__all__ = ["append_event"] diff --git a/flashops/services/control-plane/flashops_control/events/recorder.py b/flashops/services/control-plane/flashops_control/events/recorder.py new file mode 100644 index 0000000..f02ea1b --- /dev/null +++ b/flashops/services/control-plane/flashops_control/events/recorder.py @@ -0,0 +1,54 @@ +"""Run 事件唯一写入口,同时维护当前状态投影。""" +from __future__ import annotations + +from typing import Any, Dict, Optional + +from sqlalchemy.ext.asyncio import AsyncSession + +from ..engine.states import assert_run_transition +from ..enums import EventSource, Severity +from ..models import Run, RunEvent, utcnow + + +async def append_event( + session: AsyncSession, + run: Run, + kind: str, + message: str, + *, + source: str = EventSource.CONTROL_PLANE.value, + severity: str = Severity.INFO.value, + payload: Optional[Dict[str, Any]] = None, + target_state: Optional[str] = None, + projection: Optional[Dict[str, Any]] = None, + idempotency_key: Optional[str] = None, + step_id: Optional[str] = None, + loop_index: Optional[int] = None, +) -> RunEvent: + if target_state is not None and target_state != run.state: + assert_run_transition(run.state, target_state) + + run.event_seq += 1 + event = RunEvent( + run_id=run.id, + seq=run.event_seq, + ts=utcnow(), + source=source, + kind=kind, + severity=severity, + message=message, + payload=payload or {}, + idempotency_key=idempotency_key, + step_id=step_id, + loop_index=loop_index, + ) + session.add(event) + + if target_state is not None: + run.state = target_state + for key, value in (projection or {}).items(): + if not hasattr(run, key): + raise AttributeError("Run 不存在投影字段: {0}".format(key)) + setattr(run, key, value) + await session.flush() + return event diff --git a/flashops/services/control-plane/flashops_control/evidence/__init__.py b/flashops/services/control-plane/flashops_control/evidence/__init__.py new file mode 100644 index 0000000..0c1a838 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/evidence/__init__.py @@ -0,0 +1,5 @@ +"""Evidence Bundle 生成。""" + +from .bundle import build_evidence_bundle + +__all__ = ["build_evidence_bundle"] diff --git a/flashops/services/control-plane/flashops_control/evidence/bundle.py b/flashops/services/control-plane/flashops_control/evidence/bundle.py new file mode 100644 index 0000000..aa4a23d --- /dev/null +++ b/flashops/services/control-plane/flashops_control/evidence/bundle.py @@ -0,0 +1,69 @@ +"""把一次 Run 的可重放事件打成最小证据包。""" +from __future__ import annotations + +import json +from pathlib import Path + +from sqlalchemy import select +from sqlalchemy.ext.asyncio import AsyncSession + +from ..config import get_settings +from ..models import EvidenceBundle, Run, RunEvent, iso_z + + +async def build_evidence_bundle(session: AsyncSession, run: Run) -> EvidenceBundle: + events = ( + await session.scalars( + select(RunEvent).where(RunEvent.run_id == run.id).order_by(RunEvent.seq) + ) + ).all() + root = get_settings().object_store_path / "runs" / run.id + root.mkdir(parents=True, exist_ok=True) + timeline_path = root / "events.ndjson" + timeline = "\n".join( + json.dumps( + { + "seq": event.seq, + "ts": iso_z(event.ts), + "source": event.source, + "kind": event.kind, + "severity": event.severity, + "message": event.message, + "payload": event.payload, + }, + ensure_ascii=False, + sort_keys=True, + ) + for event in events + ) + timeline_path.write_text(timeline + ("\n" if timeline else ""), encoding="utf-8") + manifest = { + "schema_version": 1, + "run_id": run.id, + "workflow": { + "key": run.workflow_key, + "version": run.workflow_version, + "spec_hash": run.spec_hash, + }, + "environment_fingerprint": run.env_fingerprint, + "checkpoint": run.checkpoint, + "event_count": len(events), + "files": [{"path": "events.ndjson", "bytes": timeline_path.stat().st_size}], + } + manifest_path = root / "manifest.json" + manifest_path.write_text( + json.dumps(manifest, ensure_ascii=False, indent=2, sort_keys=True), + encoding="utf-8", + ) + size = manifest_path.stat().st_size + timeline_path.stat().st_size + bundle = EvidenceBundle( + run_id=run.id, + uri=str(root), + manifest=manifest, + size_bytes=size, + completeness=1.0, + missing_fields=[], + ) + session.add(bundle) + await session.flush() + return bundle diff --git a/flashops/services/control-plane/flashops_control/main.py b/flashops/services/control-plane/flashops_control/main.py new file mode 100644 index 0000000..92310d9 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/main.py @@ -0,0 +1,53 @@ +"""FlashOps FastAPI 应用。""" +from __future__ import annotations + +import asyncio +from contextlib import asynccontextmanager +from pathlib import Path + +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware +from fastapi.responses import RedirectResponse +from fastapi.staticfiles import StaticFiles + +from .api.agents import router as agent_router +from .api.routes import router +from .config import APP_NAME, APP_TAGLINE, REPO_ROOT, get_settings +from .db import init_db, session_scope +from .seed import ensure_seed_data +from .services.agent_status import run_agent_watchdog, stop_agent_watchdog + + +@asynccontextmanager +async def lifespan(_: FastAPI): + await init_db() + async with session_scope() as session: + await ensure_seed_data(session) + watchdog = asyncio.create_task(run_agent_watchdog(), name="agent-heartbeat-watchdog") + try: + yield + finally: + await stop_agent_watchdog(watchdog) + + +app = FastAPI(title=APP_NAME, description=APP_TAGLINE, version="0.1.0", lifespan=lifespan) +app.add_middleware( + CORSMiddleware, + allow_origins=[origin.strip() for origin in get_settings().cors_origins.split(",")], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) +app.include_router(router) +app.include_router(agent_router) + +console_dir = REPO_ROOT.parent / "前端UI八页面完成" +if console_dir.exists(): + app.mount("/console", StaticFiles(directory=str(console_dir), html=True), name="console") + + +@app.get("/", include_in_schema=False) +async def root() -> RedirectResponse: + if console_dir.exists(): + return RedirectResponse("/console/Dashboard.dc.html") + return RedirectResponse("/docs") diff --git a/flashops/services/control-plane/flashops_control/models/__init__.py b/flashops/services/control-plane/flashops_control/models/__init__.py new file mode 100644 index 0000000..9a7d8d6 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/models/__init__.py @@ -0,0 +1,31 @@ +"""11 张表 → 方案 §5.3 的 7 个核心领域对象。映射见 docs/domain-model.md。""" +from .analysis import AuditLog, EvidenceBundle, FailureSignature, RunFailure +from .assets import Dut, FirmwareArtifact, OobController, TestHost +from .base import Base, iso_z, new_id, utcnow +from .run import RecoveryAction, ResourceLock, Run, RunEvent, RunStep +from .workflow import Workflow + +__all__ = [ + "Base", + "utcnow", + "new_id", + "iso_z", + # 资产 + "TestHost", + "OobController", + "Dut", + "FirmwareArtifact", + # 工作流 + "Workflow", + # Run + "Run", + "RunStep", + "RunEvent", + "RecoveryAction", + "ResourceLock", + # 分析 + "FailureSignature", + "RunFailure", + "EvidenceBundle", + "AuditLog", +] diff --git a/flashops/services/control-plane/flashops_control/models/analysis.py b/flashops/services/control-plane/flashops_control/models/analysis.py new file mode 100644 index 0000000..462b611 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/models/analysis.py @@ -0,0 +1,112 @@ +"""失败签名、失败实例、Evidence Bundle、审计。""" +from __future__ import annotations + +import datetime as _dt +from typing import Any, Dict, List, Optional + +from sqlalchemy import ( + DateTime, + Float, + ForeignKey, + Index, + Integer, + JSON, + String, + Text, + UniqueConstraint, +) +from sqlalchemy.orm import Mapped, mapped_column + +from ..enums import FailureClass, IntegrityState +from .base import Base, TimestampMixin, pk + + +class FailureSignature(Base, TimestampMixin): + """失败签名 —— 聚类锚点。 + + 8 要素哈希(方案 §8.3)。只用错误码会把"掉盘"和"脚本超时"归成一类, + 聚类就废了;用原始日志则每条日志都是新签名。所以用模板化后的日志指纹。 + """ + + __tablename__ = "failure_signatures" + __table_args__ = (UniqueConstraint("hash", name="uq_signature_hash"),) + + id: Mapped[str] = pk("sig") + hash: Mapped[str] = mapped_column(String(64), nullable=False) + title: Mapped[str] = mapped_column(String(255), nullable=False) + + # 8 要素 + workflow_step: Mapped[str] = mapped_column(String(64), nullable=False) + error_codes: Mapped[List[Any]] = mapped_column(JSON, default=list) + log_templates: Mapped[List[Any]] = mapped_column(JSON, default=list) + host_state: Mapped[str] = mapped_column(String(32), default="UNKNOWN") + dut_enumeration_state: Mapped[str] = mapped_column(String(32), default="UNKNOWN") + data_integrity_state: Mapped[str] = mapped_column(String(16), default=IntegrityState.NOT_CHECKED.value) + recovery_outcome: Mapped[Optional[str]] = mapped_column(String(16)) + environment_fingerprint_hash: Mapped[Optional[str]] = mapped_column(String(64)) + + failure_class: Mapped[str] = mapped_column(String(24), default=FailureClass.UNKNOWN.value) + occurrences: Mapped[int] = mapped_column(Integer, default=0, nullable=False) + first_seen_at: Mapped[Optional[_dt.datetime]] = mapped_column(DateTime) + last_seen_at: Mapped[Optional[_dt.datetime]] = mapped_column(DateTime) + + # 人工确认后的处置:如已提单号、已知问题、误报 + triage_note: Mapped[Optional[str]] = mapped_column(Text) + issue_ref: Mapped[Optional[str]] = mapped_column(String(64)) + + +class RunFailure(Base): + """一次具体的失败实例,挂在签名下面。""" + + __tablename__ = "run_failures" + __table_args__ = (Index("ix_failure_run", "run_id"),) + + id: Mapped[str] = pk("fail") + run_id: Mapped[str] = mapped_column(ForeignKey("runs.id"), nullable=False) + signature_id: Mapped[Optional[str]] = mapped_column(ForeignKey("failure_signatures.id")) + step_id: Mapped[Optional[str]] = mapped_column(String(32)) + loop_index: Mapped[Optional[int]] = mapped_column(Integer) + ts: Mapped[_dt.datetime] = mapped_column(DateTime, nullable=False) + + failure_class: Mapped[str] = mapped_column(String(24), default=FailureClass.UNKNOWN.value) + summary: Mapped[str] = mapped_column(Text, nullable=False) + detail: Mapped[Dict[str, Any]] = mapped_column(JSON, default=dict) + # 记录固件版本,A/B 对比直接从这里聚合 + firmware_label: Mapped[Optional[str]] = mapped_column(String(64)) + + +class EvidenceBundle(Base, TimestampMixin): + """证据包。completeness < 1 说明有关键字段缺失 —— MVP 硬指标是 ≥95%。""" + + __tablename__ = "evidence_bundles" + + id: Mapped[str] = pk("bundle") + run_id: Mapped[str] = mapped_column(ForeignKey("runs.id"), nullable=False) + uri: Mapped[str] = mapped_column(String(512), nullable=False) + manifest: Mapped[Dict[str, Any]] = mapped_column(JSON, default=dict) + size_bytes: Mapped[int] = mapped_column(Integer, default=0) + completeness: Mapped[float] = mapped_column(Float, default=0.0) + missing_fields: Mapped[List[Any]] = mapped_column(JSON, default=list) + + +class AuditLog(Base): + """审计:谁、什么时候、用哪个模板版本、对什么、做了什么、结果如何。 + + 方案 §6.6 的硬要求。与决策放在同一处 —— 见 ADR-0004。 + """ + + __tablename__ = "audit_log" + __table_args__ = (Index("ix_audit_ts", "ts"),) + + id: Mapped[str] = pk("audit") + ts: Mapped[_dt.datetime] = mapped_column(DateTime, nullable=False) + actor: Mapped[str] = mapped_column(String(64), nullable=False) + action: Mapped[str] = mapped_column(String(64), nullable=False) + target_type: Mapped[Optional[str]] = mapped_column(String(32)) + target_id: Mapped[Optional[str]] = mapped_column(String(32)) + command_template: Mapped[Optional[str]] = mapped_column(String(64)) + template_version: Mapped[Optional[str]] = mapped_column(String(16)) + params: Mapped[Dict[str, Any]] = mapped_column(JSON, default=dict) + result: Mapped[Optional[str]] = mapped_column(String(32)) + approved_by: Mapped[Optional[str]] = mapped_column(String(64)) + reason: Mapped[Optional[str]] = mapped_column(Text) diff --git a/flashops/services/control-plane/flashops_control/models/assets.py b/flashops/services/control-plane/flashops_control/models/assets.py new file mode 100644 index 0000000..d75dcc4 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/models/assets.py @@ -0,0 +1,111 @@ +"""资产:测试主机、带外控制器、DUT、固件包。""" +from __future__ import annotations + +import datetime as _dt +from typing import Any, Dict, List, Optional + +from sqlalchemy import Boolean, DateTime, ForeignKey, Integer, JSON, String, UniqueConstraint +from sqlalchemy.orm import Mapped, mapped_column + +from ..enums import DutStatus, HostStatus, PowerState +from .base import Base, TimestampMixin, pk + + +class OobController(Base, TimestampMixin): + """带外控制器。 + + 独立成表而不是挂在 TestHost 上,因为它的核心价值就是**主机死后独活**: + 它有自己的网络、自己的心跳、自己的生命周期。主机 OFFLINE 时它必须还 ONLINE, + 这个"矛盾"状态是恢复阶梯 L3-L5 可用性的判断依据。 + """ + + __tablename__ = "oob_controllers" + + id: Mapped[str] = pk("oob") + name: Mapped[str] = mapped_column(String(128), nullable=False) + kind: Mapped[str] = mapped_column(String(32), default="simulated") # raspberry_pi / jetkvm / pdu / simulated + endpoint: Mapped[Optional[str]] = mapped_column(String(255)) + # 能力位:{"power": true, "reset": true, "atx": true, "ac": true, "hdmi": true, "temp": true} + capabilities: Mapped[Dict[str, Any]] = mapped_column(JSON, default=dict) + + status: Mapped[str] = mapped_column(String(16), default=HostStatus.UNKNOWN.value) + power_state: Mapped[str] = mapped_column(String(16), default=PowerState.UNKNOWN.value) + last_seen_at: Mapped[Optional[_dt.datetime]] = mapped_column(DateTime) + temperature_c: Mapped[Optional[float]] = mapped_column() + + +class TestHost(Base, TimestampMixin): + """测试主机。环境指纹的主要来源 —— A/B 对比的可比性靠它固定。""" + + __tablename__ = "test_hosts" + + id: Mapped[str] = pk("host") + name: Mapped[str] = mapped_column(String(128), nullable=False, unique=True) + + os_family: Mapped[str] = mapped_column(String(32), default="linux") # linux / windows + os_version: Mapped[Optional[str]] = mapped_column(String(128)) + kernel: Mapped[Optional[str]] = mapped_column(String(128)) + cpu: Mapped[Optional[str]] = mapped_column(String(128)) + motherboard: Mapped[Optional[str]] = mapped_column(String(128)) + bios_version: Mapped[Optional[str]] = mapped_column(String(64)) + agent_version: Mapped[Optional[str]] = mapped_column(String(32)) + ip_address: Mapped[Optional[str]] = mapped_column(String(64)) + + status: Mapped[str] = mapped_column(String(16), default=HostStatus.UNKNOWN.value) + last_heartbeat_at: Mapped[Optional[_dt.datetime]] = mapped_column(DateTime) + agent_id: Mapped[Optional[str]] = mapped_column(String(32)) + # 只保存 bearer token 的 SHA-256 摘要;原始 token 仅在注册响应中返回一次。 + agent_token: Mapped[Optional[str]] = mapped_column(String(64)) + + oob_controller_id: Mapped[Optional[str]] = mapped_column(ForeignKey("oob_controllers.id")) + # 已安装工具与版本,来自 Agent 的 discover():{"nvme-cli": "2.8", "fio": "3.36"} + toolchain: Mapped[Dict[str, Any]] = mapped_column(JSON, default=dict) + labels: Mapped[Dict[str, Any]] = mapped_column(JSON, default=dict) + + +class Dut(Base, TimestampMixin): + """被测设备。 + + allow_destructive 是防误盘的第二道信号(第一道是序列号,第三道是系统盘检测)。 + 它不给普通 API 改 —— 只能走带审批记录的资产接口,见 ADR-0004。 + """ + + __tablename__ = "duts" + __table_args__ = (UniqueConstraint("serial", name="uq_dut_serial"),) + + id: Mapped[str] = pk("dut") + serial: Mapped[str] = mapped_column(String(64), nullable=False) + model: Mapped[str] = mapped_column(String(128), nullable=False) + vendor: Mapped[Optional[str]] = mapped_column(String(64)) + capacity_gb: Mapped[Optional[int]] = mapped_column(Integer) + form_factor: Mapped[str] = mapped_column(String(32), default="M.2") # M.2 / U.2 / E1.S + interface: Mapped[str] = mapped_column(String(32), default="NVMe") + + current_firmware: Mapped[Optional[str]] = mapped_column(String(64)) + bdf: Mapped[Optional[str]] = mapped_column(String(32)) # PCIe 地址,如 0000:03:00.0 + device_path: Mapped[Optional[str]] = mapped_column(String(64)) # /dev/nvme0n1 + + test_host_id: Mapped[Optional[str]] = mapped_column(ForeignKey("test_hosts.id")) + status: Mapped[str] = mapped_column(String(16), default=DutStatus.IDLE.value) + + # 破坏性测试白名单标记。默认 False —— 安全默认拒绝。 + allow_destructive: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False) + + health: Mapped[Dict[str, Any]] = mapped_column(JSON, default=dict) # SMART 关键项、温度、寿命 + labels: Mapped[Dict[str, Any]] = mapped_column(JSON, default=dict) + + +class FirmwareArtifact(Base, TimestampMixin): + """固件包。哈希 + 签名 + 适用型号,缺一样就不可审计。""" + + __tablename__ = "firmware_artifacts" + + id: Mapped[str] = pk("fw") + version: Mapped[str] = mapped_column(String(64), nullable=False) + label: Mapped[Optional[str]] = mapped_column(String(64)) # "A" / "B" / "候选版" + sha256: Mapped[str] = mapped_column(String(64), nullable=False) + signature: Mapped[Optional[str]] = mapped_column(String(512)) + applicable_models: Mapped[List[Any]] = mapped_column(JSON, default=list) + flash_tool: Mapped[str] = mapped_column(String(64), default="nvme_cli") + file_uri: Mapped[Optional[str]] = mapped_column(String(512)) + uploaded_by: Mapped[Optional[str]] = mapped_column(String(64)) diff --git a/flashops/services/control-plane/flashops_control/models/base.py b/flashops/services/control-plane/flashops_control/models/base.py new file mode 100644 index 0000000..e4a592d --- /dev/null +++ b/flashops/services/control-plane/flashops_control/models/base.py @@ -0,0 +1,64 @@ +"""ORM 基类与通用字段。 + +刻意保持"贫血模型":这些类只管持久化,不放业务逻辑。 +业务逻辑在 engine/(纯函数)与 services/(编排),这样才能不起数据库单测。 +""" +from __future__ import annotations + +import datetime as _dt +import uuid +from typing import Any, Dict + +from sqlalchemy import DateTime, JSON, String +from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column + + +class Base(DeclarativeBase): + """所有表的基类。 + + type_annotation_map 里只用方言中立的类型:SQLite(开发)与 PostgreSQL(生产) + 行为一致。不要引入 JSONB / ARRAY / UUID 这些 PG 特有类型 —— 见 ADR-0001。 + """ + + type_annotation_map = { + Dict[str, Any]: JSON, + dict: JSON, + list: JSON, + } + + +def utcnow() -> _dt.datetime: + """统一的当前时间:naive UTC。 + + SQLite 不保存时区,所以全仓库统一存 naive UTC,序列化时再补 Z。 + 禁止在任何地方用 datetime.now()(本地时区)—— 实验室里跨时区协作会出事。 + """ + return _dt.datetime.utcnow() + + +def new_id(prefix: str) -> str: + """带前缀的 ID,如 run_7f3a9c2e...。 + + 前缀让日志和时间线一眼可读 —— 排障时不用回表查这个 ID 是什么东西。 + """ + return "{0}_{1}".format(prefix, uuid.uuid4().hex[:20]) + + +def iso_z(value: Any) -> Any: + """naive UTC datetime → ISO8601 带 Z。非 datetime 原样返回。""" + if isinstance(value, _dt.datetime): + return value.replace(microsecond=value.microsecond).isoformat() + "Z" + return value + + +class TimestampMixin: + created_at: Mapped[_dt.datetime] = mapped_column(DateTime, default=utcnow, nullable=False) + updated_at: Mapped[_dt.datetime] = mapped_column( + DateTime, default=utcnow, onupdate=utcnow, nullable=False + ) + + +def pk(prefix: str) -> Mapped[str]: + return mapped_column( + String(32), primary_key=True, default=lambda: new_id(prefix) + ) diff --git a/flashops/services/control-plane/flashops_control/models/run.py b/flashops/services/control-plane/flashops_control/models/run.py new file mode 100644 index 0000000..2bed032 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/models/run.py @@ -0,0 +1,188 @@ +"""Run 及其行为记录。 + +runs / run_steps / recovery_actions 是**读模型**(投影)。 +唯一真相是 run_events(append-only)—— 见 ADR-0002。 + +仓储层刻意不提供 update_run_state():改状态的唯一入口是 events/recorder.py。 +""" +from __future__ import annotations + +import datetime as _dt +from typing import Any, Dict, List, Optional + +from sqlalchemy import ( + Boolean, + DateTime, + Float, + ForeignKey, + Index, + Integer, + JSON, + String, + Text, + UniqueConstraint, +) +from sqlalchemy.orm import Mapped, mapped_column + +from ..enums import EventSource, RunState, Severity, StepState +from .base import Base, TimestampMixin, pk + + +class Run(Base, TimestampMixin): + __tablename__ = "runs" + + id: Mapped[str] = pk("run") + name: Mapped[Optional[str]] = mapped_column(String(255)) + + workflow_id: Mapped[str] = mapped_column(ForeignKey("workflows.id"), nullable=False) + workflow_key: Mapped[str] = mapped_column(String(64), nullable=False) + workflow_version: Mapped[int] = mapped_column(Integer, nullable=False) + spec_hash: Mapped[str] = mapped_column(String(64), nullable=False) + + state: Mapped[str] = mapped_column(String(16), default=RunState.QUEUED.value, nullable=False) + verdict: Mapped[Optional[str]] = mapped_column(String(16)) + + dut_id: Mapped[Optional[str]] = mapped_column(ForeignKey("duts.id")) + test_host_id: Mapped[Optional[str]] = mapped_column(ForeignKey("test_hosts.id")) + firmware_a_id: Mapped[Optional[str]] = mapped_column(ForeignKey("firmware_artifacts.id")) + firmware_b_id: Mapped[Optional[str]] = mapped_column(ForeignKey("firmware_artifacts.id")) + + params: Mapped[Dict[str, Any]] = mapped_column(JSON, default=dict) + # 任务开始时冻结的不可变快照。固件之外任何一项变了,A/B 对比结论就不成立。 + env_fingerprint: Mapped[Dict[str, Any]] = mapped_column(JSON, default=dict) + env_fingerprint_hash: Mapped[Optional[str]] = mapped_column(String(64)) + + loop_target: Mapped[int] = mapped_column(Integer, default=1) + loop_done: Mapped[int] = mapped_column(Integer, default=0) + + # 最近一次检查点:{"loop_index": 37, "next_step_key": "...", "dut_fw": "A"} + checkpoint: Mapped[Dict[str, Any]] = mapped_column(JSON, default=dict) + + started_at: Mapped[Optional[_dt.datetime]] = mapped_column(DateTime) + ended_at: Mapped[Optional[_dt.datetime]] = mapped_column(DateTime) + + # ROI 凭据(方案 §9.3):这两个字段是销售武器,从第一行代码就记。 + unattended_completion: Mapped[bool] = mapped_column(Boolean, default=True, nullable=False) + human_touches: Mapped[int] = mapped_column(Integer, default=0, nullable=False) + recovery_count: Mapped[int] = mapped_column(Integer, default=0, nullable=False) + + # 事件序号分配器(单点递增,保证时间线可重放,见 ADR-0002) + event_seq: Mapped[int] = mapped_column(Integer, default=0, nullable=False) + + created_by: Mapped[Optional[str]] = mapped_column(String(64)) + freeze_reason: Mapped[Optional[str]] = mapped_column(Text) + + +class RunStep(Base, TimestampMixin): + """物化后的步骤实例。循环体在物化时按 loop_index 展开。""" + + __tablename__ = "run_steps" + __table_args__ = ( + UniqueConstraint("run_id", "seq", name="uq_step_run_seq"), + Index("ix_step_run_state", "run_id", "state"), + ) + + id: Mapped[str] = pk("step") + run_id: Mapped[str] = mapped_column(ForeignKey("runs.id"), nullable=False) + seq: Mapped[int] = mapped_column(Integer, nullable=False) + loop_index: Mapped[Optional[int]] = mapped_column(Integer) + + step_key: Mapped[str] = mapped_column(String(64), nullable=False) + step_type: Mapped[str] = mapped_column(String(32), nullable=False) + adapter: Mapped[str] = mapped_column(String(32), nullable=False) + template: Mapped[Optional[str]] = mapped_column(String(64)) + params: Mapped[Dict[str, Any]] = mapped_column(JSON, default=dict) + + state: Mapped[str] = mapped_column(String(16), default=StepState.PENDING.value, nullable=False) + attempt: Mapped[int] = mapped_column(Integer, default=0, nullable=False) + max_retry: Mapped[int] = mapped_column(Integer, default=0, nullable=False) + timeout_s: Mapped[float] = mapped_column(Float, default=600.0, nullable=False) + + # 非幂等步骤(默认)中断后不自动重跑 —— "自动重试把盘刷坏"是最容易砸招牌的失败模式 + idempotent: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False) + danger: Mapped[str] = mapped_column(String(16), default="none") + on_fail: Mapped[str] = mapped_column(String(16), default="retry") + checkpoint_after: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False) + + # 租约:Agent 领了活就死了 → 租约到期 → 步骤回 PENDING 重新派发 + leased_by: Mapped[Optional[str]] = mapped_column(String(32)) + lease_expires_at: Mapped[Optional[_dt.datetime]] = mapped_column(DateTime) + + started_at: Mapped[Optional[_dt.datetime]] = mapped_column(DateTime) + ended_at: Mapped[Optional[_dt.datetime]] = mapped_column(DateTime) + exit_code: Mapped[Optional[int]] = mapped_column(Integer) + error_class: Mapped[Optional[str]] = mapped_column(String(32)) + result: Mapped[Dict[str, Any]] = mapped_column(JSON, default=dict) # UnifiedResult + log_uri: Mapped[Optional[str]] = mapped_column(String(512)) + + +class RunEvent(Base): + """Append-only 事件流 —— 唯一真相。 + + seq 由控制平面单点分配(不按时间戳排序):主机断电、时钟漂移、 + 带外与主机时钟不同步都会让时间戳乱序。Agent 事件与带外事件进同一条序列, + 双通道观测的交叉校验靠它。 + """ + + __tablename__ = "run_events" + __table_args__ = ( + UniqueConstraint("run_id", "seq", name="uq_event_run_seq"), + # 网络抖动重发不产生重复事件(见 agent-protocol.md) + UniqueConstraint("run_id", "idempotency_key", name="uq_event_idem"), + Index("ix_event_run_seq", "run_id", "seq"), + ) + + id: Mapped[str] = pk("ev") + run_id: Mapped[str] = mapped_column(ForeignKey("runs.id"), nullable=False) + seq: Mapped[int] = mapped_column(Integer, nullable=False) + ts: Mapped[_dt.datetime] = mapped_column(DateTime, nullable=False) + + source: Mapped[str] = mapped_column(String(16), default=EventSource.CONTROL_PLANE.value) + kind: Mapped[str] = mapped_column(String(48), nullable=False) + severity: Mapped[str] = mapped_column(String(16), default=Severity.INFO.value) + + step_id: Mapped[Optional[str]] = mapped_column(String(32)) + loop_index: Mapped[Optional[int]] = mapped_column(Integer) + message: Mapped[Optional[str]] = mapped_column(Text) + payload: Mapped[Dict[str, Any]] = mapped_column(JSON, default=dict) + + idempotency_key: Mapped[Optional[str]] = mapped_column(String(64)) + + +class RecoveryAction(Base): + """每一级恢复的留证记录。恢复前抓画面/温度,恢复后验证 DUT 重新枚举。""" + + __tablename__ = "recovery_actions" + + id: Mapped[str] = pk("rec") + run_id: Mapped[str] = mapped_column(ForeignKey("runs.id"), nullable=False) + step_id: Mapped[Optional[str]] = mapped_column(String(32)) + loop_index: Mapped[Optional[int]] = mapped_column(Integer) + + level: Mapped[str] = mapped_column(String(24), nullable=False) + trigger: Mapped[str] = mapped_column(String(32), nullable=False) + outcome: Mapped[Optional[str]] = mapped_column(String(16)) + + started_at: Mapped[_dt.datetime] = mapped_column(DateTime, nullable=False) + ended_at: Mapped[Optional[_dt.datetime]] = mapped_column(DateTime) + detail: Mapped[Dict[str, Any]] = mapped_column(JSON, default=dict) + evidence_uris: Mapped[List[Any]] = mapped_column(JSON, default=list) + + +class ResourceLock(Base): + """DUT / 主机独占锁。PREFLIGHT 获取,终态释放。 + + 唯一约束在 (resource_type, resource_id) —— 数据库来保证互斥,不靠应用层自觉。 + """ + + __tablename__ = "resource_locks" + __table_args__ = ( + UniqueConstraint("resource_type", "resource_id", name="uq_lock_resource"), + ) + + id: Mapped[str] = pk("lock") + resource_type: Mapped[str] = mapped_column(String(16), nullable=False) # dut / test_host / oob + resource_id: Mapped[str] = mapped_column(String(32), nullable=False) + run_id: Mapped[str] = mapped_column(ForeignKey("runs.id"), nullable=False) + acquired_at: Mapped[_dt.datetime] = mapped_column(DateTime, nullable=False) + expires_at: Mapped[Optional[_dt.datetime]] = mapped_column(DateTime) diff --git a/flashops/services/control-plane/flashops_control/models/workflow.py b/flashops/services/control-plane/flashops_control/models/workflow.py new file mode 100644 index 0000000..08b42e7 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/models/workflow.py @@ -0,0 +1,35 @@ +"""工作流:SOP 的可执行形态。""" +from __future__ import annotations + +from typing import Any, Dict, Optional + +from sqlalchemy import Boolean, Integer, JSON, String, UniqueConstraint +from sqlalchemy.orm import Mapped, mapped_column + +from ..enums import DangerLevel +from .base import Base, TimestampMixin, pk + + +class Workflow(Base, TimestampMixin): + """工作流定义。 + + spec 存原文,spec_hash 存规范化后的哈希。spec_hash 变了而 version 没变 → + 拒绝发布(见 workflow-spec.md)。理由:A/B 对比的结论必须能追溯到 + 具体哪一版流程,否则"上周跑的和这周跑的是不是同一个流程"说不清。 + """ + + __tablename__ = "workflows" + __table_args__ = (UniqueConstraint("key", "version", name="uq_workflow_key_version"),) + + id: Mapped[str] = pk("wf") + key: Mapped[str] = mapped_column(String(64), nullable=False) + name: Mapped[str] = mapped_column(String(128), nullable=False) + version: Mapped[int] = mapped_column(Integer, default=1, nullable=False) + + spec: Mapped[Dict[str, Any]] = mapped_column(JSON, nullable=False) + spec_hash: Mapped[str] = mapped_column(String(64), nullable=False) + + danger_level: Mapped[str] = mapped_column(String(16), default=DangerLevel.NONE.value) + source_sop: Mapped[Optional[str]] = mapped_column(String(255)) + published: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False) + approved_by: Mapped[Optional[str]] = mapped_column(String(64)) diff --git a/flashops/services/control-plane/flashops_control/safety/__init__.py b/flashops/services/control-plane/flashops_control/safety/__init__.py new file mode 100644 index 0000000..609c544 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/safety/__init__.py @@ -0,0 +1,5 @@ +"""危险动作的安全门禁。""" + +from .gates import PreflightRequest, PreflightResult, run_preflight + +__all__ = ["PreflightRequest", "PreflightResult", "run_preflight"] diff --git a/flashops/services/control-plane/flashops_control/safety/gates.py b/flashops/services/control-plane/flashops_control/safety/gates.py new file mode 100644 index 0000000..edf095c --- /dev/null +++ b/flashops/services/control-plane/flashops_control/safety/gates.py @@ -0,0 +1,90 @@ +"""安全默认拒绝的预检规则。""" +from __future__ import annotations + +from dataclasses import asdict, dataclass +from pathlib import PurePath +from typing import Dict, List, Sequence + + +@dataclass(frozen=True) +class Check: + key: str + name: str + passed: bool + note: str + + +@dataclass(frozen=True) +class PreflightRequest: + expected_serial: str + discovered_serial: str + allow_destructive: bool + device_path: str + system_device_paths: Sequence[str] + firmware_model_allowed: bool + host_online: bool + oob_online: bool + + +@dataclass(frozen=True) +class PreflightResult: + passed: bool + checks: List[Check] + + def as_dict(self) -> Dict[str, object]: + return { + "passed": self.passed, + "checks": [asdict(check) for check in self.checks], + } + + +def _same_device(left: str, right: str) -> bool: + left_name = PurePath(left).name + right_name = PurePath(right).name + if left_name == right_name: + return True + # /dev/nvme0n1p2 属于 /dev/nvme0n1;拒绝把其任一分区当作测试盘。 + return left_name.startswith(right_name + "p") or right_name.startswith(left_name + "p") + + +def run_preflight(request: PreflightRequest) -> PreflightResult: + serial_ok = bool(request.expected_serial) and ( + request.expected_serial == request.discovered_serial + ) + system_disk_safe = bool(request.device_path) and not any( + _same_device(request.device_path, path) for path in request.system_device_paths + ) + checks = [ + Check("serial", "DUT 序列号白名单绑定", serial_ok, request.discovered_serial or "未发现"), + Check( + "destructive", + "破坏性写入授权", + request.allow_destructive, + "已审批" if request.allow_destructive else "DUT 未授权破坏性写入", + ), + Check( + "system_disk", + "系统盘 / 分区保护", + system_disk_safe, + "启动盘已排除" if system_disk_safe else "目标命中系统盘或其分区", + ), + Check( + "firmware", + "固件适配型号", + request.firmware_model_allowed, + "型号匹配" if request.firmware_model_allowed else "固件不适用于该型号", + ), + Check( + "host", + "测试主机与 Agent", + request.host_online, + "在线" if request.host_online else "主机离线", + ), + Check( + "oob", + "带外控制器", + request.oob_online, + "Power / Reset 可用" if request.oob_online else "带外通道离线", + ), + ] + return PreflightResult(all(check.passed for check in checks), checks) diff --git a/flashops/services/control-plane/flashops_control/schemas.py b/flashops/services/control-plane/flashops_control/schemas.py new file mode 100644 index 0000000..9652baf --- /dev/null +++ b/flashops/services/control-plane/flashops_control/schemas.py @@ -0,0 +1,80 @@ +"""HTTP API 的 Pydantic 契约。""" +from __future__ import annotations + +from typing import Any, Dict, List, Literal, Optional + +from pydantic import BaseModel, Field + + +class PreflightBody(BaseModel): + dut_id: Optional[str] = None + host_id: Optional[str] = None + firmware_id: Optional[str] = None + discovered_serial: Optional[str] = None + + +class CreateRunBody(BaseModel): + name: str = "固件 A/B 无人值守回归" + workflow_id: Optional[str] = None + dut_id: Optional[str] = None + host_id: Optional[str] = None + firmware_a_id: Optional[str] = None + firmware_b_id: Optional[str] = None + loops: int = Field(default=8, ge=1, le=500) + inject_failure: bool = True + execution_mode: Literal["simulated", "agent_dry_run"] = "simulated" + created_by: str = "console-demo" + + +class HumanActionBody(BaseModel): + actor: str = "console-user" + reason: str = "人工操作" + + +class AgentRegisterBody(BaseModel): + host_id: Optional[str] = None + host_name: Optional[str] = None + agent_version: str = Field(min_length=1, max_length=32) + os_family: str = Field(default="linux", min_length=1, max_length=32) + os_version: Optional[str] = Field(default=None, max_length=128) + kernel: Optional[str] = Field(default=None, max_length=128) + cpu: Optional[str] = Field(default=None, max_length=128) + motherboard: Optional[str] = Field(default=None, max_length=128) + bios_version: Optional[str] = Field(default=None, max_length=64) + ip_address: Optional[str] = Field(default=None, max_length=64) + toolchain: Dict[str, Any] = Field(default_factory=dict) + labels: Dict[str, Any] = Field(default_factory=dict) + + +class AgentHeartbeatBody(BaseModel): + healthy: bool = True + agent_version: Optional[str] = Field(default=None, max_length=32) + ip_address: Optional[str] = Field(default=None, max_length=64) + toolchain: Dict[str, Any] = Field(default_factory=dict) + device_probe: Dict[str, Any] = Field(default_factory=dict) + + +class AgentLeaseBody(BaseModel): + wait_timeout_s: float = Field(default=0.0, ge=0.0, le=20.0) + + +class AgentStepAttemptBody(BaseModel): + attempt: int = Field(ge=1) + + +class AgentStepEvent(BaseModel): + message: str = Field(min_length=1, max_length=2000) + severity: Literal["DEBUG", "INFO", "WARNING", "ERROR"] = "INFO" + payload: Dict[str, Any] = Field(default_factory=dict) + + +class AgentStepEventsBody(AgentStepAttemptBody): + events: List[AgentStepEvent] = Field(min_length=1, max_length=100) + + +class AgentStepCompleteBody(AgentStepAttemptBody): + status: Literal["SUCCEEDED", "FAILED"] + exit_code: Optional[int] = None + error_class: Optional[str] = Field(default=None, max_length=32) + result: Dict[str, Any] = Field(default_factory=dict) + log_uri: Optional[str] = Field(default=None, max_length=512) diff --git a/flashops/services/control-plane/flashops_control/seed.py b/flashops/services/control-plane/flashops_control/seed.py new file mode 100644 index 0000000..31eb893 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/seed.py @@ -0,0 +1,141 @@ +"""可重复执行的演示数据。""" +from __future__ import annotations + +import hashlib +import json + +from sqlalchemy import select +from sqlalchemy.ext.asyncio import AsyncSession + +from .enums import DutStatus, HostStatus, PowerState +from .models import Dut, FirmwareArtifact, OobController, TestHost, Workflow, utcnow + + +def _spec_hash(spec: dict) -> str: + raw = json.dumps(spec, ensure_ascii=False, sort_keys=True, separators=(",", ":")) + return hashlib.sha256(raw.encode("utf-8")).hexdigest() + + +async def ensure_seed_data(session: AsyncSession) -> None: + existing = await session.scalar(select(Workflow.id).limit(1)) + if existing: + return + + oob = OobController( + name="OOB-05", + kind="simulated", + endpoint="sim://oob-05", + capabilities={"power": True, "reset": True, "atx": True, "ac": True, "hdmi": True}, + status=HostStatus.ONLINE.value, + power_state=PowerState.ON.value, + last_seen_at=utcnow(), + temperature_c=42.6, + ) + session.add(oob) + await session.flush() + + host = TestHost( + name="WS-05", + os_family="linux", + os_version="Ubuntu 22.04.4 LTS", + kernel="6.8.0-40-generic", + cpu="Intel Core i7-13700", + motherboard="FlashOps SIM-X1", + bios_version="F26b", + agent_version="0.1.0-sim", + ip_address="192.0.2.15", + status=HostStatus.ONLINE.value, + last_heartbeat_at=utcnow(), + oob_controller_id=oob.id, + toolchain={"fio": "3.36", "nvme-cli": "2.9.1"}, + labels={"system_device_paths": ["/dev/nvme0n1"]}, + ) + session.add(host) + await session.flush() + + dut = Dut( + serial="S6XNNA0T609", + model="NV-E1T92", + vendor="Lab Sample", + capacity_gb=1920, + form_factor="U.2", + current_firmware="3.2.1", + bdf="0000:03:00.0", + device_path="/dev/nvme1n1", + test_host_id=host.id, + status=DutStatus.IDLE.value, + allow_destructive=True, + health={"temperature_c": 43, "percentage_used": 12, "critical_warning": 0}, + labels={"purpose": "test-only"}, + ) + session.add(dut) + + firmware_a = FirmwareArtifact( + version="3.2.1", + label="A / 基线", + sha256="4bd1" + "0" * 56 + "08ce", + signature="simulated-valid-signature", + applicable_models=[dut.model], + file_uri="sim://firmware/FW_3.2.1.bin", + uploaded_by="seed", + ) + firmware_b = FirmwareArtifact( + version="3.3.0-rc3", + label="B / 候选", + sha256="9f2c" + "0" * 56 + "41aa", + signature="simulated-valid-signature", + applicable_models=[dut.model], + file_uri="sim://firmware/FW_3.3.0-rc3.bin", + uploaded_by="seed", + ) + session.add_all([firmware_a, firmware_b]) + + spec = { + "key": "fw-ab-regression", + "name": "固件 A/B 电源状态回归", + "version": 3, + "danger_level": "high", + "params": {"loops": {"type": "int", "default": 8, "min": 1, "max": 10000}}, + "steps": [ + {"key": "preflight", "type": "precheck", "adapter": "safety"}, + { + "key": "flash-fw-b", + "type": "command", + "adapter": "nvme_cli", + "template": "nvme_fw_download_commit", + "danger": "high", + "idempotent": False, + "checkpoint": True, + }, + { + "key": "regression-loop", + "type": "loop", + "body": [ + { + "key": "workload", + "type": "command", + "adapter": "fio", + "idempotent": True, + "retry": 1, + }, + {"key": "enumeration-check", "type": "device_check", "adapter": "nvme_cli"}, + {"key": "integrity-check", "type": "command", "adapter": "shell"}, + ], + "checkpoint": True, + }, + {"key": "report", "type": "report", "adapter": "builtin"}, + ], + } + workflow = Workflow( + key=spec["key"], + name=spec["name"], + version=spec["version"], + spec=spec, + spec_hash=_spec_hash(spec), + danger_level="high", + source_sop="内置模拟 SOP v1", + published=True, + approved_by="system-seed", + ) + session.add(workflow) + await session.flush() diff --git a/flashops/services/control-plane/flashops_control/services/__init__.py b/flashops/services/control-plane/flashops_control/services/__init__.py new file mode 100644 index 0000000..a2a0787 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/services/__init__.py @@ -0,0 +1 @@ +"""应用服务。""" diff --git a/flashops/services/control-plane/flashops_control/services/agent_status.py b/flashops/services/control-plane/flashops_control/services/agent_status.py new file mode 100644 index 0000000..c75802e --- /dev/null +++ b/flashops/services/control-plane/flashops_control/services/agent_status.py @@ -0,0 +1,95 @@ +"""Agent heartbeat aging and Host status projection.""" +from __future__ import annotations + +import asyncio +import datetime as dt +import logging +from contextlib import suppress +from typing import Optional + +from sqlalchemy import select + +from ..config import TimingPolicy, get_settings +from ..db import session_scope +from ..enums import HostStatus +from ..models import TestHost, utcnow + +logger = logging.getLogger(__name__) + + +def projected_agent_status( + last_heartbeat_at: Optional[dt.datetime], + current_status: str, + *, + now: Optional[dt.datetime] = None, + timing: Optional[TimingPolicy] = None, +) -> str: + """Return the status implied by heartbeat age. + + A fresh explicit DEGRADED report remains degraded until the Agent sends a + healthy heartbeat. Only Agents with an ``agent_id`` use this projection; + seeded simulator Hosts retain their configured status. + """ + + if last_heartbeat_at is None: + return HostStatus.OFFLINE.value + policy = timing or get_settings().timing + age_s = max(0.0, ((now or utcnow()) - last_heartbeat_at).total_seconds()) + if age_s >= policy.heartbeat_lost_after_s: + return HostStatus.OFFLINE.value + if age_s >= policy.heartbeat_degraded_after_s: + return HostStatus.DEGRADED.value + if current_status == HostStatus.DEGRADED.value: + return HostStatus.DEGRADED.value + return HostStatus.ONLINE.value + + +def refresh_agent_host(host: TestHost, *, now: Optional[dt.datetime] = None) -> str: + """Refresh one registered Host in the caller's transaction.""" + + if not host.agent_id: + return host.status + host.status = projected_agent_status( + host.last_heartbeat_at, + host.status, + now=now, + ) + return host.status + + +async def refresh_all_agent_hosts(*, now: Optional[dt.datetime] = None) -> int: + """Persist heartbeat-derived states for all registered Agents.""" + + changed = 0 + async with session_scope() as session: + hosts = ( + await session.scalars( + select(TestHost).where(TestHost.agent_id.is_not(None)) + ) + ).all() + for host in hosts: + previous = host.status + refresh_agent_host(host, now=now) + if host.status != previous: + changed += 1 + return changed + + +async def run_agent_watchdog() -> None: + """Continuously age registered Agent heartbeats.""" + + interval_s = max(1.0, get_settings().timing.heartbeat_interval_s) + while True: + try: + await refresh_all_agent_hosts() + except asyncio.CancelledError: + raise + except Exception: + logger.exception("Agent heartbeat watchdog failed") + await asyncio.sleep(interval_s) + + +async def stop_agent_watchdog(task: "asyncio.Task[None]") -> None: + task.cancel() + with suppress(asyncio.CancelledError): + await task diff --git a/flashops/services/control-plane/flashops_control/services/runs.py b/flashops/services/control-plane/flashops_control/services/runs.py new file mode 100644 index 0000000..6381b79 --- /dev/null +++ b/flashops/services/control-plane/flashops_control/services/runs.py @@ -0,0 +1,560 @@ +"""Run 创建、查询与内置模拟执行器。""" +from __future__ import annotations + +import asyncio +import hashlib +import json +from typing import Any, Dict, Optional, Set + +from sqlalchemy import delete, select +from sqlalchemy.ext.asyncio import AsyncSession + +from ..config import get_settings +from ..db import session_scope +from ..enums import ( + EventKind, + EventSource, + HostStatus, + RecoveryLevel, + RecoveryOutcome, + RecoveryTrigger, + RunState, + Severity, + Verdict, +) +from ..events import append_event +from ..evidence import build_evidence_bundle +from ..engine.planner import materialize_run_steps +from ..models import ( + Dut, + FirmwareArtifact, + OobController, + RecoveryAction, + ResourceLock, + Run, + RunEvent, + TestHost, + Workflow, + iso_z, + utcnow, +) +from ..safety import PreflightRequest, run_preflight +from ..schemas import CreateRunBody, PreflightBody +from .agent_status import refresh_agent_host + +_tasks: Dict[str, asyncio.Task[None]] = {} +_task_refs: Set[asyncio.Task[None]] = set() + + +async def _first(session: AsyncSession, model: Any) -> Any: + value = await session.scalar(select(model).limit(1)) + if value is None: + raise LookupError("演示数据尚未初始化") + return value + + +async def resolve_assets( + session: AsyncSession, + *, + dut_id: Optional[str] = None, + host_id: Optional[str] = None, + firmware_id: Optional[str] = None, +) -> tuple[Dut, TestHost, Optional[FirmwareArtifact], Optional[OobController]]: + dut = await session.get(Dut, dut_id) if dut_id else await _first(session, Dut) + host = await session.get(TestHost, host_id) if host_id else await _first(session, TestHost) + firmware = ( + await session.get(FirmwareArtifact, firmware_id) + if firmware_id + else await _first(session, FirmwareArtifact) + ) + if dut is None or host is None: + raise LookupError("DUT 或测试主机不存在") + oob = await session.get(OobController, host.oob_controller_id) if host.oob_controller_id else None + return dut, host, firmware, oob + + +async def preflight_for_body(session: AsyncSession, body: PreflightBody) -> Dict[str, object]: + dut, host, firmware, oob = await resolve_assets( + session, + dut_id=body.dut_id, + host_id=body.host_id, + firmware_id=body.firmware_id, + ) + refresh_agent_host(host) + system_paths = host.labels.get("system_device_paths", []) if host.labels else [] + allowed = firmware is not None and ( + not firmware.applicable_models or dut.model in firmware.applicable_models + ) + result = run_preflight( + PreflightRequest( + expected_serial=dut.serial, + discovered_serial=body.discovered_serial or dut.serial, + allow_destructive=dut.allow_destructive, + device_path=dut.device_path or "", + system_device_paths=system_paths, + firmware_model_allowed=allowed, + host_online=host.status == HostStatus.ONLINE.value, + oob_online=oob is not None and oob.status == HostStatus.ONLINE.value, + ) + ) + payload = result.as_dict() + payload.update({"dut_id": dut.id, "host_id": host.id, "firmware_id": firmware.id if firmware else None}) + return payload + + +async def create_run(session: AsyncSession, body: CreateRunBody) -> Run: + workflow = ( + await session.get(Workflow, body.workflow_id) + if body.workflow_id + else await _first(session, Workflow) + ) + dut, host, _, _ = await resolve_assets( + session, dut_id=body.dut_id, host_id=body.host_id + ) + firmwares = ( + await session.scalars(select(FirmwareArtifact).order_by(FirmwareArtifact.created_at)) + ).all() + if not firmwares: + raise LookupError("固件数据尚未初始化") + firmware_a = ( + await session.get(FirmwareArtifact, body.firmware_a_id) + if body.firmware_a_id + else firmwares[0] + ) + firmware_b = ( + await session.get(FirmwareArtifact, body.firmware_b_id) + if body.firmware_b_id + else firmwares[-1] + ) + assert workflow is not None and firmware_a is not None and firmware_b is not None + env = { + "host": host.name, + "os": host.os_version, + "kernel": host.kernel, + "bios": host.bios_version, + "agent": host.agent_version, + "toolchain": host.toolchain, + "dut_serial": dut.serial, + "dut_model": dut.model, + } + env_hash = hashlib.sha256( + json.dumps(env, ensure_ascii=False, sort_keys=True).encode("utf-8") + ).hexdigest() + run = Run( + name=body.name, + workflow_id=workflow.id, + workflow_key=workflow.key, + workflow_version=workflow.version, + spec_hash=workflow.spec_hash, + dut_id=dut.id, + test_host_id=host.id, + firmware_a_id=firmware_a.id, + firmware_b_id=firmware_b.id, + params={ + "inject_failure": body.inject_failure, + "execution_mode": body.execution_mode, + "loops": body.loops, + "fw_a": firmware_a.id, + "fw_b": firmware_b.id, + "firmware_a_version": firmware_a.version, + "firmware_b_version": firmware_b.version, + }, + env_fingerprint=env, + env_fingerprint_hash=env_hash, + loop_target=body.loops, + created_by=body.created_by, + ) + session.add(run) + await session.flush() + await append_event( + session, + run, + EventKind.RUN_CREATED.value, + "任务已创建,等待独占资源", + payload={"loops": body.loops, "inject_failure": body.inject_failure}, + ) + await append_event( + session, run, EventKind.RUN_QUEUED.value, "任务已进入调度队列" + ) + return run + + +def run_to_dict(run: Run) -> Dict[str, Any]: + progress = round((run.loop_done / run.loop_target) * 100, 1) if run.loop_target else 0 + return { + "id": run.id, + "name": run.name, + "state": run.state, + "verdict": run.verdict, + "workflow_key": run.workflow_key, + "workflow_version": run.workflow_version, + "execution_mode": run.params.get("execution_mode", "simulated"), + "dut_id": run.dut_id, + "test_host_id": run.test_host_id, + "loop_target": run.loop_target, + "loop_done": run.loop_done, + "progress": progress, + "checkpoint": run.checkpoint, + "environment": run.env_fingerprint, + "firmware_a_version": run.params.get("firmware_a_version"), + "firmware_b_version": run.params.get("firmware_b_version"), + "recovery_count": run.recovery_count, + "unattended_completion": run.unattended_completion, + "human_touches": run.human_touches, + "created_at": iso_z(run.created_at), + "started_at": iso_z(run.started_at), + "ended_at": iso_z(run.ended_at), + "freeze_reason": run.freeze_reason, + } + + +async def prepare_agent_run(session: AsyncSession, run: Run) -> None: + """Run safety gates, lock resources and materialize an Agent dry-run.""" + + await append_event( + session, + run, + EventKind.RUN_PREFLIGHT_STARTED.value, + "已锁定执行计划,开始 Agent 任务安全预检", + target_state=RunState.PREFLIGHT.value, + ) + preflight = await preflight_for_body( + session, + PreflightBody( + dut_id=run.dut_id, + host_id=run.test_host_id, + firmware_id=run.firmware_b_id, + ), + ) + if not preflight["passed"]: + await append_event( + session, + run, + EventKind.RUN_REJECTED.value, + "安全预检未通过", + severity=Severity.CRITICAL.value, + payload=preflight, + target_state=RunState.REJECTED.value, + projection={"ended_at": utcnow()}, + ) + return + + existing_lock = await session.scalar( + select(ResourceLock.id).where( + ResourceLock.resource_type.in_(["dut", "test_host"]), + ResourceLock.resource_id.in_([run.dut_id or "", run.test_host_id or ""]), + ) + ) + if existing_lock: + raise LookupError("DUT 或测试主机已被其他任务锁定") + + workflow = await session.get(Workflow, run.workflow_id) + if workflow is None: + raise LookupError("Run 关联工作流不存在") + steps = await materialize_run_steps(session, run, workflow) + session.add_all( + [ + ResourceLock( + resource_type="dut", + resource_id=run.dut_id or "", + run_id=run.id, + acquired_at=utcnow(), + ), + ResourceLock( + resource_type="test_host", + resource_id=run.test_host_id or "", + run_id=run.id, + acquired_at=utcnow(), + ), + ] + ) + await append_event( + session, + run, + EventKind.SAFETY_APPROVED.value, + "6/6 安全门禁通过", + payload=preflight, + ) + await append_event( + session, + run, + EventKind.LOCK_ACQUIRED.value, + "DUT 与测试主机独占锁已获取", + ) + await append_event( + session, + run, + EventKind.RUN_STARTED.value, + "独立 Host Agent dry-run 已就绪,共 {0} 个步骤".format(len(steps)), + payload={"step_count": len(steps), "execution_mode": "agent_dry_run"}, + target_state=RunState.RUNNING.value, + projection={"started_at": utcnow()}, + ) + + +def event_to_dict(event: RunEvent) -> Dict[str, Any]: + return { + "id": event.id, + "seq": event.seq, + "ts": iso_z(event.ts), + "source": event.source, + "kind": event.kind, + "severity": event.severity, + "message": event.message, + "payload": event.payload, + } + + +async def _sleep(seconds: float) -> None: + await asyncio.sleep(max(0.01, seconds * get_settings().time_scale)) + + +async def _load_run(session: AsyncSession, run_id: str) -> Run: + run = await session.get(Run, run_id) + if run is None: + raise LookupError("Run 不存在: {0}".format(run_id)) + return run + + +async def _run_recovery(run_id: str, loop_index: int) -> None: + levels = [ + (RecoveryLevel.AGENT_SOFT, RecoveryOutcome.FAILED, "Agent 软恢复无响应"), + (RecoveryLevel.OS_REBOOT, RecoveryOutcome.FAILED, "OS 重启通道超时"), + (RecoveryLevel.OOB_RESET, RecoveryOutcome.RECOVERED, "带外 Reset 后主机与 DUT 已恢复"), + ] + for level, outcome, message in levels: + async with session_scope() as session: + run = await _load_run(session, run_id) + action = RecoveryAction( + run_id=run.id, + loop_index=loop_index, + level=level.value, + trigger=RecoveryTrigger.HEARTBEAT_LOST.value, + outcome=outcome.value, + started_at=utcnow(), + ended_at=utcnow(), + detail={"simulated": True, "message": message}, + evidence_uris=["sim://oob/frame-{0}".format(loop_index)], + ) + session.add(action) + await append_event( + session, + run, + EventKind.RECOVERY_STARTED.value, + "{0} 已执行".format(level.value), + severity=Severity.WARNING.value, + payload={"level": level.value, "outcome": outcome.value}, + projection={"recovery_count": run.recovery_count + 1}, + ) + if outcome == RecoveryOutcome.RECOVERED: + await append_event( + session, + run, + EventKind.RECOVERY_SUCCEEDED.value, + message, + source=EventSource.OOB.value, + payload={"level": level.value}, + target_state=RunState.RUNNING.value, + ) + else: + await append_event( + session, + run, + EventKind.RECOVERY_ESCALATED.value, + message + ",升级恢复阶梯", + severity=Severity.ERROR.value, + payload={"level": level.value}, + ) + await _sleep(0.28) + + +async def simulate_run(run_id: str) -> None: + try: + async with session_scope() as session: + run = await _load_run(session, run_id) + await append_event( + session, + run, + EventKind.RUN_PREFLIGHT_STARTED.value, + "已锁定工位,开始安全预检", + target_state=RunState.PREFLIGHT.value, + ) + await _sleep(0.25) + + async with session_scope() as session: + run = await _load_run(session, run_id) + preflight = await preflight_for_body( + session, + PreflightBody( + dut_id=run.dut_id, + host_id=run.test_host_id, + firmware_id=run.firmware_b_id, + ), + ) + if not preflight["passed"]: + await append_event( + session, + run, + EventKind.RUN_REJECTED.value, + "安全预检未通过", + severity=Severity.CRITICAL.value, + payload=preflight, + target_state=RunState.REJECTED.value, + projection={"ended_at": utcnow()}, + ) + return + session.add_all( + [ + ResourceLock( + resource_type="dut", + resource_id=run.dut_id or "", + run_id=run.id, + acquired_at=utcnow(), + ), + ResourceLock( + resource_type="test_host", + resource_id=run.test_host_id or "", + run_id=run.id, + acquired_at=utcnow(), + ), + ] + ) + await append_event( + session, + run, + EventKind.SAFETY_APPROVED.value, + "6/6 安全门禁通过", + payload=preflight, + ) + await append_event( + session, + run, + EventKind.LOCK_ACQUIRED.value, + "DUT 与测试主机独占锁已获取", + ) + await append_event( + session, + run, + EventKind.RUN_STARTED.value, + "模拟 Agent 已接管执行", + target_state=RunState.RUNNING.value, + projection={"started_at": utcnow()}, + ) + + async with session_scope() as session: + run = await _load_run(session, run_id) + target = run.loop_target + inject_failure = bool(run.params.get("inject_failure", False)) + failure_loop = min(3, target) if inject_failure and target >= 2 else -1 + + for loop_index in range(1, target + 1): + while True: + async with session_scope() as session: + run = await _load_run(session, run_id) + if run.state != RunState.PAUSED.value: + break + await _sleep(0.2) + async with session_scope() as session: + run = await _load_run(session, run_id) + if run.state in { + RunState.ABORTED.value, + RunState.FROZEN.value, + RunState.REJECTED.value, + }: + return + await append_event( + session, + run, + EventKind.LOOP_STARTED.value, + "循环 {0}/{1} 开始".format(loop_index, target), + payload={"loop_index": loop_index}, + ) + await _sleep(0.22) + + if loop_index == failure_loop: + async with session_scope() as session: + run = await _load_run(session, run_id) + await append_event( + session, + run, + EventKind.HEARTBEAT_LOST.value, + "Agent 心跳丢失;OOB 仍在线,启动自动恢复", + source=EventSource.OOB.value, + severity=Severity.ERROR.value, + payload={"loop_index": loop_index, "oob_online": True}, + target_state=RunState.RECOVERING.value, + ) + await _sleep(0.25) + await _run_recovery(run_id, loop_index) + async with session_scope() as session: + run = await _load_run(session, run_id) + await append_event( + session, + run, + EventKind.CHECKPOINT_RESUMED.value, + "主机指纹一致,从循环检查点续跑", + payload={"loop_index": loop_index}, + ) + + async with session_scope() as session: + run = await _load_run(session, run_id) + checkpoint = { + "loop_index": loop_index, + "next_step_key": "regression-loop", + "dut_fw": "B", + } + await append_event( + session, + run, + EventKind.LOOP_COMPLETED.value, + "循环 {0}/{1} 通过,检查点已写入".format(loop_index, target), + payload={"loop_index": loop_index}, + projection={"loop_done": loop_index, "checkpoint": checkpoint}, + ) + await _sleep(0.14) + + async with session_scope() as session: + run = await _load_run(session, run_id) + bundle = await build_evidence_bundle(session, run) + await append_event( + session, + run, + EventKind.EVIDENCE_BUNDLED.value, + "Evidence Bundle 已生成,完整率 100%", + payload={"bundle_id": bundle.id, "uri": bundle.uri, "completeness": 1.0}, + ) + await append_event( + session, + run, + EventKind.LOCK_RELEASED.value, + "DUT 与测试主机独占锁已释放", + ) + await session.execute(delete(ResourceLock).where(ResourceLock.run_id == run.id)) + await append_event( + session, + run, + EventKind.RUN_COMPLETED.value, + "全部循环完成,结论 PASS", + target_state=RunState.COMPLETED.value, + projection={"verdict": Verdict.PASS.value, "ended_at": utcnow()}, + ) + except asyncio.CancelledError: + raise + finally: + _tasks.pop(run_id, None) + + +def start_simulation(run_id: str) -> None: + existing = _tasks.get(run_id) + if existing and not existing.done(): + return + task = asyncio.create_task(simulate_run(run_id)) + _tasks[run_id] = task + _task_refs.add(task) + task.add_done_callback(_task_refs.discard) + + +def cancel_simulation(run_id: str) -> None: + task = _tasks.pop(run_id, None) + if task and not task.done(): + task.cancel() diff --git a/flashops/services/control-plane/flashops_control/services/step_leases.py b/flashops/services/control-plane/flashops_control/services/step_leases.py new file mode 100644 index 0000000..d7421af --- /dev/null +++ b/flashops/services/control-plane/flashops_control/services/step_leases.py @@ -0,0 +1,547 @@ +"""Reliable pull-mode Step lease lifecycle for Host Agents.""" +from __future__ import annotations + +import datetime as _dt +from typing import Any, Dict, List, Optional + +from sqlalchemy import delete, func, select +from sqlalchemy.ext.asyncio import AsyncSession + +from ..config import get_settings +from ..enums import ( + EventKind, + EventSource, + OnFail, + RunState, + Severity, + StepState, + Verdict, +) +from ..events import append_event +from ..evidence import build_evidence_bundle +from ..models import ResourceLock, Run, RunEvent, RunStep, TestHost, iso_z, utcnow +from ..schemas import AgentStepCompleteBody, AgentStepEvent + +_ACTIVE_STEP_STATES = { + StepState.PENDING.value, + StepState.DISPATCHED.value, + StepState.RUNNING.value, +} + + +class StepLeaseConflict(ValueError): + """The Agent request does not match the current lease generation/state.""" + + +def step_status(step: RunStep, *, replayed: bool = False) -> Dict[str, Any]: + return { + "step_id": step.id, + "run_id": step.run_id, + "state": step.state, + "attempt": step.attempt, + "lease_expires_at": iso_z(step.lease_expires_at), + "replayed": replayed, + } + + +def step_lease(step: RunStep, run: Run) -> Dict[str, Any]: + return { + "step_id": step.id, + "run_id": step.run_id, + "seq": step.seq, + "loop_index": step.loop_index, + "step_key": step.step_key, + "step_type": step.step_type, + "adapter": step.adapter, + "template": step.template, + "params": step.params, + "danger": step.danger, + "idempotent": step.idempotent, + "timeout_s": step.timeout_s, + "attempt": step.attempt, + "lease_expires_at": iso_z(step.lease_expires_at), + # This slice exercises the real process/network protocol but never executes + # a real hardware command. A future signed adapter registry will remove it. + "dry_run": run.params.get("execution_mode") == "agent_dry_run", + } + + +async def _locked_run(session: AsyncSession, run_id: str) -> Run: + run = await session.scalar( + select(Run).where(Run.id == run_id).with_for_update() + ) + if run is None: + raise StepLeaseConflict("Run 不存在") + return run + + +async def _owned_step( + session: AsyncSession, host: TestHost, step_id: str +) -> tuple[RunStep, Run]: + step = await session.scalar( + select(RunStep) + .join(Run, Run.id == RunStep.run_id) + .where(RunStep.id == step_id, Run.test_host_id == host.id) + .with_for_update() + ) + if step is None: + raise StepLeaseConflict("步骤不存在或不属于当前 Agent") + run = await _locked_run(session, step.run_id) + return step, run + + +async def _replayed( + session: AsyncSession, + *, + run_id: str, + step_id: str, + idempotency_key: str, + operation: str, +) -> bool: + event = await session.scalar( + select(RunEvent).where( + RunEvent.run_id == run_id, + RunEvent.idempotency_key == idempotency_key, + ) + ) + if event is None: + return False + if event.step_id != step_id or event.payload.get("_operation") != operation: + raise StepLeaseConflict("Idempotency-Key 已用于其他步骤或操作") + return True + + +def _assert_current(step: RunStep, agent_id: str, attempt: int) -> None: + now = utcnow() + if step.leased_by != agent_id or step.attempt != attempt: + raise StepLeaseConflict("租约代次不匹配,步骤可能已被重新派发") + if step.lease_expires_at is None or step.lease_expires_at <= now: + raise StepLeaseConflict("步骤租约已过期") + if ( + step.state == StepState.RUNNING.value + and step.started_at is not None + and step.started_at + _dt.timedelta(seconds=step.timeout_s) <= now + ): + raise StepLeaseConflict("步骤执行已超过 timeout_s") + + +async def _freeze_run( + session: AsyncSession, run: Run, step: RunStep, reason: str +) -> None: + if run.state not in {RunState.RUNNING.value, RunState.RECOVERING.value}: + return + await append_event( + session, + run, + EventKind.RUN_FROZEN.value, + reason, + severity=Severity.CRITICAL.value, + target_state=RunState.FROZEN.value, + projection={ + "verdict": Verdict.INCONCLUSIVE.value, + "freeze_reason": reason, + "ended_at": utcnow(), + }, + step_id=step.id, + loop_index=step.loop_index, + ) + await session.execute(delete(ResourceLock).where(ResourceLock.run_id == run.id)) + + +async def reclaim_expired_leases(session: AsyncSession, host: TestHost) -> int: + """Requeue safe work and freeze ambiguous non-idempotent work.""" + + now = utcnow() + expired = ( + await session.scalars( + select(RunStep) + .join(Run, Run.id == RunStep.run_id) + .where( + Run.test_host_id == host.id, + Run.state.in_([RunState.RUNNING.value, RunState.RECOVERING.value]), + RunStep.state.in_([StepState.DISPATCHED.value, StepState.RUNNING.value]), + RunStep.lease_expires_at.is_not(None), + RunStep.lease_expires_at <= now, + ) + .order_by(RunStep.run_id, RunStep.seq) + .with_for_update() + ) + ).all() + + for step in expired: + run = await _locked_run(session, step.run_id) + previous = step.state + step.leased_by = None + step.lease_expires_at = None + + if previous == StepState.DISPATCHED.value: + step.state = StepState.PENDING.value + await append_event( + session, + run, + EventKind.STEP_LEASE_EXPIRED.value, + "Agent 未 ACK,步骤租约已回收", + severity=Severity.WARNING.value, + payload={"attempt": step.attempt, "previous_state": previous}, + step_id=step.id, + loop_index=step.loop_index, + ) + continue + + can_retry = step.idempotent and step.attempt <= step.max_retry + if can_retry: + step.state = StepState.PENDING.value + await append_event( + session, + run, + EventKind.STEP_RETRYING.value, + "Agent 执行中失联,幂等步骤已安全回收等待重试", + severity=Severity.WARNING.value, + payload={"attempt": step.attempt, "max_retry": step.max_retry}, + step_id=step.id, + loop_index=step.loop_index, + ) + continue + + step.state = StepState.TIMED_OUT.value + step.ended_at = now + await append_event( + session, + run, + EventKind.STEP_TIMED_OUT.value, + "执行租约到期,步骤结果不确定", + severity=Severity.ERROR.value, + payload={ + "attempt": step.attempt, + "idempotent": step.idempotent, + "retry_exhausted": step.idempotent, + }, + step_id=step.id, + loop_index=step.loop_index, + ) + await _freeze_run( + session, + run, + step, + "步骤 {0} 执行结果不确定,已冻结现场禁止盲目重跑".format(step.step_key), + ) + + return len(expired) + + +async def try_lease_next_step( + session: AsyncSession, host: TestHost +) -> Optional[Dict[str, Any]]: + await reclaim_expired_leases(session, host) + runs = ( + await session.scalars( + select(Run) + .where( + Run.test_host_id == host.id, + Run.state == RunState.RUNNING.value, + ) + .order_by(Run.created_at, Run.id) + .with_for_update(skip_locked=True) + ) + ).all() + + for run in runs: + steps = ( + await session.scalars( + select(RunStep) + .where(RunStep.run_id == run.id, RunStep.state.in_(_ACTIVE_STEP_STATES)) + .order_by(RunStep.seq) + .with_for_update(skip_locked=True) + ) + ).all() + if not steps: + continue + step = steps[0] + if step.state != StepState.PENDING.value: + continue + + step.state = StepState.DISPATCHED.value + step.attempt += 1 + step.leased_by = host.agent_id + step.lease_expires_at = utcnow() + _dt.timedelta( + seconds=get_settings().timing.lease_ttl_s + ) + await append_event( + session, + run, + EventKind.STEP_DISPATCHED.value, + "步骤已租给 Host Agent,等待 ACK", + payload={"agent_id": host.agent_id, "attempt": step.attempt}, + step_id=step.id, + loop_index=step.loop_index, + ) + return step_lease(step, run) + return None + + +async def acknowledge_step( + session: AsyncSession, + host: TestHost, + step_id: str, + attempt: int, + idempotency_key: str, +) -> Dict[str, Any]: + step, run = await _owned_step(session, host, step_id) + if await _replayed( + session, + run_id=run.id, + step_id=step.id, + idempotency_key=idempotency_key, + operation="ack", + ): + return step_status(step, replayed=True) + if step.state != StepState.DISPATCHED.value: + raise StepLeaseConflict("只有 DISPATCHED 步骤可以 ACK") + _assert_current(step, host.agent_id or "", attempt) + + now = utcnow() + step.state = StepState.RUNNING.value + step.started_at = now + step.lease_expires_at = min( + now + _dt.timedelta(seconds=get_settings().timing.lease_ttl_s), + now + _dt.timedelta(seconds=step.timeout_s), + ) + await append_event( + session, + run, + EventKind.STEP_STARTED.value, + "Host Agent 已确认接手步骤", + source=EventSource.AGENT.value, + payload={"_operation": "ack", "attempt": attempt}, + idempotency_key=idempotency_key, + step_id=step.id, + loop_index=step.loop_index, + ) + return step_status(step) + +async def renew_step( + session: AsyncSession, + host: TestHost, + step_id: str, + attempt: int, + idempotency_key: str, +) -> Dict[str, Any]: + step, run = await _owned_step(session, host, step_id) + if await _replayed( + session, + run_id=run.id, + step_id=step.id, + idempotency_key=idempotency_key, + operation="renew", + ): + return step_status(step, replayed=True) + if step.state != StepState.RUNNING.value: + raise StepLeaseConflict("只有 RUNNING 步骤可以续租") + _assert_current(step, host.agent_id or "", attempt) + assert step.started_at is not None + now = utcnow() + step.lease_expires_at = min( + now + _dt.timedelta(seconds=get_settings().timing.lease_ttl_s), + step.started_at + _dt.timedelta(seconds=step.timeout_s), + ) + await append_event( + session, + run, + EventKind.STEP_LEASE_RENEWED.value, + "Host Agent 已续租执行步骤", + source=EventSource.AGENT.value, + severity=Severity.DEBUG.value, + payload={"_operation": "renew", "attempt": attempt}, + idempotency_key=idempotency_key, + step_id=step.id, + loop_index=step.loop_index, + ) + return step_status(step) + + +async def record_step_events( + session: AsyncSession, + host: TestHost, + step_id: str, + attempt: int, + events: List[AgentStepEvent], + idempotency_key: str, +) -> Dict[str, Any]: + step, run = await _owned_step(session, host, step_id) + first_key = "{0}:0".format(idempotency_key) + if await _replayed( + session, + run_id=run.id, + step_id=step.id, + idempotency_key=first_key, + operation="events", + ): + return {**step_status(step, replayed=True), "accepted": len(events)} + if step.state != StepState.RUNNING.value: + raise StepLeaseConflict("只有 RUNNING 步骤可以上报事件") + _assert_current(step, host.agent_id or "", attempt) + + for index, item in enumerate(events): + await append_event( + session, + run, + EventKind.STEP_OUTPUT.value, + item.message, + source=EventSource.AGENT.value, + severity=item.severity, + payload={"_operation": "events", "attempt": attempt, **item.payload}, + idempotency_key="{0}:{1}".format(idempotency_key, index), + step_id=step.id, + loop_index=step.loop_index, + ) + return {**step_status(step), "accepted": len(events)} + + +async def _finish_run(session: AsyncSession, run: Run, verdict: str) -> None: + await append_event( + session, + run, + EventKind.LOCK_RELEASED.value, + "DUT 与测试主机独占锁已释放", + ) + await session.execute(delete(ResourceLock).where(ResourceLock.run_id == run.id)) + await append_event( + session, + run, + EventKind.RUN_COMPLETED.value, + "独立 Host Agent 已完成全部步骤,结论 {0}".format(verdict), + target_state=RunState.COMPLETED.value, + projection={"verdict": verdict, "ended_at": utcnow()}, + ) + bundle = await build_evidence_bundle(session, run) + await append_event( + session, + run, + EventKind.EVIDENCE_BUNDLED.value, + "Evidence Bundle 已生成,完整率 100%", + payload={"bundle_id": bundle.id, "uri": bundle.uri, "completeness": 1.0}, + ) + + +async def complete_step( + session: AsyncSession, + host: TestHost, + step_id: str, + body: AgentStepCompleteBody, + idempotency_key: str, +) -> Dict[str, Any]: + step, run = await _owned_step(session, host, step_id) + if await _replayed( + session, + run_id=run.id, + step_id=step.id, + idempotency_key=idempotency_key, + operation="complete", + ): + return step_status(step, replayed=True) + if step.state != StepState.RUNNING.value: + raise StepLeaseConflict("只有 RUNNING 步骤可以完成") + _assert_current(step, host.agent_id or "", body.attempt) + + step.exit_code = body.exit_code + step.error_class = body.error_class + step.result = body.result + step.log_uri = body.log_uri + step.ended_at = utcnow() + step.leased_by = None + step.lease_expires_at = None + + succeeded = body.status == StepState.SUCCEEDED.value + step.state = StepState.SUCCEEDED.value if succeeded else StepState.FAILED.value + await append_event( + session, + run, + EventKind.STEP_SUCCEEDED.value if succeeded else EventKind.STEP_FAILED.value, + "步骤执行成功" if succeeded else "步骤执行失败", + source=EventSource.AGENT.value, + severity=Severity.INFO.value if succeeded else Severity.ERROR.value, + payload={ + "_operation": "complete", + "attempt": body.attempt, + "exit_code": body.exit_code, + "error_class": body.error_class, + "result": body.result, + "log_uri": body.log_uri, + }, + idempotency_key=idempotency_key, + step_id=step.id, + loop_index=step.loop_index, + ) + + if not succeeded: + if ( + step.on_fail == OnFail.RETRY.value + and step.idempotent + and step.attempt <= step.max_retry + ): + step.state = StepState.PENDING.value + await append_event( + session, + run, + EventKind.STEP_RETRYING.value, + "幂等步骤失败,已进入受限重试队列", + severity=Severity.WARNING.value, + payload={"attempt": step.attempt, "max_retry": step.max_retry}, + step_id=step.id, + loop_index=step.loop_index, + ) + return step_status(step) + if step.on_fail in {OnFail.FREEZE.value, OnFail.RECOVER.value} or not step.idempotent: + await _freeze_run( + session, + run, + step, + "步骤 {0} 失败且不可安全自动重跑,已冻结现场".format(step.step_key), + ) + return step_status(step) + if step.on_fail == OnFail.FAIL_RUN.value: + await _finish_run(session, run, Verdict.FAIL.value) + return step_status(step) + + remaining = await session.scalar( + select(func.count()) + .select_from(RunStep) + .where(RunStep.run_id == run.id, RunStep.state.in_(_ACTIVE_STEP_STATES)) + ) + + if succeeded and step.checkpoint_after: + next_step = await session.scalar( + select(RunStep) + .where(RunStep.run_id == run.id, RunStep.seq > step.seq) + .order_by(RunStep.seq) + .limit(1) + ) + checkpoint = { + "loop_index": step.loop_index, + "completed_step_key": step.step_key, + "next_step_key": next_step.step_key if next_step else None, + } + loop_done = max(run.loop_done, step.loop_index or run.loop_done) + await append_event( + session, + run, + EventKind.CHECKPOINT_SAVED.value, + "安全检查点已保存", + payload=checkpoint, + projection={"checkpoint": checkpoint, "loop_done": loop_done}, + step_id=step.id, + loop_index=step.loop_index, + ) + + if not remaining: + failed = await session.scalar( + select(func.count()) + .select_from(RunStep) + .where(RunStep.run_id == run.id, RunStep.state == StepState.FAILED.value) + ) + await _finish_run( + session, + run, + Verdict.FAIL.value if failed else Verdict.PASS.value, + ) + return step_status(step) diff --git a/flashops/services/control-plane/requirements.txt b/flashops/services/control-plane/requirements.txt new file mode 100644 index 0000000..eda4876 --- /dev/null +++ b/flashops/services/control-plane/requirements.txt @@ -0,0 +1,19 @@ +# 控制平面依赖。刻意保持短——每加一个依赖,客户内网私有化部署就多一分摩擦。 +fastapi>=0.115,<1.0 +uvicorn[standard]>=0.30 +sqlalchemy>=2.0.30 +greenlet>=3.0 # SQLAlchemy 异步会话的协程桥接 +aiosqlite>=0.20 # 开发态数据库 +pydantic>=2.9,<3.0 +pyyaml>=6.0 # 工作流定义 +httpx>=0.27 # 测试客户端 + Agent 侧复用 +python-dotenv>=1.0 + +# 生产(docker-compose)才需要,本地开发可不装: +# asyncpg>=0.29 +# redis>=5.0 +# boto3>=1.34 + +# 开发/测试 +pytest>=8.0 +pytest-asyncio>=0.24 diff --git a/flashops/services/control-plane/tests/test_agent_enrollment.py b/flashops/services/control-plane/tests/test_agent_enrollment.py new file mode 100644 index 0000000..36520b8 --- /dev/null +++ b/flashops/services/control-plane/tests/test_agent_enrollment.py @@ -0,0 +1,24 @@ +from fastapi import HTTPException +import pytest + +from flashops_control.api.agents import _check_enrollment_token +from flashops_control.config import reset_settings + + +def test_production_agent_enrollment_is_fail_closed(monkeypatch): + monkeypatch.setenv("FLASHOPS_ENV", "production") + monkeypatch.delenv("FLASHOPS_AGENT_ENROLLMENT_TOKEN", raising=False) + reset_settings() + with pytest.raises(HTTPException) as missing: + _check_enrollment_token(None) + assert missing.value.status_code == 503 + + monkeypatch.setenv("FLASHOPS_AGENT_ENROLLMENT_TOKEN", "enroll-secret") + reset_settings() + with pytest.raises(HTTPException) as invalid: + _check_enrollment_token("wrong") + assert invalid.value.status_code == 401 + _check_enrollment_token("enroll-secret") + + # Leave the global cache empty so later tests read the restored environment. + reset_settings() diff --git a/flashops/services/control-plane/tests/test_agent_status.py b/flashops/services/control-plane/tests/test_agent_status.py new file mode 100644 index 0000000..a47e3dd --- /dev/null +++ b/flashops/services/control-plane/tests/test_agent_status.py @@ -0,0 +1,53 @@ +import datetime as dt + +from flashops_control.config import TimingPolicy +from flashops_control.enums import HostStatus +from flashops_control.services.agent_status import projected_agent_status + + +NOW = dt.datetime(2026, 7, 27, 12, 0, 0) +TIMING = TimingPolicy( + heartbeat_interval_s=5, + heartbeat_degraded_after_s=15, + heartbeat_lost_after_s=30, +) + + +def test_fresh_agent_heartbeat_is_online(): + status = projected_agent_status( + NOW - dt.timedelta(seconds=14), + HostStatus.ONLINE.value, + now=NOW, + timing=TIMING, + ) + assert status == HostStatus.ONLINE.value + + +def test_late_agent_heartbeat_is_degraded(): + status = projected_agent_status( + NOW - dt.timedelta(seconds=15), + HostStatus.ONLINE.value, + now=NOW, + timing=TIMING, + ) + assert status == HostStatus.DEGRADED.value + + +def test_lost_agent_heartbeat_is_offline(): + status = projected_agent_status( + NOW - dt.timedelta(seconds=30), + HostStatus.DEGRADED.value, + now=NOW, + timing=TIMING, + ) + assert status == HostStatus.OFFLINE.value + + +def test_fresh_unhealthy_agent_stays_degraded_until_healthy_report(): + status = projected_agent_status( + NOW, + HostStatus.DEGRADED.value, + now=NOW, + timing=TIMING, + ) + assert status == HostStatus.DEGRADED.value diff --git a/flashops/services/control-plane/tests/test_e2e_vertical_slice.py b/flashops/services/control-plane/tests/test_e2e_vertical_slice.py new file mode 100644 index 0000000..43cbf2f --- /dev/null +++ b/flashops/services/control-plane/tests/test_e2e_vertical_slice.py @@ -0,0 +1,413 @@ +import os +import time +import uuid +from pathlib import Path + +TEST_DB = Path("/tmp/flashops-e2e-{0}.db".format(os.getpid())) +TEST_OBJECTS = Path("/tmp/flashops-e2e-objects-{0}".format(os.getpid())) +os.environ["FLASHOPS_DATABASE_URL"] = "sqlite+aiosqlite:///" + str(TEST_DB) +os.environ["FLASHOPS_OBJECT_STORE_URL"] = str(TEST_OBJECTS) +os.environ["FLASHOPS_TIME_SCALE"] = "0.01" + +from fastapi.testclient import TestClient + +from flashops_control.config import reset_settings +from flashops_control.config import get_settings +from flashops_control.main import app + + +def setup_module(): + reset_settings() + TEST_DB.unlink(missing_ok=True) + + +def teardown_module(): + TEST_DB.unlink(missing_ok=True) + + +def test_demo_run_recovers_and_builds_evidence(): + with TestClient(app) as client: + health = client.get("/api/v1/health") + assert health.status_code == 200 + + preflight = client.post("/api/v1/preflight", json={}) + assert preflight.status_code == 200 + assert preflight.json()["passed"] is True + assert len(preflight.json()["checks"]) == 6 + + created = client.post( + "/api/v1/runs", + json={"loops": 4, "inject_failure": True, "created_by": "pytest"}, + ) + assert created.status_code == 201 + run_id = created.json()["id"] + + run = None + for _ in range(100): + response = client.get("/api/v1/runs/" + run_id) + assert response.status_code == 200 + run = response.json() + if run["state"] == "COMPLETED": + break + time.sleep(0.02) + + assert run is not None + assert run["state"] == "COMPLETED" + assert run["verdict"] == "PASS" + assert run["loop_done"] == 4 + assert run["recovery_count"] == 3 + assert run["evidence"]["completeness"] == 1.0 + assert Path(run["evidence"]["uri"], "manifest.json").exists() + + events = client.get("/api/v1/runs/{0}/events".format(run_id)).json() + kinds = [event["kind"] for event in events] + assert [event["seq"] for event in events] == list(range(1, len(events) + 1)) + assert "HEARTBEAT_LOST" in kinds + assert kinds.count("RECOVERY_STARTED") == 3 + assert "RECOVERY_SUCCEEDED" in kinds + assert kinds[-1] == "RUN_COMPLETED" + + +def test_mismatched_serial_is_rejected_before_run_creation(): + with TestClient(app) as client: + response = client.post( + "/api/v1/preflight", json={"discovered_serial": "SYSTEM-DISK"} + ) + assert response.status_code == 200 + payload = response.json() + assert payload["passed"] is False + serial = next(check for check in payload["checks"] if check["key"] == "serial") + assert serial["passed"] is False + + +def test_pause_resume_and_emergency_stop_are_audited(): + with TestClient(app) as client: + created = client.post( + "/api/v1/runs", + json={"loops": 50, "inject_failure": False, "created_by": "pytest-actions"}, + ) + assert created.status_code == 201 + run_id = created.json()["id"] + + run = created.json() + for _ in range(50): + run = client.get("/api/v1/runs/" + run_id).json() + if run["state"] == "RUNNING": + break + time.sleep(0.01) + assert run["state"] == "RUNNING" + + paused = client.post( + "/api/v1/runs/{0}/pause".format(run_id), + json={"actor": "pytest", "reason": "检查暂停"}, + ) + assert paused.status_code == 200 + assert paused.json()["state"] == "PAUSED" + + resumed = client.post( + "/api/v1/runs/{0}/resume".format(run_id), + json={"actor": "pytest", "reason": "检查继续"}, + ) + assert resumed.status_code == 200 + assert resumed.json()["state"] == "RUNNING" + + stopped = client.post( + "/api/v1/runs/{0}/emergency-stop".format(run_id), + json={"actor": "pytest", "reason": "检查急停"}, + ) + assert stopped.status_code == 200 + assert stopped.json()["state"] == "ABORTED" + assert stopped.json()["human_touches"] == 3 + events = client.get("/api/v1/runs/{0}/events".format(run_id)).json() + kinds = [event["kind"] for event in events] + assert "RUN_PAUSED" in kinds + assert "RUN_RESUMED" in kinds + assert kinds[-1] == "RUN_ABORTED" + + +def test_agent_registration_heartbeat_and_token_rotation(): + with TestClient(app) as client: + registered = client.post( + "/api/v1/agent/register", + json={ + "host_name": "WS-05", + "agent_version": "0.1.0-test", + "os_family": "linux", + "os_version": "pytest", + "kernel": "test-kernel", + "ip_address": "192.0.2.50", + "toolchain": {"fio": "fio-3.36"}, + "labels": {"system_device_paths": ["/dev/nvme0n1"]}, + }, + ) + assert registered.status_code == 201 + credentials = registered.json() + assert credentials["agent_id"].startswith("agent_") + assert credentials["host_id"] + assert len(credentials["token"]) >= 32 + + missing_token = client.post( + "/api/v1/agent/{0}/heartbeat".format(credentials["agent_id"]), + json={"healthy": True}, + ) + assert missing_token.status_code == 401 + + heartbeat = client.post( + "/api/v1/agent/{0}/heartbeat".format(credentials["agent_id"]), + headers={"Authorization": "Bearer " + credentials["token"]}, + json={ + "healthy": True, + "agent_version": "0.1.1-test", + "device_probe": {"nvme": ["nvme1n1"]}, + }, + ) + assert heartbeat.status_code == 200 + assert heartbeat.json()["ok"] is True + assert heartbeat.json()["commands"] == [] + + rotated = client.post( + "/api/v1/agent/register", + json={ + "host_id": credentials["host_id"], + "agent_version": "0.1.1-test", + }, + ) + assert rotated.status_code == 201 + rotated_credentials = rotated.json() + assert rotated_credentials["agent_id"] == credentials["agent_id"] + assert rotated_credentials["token"] != credentials["token"] + + old_token = client.post( + "/api/v1/agent/{0}/heartbeat".format(credentials["agent_id"]), + headers={"Authorization": "Bearer " + credentials["token"]}, + json={"healthy": True}, + ) + assert old_token.status_code == 401 + + new_token = client.post( + "/api/v1/agent/{0}/heartbeat".format(credentials["agent_id"]), + headers={"Authorization": "Bearer " + rotated_credentials["token"]}, + json={"healthy": False}, + ) + assert new_token.status_code == 200 + + hosts = client.get("/api/v1/agent/hosts") + assert hosts.status_code == 200 + current = next( + item for item in hosts.json() if item["host_id"] == credentials["host_id"] + ) + assert current["agent_id"] == credentials["agent_id"] + assert current["status"] == "DEGRADED" + assert "token" not in current + + +def _register_seed_agent(client): + response = client.post( + "/api/v1/agent/register", + json={"host_name": "WS-05", "agent_version": "0.2.0-pytest"}, + ) + assert response.status_code == 201 + return response.json() + + +def _idem_headers(credentials, key=None): + return { + "Authorization": "Bearer " + credentials["token"], + "Idempotency-Key": key or str(uuid.uuid4()), + } + + +def _lease(client, credentials): + return client.post( + "/api/v1/agent/{0}/lease".format(credentials["agent_id"]), + headers={"Authorization": "Bearer " + credentials["token"]}, + json={"wait_timeout_s": 0}, + ) + + +def _ack(client, credentials, lease, key=None): + return client.post( + "/api/v1/agent/{0}/steps/{1}/ack".format( + credentials["agent_id"], lease["step_id"] + ), + headers=_idem_headers(credentials, key), + json={"attempt": lease["attempt"]}, + ) + + +def _complete(client, credentials, lease, key=None): + return client.post( + "/api/v1/agent/{0}/steps/{1}/complete".format( + credentials["agent_id"], lease["step_id"] + ), + headers=_idem_headers(credentials, key), + json={ + "attempt": lease["attempt"], + "status": "SUCCEEDED", + "exit_code": 0, + "result": {"simulated": True}, + }, + ) + + +def test_agent_step_lease_idempotency_and_full_dry_run(): + with TestClient(app) as client: + credentials = _register_seed_agent(client) + created = client.post( + "/api/v1/runs", + json={ + "loops": 2, + "inject_failure": False, + "execution_mode": "agent_dry_run", + "created_by": "pytest-agent-lease", + }, + ) + assert created.status_code == 201 + run_id = created.json()["id"] + assert created.json()["state"] == "RUNNING" + assert created.json()["execution_mode"] == "agent_dry_run" + + unauthorized = client.post( + "/api/v1/agent/{0}/lease".format(credentials["agent_id"]), + json={"wait_timeout_s": 0}, + ) + assert unauthorized.status_code == 401 + + first = _lease(client, credentials) + assert first.status_code == 200 + lease = first.json() + assert lease["step_key"] == "flash-fw-b" + assert lease["attempt"] == 1 + assert lease["dry_run"] is True + + ack_key = str(uuid.uuid4()) + acked = _ack(client, credentials, lease, ack_key) + assert acked.status_code == 200 + assert acked.json()["state"] == "RUNNING" + replayed_ack = _ack(client, credentials, lease, ack_key) + assert replayed_ack.status_code == 200 + assert replayed_ack.json()["replayed"] is True + + renew = client.post( + "/api/v1/agent/{0}/steps/{1}/renew".format( + credentials["agent_id"], lease["step_id"] + ), + headers=_idem_headers(credentials), + json={"attempt": lease["attempt"]}, + ) + assert renew.status_code == 200 + + event_key = str(uuid.uuid4()) + output = client.post( + "/api/v1/agent/{0}/steps/{1}/events".format( + credentials["agent_id"], lease["step_id"] + ), + headers=_idem_headers(credentials, event_key), + json={ + "attempt": lease["attempt"], + "events": [ + {"message": "dry-run output 1", "payload": {"line": 1}}, + {"message": "dry-run output 2", "severity": "DEBUG"}, + ], + }, + ) + assert output.status_code == 200 + assert output.json()["accepted"] == 2 + replayed_output = client.post( + "/api/v1/agent/{0}/steps/{1}/events".format( + credentials["agent_id"], lease["step_id"] + ), + headers=_idem_headers(credentials, event_key), + json={ + "attempt": lease["attempt"], + "events": [ + {"message": "dry-run output 1", "payload": {"line": 1}}, + {"message": "dry-run output 2", "severity": "DEBUG"}, + ], + }, + ) + assert replayed_output.status_code == 200 + assert replayed_output.json()["replayed"] is True + + complete_key = str(uuid.uuid4()) + completed = _complete(client, credentials, lease, complete_key) + assert completed.status_code == 200 + replayed_complete = _complete(client, credentials, lease, complete_key) + assert replayed_complete.status_code == 200 + assert replayed_complete.json()["replayed"] is True + + step_count = 1 + while True: + leased = _lease(client, credentials) + if leased.status_code == 204: + break + assert leased.status_code == 200 + item = leased.json() + assert _ack(client, credentials, item).status_code == 200 + assert _complete(client, credentials, item).status_code == 200 + step_count += 1 + + assert step_count == 7 # flash + (3 loop-body steps * 2 loops) + run = client.get("/api/v1/runs/" + run_id).json() + assert run["state"] == "COMPLETED" + assert run["verdict"] == "PASS" + assert run["loop_done"] == 2 + assert run["evidence"]["completeness"] == 1.0 + events = client.get("/api/v1/runs/{0}/events".format(run_id)).json() + assert [event["seq"] for event in events] == list(range(1, len(events) + 1)) + assert sum(event["kind"] == "STEP_DISPATCHED" for event in events) == 7 + assert sum(event["kind"] == "STEP_SUCCEEDED" for event in events) == 7 + + +def test_expired_running_lease_retries_only_idempotent_steps(): + timing = get_settings().timing + original_ttl = timing.lease_ttl_s + object.__setattr__(timing, "lease_ttl_s", 0.01) + try: + with TestClient(app) as client: + credentials = _register_seed_agent(client) + + # The first workflow step is a non-idempotent firmware action. Once + # ACKed, an expired lease must freeze the run instead of rerunning it. + created = client.post( + "/api/v1/runs", + json={"loops": 1, "execution_mode": "agent_dry_run"}, + ) + assert created.status_code == 201 + run_id = created.json()["id"] + lease = _lease(client, credentials).json() + assert lease["idempotent"] is False + assert _ack(client, credentials, lease).status_code == 200 + time.sleep(0.02) + assert _lease(client, credentials).status_code == 204 + frozen = client.get("/api/v1/runs/" + run_id).json() + assert frozen["state"] == "FROZEN" + assert frozen["verdict"] == "INCONCLUSIVE" + + # On another run, finish the firmware step and let the idempotent fio + # workload expire. It is safely reissued once with attempt=2. + created_retry = client.post( + "/api/v1/runs", + json={"loops": 1, "execution_mode": "agent_dry_run"}, + ) + assert created_retry.status_code == 201 + retry_run_id = created_retry.json()["id"] + firmware = _lease(client, credentials).json() + assert _ack(client, credentials, firmware).status_code == 200 + assert _complete(client, credentials, firmware).status_code == 200 + workload = _lease(client, credentials).json() + assert workload["step_key"] == "workload" + assert workload["idempotent"] is True + assert _ack(client, credentials, workload).status_code == 200 + time.sleep(0.02) + retried = _lease(client, credentials) + assert retried.status_code == 200 + assert retried.json()["step_id"] == workload["step_id"] + assert retried.json()["attempt"] == 2 + stopped = client.post( + "/api/v1/runs/{0}/emergency-stop".format(retry_run_id), + json={"actor": "pytest", "reason": "清理重试场景"}, + ) + assert stopped.status_code == 200 + finally: + object.__setattr__(timing, "lease_ttl_s", original_ttl) diff --git a/flashops/services/control-plane/tests/test_recovery.py b/flashops/services/control-plane/tests/test_recovery.py new file mode 100644 index 0000000..5626ba3 --- /dev/null +++ b/flashops/services/control-plane/tests/test_recovery.py @@ -0,0 +1,40 @@ +from flashops_control.engine.recovery import RecoveryContext, next_recovery_level +from flashops_control.enums import RecoveryLevel, RecoveryTrigger + + +def test_integrity_failure_always_freezes(): + level = next_recovery_level( + RecoveryContext( + trigger=RecoveryTrigger.DATA_INTEGRITY, + attempt=0, + agent_online=True, + host_network_online=True, + oob_online=True, + ) + ) + assert level == RecoveryLevel.FREEZE + + +def test_offline_oob_removes_destructive_recovery_levels(): + level = next_recovery_level( + RecoveryContext( + trigger=RecoveryTrigger.HEARTBEAT_LOST, + attempt=2, + agent_online=True, + host_network_online=True, + oob_online=False, + ) + ) + assert level == RecoveryLevel.FREEZE + + +def test_recovery_escalates_in_order(): + context = dict( + trigger=RecoveryTrigger.HEARTBEAT_LOST, + agent_online=True, + host_network_online=True, + oob_online=True, + ) + assert next_recovery_level(RecoveryContext(attempt=0, **context)) == RecoveryLevel.AGENT_SOFT + assert next_recovery_level(RecoveryContext(attempt=1, **context)) == RecoveryLevel.OS_REBOOT + assert next_recovery_level(RecoveryContext(attempt=2, **context)) == RecoveryLevel.OOB_RESET diff --git a/flashops/services/control-plane/tests/test_safety.py b/flashops/services/control-plane/tests/test_safety.py new file mode 100644 index 0000000..6caf547 --- /dev/null +++ b/flashops/services/control-plane/tests/test_safety.py @@ -0,0 +1,39 @@ +from flashops_control.safety import PreflightRequest, run_preflight + + +def valid_request(**overrides): + values = { + "expected_serial": "DUT-001", + "discovered_serial": "DUT-001", + "allow_destructive": True, + "device_path": "/dev/nvme1n1", + "system_device_paths": ["/dev/nvme0n1", "/dev/nvme0n1p2"], + "firmware_model_allowed": True, + "host_online": True, + "oob_online": True, + } + values.update(overrides) + return PreflightRequest(**values) + + +def test_all_safety_gates_pass_for_bound_test_disk(): + result = run_preflight(valid_request()) + assert result.passed is True + assert len(result.checks) == 6 + + +def test_serial_mismatch_is_rejected(): + result = run_preflight(valid_request(discovered_serial="WRONG-DISK")) + assert result.passed is False + assert next(check for check in result.checks if check.key == "serial").passed is False + + +def test_system_partition_is_rejected(): + result = run_preflight(valid_request(device_path="/dev/nvme0n1p2")) + assert result.passed is False + assert next(check for check in result.checks if check.key == "system_disk").passed is False + + +def test_destructive_opt_in_is_required(): + result = run_preflight(valid_request(allow_destructive=False)) + assert result.passed is False diff --git a/flashops/services/control-plane/tests/test_state_machine.py b/flashops/services/control-plane/tests/test_state_machine.py new file mode 100644 index 0000000..3683bc1 --- /dev/null +++ b/flashops/services/control-plane/tests/test_state_machine.py @@ -0,0 +1,22 @@ +import pytest + +from flashops_control.engine.states import IllegalTransition, assert_run_transition +from flashops_control.enums import RunState + + +def test_happy_path_transitions_are_allowed(): + assert_run_transition(RunState.QUEUED.value, RunState.PREFLIGHT.value) + assert_run_transition(RunState.PREFLIGHT.value, RunState.RUNNING.value) + assert_run_transition(RunState.RUNNING.value, RunState.RECOVERING.value) + assert_run_transition(RunState.RECOVERING.value, RunState.RUNNING.value) + assert_run_transition(RunState.RUNNING.value, RunState.COMPLETED.value) + + +def test_terminal_state_cannot_transition(): + with pytest.raises(IllegalTransition): + assert_run_transition(RunState.COMPLETED.value, RunState.RUNNING.value) + + +def test_rejected_cannot_be_resumed(): + with pytest.raises(IllegalTransition): + assert_run_transition(RunState.REJECTED.value, RunState.QUEUED.value) diff --git a/flashops/services/host-agent/README.md b/flashops/services/host-agent/README.md new file mode 100644 index 0000000..7d07980 --- /dev/null +++ b/flashops/services/host-agent/README.md @@ -0,0 +1,56 @@ +# FlashOps Host Agent + +The Host Agent is a pull-mode process that runs on a test host. The first +implemented slice supports: + +- read-only host fingerprint discovery; +- enrollment into a Test Host record; +- one-time bearer token issuance; +- local credential persistence with mode `0600`; +- authenticated heartbeats and Host status updates; +- server-side heartbeat aging to `DEGRADED` after 15s and `OFFLINE` after 30s; +- optional gateway Basic Auth for deployments that enable an authenticated proxy. + +Step leases, command templates, event uploads, artifacts, and completion +reporting remain the next slice. + +## Local run + +Start the control plane in one terminal: + +```bash +make dev +``` + +Register and send one heartbeat in another: + +```bash +make dev-agent +``` + +Run continuously: + +```bash +make dev-agent-loop +``` + +By default the Agent state is stored at `~/.flashops/agent-state.json`. It +contains the raw bearer token and is created with mode `0600`. The control +plane stores only its SHA-256 digest. + +## Configuration + +| Variable | Purpose | +|---|---| +| `FLASHOPS_AGENT_SERVER` | Control plane base URL | +| `FLASHOPS_AGENT_HOST_ID` | Bind to an existing Test Host ID | +| `FLASHOPS_AGENT_HOST_NAME` | Bind to or create a Test Host by name | +| `FLASHOPS_AGENT_STATE_PATH` | Local credential state path | +| `FLASHOPS_AGENT_ENROLLMENT_TOKEN` | First-registration secret | +| `FLASHOPS_AGENT_BASIC_USER` | Optional authenticated-proxy user | +| `FLASHOPS_AGENT_BASIC_PASSWORD` | Optional authenticated-proxy password | + +Production registration is denied when the control plane does not have +`FLASHOPS_AGENT_ENROLLMENT_TOKEN` configured. Store that value in +`/etc/flashops/flashops.env` with root-only permissions; never put it in the +systemd unit or repository. diff --git a/flashops/services/host-agent/flashops_agent/__init__.py b/flashops/services/host-agent/flashops_agent/__init__.py new file mode 100644 index 0000000..4acb5c7 --- /dev/null +++ b/flashops/services/host-agent/flashops_agent/__init__.py @@ -0,0 +1,3 @@ +"""FlashOps pull-mode Host Agent.""" + +__version__ = "0.1.0" diff --git a/flashops/services/host-agent/flashops_agent/__main__.py b/flashops/services/host-agent/flashops_agent/__main__.py new file mode 100644 index 0000000..480bc00 --- /dev/null +++ b/flashops/services/host-agent/flashops_agent/__main__.py @@ -0,0 +1,180 @@ +"""Command-line entry point for the pull-mode Host Agent.""" +from __future__ import annotations + +import argparse +import os +import sys +import time +import uuid +from pathlib import Path +from typing import Optional, Tuple + +from .client import AgentUnauthorized, ControlPlaneClient, ControlPlaneError +from .fingerprint import heartbeat_payload, registration_payload +from .state import AgentState, StateStore + + +def _execute_dry_run(lease: dict) -> dict: + """Exercise the distributed worker path without invoking any host command.""" + + if lease.get("dry_run") is not True: + raise RuntimeError("Agent 拒绝执行未注册的真实适配器") + return { + "simulated": True, + "adapter": lease.get("adapter"), + "template": lease.get("template"), + "step_key": lease.get("step_key"), + } + + +def _process_one_lease( + client: ControlPlaneClient, state: AgentState +) -> Optional[str]: + lease = client.lease(state.agent_id, state.token, wait_timeout_s=0) + if lease is None: + return None + step_id = str(lease["step_id"]) + attempt = int(lease["attempt"]) + client.ack( + state.agent_id, + state.token, + step_id, + attempt, + str(uuid.uuid4()), + ) + client.report_events( + state.agent_id, + state.token, + step_id, + attempt, + [{"message": "Agent dry-run 正在验证步骤协议", "severity": "INFO"}], + str(uuid.uuid4()), + ) + result = _execute_dry_run(lease) + client.complete( + state.agent_id, + state.token, + step_id, + attempt, + status="SUCCEEDED", + exit_code=0, + result=result, + idempotency_key=str(uuid.uuid4()), + ) + return str(lease.get("step_key") or step_id) + + +def _parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser(description="FlashOps Host Agent") + parser.add_argument( + "--server", + default=os.environ.get("FLASHOPS_AGENT_SERVER", "http://127.0.0.1:8000"), + ) + parser.add_argument("--host-id", default=os.environ.get("FLASHOPS_AGENT_HOST_ID")) + parser.add_argument("--host-name", default=os.environ.get("FLASHOPS_AGENT_HOST_NAME")) + parser.add_argument( + "--state-path", + type=Path, + default=Path( + os.environ.get( + "FLASHOPS_AGENT_STATE_PATH", + str(Path.home() / ".flashops" / "agent-state.json"), + ) + ), + ) + parser.add_argument( + "--enrollment-token", + default=os.environ.get("FLASHOPS_AGENT_ENROLLMENT_TOKEN"), + ) + parser.add_argument( + "--basic-user", + default=os.environ.get("FLASHOPS_AGENT_BASIC_USER"), + ) + parser.add_argument( + "--basic-password", + default=os.environ.get("FLASHOPS_AGENT_BASIC_PASSWORD"), + ) + parser.add_argument("--interval", type=float, default=None) + parser.add_argument("--once", action="store_true") + return parser + + +def _basic_auth(user: Optional[str], password: Optional[str]) -> Optional[Tuple[str, str]]: + if bool(user) != bool(password): + raise ValueError("Basic Auth 用户名和密码必须同时提供") + return (user, password) if user and password else None + + +def _register( + client: ControlPlaneClient, + store: StateStore, + server: str, + host_id: Optional[str], + host_name: Optional[str], +) -> AgentState: + payload = client.register( + registration_payload(host_id=host_id, host_name=host_name) + ) + state = AgentState.from_payload(server, payload) + store.save(state) + print("Agent 已注册: {0} → Host {1}".format(state.agent_id, state.host_id)) + return state + + +def main() -> int: + args = _parser().parse_args() + server = args.server.rstrip("/") + store = StateStore(args.state_path) + try: + basic_auth = _basic_auth(args.basic_user, args.basic_password) + with ControlPlaneClient( + server, + enrollment_token=args.enrollment_token, + basic_auth=basic_auth, + ) as client: + state = store.load() + if state is None or state.server != server: + state = _register( + client, store, server, args.host_id, args.host_name + ) + + while True: + try: + response = client.heartbeat( + state.agent_id, + state.token, + heartbeat_payload(), + ) + except AgentUnauthorized: + state = _register( + client, store, server, args.host_id, args.host_name + ) + response = client.heartbeat( + state.agent_id, + state.token, + heartbeat_payload(), + ) + + print( + "心跳已确认: {0} · commands={1}".format( + response.get("server_time"), + len(response.get("commands", [])), + ) + ) + completed_step = _process_one_lease(client, state) + if completed_step: + print("dry-run 步骤已完成: {0}".format(completed_step)) + if args.once: + return 0 + interval = args.interval or state.heartbeat_interval_s + time.sleep(max(0.5, interval)) + except KeyboardInterrupt: + print("Agent 已停止") + return 0 + except (ControlPlaneError, OSError, RuntimeError, ValueError) as exc: + print("Agent 错误: {0}".format(exc), file=sys.stderr) + return 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/flashops/services/host-agent/flashops_agent/client.py b/flashops/services/host-agent/flashops_agent/client.py new file mode 100644 index 0000000..c4a3aa9 --- /dev/null +++ b/flashops/services/host-agent/flashops_agent/client.py @@ -0,0 +1,247 @@ +"""Small HTTP client for the control-plane Agent contract.""" +from __future__ import annotations + +from typing import Any, Dict, List, Optional, Tuple + +import httpx + + +class ControlPlaneError(RuntimeError): + pass + + +class AgentUnauthorized(ControlPlaneError): + pass + + +class StepLeaseConflict(ControlPlaneError): + pass + + +class ControlPlaneClient: + def __init__( + self, + server: str, + *, + enrollment_token: Optional[str] = None, + basic_auth: Optional[Tuple[str, str]] = None, + timeout_s: float = 15.0, + transport: Optional[httpx.BaseTransport] = None, + ) -> None: + self.server = server.rstrip("/") + self.enrollment_token = enrollment_token + self._client = httpx.Client( + base_url=self.server, + auth=httpx.BasicAuth(*basic_auth) if basic_auth else None, + timeout=timeout_s, + transport=transport, + ) + + def close(self) -> None: + self._client.close() + + def __enter__(self) -> "ControlPlaneClient": + return self + + def __exit__(self, *_: object) -> None: + self.close() + + @staticmethod + def _payload(response: httpx.Response) -> Dict[str, Any]: + try: + value = response.json() + except ValueError as exc: + raise ControlPlaneError( + "控制平面返回了非 JSON 响应: HTTP {0}".format(response.status_code) + ) from exc + if not isinstance(value, dict): + raise ControlPlaneError("控制平面响应不是 JSON object") + return value + + def register(self, fingerprint: Dict[str, Any]) -> Dict[str, Any]: + headers = {} + if self.enrollment_token: + headers["X-FlashOps-Enrollment-Token"] = self.enrollment_token + response = self._client.post( + "/api/v1/agent/register", + json=fingerprint, + headers=headers, + ) + if response.status_code == 401: + raise AgentUnauthorized("Agent 注册口令无效") + if response.status_code >= 400: + raise ControlPlaneError( + "Agent 注册失败: HTTP {0} {1}".format( + response.status_code, response.text[:200] + ) + ) + payload = self._payload(response) + for field in ("agent_id", "host_id", "token"): + if not payload.get(field): + raise ControlPlaneError("注册响应缺少字段: {0}".format(field)) + return payload + + def heartbeat( + self, + agent_id: str, + token: str, + heartbeat: Dict[str, Any], + ) -> Dict[str, Any]: + response = self._client.post( + "/api/v1/agent/{0}/heartbeat".format(agent_id), + json=heartbeat, + headers={"Authorization": "Bearer " + token}, + ) + if response.status_code == 401: + raise AgentUnauthorized("Agent token 已失效") + if response.status_code >= 400: + raise ControlPlaneError( + "Agent 心跳失败: HTTP {0} {1}".format( + response.status_code, response.text[:200] + ) + ) + payload = self._payload(response) + if payload.get("ok") is not True: + raise ControlPlaneError("控制平面未确认心跳") + return payload + + @staticmethod + def _agent_headers(token: str, idempotency_key: Optional[str] = None) -> Dict[str, str]: + headers = {"Authorization": "Bearer " + token} + if idempotency_key: + headers["Idempotency-Key"] = idempotency_key + return headers + + def lease( + self, + agent_id: str, + token: str, + *, + wait_timeout_s: float = 0.0, + ) -> Optional[Dict[str, Any]]: + response = self._client.post( + "/api/v1/agent/{0}/lease".format(agent_id), + json={"wait_timeout_s": wait_timeout_s}, + headers=self._agent_headers(token), + ) + if response.status_code == 204: + return None + return self._step_response(response, "领取步骤") + + def _step_response(self, response: httpx.Response, action: str) -> Dict[str, Any]: + if response.status_code == 401: + raise AgentUnauthorized("Agent token 已失效") + if response.status_code == 409: + detail = response.text[:300] + try: + detail = str(response.json().get("detail", detail)) + except (ValueError, AttributeError): + pass + raise StepLeaseConflict("{0}冲突: {1}".format(action, detail)) + if response.status_code >= 400: + raise ControlPlaneError( + "{0}失败: HTTP {1} {2}".format( + action, response.status_code, response.text[:200] + ) + ) + return self._payload(response) + + def _step_post( + self, + agent_id: str, + token: str, + step_id: str, + action: str, + payload: Dict[str, Any], + idempotency_key: str, + ) -> Dict[str, Any]: + response = self._client.post( + "/api/v1/agent/{0}/steps/{1}/{2}".format( + agent_id, step_id, action + ), + json=payload, + headers=self._agent_headers(token, idempotency_key), + ) + return self._step_response(response, action) + + def ack( + self, + agent_id: str, + token: str, + step_id: str, + attempt: int, + idempotency_key: str, + ) -> Dict[str, Any]: + return self._step_post( + agent_id, + token, + step_id, + "ack", + {"attempt": attempt}, + idempotency_key, + ) + + def renew( + self, + agent_id: str, + token: str, + step_id: str, + attempt: int, + idempotency_key: str, + ) -> Dict[str, Any]: + return self._step_post( + agent_id, + token, + step_id, + "renew", + {"attempt": attempt}, + idempotency_key, + ) + + def report_events( + self, + agent_id: str, + token: str, + step_id: str, + attempt: int, + events: List[Dict[str, Any]], + idempotency_key: str, + ) -> Dict[str, Any]: + return self._step_post( + agent_id, + token, + step_id, + "events", + {"attempt": attempt, "events": events}, + idempotency_key, + ) + + def complete( + self, + agent_id: str, + token: str, + step_id: str, + attempt: int, + *, + status: str, + idempotency_key: str, + exit_code: Optional[int] = None, + error_class: Optional[str] = None, + result: Optional[Dict[str, Any]] = None, + log_uri: Optional[str] = None, + ) -> Dict[str, Any]: + return self._step_post( + agent_id, + token, + step_id, + "complete", + { + "attempt": attempt, + "status": status, + "exit_code": exit_code, + "error_class": error_class, + "result": result or {}, + "log_uri": log_uri, + }, + idempotency_key, + ) diff --git a/flashops/services/host-agent/flashops_agent/fingerprint.py b/flashops/services/host-agent/flashops_agent/fingerprint.py new file mode 100644 index 0000000..8ec6628 --- /dev/null +++ b/flashops/services/host-agent/flashops_agent/fingerprint.py @@ -0,0 +1,97 @@ +"""Read-only host discovery used during registration and heartbeat.""" +from __future__ import annotations + +import os +import platform +import shutil +import socket +import subprocess +from pathlib import Path +from typing import Any, Dict, List, Optional + +from . import __version__ + + +def _ip_address() -> Optional[str]: + try: + with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock: + sock.connect(("192.0.2.1", 9)) + return str(sock.getsockname()[0]) + except OSError: + return None + + +def _tool_version(command: str, args: List[str]) -> Optional[str]: + executable = shutil.which(command) + if not executable: + return None + try: + result = subprocess.run( + [executable] + args, + check=False, + capture_output=True, + text=True, + timeout=3, + ) + except (OSError, subprocess.TimeoutExpired): + return None + output = (result.stdout or result.stderr).strip().splitlines() + return output[0][:128] if output else None + + +def discover_toolchain() -> Dict[str, str]: + probes = { + "fio": ("fio", ["--version"]), + "nvme-cli": ("nvme", ["version"]), + "smartctl": ("smartctl", ["--version"]), + } + versions: Dict[str, str] = {} + for name, (command, args) in probes.items(): + version = _tool_version(command, args) + if version: + versions[name] = version + return versions + + +def system_device_paths() -> List[str]: + if platform.system().lower() != "linux": + return [] + try: + for line in Path("/proc/mounts").read_text(encoding="utf-8").splitlines(): + fields = line.split() + if len(fields) >= 2 and fields[1] == "/" and fields[0].startswith("/dev/"): + return [os.path.realpath(fields[0])] + except OSError: + return [] + return [] + + +def registration_payload( + *, + host_id: Optional[str] = None, + host_name: Optional[str] = None, +) -> Dict[str, Any]: + return { + "host_id": host_id, + "host_name": host_name or platform.node() or socket.gethostname(), + "agent_version": __version__, + "os_family": platform.system().lower() or "unknown", + "os_version": platform.platform(), + "kernel": platform.release(), + "cpu": platform.processor() or None, + "motherboard": None, + "bios_version": None, + "ip_address": _ip_address(), + "toolchain": discover_toolchain(), + "labels": {"system_device_paths": system_device_paths()}, + } + + +def heartbeat_payload() -> Dict[str, Any]: + return { + "healthy": True, + "agent_version": __version__, + "ip_address": _ip_address(), + "toolchain": discover_toolchain(), + "device_probe": {"system_device_paths": system_device_paths()}, + } diff --git a/flashops/services/host-agent/flashops_agent/state.py b/flashops/services/host-agent/flashops_agent/state.py new file mode 100644 index 0000000..9f39f74 --- /dev/null +++ b/flashops/services/host-agent/flashops_agent/state.py @@ -0,0 +1,65 @@ +"""Agent credential persistence with restrictive local permissions.""" +from __future__ import annotations + +import json +import os +from dataclasses import asdict, dataclass +from pathlib import Path +from typing import Any, Dict, Optional + + +@dataclass(frozen=True) +class AgentState: + server: str + agent_id: str + host_id: str + token: str + heartbeat_interval_s: float = 5.0 + + @classmethod + def from_payload( + cls, + server: str, + payload: Dict[str, Any], + ) -> "AgentState": + return cls( + server=server.rstrip("/"), + agent_id=str(payload["agent_id"]), + host_id=str(payload["host_id"]), + token=str(payload["token"]), + heartbeat_interval_s=float(payload.get("heartbeat_interval_s", 5.0)), + ) + + +class StateStore: + def __init__(self, path: Path) -> None: + self.path = path + + def load(self) -> Optional[AgentState]: + try: + raw = json.loads(self.path.read_text(encoding="utf-8")) + return AgentState(**raw) + except FileNotFoundError: + return None + except (OSError, TypeError, ValueError, json.JSONDecodeError) as exc: + raise RuntimeError("Agent state 文件无效: {0}".format(self.path)) from exc + + def save(self, state: AgentState) -> None: + self.path.parent.mkdir(parents=True, exist_ok=True) + temporary = self.path.with_suffix(self.path.suffix + ".tmp") + descriptor = os.open( + str(temporary), + os.O_WRONLY | os.O_CREAT | os.O_TRUNC, + 0o600, + ) + try: + with os.fdopen(descriptor, "w", encoding="utf-8") as handle: + json.dump(asdict(state), handle, ensure_ascii=False, indent=2) + handle.write("\n") + handle.flush() + os.fsync(handle.fileno()) + os.chmod(temporary, 0o600) + os.replace(temporary, self.path) + finally: + if temporary.exists(): + temporary.unlink() diff --git a/flashops/services/host-agent/tests/test_client.py b/flashops/services/host-agent/tests/test_client.py new file mode 100644 index 0000000..1461728 --- /dev/null +++ b/flashops/services/host-agent/tests/test_client.py @@ -0,0 +1,141 @@ +from pathlib import Path +import stat +import uuid + +import httpx +import pytest + +from flashops_agent.client import AgentUnauthorized, ControlPlaneClient +from flashops_agent.state import AgentState, StateStore + + +def test_control_plane_client_registers_and_sends_heartbeat(): + requests = [] + + def handler(request: httpx.Request) -> httpx.Response: + requests.append(request) + if request.url.path == "/api/v1/agent/register": + return httpx.Response( + 201, + json={ + "agent_id": "agent_test", + "host_id": "host_test", + "token": "raw-token", + "heartbeat_interval_s": 5, + }, + ) + if request.url.path == "/api/v1/agent/agent_test/heartbeat": + return httpx.Response( + 200, + json={ + "ok": True, + "server_time": "2026-07-27T00:00:00Z", + "commands": [], + }, + ) + return httpx.Response(404) + + with ControlPlaneClient( + "http://control.test", + enrollment_token="enroll-test", + transport=httpx.MockTransport(handler), + ) as client: + registered = client.register( + { + "host_name": "pytest-host", + "agent_version": "0.1.0", + "os_family": "linux", + } + ) + heartbeat = client.heartbeat( + registered["agent_id"], + registered["token"], + {"healthy": True}, + ) + + assert heartbeat["ok"] is True + assert requests[0].headers["x-flashops-enrollment-token"] == "enroll-test" + assert requests[1].headers["authorization"] == "Bearer raw-token" + + +def test_control_plane_client_rejects_unauthorized_heartbeat(): + def handler(_: httpx.Request) -> httpx.Response: + return httpx.Response(401, json={"detail": "invalid"}) + + with ControlPlaneClient( + "http://control.test", + transport=httpx.MockTransport(handler), + ) as client: + with pytest.raises(AgentUnauthorized): + client.heartbeat("agent_test", "bad-token", {"healthy": True}) + + +def test_state_store_round_trip_uses_private_permissions(tmp_path: Path): + path = tmp_path / "agent-state.json" + store = StateStore(path) + expected = AgentState( + server="http://control.test", + agent_id="agent_test", + host_id="host_test", + token="raw-token", + heartbeat_interval_s=5.0, + ) + + store.save(expected) + + assert store.load() == expected + assert stat.S_IMODE(path.stat().st_mode) == 0o600 + + +def test_control_plane_client_runs_step_lease_protocol(): + requests = [] + + def handler(request: httpx.Request) -> httpx.Response: + requests.append(request) + path = request.url.path + if path.endswith("/lease"): + return httpx.Response( + 200, + json={"step_id": "step_test", "attempt": 1, "dry_run": True}, + ) + if path.endswith("/ack"): + return httpx.Response(200, json={"step_id": "step_test", "state": "RUNNING"}) + if path.endswith("/renew"): + return httpx.Response(200, json={"step_id": "step_test", "state": "RUNNING"}) + if path.endswith("/events"): + return httpx.Response(200, json={"step_id": "step_test", "accepted": 1}) + if path.endswith("/complete"): + return httpx.Response(200, json={"step_id": "step_test", "state": "SUCCEEDED"}) + return httpx.Response(404) + + token = "raw-token" + keys = [str(uuid.uuid4()) for _ in range(4)] + with ControlPlaneClient( + "http://control.test", transport=httpx.MockTransport(handler) + ) as client: + lease = client.lease("agent_test", token) + assert lease is not None + client.ack("agent_test", token, "step_test", 1, keys[0]) + client.renew("agent_test", token, "step_test", 1, keys[1]) + client.report_events( + "agent_test", + token, + "step_test", + 1, + [{"message": "hello"}], + keys[2], + ) + client.complete( + "agent_test", + token, + "step_test", + 1, + status="SUCCEEDED", + exit_code=0, + result={"simulated": True}, + idempotency_key=keys[3], + ) + + assert len(requests) == 5 + assert requests[0].headers["authorization"] == "Bearer raw-token" + assert requests[1].headers["idempotency-key"] == keys[0] diff --git a/前端UI八页面完成/.thumbnail b/前端UI八页面完成/.thumbnail new file mode 100644 index 0000000000000000000000000000000000000000..93027b7dd99e1e9afab1e3181a5713b2eb8c07ad GIT binary patch literal 24422 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 F007#v>JI<_ literal 0 HcmV?d00001 diff --git a/前端UI八页面完成/Assets.dc.html b/前端UI八页面完成/Assets.dc.html new file mode 100644 index 0000000..6d52bbe --- /dev/null +++ b/前端UI八页面完成/Assets.dc.html @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + +
    +
    +
    +
    07 · ASSETS
    +

    资产中心

    +
    登记 · 绑定 · 禁用 · 审计 — 任何破坏性任务必须绑定允许的 DUT
    +
    + + +
    + +
    + + + + + +
    + + +
    + + + + + + + + + + + +
    主机平台 / OSBIOSAgent心跳带外配对绑定工位状态
    HOST-A01x86 台式 · Win11 22631F26b1.4.22sOOB-01WS-01运行中
    HOST-A02x86 台式 · Win11 22631F26b1.4.21sOOB-02WS-02运行中
    HOST-L022U 服务器 · Ubuntu 22.04 · 6.5.0-412.1a1.4.2丢失 1m+OOB-03WS-03恢复中 L3
    HOST-L012U 服务器 · Ubuntu 22.04 · 6.5.0-412.1a1.4.23sOOB-04WS-04空闲
    HOST-A03x86 台式 · Win11 22631F26b1.4.22sOOB-05WS-05已预约
    HOST-W02x86 台式 · Win10 190451.8c1.3.9OOB-06 升级中WS-06维护
    +
    主机镜像:golden-image-win11-v7 / ubuntu2204-v4 · 组策略固化(禁用快速启动/自动更新/睡眠劫持) · Agent 自愈:本地看门狗 + 双进程互监,崩溃 10s 内拉起且证据不丢
    +
    +
    + + +
    + + + + + + + + + + + + + +
    序列号型号 / 形态当前固件P/E 磨损允许动作绑定生命周期
    SAMPLE-001NV-E1T92 · 1.92TB U.2FW_3.3.0-rc2 · slot2
    23%
    破坏写 刷写WS-01 · 运行中测试专用
    SAMPLE-002NV-E1T92 · 1.92TB U.2FW_3.3.0-rc2 · slot2
    31%
    破坏写 刷写WS-03 · 冻结测试专用
    SAMPLE-003NV-E960 · 960GB M.2FW_3.2.1 · slot1
    8%
    破坏写 刷写未绑定测试专用
    SAMPLE-004NV-E1T92 · 1.92TB U.2FW_3.2.1 · slot1
    67%
    破坏写WS-02 · 运行中测试专用
    SAMPLE-005NV-E1T92 · 1.92TB U.2FW_3.1.9 · slot1
    89%
    只读未绑定寿命预警
    SAMPLE-006NV-E1T92 · 1.92TB U.2FW_3.2.1 · slot1
    12%
    破坏写 刷写WS-05 · 已预约测试专用
    SAMPLE-007NV-E3T84 · 3.84TB U.2 工程样FW_3.3.0-rc3 · slot2
    4%
    刷写 只读收货检验中入库检
    SAMPLE-000NV-E960 · 960GB M.2
    100%
    禁用已退役
    +
    危险任务需序列号 + BDF/设备路径 + 允许标签三信号一致才执行 · 命中系统盘立即拒绝
    +
    +
    + + +
    + + + + + + + + + + + +
    版本SHA256来源兼容型号刷写工具审批
    FW_3.3.0-rc39f2c…41aa固件组 CI #4471NV-E1T92 / E3T84vendor_flash 2.4待审批
    FW_3.3.0-rc27d18…c930固件组 CI #4402NV-E1T92vendor_flash 2.4已审批
    FW_3.3.0-rc155ab…0f77固件组 CI #4359NV-E1T92vendor_flash 2.4已归档
    FW_3.2.14bd1…08ce发布库 · 量产基线NV-E1T92 / E960vendor_flash 2.4已审批 · 基线
    FW_3.1.9e0c2…7b14发布库NV-E1T92 / E960vendor_flash 2.3已归档
    FW_2.9.4-eng1a9d…3c58工程调试版NV-E3T84vendor_flash 2.4仅实验工位
    +
    固件哈希在登记与刷写前双重校验 · 刷写命令只能来自签名模板
    +
    +
    + + +
    + + + + + + + + + + + + + + + +
    连接器接入方式版本risk_levelhealthcheck复用
    nvme-cliCLI2.9.1 · conn 1.2只读+管理✓ 4m 前3 客户
    fioCLI3.36 · conn 1.4写入✓ 4m 前3 客户
    vendor_flash(私有刷写)CLI2.4 · conn 0.9固件更新✓ 12m 前本客户
    MPTool 量产工具GUI-wrap5.1 · pywinauto 0.3格式化+刷写受控例外本客户
    smartctlCLI7.4 · conn 1.1只读✓ 4m 前3 客户
    PyNVMe3 执行器Python API24.6 · conn 0.7β写入✓ 1h 前2 客户
    SANBlaze REST 桥REST API10.5 · conn 0.5β写入+注错未接入设备1 客户
    blktrace 采集CLI1.3 · conn 1.0只读✓ 4m 前2 客户
    私有日志抓取 log_dumpCLI1.8 · conn 0.9只读✓ 9m 前本客户
    +
    连接器接口:discover / precheck / execute / collect / cancel / health / normalize_result · 输入输出受 JSON Schema 约束 · 复用率目标 >60%
    +
    +
    + + +
    + + + + + + + + + + + +
    控制器硬件固件通道能力独立心跳配对主机状态
    OOB-01RPi 5 + 光耦 ATX 板oob-agent 0.9.4PWR RST HDMI 温度1sHOST-A01在线
    OOB-02RPi 5 + 光耦 ATX 板oob-agent 0.9.4PWR RST 温度1sHOST-A02在线
    OOB-03JetKVM + ATX 扩展adapter 0.4PWR RST KVM画面1sHOST-L02执行 L3
    OOB-04PiKVM v4 + ATXadapter 0.4PWR RST KVM画面 串口2sHOST-L01在线
    OOB-05RPi CM4 工业载板oob-agent 0.9.4PWR RST AC 温度1sHOST-A03在线
    OOB-06RPi 5 + 光耦 ATX 板0.9.4 → 0.9.5升级中HOST-W02维护
    +
    带外控制器走独立网络与独立心跳,用于区分主机崩溃与网络故障 · 兼容任意商品 KVM/PDU 作执行器
    +
    +
    + + +
    +
    + + 登记 DUT +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + + diff --git a/前端UI八页面完成/Compare.dc.html b/前端UI八页面完成/Compare.dc.html new file mode 100644 index 0000000..a25631c --- /dev/null +++ b/前端UI八页面完成/Compare.dc.html @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + +
    + + + + diff --git a/前端UI八页面完成/ConsoleNav.dc.html b/前端UI八页面完成/ConsoleNav.dc.html new file mode 100644 index 0000000..6930e6c --- /dev/null +++ b/前端UI八页面完成/ConsoleNav.dc.html @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + +
    + +
    + + 实验室处于安全停止状态 + 全部任务已冻结,现场证据已保留,自动重启被禁止 · 触发人 quan.zhang · {{ stopTime }} + +
    +
    +
    + + STORAGE LABOS + REGRESSION WORKER · 多工位控制台 + + + + + 内网部署 · 深圳一号实验室 + {{ clock }} + +
    +
    + 事件总线 LIVE + 工位 5/6 在线 + 运行 2 + 恢复中 1 + 队列 3 + + UCR(7D) 96.8% + 介入密度 1.8 次/百小时 + 自动恢复成功率 87.5% + 最近人工介入 14:32 · WS-03 +
    + +
    +
    + +
    + + 紧急停止 · EMERGENCY STOP +
    +
    +

    将对全部 6 个工位执行安全停止,该动作写入不可变审计日志:

    +
      +
    • 停止 2 个运行中任务(run-20260727-0001 / 0002),在当前检查点冻结
    • +
    • 中断 WS-03 正在执行的 L3 带外 Reset 恢复流程
    • +
    • 保留全部现场证据,禁止任何自动重启与供电动作
    • +
    +
    恢复运行需要实验室负责人审批。误触发将计入基础设施误报率。
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + + diff --git a/前端UI八页面完成/Dashboard.dc.html b/前端UI八页面完成/Dashboard.dc.html new file mode 100644 index 0000000..5044164 --- /dev/null +++ b/前端UI八页面完成/Dashboard.dc.html @@ -0,0 +1,429 @@ + + + + + + + + + + + + + + + +
    +
    +
    +
    01 · OVERVIEW
    +

    总览

    +
    深圳一号实验室 · 6 工位 · 遥测每 2s 刷新 · 2026-07-27
    +
    + +
    + + + +
    +
    + + +
    +
    +
    + + UCR · 无人值守完成率(7D) +
    + 96.8% + +
    + ▲ 0.6pp vs 上周 · 目标 98% +
    +
    + + 释放工时 · HOURS FREED +
    + 41.5 h/周 + +
    + ≈ 0.9 工程师 · ¥32万/年等值 +
    +
    + + 介入密度 · TOUCHES /100H · 主指标 +
    + 1.8 + +
    + ▼ 0.4 vs 上周 · 口径:任何人工触碰 +
    +
    + + 自动恢复成功率 · RECOVERY +
    + 87.5% + +
    + 28/32 · L1 62% · L2 21% · L3 17% +
    +
    + +
    +
    +
    工位状态 · WORKSTATIONS 6
    +
    + +
    + +
    + WS-01 + HOST-A01 · Win11 22631 + RUNNING +
    +
    +
    fw_ab_powerstate_regression
    +
    run-20260727-0001 · FW_3.3.0-rc2(B) · 休眠恢复循环
    +
    +
    +
    轮次 67 / 100预计完成 23:40
    +
    +
    +
    DUT SAMPLE-001{{ t01 }}°C心跳 {{ hb01 }}
    +
    + +
    + +
    + WS-02 + HOST-A02 · Win11 22631 + RUNNING +
    +
    +
    fw_retention_72h
    +
    run-20260727-0002 · FW_3.2.1(A) · 高温数据保持
    +
    +
    +
    51.2 / 72 h预计完成 07-29 09:10
    +
    +
    +
    DUT SAMPLE-004{{ t02 }}°C心跳 {{ hb02 }}
    +
    + +
    + +
    + WS-03 + HOST-L02 · Ubuntu 22.04 + RECOVERING · L3 +
    +
    +
    fw_ab_powerstate_regression
    +
    run-20260726-0007 · FW_3.3.0-rc2(B) · 轮次 41/100 冻结
    +
    +
    + L1 软恢复 + + L2 OS重启 + + L3 带外RESET + + L4 AC断电 +
    +
    DUT SAMPLE-00243.8°C心跳丢失 {{ lost03 }}
    +
    + +
    + +
    + WS-04 + HOST-L01 · Ubuntu 22.04 + IDLE +
    +
    空闲,可接受调度。
    上一任务 run-20260725-0003 · PASSED · 100/100 循环
    +
    DUT 未绑定36.2°C心跳 {{ hb04 }}
    +
    + +
    + +
    + WS-05 + HOST-A03 · Win11 22631 + QUEUED +
    +
    +
    fw_coldboot_matrix
    +
    预约 今日 22:00 · 500 次冷启动 · FW_3.3.0-rc2(B)
    +
    +
    DUT SAMPLE-00635.9°C心跳 {{ hb05 }}
    +
    + +
    + +
    + WS-06 + HOST-W02 · Win10 19045 + OFFLINE +
    +
    维护窗口至 07-28 09:00
    带外控制器 OOB-06 固件升级中
    +
    DUT 已下线心跳 —
    +
    +
    +
    + +
    +
    + +
    +
    需要人工处理
    + 3 +
    +
    +
    + UNKNOWN +
    run-20260726-0011 证据不足待分类
    +
    +
    + 阻断 +
    FW_3.3.0-rc2 存在阻断问题,需研发确认
    +
    +
    + 维护 +
    WS-06 维护窗口今日到期,确认恢复排产
    +
    +
    +
    + +
    + +
    最近恢复动作
    +
    +
    14:35WS-03 L3 带外 Reset 已触发进行中
    +
    14:33WS-03 L2 OS 重启超时(120s)失败
    +
    14:32WS-03 L1 Agent 软恢复无响应失败
    +
    02:31WS-03 心跳丢失 → L3 Reset · 4m12s成功
    +
    昨 23:04WS-01 L1 进程清理 · 38s成功
    +
    + 全部恢复记录 → +
    + +
    + +
    今日队列
    +
    +
    22:00fw_coldboot_matrix · WS-05P1
    +
    23:45fw_ab 续跑 cycle 41 · WS-03P2
    +
    明 06:00incoming_qc_quick · WS-04P3
    +
    + 任务中心 → +
    +
    +
    +
    +
    + + +
    +
    + +
    + 北极星 · NORTH STAR +
    96.8%
    +
    无人值守完成率 UCR · 近 7 天
    +
    ▲ 0.6pp vs 上周 · 产品化目标 98%+
    +
    +
    +
    UCR 趋势 · 07-21 → 07-27计划任务 214 · 无人完成 207
    + + + + + 94 + 96 + 98 + + + + 07-21 + 07-23 + 07-25 + 07-27 + +
    +
    + +
    +
    释放工时41.5 h/周≈ 0.9 工程师 · ¥32万/年
    +
    介入密度1.8 /百h主指标 · 任何触碰计 1 次
    +
    自动恢复成功率87.5%28/32 次失联
    +
    证据完整率100%关键字段零丢失
    +
    基础设施误报率3.1%▼ 护栏指标,单独监控
    +
    + +
    +
    + +
    版本风险 · FIRMWARE GATE
    +
    +
    + FW_3.3.0-rc2 + 候选(B) + 暂缓发布 +
    +
    + 阻断 1 + 新增 2 + 已修复 5 + 仍存在 3 +
    +
    阻断:FS-0074 数据校验失败(LBA 0x2E41xxxx) · 查看 A/B 对比 →
    +
    +
    + FW_3.2.1 + 基线(A) + 稳定基线 +
    +
    + +
    + +
    介入原因分布 · 30D
    +
    +
    DUT_ENUMERATION_FAILURE8
    +
    TEST_SCRIPT_FAILURE7
    +
    INFRA_NETWORK_FAILURE6
    +
    INFRA_HOST_OS_FAILURE5
    +
    INFRA_AGENT_FAILURE4
    +
    UNKNOWN2
    +
    +
    DUT 信号 INFRA 噪声
    +
    + +
    + +
    工位利用率 · 7D
    +
    +
    WS-0192%
    +
    WS-0288%
    +
    WS-0361%
    +
    WS-0434%
    +
    WS-0512%
    +
    WS-060% 维护
    +
    +
    夜间(22:00–08:00)利用率 74% · 无人值守时段占比 63%
    +
    +
    +
    +
    + + +
    +
    + +
    工位 RAIL
    +
    WS-01cycle 67/100RUN
    +
    WS-0251.2/72hRUN
    +
    WS-03L3 RESETRCVR
    +
    WS-04空闲IDLE
    +
    WS-0522:00 预约QUE
    +
    WS-06维护OFF
    +
    UCR 96.8% · 介入 1.8/百h
    +
    + +
    +
    + +
    运行中任务 · 2
    + + + + + + + + + + + + + + + + + + + + + + +
    RUN工位模板 / 固件进度心跳ETA
    run-…0727-0001WS-01
    fw_ab_powerstate_regression
    FW_3.3.0-rc2(B)
    67/100
    {{ hb01 }}23:40监视
    run-…0727-0002WS-02
    fw_retention_72h
    FW_3.2.1(A)
    51/72h
    {{ hb02 }}07-29监视
    +
    +
    + +
    队列与恢复 · 3
    任务中心 →
    + + + + + + + +
    优先级任务工位计划时间状态
    P1fw_coldboot_matrix · 500 次冷启动WS-05今日 22:00已预约
    P2fw_ab 从检查点 cycle 41 续跑WS-03恢复后自动等待恢复
    P3incoming_qc_quick · 来料抽检 12 盘WS-04明日 06:00已预约
    +
    +
    + +
    + +
    事件流 · EVENT BUS
    +
    +
    14:35:12[OOB]WS-03 RESET_SENT · 光耦通道 CH2 · 脉冲 250ms
    +
    14:33:40[RCVR]WS-03 L2 超时,升级 L3(策略 esc-default-v2)
    +
    14:32:29[EVID]WS-03 死机快照已抓取:HDMI 帧 + 串口尾部 2KB
    +
    14:32:07[HB]WS-03 心跳丢失 >30s,判定 HOST_UNREACHABLE
    +
    14:28:51[TEST]WS-01 cycle 67 数据校验 PASS · 4k_mixed 300s
    +
    14:25:03[TEST]WS-01 hibernate → resume 成功 · 唤醒耗时 11.2s
    +
    14:20:44[SYS]WS-05 预检通过:磁盘/网络/OOB/工具版本/时钟同步
    +
    14:18:02[SYS]FW_3.3.0-rc3.bin 已登记 · SHA256 9f2c…41aa · 待审批
    +
    +
    +
    +
    +
    +
    + + + diff --git a/前端UI八页面完成/Deck.dc.html b/前端UI八页面完成/Deck.dc.html new file mode 100644 index 0000000..15c37d2 --- /dev/null +++ b/前端UI八页面完成/Deck.dc.html @@ -0,0 +1,597 @@ + + + + + + + + + + + + +Industry — deck + + + + + + + + + + + diff --git a/前端UI八页面完成/Evidence.dc.html b/前端UI八页面完成/Evidence.dc.html new file mode 100644 index 0000000..a8e4f9c --- /dev/null +++ b/前端UI八页面完成/Evidence.dc.html @@ -0,0 +1,272 @@ + + + + + + + + + + + + + + + +
    +
    +
    +
    04 · EVIDENCE
    +

    证据浏览器

    +
    失败时间线 · Evidence Bundle · 每个结论回链到原始证据
    +
    + + + + +
    + +
    +
    + +
    +
    失败记录 · 近 7 天
    + 3 / 214 +
    + +
    + +
    +
    + {{ f.run }} + {{ f.when }} +
    +
    {{ f.code }}
    +
    {{ f.summary }}
    +
    {{ f.meta }}
    +
    +
    +
    +
    + DUT_* + INFRA_* + UNKNOWN +
    +
    + +
    +
    + +
    + {{ selRun }} + {{ selCode }} + 指纹 {{ selFs }} + {{ selMeta }} +
    +
    {{ selHeadline }}
    +
    + HOST-L02 · Ubuntu 22.04 · 6.5.0-41 + BIOS F26b + FW_3.3.0-rc2 · slot 2 + nvme-cli 2.9.1 · fio 3.36 + workflow v3 · sig 8e02…c4 +
    +
    + +
    + +
    事件时间线 · TIMELINE
    +
    + +
    + {{ ev.t }} +
    + + +
    +
    +
    + {{ ev.lane }} + {{ ev.title }} +
    +
    {{ ev.detail }}
    + +
    + + {{ lk }} + +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    AI 摘要 · 仅引用证据,不做最终判断
    + 置信度 0.82 · 本地模型 +
    +
    S4 唤醒后 DUT 未完成链路训练即被访问:kernel 在唤醒后 3s 内未出现 nvme 重枚举日志 kernel.log:L1042-1067,而基线固件 A 平均 1.8s 完成 metrics.json#resume_enum。与 FS-0091 簇内 11 次历史失败特征一致(均为 S4 唤醒 + rc 系列固件)。
    +
    尚不能排除:主板 BIOS F26b 的 S4 电源时序差异(建议单变量验证:同盘同固件换 HOST-L01 复跑 20 循环)。
    +
    +
    + +
    +
    + +
    +
    EVIDENCE BUNDLE
    + run-20260726-0007/ +
    +
    + +
    + {{ n.chev }} + {{ n.name }} + + 关键 + + {{ n.size }} +
    +
    +
    +
    manifest 校验通过 · 42 文件 · SHA256 全部一致
    生成组件 evidence-bus 0.9.4 · 不可覆盖
    +
    +
    + +
    恢复过程 · RECOVERY.JSON
    +
    +
    L1 Agent 软恢复FAIL · 60s
    +
    L2 OS 通道重启FAIL · 120s
    +
    L3 带外 ResetOK · 2m17s
    +
    总耗时 / 介入4m12s · 无人
    +
    + 回放当时的实时视图 → +
    +
    +
    +
    +
    + + + diff --git a/前端UI八页面完成/Failures.dc.html b/前端UI八页面完成/Failures.dc.html new file mode 100644 index 0000000..48934f2 --- /dev/null +++ b/前端UI八页面完成/Failures.dc.html @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + +
    +
    +
    +
    06 · FAILURES
    +

    失败中心

    +
    跨任务聚类 · 失败指纹由稳定字段构成,工程师可拆分/合并/命名,结果反哺规则
    +
    + + +
    + + + + + +
    +
    + +
    + 视觉语言 + DUT_* 实心 — 真实信号,计入版本结论 + INFRA_* 斜线 — 基础设施噪声,单独监控误报率 + SCRIPT 灰 — 脚本/参数问题 + UNKNOWN 虚线 — 证据不足,等待分类 + 阻断 — 门禁级 +
    + +
    + +
    + 指纹状态码摘要次数 · 14D首次 / 最近关联版本状态 +
    + +
    +
    + {{ r.chev }} + {{ r.id }} + {{ r.code }} + {{ r.summary }}阻断 + {{ r.count }} + + + {{ r.first }}
    {{ r.last }}
    + + {{ v }} + + {{ r.status }} +
    + +
    +
    +
    指纹特征字段 · SIGNATURE
    +
    +
    {{ ft.k }}{{ ft.v }}
    +
    +
    +
    +
    关联运行 · {{ r.count }} 次
    +
    + {{ rn }} +
    +
    +
    +
    +
    最短复现 · REPRO
    +
    {{ r.repro }}
    +
    +
    + + + + +
    +
    +
    +
    +
    +
    +
    +
    + 聚类由归一化结构字段计算签名,语义模型仅辅助合并建议 + 30 天:去重后 7 簇 ← 43 次原始失败 · 重复问题合并率 84% +
    +
    +
    + + + diff --git a/前端UI八页面完成/LiveRun.dc.html b/前端UI八页面完成/LiveRun.dc.html new file mode 100644 index 0000000..0265d05 --- /dev/null +++ b/前端UI八页面完成/LiveRun.dc.html @@ -0,0 +1,450 @@ + + + + + + + + + + + + + + + +
    +
    +
    +
    03 · LIVE RUN
    +

    实时运行

    +
    {{ hostName }} · 只在必须时人工接管
    +
    + + +
    + + +
    +
    + +
    + +
    +
    {{ runId }}
    +
    fw_ab_powerstate_regression v3 · 已审核模板
    +
    + +
    固件 {{ firmwareLabel }}
    DUT {{ dutLabel }}
    + +
    开始 {{ startText }}
    检查点 {{ checkpointText }}
    + +
    +
    轮次 {{ cycle }} / {{ target }}由控制平面实时投影
    +
    +
    + {{ badgeText }} + + + +
    + + +
    + {{ hostName }} 已安全停止 + 任务已安全停止,现场与检查点已保留 · 已写入不可变审计事件 + +
    +
    + + +
    +
    + +
    步骤执行器 · WORKFLOW
    +
    lab.precheck09:12
    +
    vendor.flash_firmware B09:14
    +
    host.reboot · 版本确认09:18
    +
    +
    loop · repeat {{ target }}cycle {{ cycle }}
    +
    nvme.collect_baseline
    +
    io.run_profile 4k_mixed{{ ioNote }}
    +
    host.hibernate
    +
    host.wait_resume
    +
    dut.verify_enumeration
    +
    data.verify_hash
    +
    +
    +
    ON_FAILURE
    +
    evidence.capture_all
    recovery.escalate
    failure.classify
    +
    +
    PASS 66FAIL 0自动恢复 1介入 0
    +
    + +
    +
    + +
    +
    实时日志流 · EVENT LOG
    + + ALL + CMD + OOB + WARN + +
    +
    + +
    {{ ln.t }}{{ ln.lane }}{{ ln.text }}
    +
    +
    +
    +
    +
    + +
    HDMI 采集画面
    {{ hdmiNote }}
    +
    + +
    +
    采集卡 CAP-01 · 1080p@5fps · OS 未启动/蓝屏时仍可留证
    +
    +
    + +
    遥测 · TELEMETRY
    +
    +
    HOST 心跳
    {{ hbText }}
    +
    DUT 温度
    {{ temp }}°C
    +
    设备枚举
    nvme0n1 · Gen4 x4
    +
    供电 · OOB
    AC ON · ATX ON
    +
    +
    +
    温度 30min阈值 55°C
    + +
    +
    +
    +
    + +
    +
    + +
    分级恢复阶梯 · ESCALATION
    esc-default-v2
    +
    + +
    + {{ lv.num }} +
    +
    {{ lv.name }}
    +
    {{ lv.desc }}
    +
    + {{ lv.state }} +
    +
    +
    +
    恢复前先取证 · 多次失败进入安全停止,禁止无限重启
    +
    +
    + +
    本轮关键指标 · CYCLE {{ cycle }}
    +
    +
    4k_mixed IOPS218,430
    +
    P99 延迟412 µs
    +
    唤醒耗时11.2 s
    +
    SMART 温度峰值46°C
    +
    校验哈希一致 ✓
    +
    + 打开本任务证据 → +
    +
    +
    +
    + + +
    +
    + +
    执行时间线 · 14:20 → NOW
    每格 2 分钟 · cycle 66–67
    +
    +
    TEST
    +
    +
    io 4k_mixed
    +
    hib
    +
    res
    +
    枚举
    +
    verify
    +
    cycle 67 · io 4k_mixed RUNNING
    +
    +
    HOST
    +
    +
    ONLINE · hb 1-3s
    +
    S4 休眠
    +
    ONLINE · resume 11.2s
    +
    +
    DUT
    +
    +
    nvme0n1 Gen4 x4 · 42-46°C
    +
    +
    重新枚举 1.8s · SMART 正常
    +
    +
    OOB
    +
    +
    待命 · 心跳监测中 · 无供电动作
    +
    +
    +
    +
    测试步骤 电源状态 链路事件│ 播放头 NOW
    +
    +
    +
    + +
    日志尾部 · TAIL
    +
    + +
    {{ ln.t }}{{ ln.lane }}{{ ln.text }}
    +
    +
    +
    +
    + +
    恢复阶梯
    +
    + +
    + {{ lv.num }} +
    {{ lv.name }}
    + {{ lv.state }} +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + diff --git a/前端UI八页面完成/Tasks.dc.html b/前端UI八页面完成/Tasks.dc.html new file mode 100644 index 0000000..0c8c978 --- /dev/null +++ b/前端UI八页面完成/Tasks.dc.html @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + +
    +
    +
    +
    02 · TASKS
    +

    任务中心

    +
    创建 · 队列 · 预约 · 破坏性任务必须绑定允许的 DUT 序列号
    +
    + + 运行 2 + 队列 3 + 今日完成 4 +
    + +
    + +
    +
    创建任务 · NEW RUN
    + 固件 A/B 循环回归 + 工作流签名 8e02…c4 · 已审核 v3 +
    +
    + +
    +
    01资产绑定
    +
    + +
    +
    + +
    +
    SN S6XNNA0T609 · 允许破坏性写入
    P/E 磨损 12% · 生命周期 测试专用
    带外 OOB-05 已配对 ✓
    +
    + +
    +
    02固件 A / B
    +
    + +
    +
    + +
    +
    A sha256 4bd1…08ce ✓
    B sha256 9f2c…41aa ✓
    B 尚未审批 — 启动前需固件负责人批准
    +
    + +
    +
    03模板与参数
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    + +
    +
    04安全与预检
    + + +
    +
    环境预检 · PRECHECK{{ pcNote }}
    +
    + +
    {{ ck.icon }}{{ ck.name }}{{ ck.note }}
    +
    +
    +
    + +
    ✓ 已入队 {{ startedRun }} · WS-05 · 正在执行 · 跟踪 →
    +
    +
    + + +
    +
    +
    +
    + +
    +
    + +
    队列 · QUEUE 3
    调度策略:优先级 + 维护窗口避让
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    任务工位 / DUT计划状态
    P1
    fw_coldboot_matrix · 500 次冷启动
    FW_3.3.0-rc2(B)
    WS-05 · SAMPLE-006今日 22:00已预约
    P2
    fw_ab 从检查点续跑 · cycle 41→100
    FW_3.3.0-rc2(B)
    WS-03 · SAMPLE-002恢复后自动等待恢复
    P3
    incoming_qc_quick · 来料抽检 12 盘
    批次 B2607-11
    WS-04 · 批量明日 06:00已预约
    +
    + +
    + +
    最近完成 · RECENT
    全部报告 →
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RUN模板结果循环介入报告
    run-…0726-0007fw_ab_powerstateFAILED_DUT97/1001证据 · A/B
    run-…0726-0011fw_retention_72h 段2UNKNOWN50/500证据
    run-…0725-0003fw_ab_powerstatePASSED100/1000A/B
    run-…0725-0018fw_coldboot_matrixFAILED_INFRA88/1000证据
    +
    +
    +
    +
    + + + diff --git a/前端UI八页面完成/Workflows.dc.html b/前端UI八页面完成/Workflows.dc.html new file mode 100644 index 0000000..7bc6e37 --- /dev/null +++ b/前端UI八页面完成/Workflows.dc.html @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + +
    +
    +
    +
    08 · WORKFLOWS
    +

    工作流模板

    +
    SOP 结构化 · 版本化 · 审批与签名 — 运行时禁止拼接未审核的危险命令
    +
    + + + +
    + +
    +
    + +
    +
    + {{ tp.name }} + {{ tp.ver }} +
    +
    {{ tp.desc }}
    +
    + {{ tp.status }} + {{ rk }} + {{ tp.updated }} +
    +
    +
    +
    每接入一套真实 SOP,就沉淀为可复用模板与连接器 · 模板参数化,严格控制定制边界
    +
    + +
    +
    + +
    +

    {{ selName }}

    + {{ selStatus }} + + + + +
    +
    + {{ selVer }} · workflow_version 1 + 签名 {{ selSig }} + 来源 {{ selSource }} + 检查点:每循环 + 恢复策略 esc-default-v2 +
    +
    + +
    +
    + +
    步骤定义 · STEPS
    + +
    + {{ st.num }} +
    +
    + {{ st.name }} + {{ st.risk }} +
    +
    {{ st.note }}
    +
    + {{ st.meta }} +
    +
    +
    +
    ON_FAILURE · 失败处理管道
    +
    + evidence.capture_all + + recovery.escalate + + failure.classify + 取证先于恢复 · 破坏性步骤不自动重试 +
    +
    +
    + +
    +
    + +
    安全声明 · SAFETY
    +
    safety:
      allowed_dut_serials: {{ selSerials }}
      destructive_write: {{ selDestr }}
      require_approval: true
      system_disk_guard: enforce
    variables:
      cycles: {{ selCycles }}
      firmware: "${firmware}"
    +
    Format / Sanitize / 刷写只能来自签名模板,参数受 Schema 限制
    +
    +
    + +
    审批记录 · AUDIT
    +
    + +
    + {{ ap.t }} + + {{ ap.what }} + {{ ap.who }} +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + diff --git a/前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/_adherence.oxlintrc.json b/前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/_adherence.oxlintrc.json new file mode 100644 index 0000000..3b11af9 --- /dev/null +++ b/前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/_adherence.oxlintrc.json @@ -0,0 +1,152 @@ +{ + "plugins": [ + "react", + "import" + ], + "rules": { + "react/forbid-elements": [ + "warn", + { + "forbid": [] + } + ], + "no-restricted-imports": [ + "warn", + { + "patterns": [] + } + ], + "no-restricted-syntax": [ + "warn", + { + "selector": "Literal[value=/#[0-9a-fA-F]{3,8}\\b/]", + "message": "Raw hex color — use a design-system color token via var()." + }, + { + "selector": "Literal[value=/\\b\\d+px\\b/]", + "message": "Raw px value — use a design-system spacing token via var()." + }, + { + "selector": "Literal[value=/font-family\\s*:\\s*(?!['\\\"]?(?:Barlow|Barlow Condensed))/i]", + "message": "Font not provided by the design system. Available: Barlow, Barlow Condensed." + } + ] + }, + "overrides": [ + { + "files": [ + "**/index.js" + ], + "rules": { + "no-restricted-imports": "off" + } + } + ], + "x-omelette": { + "components": {}, + "tokens": [ + "--color-accent", + "--color-accent-100", + "--color-accent-2", + "--color-accent-2-100", + "--color-accent-2-200", + "--color-accent-2-300", + "--color-accent-2-400", + "--color-accent-2-500", + "--color-accent-2-600", + "--color-accent-2-700", + "--color-accent-2-800", + "--color-accent-2-900", + "--color-accent-200", + "--color-accent-300", + "--color-accent-400", + "--color-accent-500", + "--color-accent-600", + "--color-accent-700", + "--color-accent-800", + "--color-accent-900", + "--color-bg", + "--color-divider", + "--color-neutral-100", + "--color-neutral-200", + "--color-neutral-300", + "--color-neutral-400", + "--color-neutral-500", + "--color-neutral-600", + "--color-neutral-700", + "--color-neutral-800", + "--color-neutral-900", + "--color-surface", + "--color-text", + "--font-body", + "--font-heading", + "--font-heading-weight", + "--radius-lg", + "--radius-md", + "--radius-sm", + "--shadow-lg", + "--shadow-md", + "--shadow-sm", + "--space-1", + "--space-2", + "--space-3", + "--space-4", + "--space-6", + "--space-8" + ], + "tokenKinds": { + "--color-bg": "color", + "--color-surface": "color", + "--color-text": "font", + "--color-accent": "color", + "--color-accent-2": "color", + "--color-divider": "color", + "--color-neutral-100": "color", + "--color-neutral-200": "color", + "--color-neutral-300": "color", + "--color-neutral-400": "color", + "--color-neutral-500": "color", + "--color-neutral-600": "color", + "--color-neutral-700": "color", + "--color-neutral-800": "color", + "--color-neutral-900": "color", + "--color-accent-100": "color", + "--color-accent-200": "color", + "--color-accent-300": "color", + "--color-accent-400": "color", + "--color-accent-500": "color", + "--color-accent-600": "color", + "--color-accent-700": "color", + "--color-accent-800": "color", + "--color-accent-900": "color", + "--color-accent-2-100": "color", + "--color-accent-2-200": "color", + "--color-accent-2-300": "color", + "--color-accent-2-400": "color", + "--color-accent-2-500": "color", + "--color-accent-2-600": "color", + "--color-accent-2-700": "color", + "--color-accent-2-800": "color", + "--color-accent-2-900": "color", + "--font-heading": "font", + "--font-heading-weight": "font", + "--font-body": "font", + "--space-1": "spacing", + "--space-2": "spacing", + "--space-3": "spacing", + "--space-4": "spacing", + "--space-6": "spacing", + "--space-8": "spacing", + "--radius-sm": "radius", + "--radius-md": "radius", + "--radius-lg": "radius", + "--shadow-sm": "shadow", + "--shadow-md": "shadow", + "--shadow-lg": "shadow" + }, + "fontFamilies": [ + "Barlow", + "Barlow Condensed" + ] + } +} \ No newline at end of file diff --git a/前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/_ds_bundle.js b/前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/_ds_bundle.js new file mode 100644 index 0000000..af8ca74 --- /dev/null +++ b/前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/_ds_bundle.js @@ -0,0 +1,11 @@ +/* @ds-bundle: {"format":4,"namespace":"Industry_indust","components":[],"sourceHashes":{},"inlinedExternals":[],"unexposedExports":[]} */ + +(() => { + +const __ds_ns = (window.Industry_indust = window.Industry_indust || {}); + +const __ds_scope = {}; + +(__ds_ns.__errors = __ds_ns.__errors || []); + +})(); diff --git a/前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/_ds_manifest.json b/前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/_ds_manifest.json new file mode 100644 index 0000000..645b78a --- /dev/null +++ b/前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/_ds_manifest.json @@ -0,0 +1 @@ +{"namespace":"Industry_indust","components":[],"startingPoints":[],"cards":[{"path":"components/buttons.html","group":"Components","viewport":"640x460","subtitle":"Solid primary actions; tags tint from the ramps","name":"Buttons & tags"},{"path":"components/cards.html","group":"Components","viewport":"640x420","subtitle":"Transparent, corner-marked line drawings with a kicker, title, body and meta row","name":"Cards"},{"path":"components/dialog.html","group":"Components","viewport":"640x460","subtitle":"A modal surface at the top elevation, shown here inside a static frame","name":"Dialog"},{"path":"components/forms.html","group":"Components","viewport":"640x520","subtitle":"Text inputs, a segmented control and radios — native elements, themed states","name":"Forms"},{"path":"components/navigation.html","group":"Components","viewport":"640x420","subtitle":"A header bar over a grid page opening","name":"Navigation"},{"path":"components/table.html","group":"Components","viewport":"640x420","subtitle":"Rows separated by a whisper of the text color; status cells reuse the tags","name":"Table"},{"path":"foundations/color.html","group":"Foundations","viewport":"640x560","subtitle":"Role colors and the tonal ramps (mono scheme — one accent voice)","name":"Color"},{"path":"foundations/icons.html","group":"Foundations","viewport":"640x420","subtitle":"Lucide — inline SVG on currentColor","name":"Icons"},{"path":"foundations/image.html","group":"Foundations","viewport":"640x480","subtitle":"Duotone — photographs are washed in the accent, like a screen print.","name":"Imagery"},{"path":"foundations/layout.html","group":"Foundations","viewport":"640x560","subtitle":"A 0.85× spacing scale, 4px radius, and three shadow levels tuned to the light ground","name":"Spacing & elevation"},{"path":"foundations/type.html","group":"Foundations","viewport":"640x640","subtitle":"Barlow Condensed over Barlow — a fixed scale; density moves spacing, not sizes","name":"Typography"},{"path":"theme.html","group":"Theme","viewport":"640x520","subtitle":"The parameters this system was derived from","name":"Parameters"}],"templates":[{"name":"Deck","description":"A twenty-one-slide presentation starter: cover, contents, dividers, columns, quadrants, a data table, SVG charts and timeline, bleed imagery, a quote and a close, on the theme's tokens","folder":"templates/deck","entryPath":"templates/deck/Deck.dc.html"},{"name":"Landing","description":"A one-page product landing in the system's own voice — an invented product (Holdfast: a fastener catalog), a condensed hero, a numbered spec-sheet plate, wireframe cells and a duotone photograph","folder":"templates/landing","entryPath":"templates/landing/index.html"}],"hasThumbnailHtml":true,"globalCssPaths":["styles.css"],"tokens":[{"name":"--color-bg","value":"#f2f2f3","kind":"color","definedIn":"styles.css"},{"name":"--color-surface","value":"#e9e9ea","kind":"color","definedIn":"styles.css"},{"name":"--color-text","value":"#1d1f20","kind":"font","definedIn":"styles.css"},{"name":"--color-accent","value":"#5980a6","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-2","value":"#728fab","kind":"color","definedIn":"styles.css"},{"name":"--color-divider","value":"color-mix(in srgb, #1d1f20 16%, transparent)","kind":"color","definedIn":"styles.css"},{"name":"--color-neutral-100","value":"#f5f5f8","kind":"color","definedIn":"styles.css"},{"name":"--color-neutral-200","value":"#e7e7ea","kind":"color","definedIn":"styles.css"},{"name":"--color-neutral-300","value":"#d4d4d7","kind":"color","definedIn":"styles.css"},{"name":"--color-neutral-400","value":"#b7b7ba","kind":"color","definedIn":"styles.css"},{"name":"--color-neutral-500","value":"#98989b","kind":"color","definedIn":"styles.css"},{"name":"--color-neutral-600","value":"#7a7a7d","kind":"color","definedIn":"styles.css"},{"name":"--color-neutral-700","value":"#5d5d60","kind":"color","definedIn":"styles.css"},{"name":"--color-neutral-800","value":"#424244","kind":"color","definedIn":"styles.css"},{"name":"--color-neutral-900","value":"#2b2b2d","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-100","value":"#eef6ff","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-200","value":"#d6ebff","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-300","value":"#b5d9fd","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-400","value":"#94bce3","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-500","value":"#749dc4","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-600","value":"#597ea3","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-700","value":"#416180","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-800","value":"#2c455d","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-900","value":"#1d2d3d","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-2-100","value":"#eef6ff","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-2-200","value":"#d6ebff","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-2-300","value":"#bdd8f2","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-2-400","value":"#9ebbd8","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-2-500","value":"#7e9cb8","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-2-600","value":"#627d98","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-2-700","value":"#486077","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-2-800","value":"#314457","kind":"color","definedIn":"styles.css"},{"name":"--color-accent-2-900","value":"#1f2d3a","kind":"color","definedIn":"styles.css"},{"name":"--font-heading","value":"\"Barlow Condensed\", system-ui, sans-serif","kind":"font","definedIn":"styles.css"},{"name":"--font-heading-weight","value":"600","kind":"font","definedIn":"styles.css"},{"name":"--font-body","value":"\"Barlow\", system-ui, sans-serif","kind":"font","definedIn":"styles.css"},{"name":"--space-1","value":"3.4px","kind":"spacing","definedIn":"styles.css"},{"name":"--space-2","value":"6.8px","kind":"spacing","definedIn":"styles.css"},{"name":"--space-3","value":"10.2px","kind":"spacing","definedIn":"styles.css"},{"name":"--space-4","value":"13.6px","kind":"spacing","definedIn":"styles.css"},{"name":"--space-6","value":"20.4px","kind":"spacing","definedIn":"styles.css"},{"name":"--space-8","value":"27.2px","kind":"spacing","definedIn":"styles.css"},{"name":"--radius-sm","value":"2px","kind":"radius","definedIn":"styles.css"},{"name":"--radius-md","value":"4px","kind":"radius","definedIn":"styles.css"},{"name":"--radius-lg","value":"7px","kind":"radius","definedIn":"styles.css"},{"name":"--shadow-sm","value":"0 1px 2px color-mix(in srgb, #2b2b2d 14%, transparent)","kind":"shadow","definedIn":"styles.css"},{"name":"--shadow-md","value":"0 3px 10px color-mix(in srgb, #2b2b2d 16%, transparent)","kind":"shadow","definedIn":"styles.css"},{"name":"--shadow-lg","value":"0 12px 32px color-mix(in srgb, #2b2b2d 22%, transparent)","kind":"shadow","definedIn":"styles.css"}],"themes":[],"fonts":[],"brandFonts":[{"family":"Barlow Condensed","status":"ok","tokens":["--font-heading"],"path":"styles.css"},{"family":"Barlow","status":"ok","tokens":["--font-body"],"path":"styles.css"}],"source":"spa"} \ No newline at end of file diff --git a/前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/readme.md b/前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/readme.md new file mode 100644 index 0000000..7d8749e --- /dev/null +++ b/前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/readme.md @@ -0,0 +1,82 @@ +# Industry design system + +Industry is a wireframe: steel-blue on a light technical ground, Barlow Condensed headings over Barlow, a modular grid, and cards, figures and buttons framed as blueprint objects — square-cornered, hairline-bordered, with "+" registration marks at the corners. Cards and figures stay transparent line drawings; the primary button is the one solid object on the board, an accent fill that keeps the square corners and the marks. Photography is duotoned into the steel accent and icons are thin-stroke. + +## How to use this + +- Link the one stylesheet from every page — `` (adjust the relative path) — and take every color, font, spacing, radius and shadow from its variables (`var(--color-*)`, `var(--font-*)`, `var(--space-*)`, `var(--radius-*)`, `var(--shadow-*)`). Never hard-code a hex, a font name or a px value the tokens already carry. +- Build with the classes below rather than inventing parallel ones; the component pages are plain HTML, so view source and copy the markup. +- `templates/` holds starting points a consuming project can copy whole. +- The whole system was derived from `theme.json`. To change the look, edit the tokens at the top of `styles.css` — every page, the thumbnail and this guide read from them — and keep `theme.json` and the written guidance in step so they don't drift from what the CSS actually does. + +## Direction + +Modular grid layouts — content in equal-width cells, strong horizontal and vertical rhythm, visible structure. Cards, buttons and major sections are wireframe objects: square-cornered, thin-bordered, with `+` crosshair corner marks (the `.blueprint` class + four `` children) — never soft filled rounded blocks. Images and figures get the same treatment: square, hairline-framed and marked, never rounded or clipped. Wrap hero and inline images in the `.duotone` class — they are desaturated and washed in the accent, like a screen print that re-colors with the theme. + +## Color + +A light ground (`--color-bg` #f2f2f3) with `--color-text` #1d1f20 and a single accent #5980a6 (this is a mono scheme: no second accent was chosen — the `--color-accent-2-*` variables carry a machine-derived stand-in kept only so both sets resolve; treat them as one role). Each role carries a 100–900 tonal ramp (`--color-neutral-100` … `--color-accent-2-900`) generated in OKLCH on a shared perceptual lightness scale, so the same step of any ramp has the same visual weight. Use the light steps (100–300) for tinted fills, hovers and subtle borders, 500 as the role's base, and the dark steps (700–900) for text on tinted fills and for pressed states; prefer ramp steps over ad-hoc `color-mix()`. For elevation use `--shadow-sm/md/lg` (already tuned to the ground) rather than ad-hoc box-shadows. + +## Type + +Barlow Condensed for headings over Barlow for body text, loaded as `--font-heading` / `--font-body`. Density 0.85× and radius 4px are already baked into the `--space-*` / `--radius-*` scales — use the variables, not raw numbers. + +## Icons + +Use Lucide icons (https://lucide.dev), at stroke-width 1.5 for a lighter, more technical look throughout. + +## Interaction states + +Interactive states are themed, never browser defaults: give every interactive element a `:hover` tint and a pressed state from the accent ramp (one step past the base — `--color-accent-600` on a light ground, `--color-accent-400` on a dark one, or a `color-mix()` tint for outlined/ghost variants), and style keyboard focus with `:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }` — never leave the default blue focus ring. + +## Components + +| Class | What it is | Shown in | +| --- | --- | --- | +| `.btn` with `.btn-primary`, `.btn-secondary`, `.btn-ghost`, `.btn-icon`, `.btn-block` | Actions — the primary is a solid accent fill | components/buttons.html | +| `.tag` with `.tag-accent`, `.tag-accent-2`, `.tag-neutral`, `.tag-outline` | Small labels tinted from the ramps (mono palette: accent-2 reads the same as accent) | components/buttons.html | +| `.field` + `label`, `.input`, `.radio` + `.dot`, `.seg` + `.seg-opt` | Form fields and choices on native elements — no script | components/forms.html | +| `.card` with `.card-kicker`, `.card-title`, `.card-body`, `.card-meta`; `.elev-sm/md/lg` | Transparent, hairline-bordered cards with corner registration marks | components/cards.html | +| `.nav` + `.nav-brand` | The header bar | components/navigation.html | +| `.table` | Data tables with themed header and row rules | components/table.html | +| `.dialog-backdrop` + `.dialog` (+ `.dialog-title/-body/-actions`) | A modal at the top elevation | components/dialog.html | +| `.hr` | A horizontal rule — present, but this system prefers whitespace; avoid it | — | +| `.blueprint` + four `` children | The wireframe frame every card, figure and primary button wears | components/cards.html | +| `.duotone` | The image wrapper — every content photograph goes through it | foundations/image.html | + +States are built in: hovers and pressed states come from the accent ramp, keyboard focus is the 2px accent `:focus-visible` ring, `::selection` is an accent tint, and disabled controls drop to 45% opacity. Don't restyle them per page. The accent-to-ground pair is tuned to at least 3:1 — enough for icons, large text and interface chrome, not for body copy — so for paragraph-size text in the accent use a deep ramp step (`--color-accent-700` on this ground) rather than the accent itself. + +## Do + +- Frame cards, figures and primary buttons as blueprint objects: the `.blueprint` class plus four `` marks. +- Keep the grid visible — equal cells, strong horizontal and vertical rhythm. +- Condense headings (Barlow Condensed) and keep body copy in Barlow. +- Duotone photographs with the `.duotone` wrapper so they take the accent. + +## Don't + +- Do not round cards, figures or buttons, and do not give cards or figures a surface fill — they are line drawings (the solid accent primary button is the one deliberate exception). +- Do not drop the registration marks from a framed element. +- Do not use thick icon strokes; the set is Lucide at 1.5. +- Do not add decorative color beyond the steel accent. The accent's own deep step (`--color-accent-900`) may carry a full field where the deck's section dividers use it — steel as ground, type reversed to paper. (The landing's numbers sit on a drawn spec-sheet plate on the paper ground instead — its own grammar, not a field.) + +## Files + +- `styles.css` — the only stylesheet: the token sheet (`:root` variables, ramps, base type) plus the component layer. Link it from every page. +- `readme.md` — this guide. +- `theme.json` — the parameters these files were derived from (a machine-readable record of the theme). +- `thumbnail.html` — the project cover (brand mark + swatches). +- `foundations/type.html` — the type scale and the heading/body pairing at real sizes. +- `foundations/color.html` — color roles and the 100-900 tonal ramps, with usage notes. +- `foundations/layout.html` — the spacing scale, the grid and how edges are drawn. +- `foundations/icons.html` — the icon set at interface sizes, inline and in buttons. +- `foundations/image.html` — how photographs and figures are treated. +- `components/buttons.html` — buttons, icon buttons and tags in every variant and state. +- `components/forms.html` — text fields, radios and the segmented control on native elements. +- `components/cards.html` — content cards and the elevation steps. +- `components/navigation.html` — the header bar pattern. +- `components/table.html` — a data table with the themed header and row rules. +- `components/dialog.html` — a modal over its backdrop at the top elevation. +- `theme.html` — the theme's parameters rendered as a reference sheet. +- `templates/landing/` — a starter page consuming the system the intended way (`index.html`, its `ds-base.js` loader, and the vendored `image-slot.js` its photograph mounts). +- `assets/photo.jpg` — the reference photograph the imagery page treats. diff --git a/前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/styles.css b/前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/styles.css new file mode 100644 index 0000000..82d4e15 --- /dev/null +++ b/前端UI八页面完成/_ds/industry-22c874fd-9888-4e99-8234-d60d39b3d719/styles.css @@ -0,0 +1,285 @@ +/* Industry — design-system tokens and component classes. This file is the source of truth for the system's look; retune it here and see readme.md. */ +@import url('https://fonts.googleapis.com/css2?family=Barlow:wght@400;500;700&family=Barlow+Condensed:wght@400;600&display=swap'); + +:root { + --color-bg: #f2f2f3; + --color-surface: #e9e9ea; + --color-text: #1d1f20; + --color-accent: #5980a6; + --color-accent-2: #728fab; + --color-divider: color-mix(in srgb, #1d1f20 16%, transparent); + + /* Tonal ramps — generated in OKLCH on one shared lightness scale, so the + same step of any role matches the others in visual value. */ + --color-neutral-100: #f5f5f8; + --color-neutral-200: #e7e7ea; + --color-neutral-300: #d4d4d7; + --color-neutral-400: #b7b7ba; + --color-neutral-500: #98989b; + --color-neutral-600: #7a7a7d; + --color-neutral-700: #5d5d60; + --color-neutral-800: #424244; + --color-neutral-900: #2b2b2d; + + --color-accent-100: #eef6ff; + --color-accent-200: #d6ebff; + --color-accent-300: #b5d9fd; + --color-accent-400: #94bce3; + --color-accent-500: #749dc4; + --color-accent-600: #597ea3; + --color-accent-700: #416180; + --color-accent-800: #2c455d; + --color-accent-900: #1d2d3d; + + --color-accent-2-100: #eef6ff; + --color-accent-2-200: #d6ebff; + --color-accent-2-300: #bdd8f2; + --color-accent-2-400: #9ebbd8; + --color-accent-2-500: #7e9cb8; + --color-accent-2-600: #627d98; + --color-accent-2-700: #486077; + --color-accent-2-800: #314457; + --color-accent-2-900: #1f2d3a; + + --font-heading: "Barlow Condensed", system-ui, sans-serif; + --font-heading-weight: 600; + --font-body: "Barlow", system-ui, sans-serif; + + --space-1: 3.4px; + --space-2: 6.8px; + --space-3: 10.2px; + --space-4: 13.6px; + --space-6: 20.4px; + --space-8: 27.2px; + + --radius-sm: 2px; + --radius-md: 4px; + --radius-lg: 7px; + + /* Elevation — derived from the ground: soft ink-tinted shadows on a + light theme, a hairline edge + ambient darkness on a dark one. */ + --shadow-sm: 0 1px 2px color-mix(in srgb, #2b2b2d 14%, transparent); + --shadow-md: 0 3px 10px color-mix(in srgb, #2b2b2d 16%, transparent); + --shadow-lg: 0 12px 32px color-mix(in srgb, #2b2b2d 22%, transparent); +} + +body { + background: var(--color-bg); + color: var(--color-text); + font-family: var(--font-body); +} +h1, h2, h3, h4 { font-family: var(--font-heading); font-weight: var(--font-heading-weight); } + +.blueprint { + position: relative; + border: 1px solid var(--color-divider); + border-radius: 0; +} +/* The overlay image treatments (halftone, duotone) clip their overlay + (overflow:hidden); a blueprint wrapper draws its registration marks + outside the box, so when both classes share a wrapper the frame must + win. */ +.blueprint.halftone, .blueprint.plate, .blueprint.duotone { overflow: visible; } +.blueprint > .corner { + position: absolute; width: 11px; height: 11px; + color: color-mix(in srgb, var(--color-text) 55%, transparent); +} +.blueprint > .corner::before, .blueprint > .corner::after { + content: ""; position: absolute; background: currentColor; +} +.blueprint > .corner::before { left: 5px; top: 0; width: 1px; height: 100%; } +.blueprint > .corner::after { top: 5px; left: 0; width: 100%; height: 1px; } +.blueprint > .corner.tl { top: -6px; left: -6px; } +.blueprint > .corner.tr { top: -6px; right: -6px; } +.blueprint > .corner.bl { bottom: -6px; left: -6px; } +.blueprint > .corner.br { bottom: -6px; right: -6px; } + +.duotone{position:relative;overflow:hidden} +.duotone::after{content:"";position:absolute;inset:0;pointer-events:none; + background:var(--color-accent);mix-blend-mode:color} + +/* ══════════════════════════════════════════════════════════════════════════ + Components — built with the tokens above. Plain CSS + on plain HTML: no JavaScript, no build step. Each class is documented in + readme.md and demonstrated in foundations/ and components/. + ══════════════════════════════════════════════════════════════════════ */ + +*, *::before, *::after { box-sizing: border-box; } +body { margin: 0; font-size: 15px; line-height: 1.55; font-weight: 400; } +h1, h2, h3, h4, h5, h6 { + font-family: var(--font-heading); font-weight: var(--font-heading-weight); + line-height: 1.12; letter-spacing: -0.015em; margin: 0 0 var(--space-2); +} +h1 { font-size: 42px; } +h2 { font-size: 32px; } +h3 { font-size: 25px; } +h4 { font-size: 20px; } +h5 { font-size: 16px; } +h6 { font-size: 13px; } +h6 { letter-spacing: 0.08em; text-transform: uppercase; } +p { margin: 0 0 var(--space-3); } +a { color: var(--color-accent); text-underline-offset: 3px; } +img { display: block; max-width: 100%; } +figure { margin: 0; } +figcaption { + font-size: 11px; margin-top: var(--space-1); + color: color-mix(in srgb, var(--color-text) 55%, transparent); +} +.text-muted { color: color-mix(in srgb, var(--color-text) 55%, transparent); } +:focus { outline: none; } +:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; } +::selection { background: color-mix(in srgb, var(--color-accent) 30%, transparent); } + +/* — rules — */ +.hr { + height: 1px; border: 0; margin: var(--space-4) 0; + background: var(--color-divider); +} + +/* — buttons — */ +.btn { + display: inline-flex; align-items: center; justify-content: center; gap: 6px; + cursor: pointer; text-decoration: none; + font-family: var(--font-heading); font-weight: var(--font-heading-weight); + font-size: 14px; line-height: 1.2; color: var(--color-text); /* matches the .input's 14px — + the pair sits side by side in sign-up rows */ + background: transparent; border: 1px solid transparent; + padding: var(--space-2) calc(var(--space-3) * 1.2); + border-radius: var(--radius-md); +} +.btn svg { display: block; } +.btn:disabled { opacity: 0.45; cursor: not-allowed; } +.btn-primary { background: var(--color-accent); color: var(--color-bg); } +.btn-primary:hover { background: var(--color-accent-600); } +.btn-primary:active { background: var(--color-accent-700); } +.btn-secondary { border-color: var(--color-divider); } +.btn-secondary:hover { background: color-mix(in srgb, var(--color-text) 7%, transparent); } +.btn-secondary:active { background: color-mix(in srgb, var(--color-text) 14%, transparent); } +.btn-ghost { color: var(--color-accent); padding-inline: var(--space-1); } +.btn-ghost:hover { background: color-mix(in srgb, var(--color-accent) 10%, transparent); } +.btn-ghost:active { background: color-mix(in srgb, var(--color-accent) 18%, transparent); } +.btn-icon { width: 36px; height: 36px; padding: 0; } +.btn-block { width: 100%; margin-top: var(--space-2); } + +/* — forms — */ +.field > label { + display: block; font-size: 12px; margin-bottom: 5px; + color: color-mix(in srgb, var(--color-text) 70%, transparent); +} +.input { + width: 100%; min-height: 36px; padding: 6px 10px; font: inherit; + font-size: 14px; color: var(--color-text); caret-color: var(--color-accent); + background: var(--color-surface); + border: 1px solid var(--color-divider); border-radius: var(--radius-md); +} +.input:hover { border-color: color-mix(in srgb, var(--color-text) 45%, transparent); } +.input:focus-visible { border-color: var(--color-accent); outline-offset: 0; } +textarea.input { min-height: 90px; resize: vertical; } +.radio { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; font-size: 14px; } +.radio input, .seg-opt input { + position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none; +} +.radio .dot { + width: 16px; height: 16px; flex: none; border-radius: 50%; + border: 1.5px solid var(--color-divider); +} +.radio:hover .dot { border-color: var(--color-accent); } +.radio input:checked + .dot { + border-color: var(--color-accent); background: var(--color-accent); + box-shadow: inset 0 0 0 4px var(--color-bg); +} +.radio input:focus-visible + .dot { outline: 2px solid var(--color-accent); outline-offset: 2px; } +.seg { + display: inline-flex; overflow: hidden; + border: 1px solid var(--color-divider); border-radius: var(--radius-md); +} +.seg-opt { + display: inline-flex; align-items: center; gap: 6px; + padding: 7px 12px; font-size: 13px; cursor: pointer; +} +.seg-opt + .seg-opt { border-left: 1px solid var(--color-divider); } +.seg-opt:has(input:checked) { background: var(--color-accent); color: var(--color-bg); } +.seg-opt:not(:has(input:checked)):hover { background: color-mix(in srgb, var(--color-text) 7%, transparent); } +.seg-opt:has(input:focus-visible) { outline: 2px solid var(--color-accent); outline-offset: -2px; } + +/* — cards — */ +.card { + display: flex; flex-direction: column; gap: var(--space-2); + padding: var(--space-3); border-radius: var(--radius-md); background: var(--color-surface); +} +.card-kicker { font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-accent); } +.card-title { + font-family: var(--font-heading); font-weight: var(--font-heading-weight); + font-size: 17px; line-height: 1.2; +} +.card-body { margin: 0; font-size: 13px; opacity: 0.8; flex: 1; } +.card-meta { + display: flex; align-items: center; gap: 6px; font-size: 11px; + color: color-mix(in srgb, var(--color-text) 50%, transparent); +} +.elev-sm { box-shadow: var(--shadow-sm); } +.elev-md { box-shadow: var(--shadow-md); } +.elev-lg { box-shadow: var(--shadow-lg); } + +/* — tags — */ +.tag { + display: inline-flex; align-items: center; font-size: 11px; + letter-spacing: 0.02em; padding: 3px 10px; + border-radius: calc(var(--radius-md) * 0.75); +} +.tag-accent { background: var(--color-accent-100); color: var(--color-accent-800); } +.tag-accent-2 { background: var(--color-accent-2-100); color: var(--color-accent-2-800); } +.tag-neutral { background: var(--color-neutral-100); color: var(--color-neutral-800); } +.tag-outline { border: 1px solid var(--color-accent); color: var(--color-accent); } + +/* — navigation — */ +.nav { + display: flex; align-items: center; gap: var(--space-4); + padding: var(--space-3) var(--space-4); + border-bottom: none; +} +.nav-brand { + font-family: var(--font-heading); font-weight: var(--font-heading-weight); + font-size: 18px; margin-right: auto; +} +.nav a { color: inherit; text-decoration: none; font-size: 14px; } +.nav a:hover, .nav a[aria-current='page'] { color: var(--color-accent); } + +/* — tables — */ +.table { width: 100%; border-collapse: collapse; font-size: 14px; } +.table th { + text-align: left; font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; + color: color-mix(in srgb, var(--color-text) 60%, transparent); + padding: var(--space-2); border-bottom: 1px solid var(--color-divider); +} +.table td { + padding: var(--space-2); + border-bottom: 1px solid color-mix(in srgb, var(--color-text) 8%, transparent); +} +.table tbody tr:hover { background: color-mix(in srgb, var(--color-text) 4%, transparent); } + +/* — dialog — */ +.dialog-backdrop { + position: fixed; inset: 0; display: grid; place-items: center; + padding: var(--space-4); + background: color-mix(in srgb, var(--color-neutral-900) 50%, transparent); +} +.dialog { + width: min(440px, 100%); display: flex; flex-direction: column; gap: var(--space-3); + padding: var(--space-4); border-radius: var(--radius-lg); + background: var(--color-surface); box-shadow: var(--shadow-lg); +} +.dialog-title { + font-family: var(--font-heading); font-weight: var(--font-heading-weight); + font-size: 20px; +} +.dialog-body { font-size: 14px; opacity: 0.85; } +.dialog-actions { display: flex; justify-content: flex-end; gap: var(--space-2); margin-top: var(--space-2); } + +/* — blueprint frame: components are wireframe objects (see .blueprint + and .corner above) — square, transparent, hairline-bordered — */ +.card, .btn, .input, .tag, .seg, .dialog { border-radius: 0; } +.card, .dialog { background: transparent; border: 1px solid var(--color-divider); } +.btn { border: 1px solid var(--color-divider); } +.btn-primary { border-color: var(--color-accent); } +.btn-ghost { border-color: transparent; } diff --git a/前端UI八页面完成/_template/deck/palette.dc.html b/前端UI八页面完成/_template/deck/palette.dc.html new file mode 100644 index 0000000..56d21b2 --- /dev/null +++ b/前端UI八页面完成/_template/deck/palette.dc.html @@ -0,0 +1,1036 @@ + + + + + + + + + + + + + +Industry — deck + + + + + + + +
    + +
    Design systems
    +
    +

    Industry

    +

    A blueprint wireframe

    +

    Steel blue on a technical light ground, condensed headings, square corners and registration-marked frames.

    +
    +
    Your name·July 2026
    +
    + +
    + +

    Contents

    +
    +
    01Principles
    +
    02The ramps
    +
    03Imagery
    +
    04Roadmap
    +
    + +
    + +
    + + +
    +
    01
    +

    Principles

    +
    + +
    + +
    + +
    01 · Principles
    +

    Working rules

    +
      +
    • Everything on the board is a wireframe object — square, hairline-framed, marked.
    • +
    • Condensed headings label the drawing; Barlow carries the notes.
    • +
    • Steel blue is the one color, and the primary action is the one solid object.
    • +
    + +
    + +
    + +
    01 · Principles
    +

    Two columns

    +
    +
    +

    Two bays of the board

    +

    Each column takes two modules, and the gutter between them is the drawing’s own — no rules are added, because the ruling is already there.

    +
    +
    +

    Seated, not floated

    +

    Heads seat their baselines on a group rule and the notes on the caption rule below, so both columns read line for line across the gutter.

    +
    +
    + +
    + +
    + +
    01 · Principles
    +

    Three columns

    +
    +
    +

    One module each

    +

    Three columns take one module apiece and leave the fourth empty — on a drawn grid, an empty bay is a statement, not a gap.

    +
    +
    +

    A note’s measure

    +

    A module runs about twenty-six characters — notes and specifications, not essays. Keep each entry short.

    +
    +
    +

    Still seated

    +

    Heads on the group rule, notes on the caption rule — the narrow measure changes nothing about where type sits.

    +
    +
    + +
    + +
    + +
    01 · Principles
    +

    Quadrants

    +
    +
    +

    Napkin sketch

    +

    Small, rough — where every drawing starts.

    +
    +
    +

    Schematic

    +

    Small, precise — every line means it.

    +
    +
    +

    Mock-up

    +

    Big, rough — shape first, dimensions later.

    +
    +
    +

    Production drawing

    +

    Big, precise — the one the shop builds from.

    +
    +
    + + +
    + +
    + + +
    +
    02
    +

    The ramps

    +
    + +
    + +
    + +
    02 · The ramps
    +

    Color roles

    + + + + + + + + + + +
    RoleValueOn the groundUse
    Text#1d1f2014.8:1Body copy and headings
    Accent#5980a63.7:1Frames, marks and large text
    Accent 700#4161805.8:1Accent-colored body copy
    Surface#e9e9ea1.1:1Quiet fills in the wireframes
    + +
    + +
    + +
    02 · The ramps
    +

    14.8:1

    +

    Body text against the technical light ground — the drawing is ink on paper, and the steel stays in the linework.

    + +
    + +
    + +
    02 · The ramps
    +

    Contrast by ramp step

    +
    + + + + + + + + + 3:1 interface minimum + 3 + 6 + 9 + 12 + 0 + + + + + + + + + + 1.0 + 1.1 + 1.3 + 1.8 + + 2.5 + 3.8 + 5.8 + 8.9 + 12.6 + body copy + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900 + + +
    +

    WCAG contrast of each accent-ramp step against the ground — the dashed line marks the 3:1 interface minimum.

    + +
    + +
    + +
    02 · The ramps
    +
    +

    Weekly sessions

    +
    + Desktop + Mobile +
    +
    +
    + + + + + 10 + 20 + 0 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + +
    +

    Sample data, in thousands — the steel line is the one accent in the figure; the second series stays ink and dashes.

    + +
    + +
    + + +
    +
    03
    +

    Imagery

    +
    + +
    + +
    + +
    +
    03 · Imagery
    +

    The duotone treatment

    +

    Every photograph is washed in the steel accent by the duotone wrapper — and an on-page figure is a wireframe object, hairline-framed with its registration marks.

    +
    +
    + + + +
    + +
    + +
    +
    + +
    + +
    +
    03 · Imagery
    +
    +

    Full bleed

    +

    One photograph, edge to edge — the scrim is the ground token rising from the foot, and the frame stays behind: a framed figure sits on the board, a bleed is the board.

    +
    +
    + +
    + +
    + +
    +
    03 · Imagery
    +

    Half bleed

    +
      +
    • The photograph bleeds to three edges and holds half the stage
    • +
    • The copy keeps the content rhythm — same gridlines as every slide
    • +
    • Marks still hang left of the text, whatever sits behind them
    • +
    + +
    + +
    + +
    + +
    +
    03 · Imagery
    +

    Mirrored

    +

    The flip class changes the photograph’s side and the copy returns to the text axis — one pattern, both directions.

    + +
    + +
    + +
    03 · Imagery
    +
    + +
    “Cards and figures stay transparent line drawings; the primary button is the one solid object on the board.”
    + +
    — the Industry readme
    +
    + +
    + +
    + + +
    +
    04
    +

    Roadmap

    +
    + +
    + +
    + +
    04 · Roadmap
    +

    The year, by milestone

    +
    + + + + JAN + APR + JUL + OCT + JAN + + + + + + + Research + Prototype + Beta + Launch + Scale + scope and interviews + first working build + fifty design partners + general availability + second platform + +
    +

    Each milestone keeps one left edge — type and mark aligned — with the spacing opening gently downward from date to note, and the current step the one solid square.

    + +
    + +
    + +
    Design systems
    +
    +

    Thank you

    +

    Copy this folder for your next deck — the tokens and markup patterns carry the look.

    +
    +
    you@example.com
    +
    + +
    +
    + + diff --git a/前端UI八页面完成/assets/photo.jpg b/前端UI八页面完成/assets/photo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7bcc45b689fc8561b2a88485fd9f5609b5ba540d GIT binary patch literal 283445 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ª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ųtV=CY1rFEXnQ^!q&F`0C5K3^kP~W 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 z z0pWjA#zrrpao^{A-u`kj<=ocg!~Tdz;`SxNU;Jv3*>uzyLrTeYF76lcaEHZ3C2{av zSEeYBGUqd&gIIi%f8aJtbqHJnGLQcKgjB?w+%!TYH3}eEM5|Uvt3iak;!{mcgx~n6 ze6Pm*w=3e``F`c}VUv@=1ro4#B(mUeS|yAubzujPD0AhhgzEdlUzD_^Vftzrivu~V zhy%q(K4v}l+6<*&S5(wAiGB>VjoV@ZFJkMc<$bV${DkK%s9sdwtv0ZTSesT5viWLX zXNdQ1;=xuJ7f{Sf@(sTZD;xl!zrcyfO8)>6YzhZt7}Tb?3lx@h09=%8tEYIk#s#>C z<%eo9Ru9}-yO;DVgL`J!w=MRVw_0B{DG~P-;e-Ng&vASBRn$gg%lLk!V=DDO$u(ha zzmi+T>)^&2K_2(4E;b4#|)>$YGubyj(ezGe4hRRXAD!h zW4Jn%v#+>}gMEf$3vq5kjN1eP-lsF4)-u_Msnt!OxM&aMiRKK*m$_u#rojx(piA6Y zM2gZae{GGA?lFm`AYQflj`1XbqYG9L29$+o=$B<~c)XA_TIj#Ba~r$a_g5>UKY_De zO}b$xYc6vytSsU!57R8YTyJ<KVmU!x zbzUHFTipKuOnE6ODJ`PjSwqThiI!YUh1r#`Sxqi6DV??KeM~?Xx8|c%I-R~AnAMFm z`c$Je?0)yCJ6^Oty-Hi%S9hm~_zVON%a2m_Z3p)jRA|}eb?z9;Gmy=pqEM!_zqyopFvE~3R(4$ll4YX8@=^jzGuLX~`8QN&Cp|=K7U@%|ez(y4q za({df1Se^}e&xqRFh<`*u7P+ce-f~3Md_53N_X=NkPsWscoP&zk2)Vv#S zaIfS`5$9Irp{5G*T~1LldR?)o1%3Tv=Xm6Am~mBg0c zsM_nufctiDZhSm5o+Xph>&!x92kzjq%iChTwYJ=8_-2(D>{8J0(a8>m$^Divm8OS) z(;vNmulk=A5^$^2&2mdGT?g_ooioo?Daw++!%>%8@oxG4Ggz)jpJ}MH4966U>ncc$ zq>jCQ5_1b)qe7@d9h#!WMc^c`%O{Y>^Y=oy9oObT#0gX$o+Z4m-obRoTP-d_;k-(b zAKdAG#SK?$X&`@~Y8G`Ex>l@%KlH+~)^EG#^!Vlbcht+3e2#=2kM!cHPtLcc4C;Qs&tBKDLX z-A`-(0O{`j8EhSd&vX9(G-p|T+zC*%3Q9{``Gs0{*(#%w_nB7Ce?0IE?J2EeP`Z-P zMf0}BoQJAqfF}Eivni(nN;bsaO&}1R5xD6cmw?zjgB!k&MAiV=eg~QJ*g#VM0Cwc% z8vIbzsCp*!{z-12OiF~Xu9!e8NBk~wd|m?a%KI4QD{ie%(#kHIob`!im?qkO4Up)_>|y#r-eR>mpp?+j+xxGZjA*+gdkD6E>?74yC_?DiOs^D@dplfhNb#kG05UD1JCkw4a zG&p3E$aw_{MHY3@ufQO_V2VBVkZH2Y`95hLp9N)A<^Cn9uP9g-ExAF=TTc)Tls49# zHkFpNUZ190A^!l|QOm&96JHQgmLf(^9qIDFbe{82+KWYQADz>!TbUv9nQITNf2k#Kf;Q z7Sesq5pT>;L#TpueWLAzh|2AikYuv9QG*ponoze^ZC`8*A}r!t__)WwF-HFW6<^F| z)dxhl3Vx6H5JIKu&1QuzlT}s?)sIqxpWv1Eu0X}SL$wf?PX$~qavh)2F78)({^}Pf z(WnN+C^0EsKcZ0upTe5q^dQrV)33y|9Hec9pz1|W=Dk4*hs*v=XYl+z$Lry!KUj7# zYd={$Ml2`Rnphd`19UpIv(=eH1hh&Wi^pjs7nm(%woBAR0OydiOO-)Cbb_iEukHQ@&#@okJKEKsN+;DJ^; zP!Hr{r9xW;v_3G4c9f-IXX(@>$_K!5OEhX7G3DZ)mt|}b@*R=E04=fdc7qt)OJ&Uh z1bX6PBBVj-Co=SlNV4u1lrBfLI6aLqrg1CaQbiNSL8qhB^(i&70aPXICd4b7eF~IR zuZ@-e02TiLTuw>Uy6zI5nTO%(Y`7C;mGER4N5#*!2zE|wA$k~c4Wu*Q1JtjDg}|`C zsIL#);{et195W{3khh9>cp?L9_D0vFHpd_f{>YPsou{tmmFxiX7+aL1PfbDrJO2RE zN3`%IQ{57v53>INn7f*y@roF&&c6{VctF(JbC##5g^Yi zVi|xLy!V(2d9nWhlF3LbbO}jZ(tUG){*h9n%Cg0KPuaO)VG$Mp^3)L-FN}9K?!_P& z6#y+-%%WXn8$y7JJc5w^Yi5g!;7{{Wm-_3Y#S01B74>)Mg_pl2WDj@l3hckwBC)JifHwp1Q~Y93fatSuw% zKZ09>9UXr)1dyJ=0~ZX!xbChWiFUupAK>@@0I|Lu-hZ%Sq;753`icQ(Hn2?nP*efx zs$Fc*>Q?AgN9?xNhcKa2=s(oZrFdzvg)SozXv~&bbCrL?qzFO>q!RRGB-P6(4CPLY0t{wsI9t)x+1LjjlQKXnyS#jW!Es6=f; zgiso+9Q{#mBVQM=oqPaOw3KBgB|Imy{u`tDhHN5Muv5EgcMynR>qf&^h}u5KOb^2! zZf~q|pVqoXM;;>VPveFiQzn9*E5qWYYbzy^&yiP4^Aw*|A!I4w1VT7}%75j5^RNAP z2%;JAeB?kWRMW#LLE5_YKIkhOJV+txADM0hIEOf!=6WHIX?zc4=fU(R03;&x9vFo7 z%o;~=urE$=2`%Od&$wJFz*TP0Fj3_~y!ssb)((9plJjn<$Zm);DtA8Y>r&ICbR5B*}qgA==a^_R-A#f&|( zum-pUK9~^dJ0Ko5H$~ac3e)BgZUjRCpk{;pZgi)J5b-6oGgAn37+9x3 zdVm!V-}*2hFR@?h;^3(9zxYdFXLkPpaW`||Al*;g{{YQIe7-DyY+Px#0`BD-2N45! zMs=Vq>ReT#hTX{N^#{=^7JtJW!T|2ng3OdMpehmK<42g?K&U32C6U2HLWmm-TLrZn zu;KaGwag2=;D4ngL$0tA{Ite9rpL5Y2CZJe&)UYV)mvB3!h9w?I50>n(Nz_SL>xtO zx8VxYB>OK2|+S{Y$zT{S-m= zzUp5iGeh^VjZ&=mRRvQ1G$|$g5q(Z&KjCxaDjP?oh2axA1`Xa_GS7#r^)#oqxQjT`c4}RK zbymrKrs?$x+{m(&;#prrCFIO^i_DCbcxryp3k(gDI<n%-}b(wJh;2ca1Nl3^Xc@hUpEKuRB6y(1MXM8-s8%S{= zj&2cO1AR=qj`cFyl>-hxsc?ypQ0yR;P2nz&5rm_(ryr;@fB^pSoB$&L7y5}_R#^xH zMZrc&(o+S#R4N97Rn-;@+q{2JoED;~hx1UmGE@#dELb!D0Qyuyo(o#~iuiDEH@3H+6ic}8eXKwwnkTT5&Q5uvZXRvHiqsjn#635{i zF9nahQylyevJd|N9tZ|ld=yHp4e7386|!B^{RG`EwA_{~iO!$q9PPnCAk+7VndiyiA=KDa2qyG?NK7dz0GIh3zN1ntFuqkcDx@)2mB1VM$zM@SXwZi_f5Wy716BKAC)n;?qs}x`3ZWmIJduBF!(v!=DK;Za=;r)^HE#W)9KAlsweC}FYmA63 zjG$50!Yc-L-S)vl7)vh1CD_bR`r-mN4`0(_7vMxKCi_)>qo}n!tgtn%b{C~a&}IeQ3z*t^XX0sfYaH6kRlnS>&QOmTO35DF?l*CF{4BZuey%0*O;xuvv zh?U`C3y?OnI^0Ik92 zL3yV}I#>DxNzTNSdU#qNbu1(>->9maJXST{Za^st^I-mEL|yiwP}HaY03gN+ws~LV zLvM3K{HzilXGi)8vUp}eRY6OC+F6%@!-5I(R|Sgh1Yk<@{eoQ^{lBOL6BIpV<JgcA^@P3|NCvHsxAQGb-oSsj?vXTG<^uM95+UQ_ z!dQ~PxIrW-+JfV0X7?zY81)7x{_Xr)5eLKl_W3b|5CvLrHzIo`*`&ThhB+?IBcC7B zjSx=Jy)TSbd_036xL#f#u}q*A!Tz6zVkAVVO~QS^WJCV|i^%-<4D%uuWSN7LbrlRv*3kfnDr%81K2YroIhVnoh^ z`{fsX@x5_hQO>>3uW+~H+uY~=7oGJT$|Ne6Ilj_36Tkb}vk85*M(NzY5I!mv8@euC zQ{o@>0dCP*I8`Dy0+)dR@E{H!WLaAdtzbvJ9t5{Q$l48*MRV9BJ)(fPEpOQb@h*g=>D zYQHbsLzH^Y=wdtx+o$590l!X{(Pc9t`UcPFK)?61jjJt)vA< zO){UHTZqAcTLc0O zcK-n2mAT!Nz_kOxkf4~Nq7%E85gdYEc(UAkfxkQwFmtFi4hzq=A6L_|Ag&OGmDM-- z4zANzPwr7_*Fh6@y^|69MSWY|;7baDW1YsbA}M!c`({v&Mg_19(}0EmK{XcuJ)sYz zj1B&!J#pZ76=&RNgJ?_VU*cM64@4QU;1BjB9bTW*NKe|ORAcJmtC8purrTv*z*ec| z3FGqw2vZ>QAYf5rjsD=`;Zn{jIN*Y&$R?}$f#Hz@6so`bP?GkjJ01gLbhi8Vz^eEj zE-mS{l))CRp8oV;Mj_0rfpBltrY%#6;~3g{{Sp38_Q4q&j~IKE6zdeTQM6yiL#WA(1(SP;Va`!jpj)qM2Fuu(>_`Mpur(+_R})4X0Use*_5HpgnXCOuunS zeZ+OL+Lbs6QYcuUCz9o;3i^*R3J&T}AAgjf&D6l-D-Hhu{{W;+Lv~{Qu(l1TI;gg; zay}|o+$iu^LNb;i;vRpBj0+CC7wQPz$#S6QEW3ym<&;N$aV?O8!TyoMRB=nT=XM|2 zf(8#DOcZxCl@c$JKidlHr!+sijw>&jTqjUdYkrBo3UHzcSBH@Q0B``v-~laSoWV}~ zK)P_EsheiABUm{%LPi~S5SCWYXdK>6@^gaP&;8Pi!@n(M(lgI0fe`@E(g?froPlA zjT-cV6ndhwi*D9ZI0R5AhY+tV%Dj4%gXcDX*y=V`&`oj`Y*G#Di!7wDyC#r4#{D{; zMf--kT&uz)qo;)2ZM7VQdL@GRXCLkgwZ1Hf%BL@rE);dupXHpd)W<)l-5e`qINE)y zC^x4dA^=+WB&tU@%t*9u7z2K>DwdoI2JX--E%{M;l;0=+08!SOvcHkU99j-Q57nbq z^U@FMCLpM?fZ6~nZL}geB&PK%acSi3fwBX9gpY6mf;z-_swTkx{{SoOm$v(tx9$dt zV*7+xH?^96i{P#Hcqbdw2gvZj zavJn{G5orLNc;%=ExVIKD;`35TxTcTjIS20fJi~CAby#s)H48cuu3~loyh=ufO=p@KA@(Oe)t`{nFOKlJYNCV-Wq2J+DZ{H`sg$ zQSYg9fliM+A_N|cKuO#+&Ic2}!SFu{=S1vxr`VK74F+2Nu51TKlf z)Bej=xlP&?3Ls?!sj-Z!)%ds&Eb4QxQPeEB7F55UY7FRHpvy~lgaoYLnf=3y%Xj^T zTP#b}Z}boivieL3O9eo#H>nB$8k+73s^yj~{J}iz-Vv<1Svf)gt zJQD#QpqDDmiLBr9gGBII;xEVNLOZL>!Fi{!{>d)QP`Y*e3>uVdHVbI$V}A|~?%jm1 ztk8l9hR>Fjf*RYe^C$tUfF?;cpSDs52ohj+sD#kh)?Cx)j{Ss8RR^8FVmo}fBkl%P z28q9lh^d+cHrA(~>bSn?+jkQ0@u8{{pehbDdA%IA;+|iaBn;w!K^1qJYvU0(wZjls2|D5Ya9BJnsLczk zc=m~stD_R`uUbCIpO?NXv4i@km)?Cd*u-Spd^}#HvL|-oO1Ja*BRPhy%-`jVqX+DX z=mv)_X3T@SY#0>3)aQVSO+@D_^5o??EM-kGgaB+>4I

        !8U1aQMctK0Ck`L0KPB;!#zKt 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 z�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 Q52Cde_AZOIL$eY8*`G7`M*si- literal 0 HcmV?d00001 diff --git a/前端UI八页面完成/deck-stage.js b/前端UI八页面完成/deck-stage.js new file mode 100644 index 0000000..c276e11 --- /dev/null +++ b/前端UI八页面完成/deck-stage.js @@ -0,0 +1,2952 @@ +/* BEGIN USAGE */ +/** + * — reusable web component for HTML decks. + * + * Handles: + * (a) speaker notes — reads + * + * The :not(:defined) rule prevents a flash of the first slide at its + * authored styles before this script runs and attaches the shadow root. + * + * Slides are the direct element children of . Each slide is + * automatically tagged with: + * - data-screen-label="NN Label" (1-indexed, for comment flow) + * - data-om-validate="no_overflowing_text,no_overlapping_text,slide_sized_text" + * + * Speaker notes stay in sync because the component posts {slideIndexChanged: N} + * to the parent — just include the #speaker-notes script tag if asked for notes. + * + * Authoring guidance: + * - Write slide bodies as static HTML inside , with sizing via + * CSS custom properties in a ' + + '

        ' + + ' ' + + '
        ' + icon + + '
        ' + + '
        or browse files
        ' + + '
        ' + warnIcon + + '
        This photo needs attribution
        ' + + '
        ' + + '
        ' + + '
        ' + + // Outside .frame, like .spill/.ctl — the frame's overflow:hidden + + // border-radius/clip-path would cut the credit off on circle/pill/mask. + // A SPAN, not an
        : the prescribed Unsplash credit holds two links + // (photographer + Unsplash), built per-render in _render(). + '' + + '
        ' + + ' ' + + '
        ' + + '
        ' + + '
        ' + + // data-dc-edit-transparent: the DC editor's edit-mode picker lets + // clicks through for chrome marked with it (EDIT_TRANSPARENT_SEL) + // — without it, Replace/Edit clicks in Edit mode are swallowed by + // element selection and the controls look dead. + '
        ' + + '
        ' + + ''; + this._frame = root.querySelector('.frame'); + this._ring = root.querySelector('.ring'); + this._img = root.querySelector('.frame img'); + this._empty = root.querySelector('.empty'); + this._cap = root.querySelector('.cap'); + this._sub = root.querySelector('.sub'); + this._spill = root.querySelector('.spill'); + this._ctl = root.querySelector('.ctl'); + this._credit = root.querySelector('.credit'); + this._attrError = root.querySelector('.attr-error'); + // Credit clicks open the link, not browse/reframe. + this._credit.addEventListener('click', (e) => e.stopPropagation()); + this._credit.addEventListener('dblclick', (e) => e.stopPropagation()); + this._ghost = root.querySelector('.ghost'); + this._err = null; + this._input = root.querySelector('input'); + this._depth = 0; + this._gen = 0; + // Encode-in-flight marker (the owning _ingest generation): while set, + // the same-src "nothing in flight" clear in _render must not fire — + // the stored value still points at the OLD image until the encode + // lands, so that clear would unmask the stale image mid-replace. + this._swapGen = 0; + // Render-owned swap in flight: set when _render assigns a new src, + // cleared only by the img's own load/error (or the empty branch). + // img.complete CANNOT stand in for this — setting src only QUEUES + // the current-request swap (a microtask), so synchronously after an + // assignment, complete still reports the OLD settled request. The + // pick path does exactly that: the host sets src, credit, and + // credit-href back-to-back in one task, and renders #2/#3 would + // read the stale complete === true and drop the mask one render + // after it was set. + this._loadPending = false; + // See _render's empty branch: a transient attribution-error wipe of a + // showing image must make the follow-up render a replacement (spinner), + // not a first fill (blank frame). + this._hidShowing = false; + this._view = { s: 1, x: 0, y: 0 }; + this._subFn = () => this._render(); + // Shadow-DOM listeners live with the shadow DOM — bound once here so + // disconnect/reconnect (e.g. React remount) doesn't stack handlers. + this._empty.addEventListener('click', () => this._input.click()); + root.addEventListener('click', (e) => { + const act = e.target && e.target.getAttribute && e.target.getAttribute('data-act'); + if (!act) return; + // The hidden controls are opacity-0 but still tabbable — without + // this gate a keyboard user could drive them on a read-only share + // link (mirrors the dblclick handler's editable gate). + if (!this.hasAttribute('data-editable')) return; + if (act === 'replace') { + this._exitReframe(true); + // Host-owned picker (Unsplash modal; it also offers local import). + this.dispatchEvent(new CustomEvent('image-slot:pick', { + bubbles: true, composed: true, detail: { id: this.id || null } + })); + } + if (act === 'edit') { + if (!this._reframes()) return; + if (this.hasAttribute('data-reframe')) this._exitReframe(true); + else this._enterReframe(); + } + }); + this._input.addEventListener('change', () => { + const f = this._input.files && this._input.files[0]; + if (f) this._ingest(f); + this._input.value = ''; + }); + // naturalWidth/Height aren't known until load — re-apply so the cover + // baseline is computed from real dimensions, not the 100%×100% fallback. + // load/error also release the replacement-in-flight mask (via the + // single discipline in _releaseMask): the swap is only revealed once + // the new image can actually paint (on error the frame shows its + // background, same as a fresh slot with a broken src). + this._img.addEventListener('load', () => { + this._loadPending = false; + this._releaseMask(true); + this._applyView(); + }); + this._img.addEventListener('error', () => { + this._loadPending = false; + this._releaseMask(true); + }); + // Gated only on editable — any filled slot can be repositioned/scaled, + // regardless of fit. Share links (no writeFile) stay static. + this.addEventListener('dblclick', (e) => { + if (!this.hasAttribute('data-editable') || !this._reframes()) return; + e.preventDefault(); + if (this.hasAttribute('data-reframe')) this._exitReframe(true); + else this._enterReframe(); + }); + // Pan + resize both originate on the spill layer. A handle pointerdown + // drives an aspect-locked resize anchored at the opposite corner; any + // other pointerdown on the spill pans. Offsets are frame-% so a + // reframed slot survives responsive resize / PPTX export. + this._spill.addEventListener('pointerdown', (e) => { + if (e.button !== 0 || !this.hasAttribute('data-reframe')) return; + e.preventDefault(); + e.stopPropagation(); + this._spill.setPointerCapture(e.pointerId); + const rect = this.getBoundingClientRect(); + const fw = rect.width || 1, fh = rect.height || 1; + const corner = e.target.getAttribute && e.target.getAttribute('data-c'); + let move; + if (corner) { + // Resize about the OPPOSITE corner. Viewport-px throughout (rect + // fw/fh, not clientWidth) so the math survives a transform:scale() + // ancestor — deck_stage renders slides scaled-to-fit. + const iw = this._img.naturalWidth || 1, ih = this._img.naturalHeight || 1; + const contain = (this.getAttribute('fit') || 'cover').toLowerCase() === 'contain'; + const base = contain ? Math.min(fw / iw, fh / ih) : Math.max(fw / iw, fh / ih); + const sx = corner.includes('e') ? 1 : -1; + const sy = corner.includes('s') ? 1 : -1; + const s0 = this._view.s; + const w0 = iw * base * s0, h0 = ih * base * s0; + const cx0 = (50 + this._view.x) / 100 * fw; + const cy0 = (50 + this._view.y) / 100 * fh; + const ox = cx0 - sx * w0 / 2, oy = cy0 - sy * h0 / 2; + const diag0 = Math.hypot(w0, h0); + const ux = sx * w0 / diag0, uy = sy * h0 / diag0; + move = (ev) => { + const proj = (ev.clientX - rect.left - ox) * ux + + (ev.clientY - rect.top - oy) * uy; + const s = clampS(s0 * proj / diag0); + const d = diag0 * s / s0; + this._view.s = s; + this._view.x = (ox + ux * d / 2) / fw * 100 - 50; + this._view.y = (oy + uy * d / 2) / fh * 100 - 50; + this._clampView(); + this._applyView(); + }; + } else { + this.setAttribute('data-panning', ''); + const start = { px: e.clientX, py: e.clientY, x: this._view.x, y: this._view.y }; + move = (ev) => { + this._view.x = start.x + (ev.clientX - start.px) / fw * 100; + this._view.y = start.y + (ev.clientY - start.py) / fh * 100; + this._clampView(); + this._applyView(); + }; + } + const up = () => { + try { this._spill.releasePointerCapture(e.pointerId); } catch {} + this._spill.removeEventListener('pointermove', move); + this._spill.removeEventListener('pointerup', up); + this._spill.removeEventListener('pointercancel', up); + this.removeAttribute('data-panning'); + this._dragUp = null; + }; + // Stashed so _exitReframe (Escape / outside-click mid-drag) can + // tear the capture + listeners down synchronously. + this._dragUp = up; + this._spill.addEventListener('pointermove', move); + this._spill.addEventListener('pointerup', up); + this._spill.addEventListener('pointercancel', up); + }); + // Wheel zoom stays available inside reframe mode as a trackpad nicety — + // zooms toward the cursor (offset' = cursor·(1-k) + offset·k). + this.addEventListener('wheel', (e) => { + if (!this.hasAttribute('data-reframe')) return; + e.preventDefault(); + const r = this.getBoundingClientRect(); + const cx = (e.clientX - r.left) / r.width * 100 - 50; + const cy = (e.clientY - r.top) / r.height * 100 - 50; + const prev = this._view.s; + const next = clampS(prev * Math.pow(1.0015, -e.deltaY)); + if (next === prev) return; + const k = next / prev; + this._view.s = next; + this._view.x = cx * (1 - k) + this._view.x * k; + this._view.y = cy * (1 - k) + this._view.y * k; + this._clampView(); + this._applyView(); + }, { passive: false }); + } + + connectedCallback() { + // Warn once per page — an id-less slot works for the session but + // cannot persist, and two id-less slots would share nothing. + if (!this.id && !ImageSlot._warned) { + ImageSlot._warned = true; + console.warn(' without an id will not persist its dropped image.'); + } + this.addEventListener('dragenter', this); + this.addEventListener('dragover', this); + this.addEventListener('dragleave', this); + this.addEventListener('drop', this); + subs.add(this._subFn); + // The host may inject window.omelette.writeFile AFTER the first render; + // re-render on hover so the editable-gated controls reliably appear. + this.addEventListener('pointerenter', this._subFn); + // width%/height% in _applyView encode the frame aspect at call time — + // a host resize (responsive grid, pane divider) would stretch the + // image until the next _render. Re-render on size change: _render() + // re-seeds _view from stored before clamp/apply, so a shrink→grow + // cycle round-trips instead of ratcheting x/y toward the narrower + // frame's clamp range. + this._ro = new ResizeObserver(() => this._render()); + this._ro.observe(this); + load(); + this._render(); + } + + disconnectedCallback() { + subs.delete(this._subFn); + this.removeEventListener('pointerenter', this._subFn); + this.removeEventListener('dragenter', this); + this.removeEventListener('dragover', this); + this.removeEventListener('dragleave', this); + this.removeEventListener('drop', this); + if (this._ro) { this._ro.disconnect(); this._ro = null; } + // commit=false: a disconnect is not a user intent — committing here + // would persist whatever half-finished drag a React remount or DOM + // splice happened to interrupt. Deliberate exits commit on their own + // paths (Escape/click-out/toggle), and unloads commit via pagehide. + this._exitReframe(false); + } + + _enterReframe() { + if (this.hasAttribute('data-reframe')) return; + this.setAttribute('data-reframe', ''); + this._signalReframe(true); + // Best-effort commit when the document unloads mid-reframe (a host + // navigation racing the enter signal, a manual reload, tab close): + // the sidecar write rides the host bridge, which outlives this + // document, so the crop survives even though the mode dies with the + // DOM. Held on the instance so _exitReframe detaches exactly what + // was attached. + this._pagehide = () => { this._exitReframe(true); flushNow(); }; + window.addEventListener('pagehide', this._pagehide); + // Promote spill to the top layer, then keep it pinned over the frame: + // scroll/resize cover the common cases, and a per-frame rect check + // catches layout shifts that fire neither (an image above finishing + // load, streamed DOM pushing the slot down, an ancestor transform + // change) so the overlay can't detach from the frame. + try { this._spill.showPopover(); } catch {} + // After the spill, so the controls stack above it in the top layer. + try { this._ctl.showPopover(); } catch {} + this._reposition = () => { if (this.hasAttribute('data-reframe')) this._applyView(); }; + window.addEventListener('scroll', this._reposition, true); + window.addEventListener('resize', this._reposition); + this._lastRect = ''; + this._watch = () => { + if (!this.hasAttribute('data-reframe')) return; + const r = this.getBoundingClientRect(); + const key = r.left + ',' + r.top + ',' + r.width + ',' + r.height; + if (key !== this._lastRect) { this._lastRect = key; this._applyView(); } + this._watchId = requestAnimationFrame(this._watch); + }; + this._watchId = requestAnimationFrame(this._watch); + this._applyView(); + // Close on click outside (the spill handler stopPropagation()s so + // in-image drags don't reach this) and on Escape. Listeners are held + // on the instance so _exitReframe / disconnectedCallback can detach + // exactly what was attached. + this._outside = (e) => { + if (e.composedPath && e.composedPath().includes(this)) return; + this._exitReframe(true); + }; + this._esc = (e) => { if (e.key === 'Escape') this._exitReframe(true); }; + document.addEventListener('pointerdown', this._outside, true); + document.addEventListener('keydown', this._esc, true); + } + + _exitReframe(commit) { + if (!this.hasAttribute('data-reframe')) return; + if (this._dragUp) this._dragUp(); + this.removeAttribute('data-reframe'); + this.removeAttribute('data-panning'); + if (this._outside) document.removeEventListener('pointerdown', this._outside, true); + if (this._esc) document.removeEventListener('keydown', this._esc, true); + this._outside = this._esc = null; + if (this._reposition) { + window.removeEventListener('scroll', this._reposition, true); + window.removeEventListener('resize', this._reposition); + this._reposition = null; + } + if (this._watchId) { cancelAnimationFrame(this._watchId); this._watchId = 0; } + if (this._pagehide) { + window.removeEventListener('pagehide', this._pagehide); + this._pagehide = null; + } + try { this._spill.hidePopover(); } catch {} + try { this._ctl.hidePopover(); } catch {} + this._ctl.style.left = ''; this._ctl.style.top = ''; + if (commit) this._commitView(); + this._signalReframe(false); + } + + // Reframe state lives only in this DOM until commit, invisible to the + // host's dirty signals — announce enter/exit so the host can hold + // auto-reloads for exactly the gesture (the guest bundle forwards + // image-slot:reframe to the host as imageSlotReframe). Dispatched on + // the element (composed, so it escapes shadow roots) while connected; + // a disconnected exit (disconnectedCallback) falls back to document so + // the host still hears it. + _signalReframe(active) { + const target = this.isConnected ? this : document; + target.dispatchEvent(new CustomEvent('image-slot:reframe', { + bubbles: true, composed: true, + detail: { active: active, id: this.id || null } + })); + } + + // Public: host's "Import from computer" calls this to run local browse. + openFilePicker() { this._exitReframe(true); this._input.click(); } + + // A src write is a newer intent for this slot's content — the host + // pick path (setImageSlotImage) or an agent edit — so it must win + // over any encode still in flight from an earlier drop: left live, + // that encode lands later, passes _ingest's gen guard, and its + // setSlot silently overwrites the pick (the stored value shadows + // src in _render). Bumping _gen kills the encode before its own + // _swapGen clear runs, so clear the dead claim here too — otherwise + // _releaseMask (gated on !_swapGen) never fires and the pick's + // spinner is stranded. src ONLY: the pick sets credit/credit-href + // in the same task, and clearing _swapGen on those would let the + // same-src branch unmask the old image mid-encode. + attributeChangedCallback(name, oldVal, newVal) { + if (name === 'src' && oldVal !== newVal) { + this._gen++; + this._swapGen = 0; + } + if (this.shadowRoot) this._render(); + } + + // handleEvent — one listener object for all four drag events keeps the + // add/remove symmetric and the depth counter correct. + handleEvent(e) { + if (e.type === 'dragenter' || e.type === 'dragover') { + // Without preventDefault the browser never fires 'drop'. + e.preventDefault(); + e.stopPropagation(); + if (e.dataTransfer) e.dataTransfer.dropEffect = 'copy'; + if (e.type === 'dragenter') this._depth++; + this.setAttribute('data-over', ''); + } else if (e.type === 'dragleave') { + // dragenter/leave fire for every descendant crossing — count depth + // so hovering the icon inside the empty state doesn't flicker. + if (--this._depth <= 0) { this._depth = 0; this.removeAttribute('data-over'); } + } else if (e.type === 'drop') { + e.preventDefault(); + e.stopPropagation(); + this._depth = 0; + this.removeAttribute('data-over'); + const f = e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files[0]; + if (f) this._ingest(f); + } + } + + async _ingest(file) { + this._setError(null); + if (!file || ACCEPT.indexOf(file.type) < 0) { + this._setError('Drop a PNG, JPEG, WebP, or AVIF image.'); + return; + } + // toDataUrl can take hundreds of ms on a large photo. A Clear or a + // newer drop during that window would be clobbered when this await + // resumes — bump + capture a generation so stale encodes bail. + const gen = ++this._gen; + // Replacing a shown image: surface the swap through the encode too, + // not just the decode — otherwise the old photo sits there with no + // feedback while the canvas re-encode runs. An empty slot keeps its + // placeholder (no spinner) until the encode lands, as before. + // _swapGen guards the mask against re-renders DURING the encode + // (pointerenter, ResizeObserver, another slot's store write): the + // stored value still resolves to the old image there, so _render's + // same-src clear would otherwise unmask it mid-replace. + if (this.hasAttribute('data-filled')) { + this.setAttribute('data-swapping', ''); + this._swapGen = gen; + } + try { + const w = this.clientWidth || this.offsetWidth || MAX_DIM; + const url = await toDataUrl(file, w); + if (gen !== this._gen) return; + // Only exit reframe once the new image is in hand — a rejected type + // or decode failure leaves the in-progress crop untouched. + this._exitReframe(false); + // Clear BEFORE setSlot: its synchronous re-render must see no + // pending encode, so a byte-identical re-upload (same data URL, no + // load event coming) still clears the mask via the complete branch. + this._swapGen = 0; + const val = { u: url, s: 1, x: 0, y: 0 }; + setSlot(this.id || '', val); + // Keep a session-local copy for id-less slots so the drop still + // shows, even though it cannot persist. + if (!this.id) { this._local = val; this._render(); } + } catch (err) { + if (gen !== this._gen) return; + this._swapGen = 0; + // Reveal the kept old image — unless another replacement (a + // remote pick's src swap) is still in flight, in which case the + // mask stays until THAT image settles (its load/error releases). + this._releaseMask(); + this._setError('Could not read that image.'); + console.warn(' ingest failed:', err); + } + } + + _setError(msg) { + if (this._err) { this._err.remove(); this._err = null; } + if (!msg) return; + const d = document.createElement('div'); + d.className = 'err'; d.textContent = msg; + this.shadowRoot.appendChild(d); + this._err = d; + setTimeout(() => { if (this._err === d) { d.remove(); this._err = null; } }, 3000); + } + + // Reframing (pan/resize) is available on any filled slot — the user can + // always reposition/scale. `fit` only sets the initial baseline (see + // _geom): contain starts fully-visible, cover starts frame-filling. + _reframes() { + return this.hasAttribute('data-filled'); + } + + // The single release discipline for the replacement-in-flight mask + // (data-swapping). The mask comes off only when BOTH hold: + // - no encode is pending (_swapGen) — mid-encode the stored value + // still resolves to the old image, so any reveal paints it; + // - the frame img has settled on its current src — an unsettled src + // means some replacement is still in flight (e.g. a remote pick), + // whoever started it, and revealing would paint the previous + // frame. The load/error listeners pass settled=true (the event IS + // the settlement signal, per spec complete is true by then); + // other callers rely on the complete flag (covers loaded AND + // failed). + // Every release path funnels through here EXCEPT _render's empty + // branch (the img is being cleared — nothing will ever settle). + _releaseMask(settled) { + if ( + !this._swapGen && + !this._loadPending && + (settled || this._img.complete) + ) { + this.removeAttribute('data-swapping'); + } + } + + // Baseline geometry, shared by clamp/apply/resize. `base` is the scale at + // view-scale s=1: cover = fill the frame (overflow on the looser axis), + // contain = fit fully inside (letterboxed). Zooming a contain image past + // s where it overflows naturally becomes a crop. Null until the img has + // loaded (naturalWidth is 0 before that) or when the slot has no layout + // box — ResizeObserver fires with a 0×0 rect under display:none, and + // clamping against a degenerate 1×1 frame would silently pull the stored + // pan toward zero. + _geom() { + const iw = this._img.naturalWidth, ih = this._img.naturalHeight; + const fw = this.clientWidth, fh = this.clientHeight; + if (!iw || !ih || !fw || !fh) return null; + const contain = (this.getAttribute('fit') || 'cover').toLowerCase() === 'contain'; + const base = contain + ? Math.min(fw / iw, fh / ih) + : Math.max(fw / iw, fh / ih); + return { iw, ih, fw, fh, base }; + } + + _clampView() { + // Pan range on each axis is half the overflow past the frame edge. + const g = this._geom(); + if (!g) return; + const mx = Math.max(0, (g.iw * g.base * this._view.s / g.fw - 1) * 50); + const my = Math.max(0, (g.ih * g.base * this._view.s / g.fh - 1) * 50); + this._view.x = Math.max(-mx, Math.min(mx, this._view.x)); + this._view.y = Math.max(-my, Math.min(my, this._view.y)); + } + + _applyView() { + const g = this._geom(); + // Top-layer controls: pin to the frame's top-right in viewport px + // (the same 8px inset as the in-frame layout; unscaled — top-layer UI + // reads as chrome, not page content). BEFORE the geometry branch: + // placement needs only the frame rect, and a not-yet-loaded or broken + // src must not leave the promoted strip floating unpositioned. Gated + // on the popover actually being open: without the Popover API, + // showPopover() threw (swallowed in _enterReframe), .ctl stays in + // its in-frame absolute layout, and viewport-px coordinates would + // shove it off-frame — and matches(':popover-open') itself throws + // there (unknown pseudo-class), hence the try/catch. + if (this.hasAttribute('data-reframe')) { + let onTop = false; + try { onTop = this._ctl.matches(':popover-open'); } catch {} + if (onTop) { + const r = this.getBoundingClientRect(); + this._ctl.style.left = (r.right - 8) + 'px'; + this._ctl.style.top = (r.top + 8) + 'px'; + } + } + if (!g) { + // Dimensions not known yet (before img load) — centered fit so there + // is no flash of an unpositioned image before the geometry lands. + const contain = (this.getAttribute('fit') || 'cover').toLowerCase() === 'contain'; + this._img.style.width = '100%'; + this._img.style.height = '100%'; + this._img.style.left = '50%'; + this._img.style.top = '50%'; + this._img.style.objectFit = contain ? 'contain' : 'cover'; + return; + } + // Baseline (cover-fill or contain-fit) × view scale. Width/height and + // left/top are all frame-% — depends only on the frame aspect ratio, so + // a responsive resize keeps the same crop. The spill layer mirrors the + // same box so its corners = image corners. + const k = g.base * this._view.s; + const w = (g.iw * k / g.fw * 100) + '%'; + const h = (g.ih * k / g.fh * 100) + '%'; + const l = (50 + this._view.x) + '%'; + const t = (50 + this._view.y) + '%'; + this._img.style.width = w; this._img.style.height = h; + this._img.style.left = l; this._img.style.top = t; + this._img.style.objectFit = ''; + if (this.hasAttribute('data-reframe')) { + // Top-layer spill: position in viewport px over the frame. The top + // layer escapes ancestor transforms entirely, so EVERY term must be + // in viewport units: getBoundingClientRect gives the frame's scaled + // origin AND size, and the rect/layout ratio rescales the ghost — + // sizing from layout px alone renders it 1/scale too large under a + // scaled deck slide. Inner ghost + handles stay box-relative. + const r = this.getBoundingClientRect(); + const sx = g.fw ? r.width / g.fw : 1; + const sy = g.fh ? r.height / g.fh : 1; + this._spill.style.width = (g.iw * k * sx) + 'px'; + this._spill.style.height = (g.ih * k * sy) + 'px'; + this._spill.style.left = (r.left + (50 + this._view.x) / 100 * r.width) + 'px'; + this._spill.style.top = (r.top + (50 + this._view.y) / 100 * r.height) + 'px'; + } + } + + _commitView() { + const v = { s: this._view.s, x: this._view.x, y: this._view.y }; + if (this._userUrl) v.u = this._userUrl; + // Framing-only (no u) persists too so an author-src slot remembers its + // crop; clearing the sidecar still falls through to src=. + if (this.id) setSlot(this.id, v); + else { this._local = v; } + } + + _render() { + // Shape / mask. Presets use border-radius so the dashed ring can + // follow the rounded outline; clip-path is only applied for an + // explicit `mask` (the ring is hidden there since a rectangle + // dashed border chopped by an arbitrary polygon looks broken). + const mask = this.getAttribute('mask'); + const shape = (this.getAttribute('shape') || 'rounded').toLowerCase(); + let radius = ''; + if (shape === 'circle') radius = '50%'; + else if (shape === 'pill') radius = '9999px'; + else if (shape === 'rounded') { + const n = parseFloat(this.getAttribute('radius')); + radius = (Number.isFinite(n) ? n : 12) + 'px'; + } + this._frame.style.borderRadius = mask ? '' : radius; + this._frame.style.clipPath = mask || ''; + this._ring.style.borderRadius = mask ? '' : radius; + this._ring.style.display = mask ? 'none' : ''; + + // Controls and reframe entry gate on this so share links stay read-only. + const editable = !!(window.omelette && window.omelette.writeFile); + this.toggleAttribute('data-editable', editable); + this._sub.style.display = editable ? '' : 'none'; + + // Content. The sidecar is also writable by the agent's write_file + // tool, so its value isn't guaranteed canvas-originated — only accept + // data:image/ URLs from it. The `src` attribute is author-controlled + // (Claude wrote it into the HTML) so it passes through unchanged. + let stored = this.id ? getSlot(this.id) : this._local; + if (stored && stored.u && !/^data:image\//i.test(stored.u)) stored = null; + const srcAttr = this.getAttribute('src') || ''; + this._userUrl = (stored && stored.u) || null; + const url = this._userUrl || srcAttr; + // Don't clobber an in-flight reframe with a store-triggered re-render. + if (!this.hasAttribute('data-reframe')) { + this._view = { + s: stored && Number.isFinite(stored.s) ? clampS(stored.s) : 1, + x: stored && Number.isFinite(stored.x) ? stored.x : 0, + y: stored && Number.isFinite(stored.y) ? stored.y : 0, + }; + } + this._cap.textContent = this.getAttribute('placeholder') || 'Drop an image'; + // Toggle via style.display — the [hidden] attribute alone loses to + // the display:flex / display:block rules in the stylesheet above. + // An Unsplash src with no credit attribute must NOT render — showing + // the photo uncredited is the Unsplash-terms violation itself. The + // error tile replaces the photo until the credit is written. A + // user-dropped image is the user's own content and always renders. + // Trimmed: credit is agent/user-editable content, and a whitespace- + // only value must count as missing — otherwise it would suppress the + // error tile AND render an empty credit box (no text, no links), + // exactly the unattributed state this gate exists to prevent. + const credit = (this.getAttribute('credit') || '').trim(); + const attrError = !!( + !credit && !this._userUrl && srcAttr && isUnsplashHost(srcAttr) + ); + this.toggleAttribute('data-attribution-error', attrError); + if (url && !attrError) { + const prev = this._img.getAttribute('src'); + if (prev !== url) { + // Replacing an already-shown image: mark the swap BEFORE setting + // src so the stale frame is never revealed (see the data-swapping + // stylesheet rules). First fill (prev empty) keeps the existing + // placeholder-until-load behavior — no spinner. _hidShowing + // covers the pick path's transient attribution-error wipe: prev + // is gone, but an image WAS showing, so this is a replacement. + if (prev || this._hidShowing) this.setAttribute('data-swapping', ''); + // Mark the swap BEFORE assigning src: complete keeps reporting + // the old settled request until the browser's + // update-the-image-data microtask runs, so same-task re-renders + // (the pick path's credit/credit-href setAttributes) need this + // flag, not complete, to know a load is in flight. + this._loadPending = true; + this._img.src = url; + this._ghost.src = url; + } else { + // Same-src re-render — release if settled, so an ingest-set + // spinner can't stick after a byte-identical re-upload (same + // data URL, no further load event ever fires). + this._releaseMask(); + } + this._hidShowing = false; + this._img.style.display = 'block'; + this._empty.style.display = 'none'; + this.setAttribute('data-filled', ''); + this._clampView(); + this._applyView(); + } else { + this.removeAttribute('data-swapping'); + // The src is being removed — no load/error will ever fire for it. + this._loadPending = false; + // A transient attribution-error wipe of a showing image happens on + // the pick path: the host sets src one setAttribute before credit, + // so render N hides the old image (attrError) and render N+1 + // restores a URL. Remember the wipe so that restore renders as a + // replacement (spinner), not a first fill (blank frame). + this._hidShowing = attrError && !!this._img.getAttribute('src'); + this._img.style.display = 'none'; + this._img.removeAttribute('src'); + this._ghost.removeAttribute('src'); + // The error tile owns the blocked-photo state; .empty stays for + // the genuinely-empty slot. + this._empty.style.display = attrError ? 'none' : 'flex'; + this.removeAttribute('data-filled'); + } + + // Credit belongs to the author src, so a user drop hides it. + // textContent + the http(s)-only funnel keep external strings inert. + const showCredit = !!(url && credit && !this._userUrl && !attrError); + this._credit.textContent = ''; + if (showCredit) { + // Validate once (resolved against the document, http(s) only), + // then append the terms-required utm referral params to links + // that point back at unsplash.com. + let href = ''; + const rawHref = this.getAttribute('credit-href') || ''; + if (rawHref) { + try { + const u = new URL(rawHref, document.baseURI); + if (u.protocol === 'http:' || u.protocol === 'https:') { + href = withReferral(u.href); + } + } catch {} + } + const mkLink = (text, linkHref) => { + const a = document.createElement('a'); + a.setAttribute('target', '_blank'); + a.setAttribute('rel', 'noopener noreferrer'); + a.setAttribute('href', linkHref); + a.textContent = text; + return a; + }; + // Unsplash's prescribed credit is TWO links — the photographer's + // name to their profile (credit-href) and 'Unsplash' to the + // homepage. Render that split whenever the text has the canonical + // shape; other text keeps the legacy single-link rendering. + const m = /^Photo by (.+) on Unsplash$/.exec(credit); + if (m) { + this._credit.appendChild(document.createTextNode('Photo by ')); + this._credit.appendChild( + href ? mkLink(m[1], href) : document.createTextNode(m[1]) + ); + this._credit.appendChild(document.createTextNode(' on ')); + this._credit.appendChild(mkLink('Unsplash', UNSPLASH_HOMEPAGE_HREF)); + } else if (href) { + this._credit.appendChild(mkLink(credit, href)); + } else { + this._credit.textContent = credit; + } + } + this.toggleAttribute('data-credit', showCredit); + } + } + + if (!customElements.get('image-slot')) { + customElements.define('image-slot', ImageSlot); + } +})(); diff --git a/前端UI八页面完成/support.js b/前端UI八页面完成/support.js new file mode 100644 index 0000000..cb009b6 --- /dev/null +++ b/前端UI八页面完成/support.js @@ -0,0 +1,1911 @@ +// GENERATED from dc-runtime/src/*.ts — do not edit. Rebuild with `cd dc-runtime && bun run build`. +"use strict"; +(() => { + var __defProp = Object.defineProperty; + var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; + var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + + // src/react.ts + function getReact() { + const R = window.React; + if (!R) throw new Error("dc-runtime: window.React is not available yet"); + return R; + } + function getReactDOM() { + const RD = window.ReactDOM; + if (!RD) throw new Error("dc-runtime: window.ReactDOM is not available yet"); + return RD; + } + var h = ((...args) => getReact().createElement( + ...args + )); + + // src/parse.ts + function parseDcDocument(doc) { + const dc = doc.querySelector("x-dc"); + if (!dc) return null; + const scriptEl = doc.querySelector("script[data-dc-script]"); + const { props, preview } = parseDataProps( + scriptEl?.getAttribute("data-props") ?? null + ); + return { + template: dc.innerHTML, + js: scriptEl ? scriptEl.textContent || "" : "", + props, + preview + }; + } + function parseDcText(src) { + const openMatch = /]*)?>/.exec(src); + if (!openMatch) return null; + const close = src.lastIndexOf(""); + if (close === -1 || close < openMatch.index) return null; + const template = src.slice(openMatch.index + openMatch[0].length, close); + const doc = new DOMParser().parseFromString(src, "text/html"); + const scriptEl = doc.querySelector("script[data-dc-script]"); + const { props, preview } = parseDataProps( + scriptEl?.getAttribute("data-props") ?? null + ); + return { + template, + js: scriptEl ? scriptEl.textContent || "" : "", + props, + preview + }; + } + function parseDataProps(raw) { + if (!raw) return { props: null, preview: null }; + let parsed; + try { + parsed = JSON.parse(raw); + } catch { + return { props: null, preview: null }; + } + if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) { + return { props: null, preview: null }; + } + const obj = parsed; + const preview = obj.$preview && typeof obj.$preview === "object" ? obj.$preview : null; + const rest = {}; + for (const k of Object.keys(obj)) { + if (k[0] !== "$") rest[k] = obj[k]; + } + return { props: Object.keys(rest).length ? rest : null, preview }; + } + function dcNameFromPath(pathname) { + let p = pathname || ""; + try { + p = decodeURIComponent(p); + } catch { + } + const base = p.split("/").pop() || "Root"; + return base.replace(/\.dc\.html$/, "").replace(/\.html?$/, "") || "Root"; + } + + // src/boot.ts + var BASE_CSS = ` + .sc-placeholder{background:color-mix(in srgb,currentColor 8%,transparent); + border:1px solid color-mix(in srgb,currentColor 50%,transparent); + border-radius:2px;box-sizing:border-box;overflow:hidden} + @keyframes sc-shine{0%{background-position:100% 50%}100%{background-position:0% 50%}} + html.sc-dc-streaming .sc-placeholder, + html.sc-dc-streaming .sc-interp.sc-missing{position:relative; + background:color-mix(in srgb,currentColor 5%,transparent); + border-color:transparent} + html.sc-dc-streaming .sc-placeholder::before, + html.sc-dc-streaming .sc-interp.sc-missing::before{content:''; + position:absolute;inset:0;pointer-events:none; + background:linear-gradient(90deg,rgba(217,119,87,0) 25%,rgba(247,225,211,.95) 37%,rgba(217,119,87,0) 63%); + background-size:400% 100%;animation:sc-shine 1.4s ease infinite} + html.sc-dc-streaming .sc-placeholder:nth-child(n+9 of .sc-placeholder)::before, + html.sc-dc-streaming .sc-interp.sc-missing:nth-child(n+9 of .sc-interp.sc-missing)::before{animation:none; + background:color-mix(in srgb,currentColor 8%,transparent)} + .sc-placeholder-error{padding:4px 8px;font:11px/1.4 ui-monospace,monospace; + color:color-mix(in srgb,currentColor 70%,transparent);word-break:break-word} + .sc-interp.sc-missing{display:inline-block;width:2em;height:1em;overflow:hidden; + vertical-align:text-bottom;background:rgba(255,255,255,.3);border:1px solid rgba(0,0,0,.5); + border-radius:2px;box-sizing:border-box;color:transparent; + user-select:none} + .sc-interp.sc-unresolved{font-family:ui-monospace,monospace;font-size:.85em; + color:color-mix(in srgb,currentColor 50%,transparent); + background:color-mix(in srgb,currentColor 10%,transparent);border-radius:3px; + padding:0 3px} + .sc-host.sc-has-error{position:relative} + .sc-logic-error{position:absolute;top:8px;left:8px;z-index:2147483647;max-width:60ch; + padding:6px 10px;background:#b00020;color:#fff;font:12px/1.4 ui-monospace,monospace; + border-radius:4px;white-space:pre-wrap;pointer-events:none} + /* Mirrors PRINT_BASELINE_CSS in apps/web deck-stage-export.ts \u2014 keep both + in sync until dc-runtime regains a build step. */ + @media print { + @page { margin: 0.5cm; } + figure, table { break-inside: avoid; } + #dc-root, #dc-root > .sc-host { height: auto; } + *, *::before, *::after { + print-color-adjust: exact; -webkit-print-color-adjust: exact; + backdrop-filter: none !important; -webkit-backdrop-filter: none !important; + animation-delay: -99s !important; animation-duration: .001s !important; + animation-iteration-count: 1 !important; animation-fill-mode: both !important; + animation-play-state: running !important; transition-duration: 0s !important; + } + } + `; + var FULL_PAGE_CSS = "html,body{height:100%;margin:0}#dc-root,#dc-root>.sc-host{height:100%}"; + function rootNameForDocument(doc, loc) { + let bootPath = loc.pathname || ""; + if (!/\.dc\.html?$/i.test(safeDecode(bootPath))) { + try { + bootPath = new URL(doc.baseURI || "/").pathname; + } catch { + } + } + return dcNameFromPath(bootPath); + } + function safeDecode(s) { + try { + return decodeURIComponent(s); + } catch { + return s; + } + } + function boot(runtime, doc = document) { + const parsed = parseDcDocument(doc); + if (!parsed) return null; + const React = getReact(); + const rootName = rootNameForDocument(doc, location); + runtime.markFetched(rootName); + runtime.setRootName(rootName); + runtime.adoptParsed(rootName, parsed); + if (!window.__resources) { + fetch(location.href).then((res) => res.ok ? res.text() : "").then((t) => { + const raw = t ? parseDcText(t) : null; + if (raw?.template) runtime.updateHtml(rootName, raw.template); + }).catch(() => { + }); + } + const dc = doc.querySelector("x-dc"); + const hostEl = doc.createElement("div"); + hostEl.id = "dc-root"; + dc.replaceWith(hostEl); + if (!parsed.preview) { + const s = doc.createElement("style"); + s.textContent = FULL_PAGE_CSS; + doc.head.appendChild(s); + } + const Root = runtime.getDC(rootName); + const entry = runtime.registry.get(rootName); + function StandaloneRoot() { + const [, setTick] = React.useState(0); + React.useEffect(() => { + const sub = () => setTick((n) => n + 1); + entry.subs.add(sub); + return () => { + entry.subs.delete(sub); + }; + }, []); + const defaults = React.useMemo(() => { + const d = {}; + for (const k in entry.propsMeta || {}) { + const v = entry.propsMeta?.[k]?.default; + if (v !== void 0) d[k] = v; + } + return d; + }, [entry.propsMeta]); + return h(Root, { ...defaults, ...entry.propOverrides || {} }); + } + const ReactDOM = getReactDOM(); + if (ReactDOM.createRoot) + ReactDOM.createRoot(hostEl).render(h(StandaloneRoot)); + else ReactDOM.render(h(StandaloneRoot), hostEl); + return rootName; + } + + // src/expr.ts + var IDENT_RE = /^[A-Za-z_$][A-Za-z0-9_$]*/; + var NUMBER_RE = /^-?\d+(\.\d+)?$/; + function resolve(vals, src) { + const expr = String(src).trim(); + if (!expr) return void 0; + if (expr[0] === "(" && expr[expr.length - 1] === ")" && parensWrapWhole(expr)) { + return resolve(vals, expr.slice(1, -1)); + } + const eq = findTopLevelEquality(expr); + if (eq) { + const lv = resolve(vals, expr.slice(0, eq.index)); + const rv = resolve(vals, expr.slice(eq.index + eq.op.length)); + switch (eq.op) { + case "===": + return lv === rv; + case "!==": + return lv !== rv; + case "==": + return lv == rv; + default: + return lv != rv; + } + } + if (expr[0] === "!") return !resolve(vals, expr.slice(1)); + if (expr === "true") return true; + if (expr === "false") return false; + if (expr === "null") return null; + if (expr === "undefined") return void 0; + if (NUMBER_RE.test(expr)) return Number(expr); + if (expr.length >= 2 && (expr[0] === '"' || expr[0] === "'") && expr[expr.length - 1] === expr[0]) { + return expr.slice(1, -1); + } + return resolvePath(vals, expr); + } + function parensWrapWhole(expr) { + let depth = 0; + for (let i = 0; i < expr.length - 1; i++) { + if (expr[i] === "(") depth++; + else if (expr[i] === ")") { + depth--; + if (depth === 0) return false; + } + } + return true; + } + function findTopLevelEquality(expr) { + let depth = 0; + for (let i = 0; i < expr.length; i++) { + const c = expr[i]; + if (c === "[" || c === "(") depth++; + else if (c === "]" || c === ")") depth--; + else if (depth === 0 && (c === "=" || c === "!") && expr[i + 1] === "=") { + if (i > 0 && (expr[i - 1] === "=" || expr[i - 1] === "!")) continue; + if (!expr.slice(0, i).trim()) continue; + const op = expr[i + 2] === "=" ? c + "==" : c + "="; + return { index: i, op }; + } + } + return null; + } + function resolvePath(vals, expr) { + const head = expr.match(IDENT_RE); + if (!head) return void 0; + let cur = vals == null ? void 0 : vals[head[0]]; + let i = head[0].length; + while (i < expr.length) { + if (expr[i] === ".") { + const m = expr.slice(i + 1).match(IDENT_RE) || expr.slice(i + 1).match(/^\d+/); + if (!m) return void 0; + cur = cur == null ? void 0 : cur[m[0]]; + i += 1 + m[0].length; + } else if (expr[i] === "[") { + let depth = 1; + let j = i + 1; + while (j < expr.length && depth > 0) { + if (expr[j] === "[") depth++; + else if (expr[j] === "]") { + depth--; + if (depth === 0) break; + } + j++; + } + if (depth !== 0) return void 0; + const key = resolve(vals, expr.slice(i + 1, j)); + cur = cur == null ? void 0 : cur[key]; + i = j + 1; + } else { + return void 0; + } + } + return cur; + } + + // src/encode.ts + var CAMEL_ATTR = "sc-camel-"; + var INLINE_TEXT_TAGS = new Set( + "a abbr b bdi bdo br cite code del dfn em i ins kbd mark q s samp small span strike strong sub sup u var wbr".split( + " " + ) + ); + var RAW_WRAP = { + select: "sc-raw-select", + table: "sc-raw-table", + tbody: "sc-raw-tbody", + thead: "sc-raw-thead", + tfoot: "sc-raw-tfoot", + tr: "sc-raw-tr", + td: "sc-raw-td", + th: "sc-raw-th", + caption: "sc-raw-caption" + }; + var RAW_UNWRAP = Object.fromEntries( + Object.entries(RAW_WRAP).map(([k, v]) => [v, k]) + ); + var EVENT_MAP = { + onclick: "onClick", + onchange: "onChange", + oninput: "onInput", + onsubmit: "onSubmit", + onkeydown: "onKeyDown", + onkeyup: "onKeyUp", + onkeypress: "onKeyPress", + onmousedown: "onMouseDown", + onmouseup: "onMouseUp", + onmouseenter: "onMouseEnter", + onmouseleave: "onMouseLeave", + onfocus: "onFocus", + onblur: "onBlur", + ondoubleclick: "onDoubleClick", + oncontextmenu: "onContextMenu", + onmousemove: "onMouseMove", + onmouseover: "onMouseOver", + onmouseout: "onMouseOut", + onpointerdown: "onPointerDown", + onpointerup: "onPointerUp", + onpointermove: "onPointerMove", + onpointerenter: "onPointerEnter", + onpointerleave: "onPointerLeave", + onpointercancel: "onPointerCancel", + onpointerover: "onPointerOver", + onpointerout: "onPointerOut", + ongotpointercapture: "onGotPointerCapture", + onlostpointercapture: "onLostPointerCapture", + ontouchstart: "onTouchStart", + ontouchend: "onTouchEnd", + ontouchmove: "onTouchMove", + ontouchcancel: "onTouchCancel", + ondragstart: "onDragStart", + ondragend: "onDragEnd", + ondragenter: "onDragEnter", + ondragleave: "onDragLeave", + ondragover: "onDragOver", + onanimationstart: "onAnimationStart", + onanimationend: "onAnimationEnd", + onanimationiteration: "onAnimationIteration", + ontransitionend: "onTransitionEnd" + }; + var ATTRS = `(?:[^>"']|"[^"]*"|'[^']*')*`; + var IMPORT_SELF_CLOSE_RE = new RegExp( + "<(x-import|dc-import)(" + ATTRS + ")/>", + "gi" + ); + var CAMEL_ATTR_RE = /(\s)([a-z]+[A-Z][A-Za-z0-9]*)(\s*=)/g; + function encodeCamelAttrs(html) { + return html.replace( + CAMEL_ATTR_RE, + (_, sp, name, eq) => sp + CAMEL_ATTR + name.replace(/[A-Z]/g, (c) => "-" + c.toLowerCase()) + eq + ); + } + function encodeCase(html) { + html = html.replace( + IMPORT_SELF_CLOSE_RE, + (_, t, a) => "<" + t + a + ">" + ); + html = html.replace(/)/gi, "/gi, ""); + html = encodeCamelAttrs(html); + for (const [real, alias] of Object.entries(RAW_WRAP)) { + html = html.replace( + new RegExp("(])", "gi"), + "$1" + alias + ); + } + return html; + } + function kebabToCamel(s) { + return s.replace(/-([a-z])/g, (_, c) => c.toUpperCase()); + } + function cssToObj(css) { + const o = {}; + for (const decl of css.split(";")) { + const i = decl.indexOf(":"); + if (i < 0) continue; + const prop = decl.slice(0, i).trim(); + o[prop.startsWith("--") ? prop : kebabToCamel(prop)] = decl.slice(i + 1).trim(); + } + return o; + } + function compileAttr(raw) { + const whole = raw.match(/^\s*\{\{([\s\S]+?)\}\}\s*$/); + if (whole) { + const path = whole[1]; + return (vals) => resolve(vals, path); + } + if (raw.includes("{{")) { + const parts = raw.split(/\{\{([\s\S]+?)\}\}/g); + return (vals) => parts.map((s, i) => i & 1 ? resolve(vals, s) ?? "" : s).join(""); + } + return () => raw; + } + + // src/compile.ts + function collectProps(node, kind, host) { + const propGetters = []; + const pseudoClasses = []; + let hintSize = null; + for (const { name, value } of [...node.attributes]) { + if (name === "sc-name" || name === "data-dc-tpl") continue; + let key = name; + if (key.startsWith(CAMEL_ATTR)) + key = kebabToCamel(key.slice(CAMEL_ATTR.length)); + if (key === "hint-size") { + hintSize = value; + continue; + } + if (key.startsWith("style-")) { + pseudoClasses.push(host.pseudoClass(key.slice(6), value)); + continue; + } + if (kind !== "dom") { + if (key.includes("-") && !(kind === "x-import" && (key.startsWith("aria-") || key.startsWith("data-")))) + key = kebabToCamel(key); + } else { + if (key === "class") key = "className"; + else if (key === "for") key = "htmlFor"; + else if (key.startsWith("on")) + key = EVENT_MAP[key] || "on" + key[2].toUpperCase() + key.slice(3); + } + propGetters.push([key, compileAttr(value)]); + } + return { propGetters, pseudoClasses, hintSize }; + } + var HOST_STYLE_PROPS = /* @__PURE__ */ new Set([ + "position", + "left", + "right", + "top", + "bottom", + "inset", + "width", + "height", + "z-index", + "transform" + ]); + function hostPositionStyle(style) { + const all = typeof style === "string" ? cssToObj(style) : style != null && typeof style === "object" ? style : null; + if (!all) return void 0; + const out = {}; + for (const [k, v] of Object.entries(all)) { + const kebab = k.replace(/[A-Z]/g, (c) => "-" + c.toLowerCase()); + if (HOST_STYLE_PROPS.has(kebab)) out[k] = v; + } + return Object.keys(out).length ? out : void 0; + } + function compileTemplate(html, host) { + const tpl = document.createElement("template"); + //! nosemgrep: direct-inner-html-assignment + tpl.innerHTML = encodeCase(html); + let tplN = 0; + (function stamp(node) { + if (node.nodeType === Node.ELEMENT_NODE) { + node.setAttribute("data-dc-tpl", String(tplN++)); + } + for (const c of node.childNodes) stamp(c); + })(tpl.content); + const builders = walkChildren(tpl.content, host); + const render = ((vals, ctx) => builders.map((b, i) => b(vals || {}, ctx, i))); + render.__annotated = tpl.innerHTML; + return render; + } + function walkChildren(node, host) { + return [...node.childNodes].map((c) => walk(c, host)).filter((b) => b != null); + } + var SLIDE_ID_VALUE_RE = /^[0-9a-f]{8}$/; + var DECK_CONTROL_FLOW_RE = /^(sc-if|sc-for|sc-else|dc-import|x-import)$/; + var DECK_AUX_RE = /^(template|script|style|sc-helmet|helmet)$/; + function isDeckMountTag(el) { + if (el.localName === "deck-stage") return true; + return el.localName === "x-import" && (el.getAttribute("component-from-global-scope") || "") === "deck-stage"; + } + function walkDeckChildren(el, host) { + const pairs = [...el.childNodes].map((c) => ({ c, b: walk(c, host) })).filter((p) => p.b !== null); + const kids = pairs.map((p) => p.b); + const seen = /* @__PURE__ */ new Set(); + const wsSeen = /* @__PURE__ */ new Map(); + const keys = []; + const nextSlideId = new Array(pairs.length); + { + let upcoming = null; + for (let j = pairs.length - 1; j >= 0; j--) { + const n = pairs[j].c; + if (n.nodeType === Node.ELEMENT_NODE) { + const t = n.localName; + upcoming = !DECK_AUX_RE.test(t) && !DECK_CONTROL_FLOW_RE.test(t) ? n.getAttribute("data-om-slide-id") : null; + } + nextSlideId[j] = upcoming; + } + } + for (let j = 0; j < pairs.length; j++) { + const { c } = pairs[j]; + if (c.nodeType === Node.TEXT_NODE) { + if ((c.nodeValue ?? "").trim() === "") { + const base = nextSlideId[j] ? "omid-ws:" + nextSlideId[j] : "omid-ws:aux"; + const n = wsSeen.get(base) ?? 0; + wsSeen.set(base, n + 1); + keys.push(n === 0 ? base : base + ":" + n); + continue; + } + return { kids, keys: null }; + } + if (c.nodeType !== Node.ELEMENT_NODE) { + keys.push(j); + continue; + } + const child = c; + const tag = child.localName; + if (DECK_AUX_RE.test(tag)) { + keys.push(j); + continue; + } + if (DECK_CONTROL_FLOW_RE.test(tag)) return { kids, keys: null }; + const v = child.getAttribute("data-om-slide-id"); + if (!v || !SLIDE_ID_VALUE_RE.test(v) || seen.has(v)) { + return { kids, keys: null }; + } + seen.add(v); + keys.push("omid:" + v); + } + return { kids, keys }; + } + function renderDeckKids(kids, kidKeys, vals, ctx) { + return kids.map((b, j) => { + const k = kidKeys ? kidKeys[j] : j; + const out = b(vals, ctx, k); + return kidKeys != null && typeof out === "string" ? h(getReact().Fragment, { key: k }, out) : out; + }); + } + function walk(node, host) { + if (node.nodeType === Node.TEXT_NODE) return walkText(node); + if (node.nodeType !== Node.ELEMENT_NODE) return null; + const el = node; + const tag = el.tagName.toLowerCase(); + if (tag === "sc-for") return walkFor(el, host); + if (tag === "sc-if") return walkIf(el, host); + if (tag === "x-import") return walkXImport(el, host); + if (tag === "sc-helmet") return host.helmet(el); + if (tag === "dc-import") return walkComponent(el, host); + return walkElement(el, host); + } + var warnedHoles = /* @__PURE__ */ new Set(); + function warnUnresolved(ctx, what) { + const key = (ctx?.__name || "?") + "\0" + what; + if (warnedHoles.has(key)) return; + warnedHoles.add(key); + console.warn("[dc-runtime] " + (ctx?.__name || "template") + ": " + what); + } + function walkText(node) { + const txt = node.nodeValue ?? ""; + if (!txt.includes("{{")) { + if (!txt.trim() && !txt.includes(" ")) return null; + return () => txt; + } + const parts = txt.split(/\{\{([\s\S]+?)\}\}/g); + return (vals, ctx, key) => h( + getReact().Fragment, + { key }, + ...parts.map((p, i) => { + if (!(i & 1)) return p; + const v = resolve(vals, p); + if (v === void 0) { + if (!ctx?.__streamingNow) { + if (document.body?.hasAttribute("data-dc-editor-on")) { + return h( + "span", + { key: i, className: "sc-interp sc-unresolved" }, + "{{ " + p.trim() + " }}" + ); + } + warnUnresolved( + ctx, + "{{ " + p.trim() + " }} never resolved \u2014 rendered as empty" + ); + return null; + } + return h( + "span", + { key: i, className: "sc-interp sc-missing" }, + p.trim() + ); + } + if (getReact().isValidElement(v) || Array.isArray(v)) { + return h(getReact().Fragment, { key: i }, v); + } + if (v === null || typeof v === "boolean") return null; + return h("span", { key: i, className: "sc-interp" }, String(v)); + }) + ); + } + function walkFor(el, host) { + const listGet = compileAttr(el.getAttribute("list") || ""); + const asName = el.getAttribute("as") || "item"; + const hintN = parseInt(el.getAttribute("hint-placeholder-count") || "0", 10); + const kids = walkChildren(el, host); + const listSrc = el.getAttribute("list") || ""; + return (vals, ctx, key) => { + let list = listGet(vals); + if (!Array.isArray(list)) { + if (!ctx?.__streamingNow) { + if (list !== void 0 && list !== null) { + warnUnresolved( + ctx, + 'sc-for list="' + listSrc + '" is not an array (' + typeof list + ")" + ); + } + list = []; + } else { + list = hintN > 0 ? Array(hintN).fill(void 0) : []; + } + } + return h( + getReact().Fragment, + { key }, + list.map((item, i) => { + const sub = { ...vals, [asName]: item, $index: i }; + return h( + getReact().Fragment, + { key: i }, + kids.map((b, j) => b(sub, ctx, j)) + ); + }) + ); + }; + } + function walkIf(el, host) { + const valGet = compileAttr(el.getAttribute("value") || ""); + const hintRaw = el.getAttribute("hint-placeholder-val"); + const hintGet = hintRaw != null ? compileAttr(hintRaw) : null; + const kids = walkChildren(el, host); + return (vals, ctx, key) => { + let v = valGet(vals); + if (v === void 0 && hintGet && ctx?.__streamingNow) v = hintGet(vals); + return v ? h( + getReact().Fragment, + { key }, + kids.map((b, j) => b(vals, ctx, j)) + ) : null; + }; + } + function walkComponent(el, host) { + const name = el.getAttribute("name") || el.getAttribute("component") || ""; + el.removeAttribute("name"); + el.removeAttribute("component"); + const tplId = el.getAttribute("data-dc-tpl"); + const styleRaw = el.getAttribute("style"); + el.removeAttribute("style"); + const styleGet = styleRaw != null ? compileAttr(styleRaw) : null; + const { propGetters, hintSize } = collectProps(el, "dc-import", host); + const kids = walkChildren(el, host); + return (vals, ctx, key) => { + const props = { + key, + __hintSize: hintSize, + __tplId: tplId, + __hostStyle: styleGet ? hostPositionStyle(styleGet(vals)) : void 0 + }; + for (const [k, g] of propGetters) { + const v = g(vals); + if (k === "dcProps") { + if (v && typeof v === "object") Object.assign(props, v); + continue; + } + props[k] = v; + } + if (kids.length) props.children = kids.map((b, j) => b(vals, ctx, j)); + return h(host.component(name), props); + }; + } + function walkXImport(el, host) { + const globalNameGet = compileAttr( + el.getAttribute("component-from-global-scope") || "" + ); + const exportNameGet = compileAttr( + el.getAttribute("component") || el.getAttribute("name") || "" + ); + const fromRaw = el.getAttribute("from") || (el.getAttribute("component-from-global-scope") ? "" : el.getAttribute("src") || el.getAttribute("import") || ""); + const urls = fromRaw.trim() ? fromRaw.trim().split(/\s+/) : []; + const url = urls.length ? urls[urls.length - 1] : ""; + const kindOf = (u) => /\.(jsx|tsx)(\?|#|$)/i.test(u) ? "jsx" : "js"; + const tplId = el.getAttribute("data-dc-tpl"); + const styleRaw = el.getAttribute("style"); + el.removeAttribute("style"); + const styleGet = styleRaw != null ? compileAttr(styleRaw) : null; + const wrap = tplId != null || styleGet != null; + const { propGetters, hintSize } = collectProps(el, "x-import", host); + const hasContent = el.children.length > 0 || !!(el.textContent || "").trim(); + const deckKeyed = hasContent && isDeckMountTag(el) ? walkDeckChildren(el, host) : null; + const kids = deckKeyed ? deckKeyed.kids : hasContent ? walkChildren(el, host) : []; + const kidKeys = deckKeyed?.keys ?? null; + const urlBindable = fromRaw.includes("{{"); + if (urls.length && !urlBindable) { + let prev; + for (const u of urls) prev = host.loadExternal(kindOf(u), u, prev); + } + const evalName = (g, vals) => { + const v = g(vals); + const s = v == null ? "" : String(v); + return s.includes("{{") ? "" : s; + }; + return (vals, ctx, key) => { + const globalName = evalName(globalNameGet, vals); + const name = globalName || evalName(exportNameGet, vals); + const C = !name || urlBindable ? null : globalName ? host.resolveExternalGlobal(url, globalName) : host.resolveExternal(url, name); + const hostStyle = styleGet ? hostPositionStyle(styleGet(vals)) : void 0; + const wrapper = wrap ? { + key, + className: "sc-host-x", + "data-dc-tpl": tplId, + style: hostStyle || { display: "contents" } + } : null; + if (!C) { + const error = urlBindable ? "x-import `from` cannot contain {{ \u2026 }} \u2014 module URLs are resolved at parse time; use a literal URL" : host.resolveExternalError(url, name); + const ph = host.placeholder({ + key: wrapper ? void 0 : key, + name, + hintSize, + error + }); + return wrapper ? h("div", wrapper, ph) : ph; + } + const props = wrapper ? {} : { key }; + let unresolvedHole = false; + for (const [k, g] of propGetters) { + if (k === "component" || k === "componentFromGlobalScope" || k === "from") { + continue; + } + const v = g(vals); + if (v === void 0) unresolvedHole = true; + if (k === "dcProps") { + if (v && typeof v === "object") Object.assign(props, v); + continue; + } + props[k] = v; + } + if (unresolvedHole && ctx?.__htmlStreamingNow) { + const ph = host.placeholder({ + key: wrapper ? void 0 : key, + name, + hintSize, + error: null + }); + return wrapper ? h("div", wrapper, ph) : ph; + } + if (kids.length) { + props.children = renderDeckKids(kids, kidKeys, vals, ctx); + } + return wrapper ? h("div", wrapper, h(C, props)) : h(C, props); + }; + } + function contentKey(el) { + const clone = el.cloneNode(true); + for (const d of clone.querySelectorAll("*")) { + while (d.attributes.length) d.removeAttribute(d.attributes[0].name); + } + const s = clone.innerHTML; + let h2 = 5381; + for (let i = 0; i < s.length; i++) h2 = (h2 << 5) + h2 + s.charCodeAt(i) | 0; + return s.length + "." + (h2 >>> 0).toString(36); + } + var NEVER_CONTENT_KEYED = new Set( + "script style textarea option title select canvas iframe video audio".split( + " " + ) + ); + var NOT_INLINE_SELECTOR = ":not(" + [...INLINE_TEXT_TAGS].join(",") + ")"; + function walkElement(el, host) { + const realTag = RAW_UNWRAP[el.localName] || el.localName; + const tplId = el.getAttribute("data-dc-tpl"); + const inlineOnly = el.childNodes.length > 0 && !NEVER_CONTENT_KEYED.has(realTag) && el.querySelector(NOT_INLINE_SELECTOR) === null; + const keySuffix = inlineOnly ? "|" + contentKey(el) : ""; + const { propGetters, pseudoClasses } = collectProps(el, "dom", host); + const deckKeyed = isDeckMountTag(el) ? walkDeckChildren(el, host) : null; + const kids = deckKeyed ? deckKeyed.kids : walkChildren(el, host); + const kidKeys = deckKeyed?.keys ?? null; + return (vals, ctx, key) => { + const props = { + key: key + keySuffix, + "data-dc-tpl": tplId + }; + for (const [k, g] of propGetters) { + let v = g(vals); + if (k === "style" && typeof v === "string") v = cssToObj(v); + if ((k === "value" || k === "checked") && v === void 0) { + v = k === "checked" ? false : ""; + } + props[k] = v; + } + if (pseudoClasses.length) { + props.className = [props.className, ...pseudoClasses].filter(Boolean).join(" "); + } + return h(realTag, props, ...renderDeckKids(kids, kidKeys, vals, ctx)); + }; + } + + // src/logic.ts + var StreamableLogic = class { + constructor(props) { + __publicField(this, "props"); + __publicField(this, "state", {}); + /** Back-pointer to the wrapper component, installed after construction. */ + __publicField(this, "__host"); + this.props = props || {}; + } + setState(update, cb) { + this.__host && this.__host.__setLogicState(update, cb); + } + forceUpdate() { + this.__host && this.__host.forceUpdate(); + } + componentDidMount() { + } + componentDidUpdate(_prevProps) { + } + componentWillUnmount() { + } + /** The flat object the template renders against (merged over props). */ + renderVals() { + return {}; + } + }; + function evalDcLogic(src) { + //! nosemgrep: eval-and-function-constructor + const fn = new Function( + "DCLogic", + "StreamableLogic", + "React", + src + '\n;return (typeof Component!=="undefined"&&Component)||undefined;' + ); + return fn(StreamableLogic, StreamableLogic, getReact()); + } + + // src/component.ts + function shallowEqual(a, b) { + if (!b) return false; + const ak = Object.keys(a).filter((k) => k !== "children"); + const bk = Object.keys(b).filter((k) => k !== "children"); + if (ak.length !== bk.length) return false; + for (const k of ak) if (a[k] !== b[k]) return false; + return true; + } + function Placeholder({ + name, + hintSize, + streaming, + error + }) { + const [w, hgt] = (hintSize || "100%,60px").split(","); + return h( + "div", + { + className: "sc-placeholder" + (streaming ? " sc-streaming" : ""), + style: { width: w.trim(), height: hgt && hgt.trim() }, + title: name + }, + error ? h( + "div", + { className: "sc-placeholder-error" }, + (name ? name + ": " : "") + error + ) : null + ); + } + function hintToMin(hint) { + if (!hint) return void 0; + const [w, hgt] = hint.split(","); + return { minWidth: w.trim(), minHeight: hgt && hgt.trim() }; + } + function createComponentFactory(registry, ensureFetched) { + const React = getReact(); + const AncestorContext = React.createContext([]); + class StreamableComponent extends React.Component { + constructor(props) { + super(props); + __publicField(this, "__name"); + __publicField(this, "__sub"); + __publicField(this, "__needsDidMount", false); + /** Snapshot of the registry's streaming flags taken at render time — + * builders read it off the RenderCtx (this) to pick placeholder vs + * render-nothing for unresolved values. */ + __publicField(this, "__streamingNow", false); + __publicField(this, "__htmlStreamingNow", false); + /** When a construct throws, remember the (class, registry.ver, props) + * triple so render-time reconcile doesn't re-attempt it on every parent + * re-render. A registry bump (new class, template, external module + * resolving via bumpAll) changes `ver` and breaks the memo so an + * env-dependent constructor can self-heal. */ + __publicField(this, "__failedLogic", null); + __publicField(this, "__failedUserProps", null); + __publicField(this, "__failedVer", -1); + /** Per-instance constructor error — kept here (not on the registry entry) + * so one instance's successful construct can't hide a sibling's failure, + * and a construct can never wipe an eval error `updateJs` recorded on + * `r.logicError`. */ + __publicField(this, "__ctorError", null); + __publicField(this, "logic"); + this.__name = props.__name; + this.state = { __v: 0, __err: null }; + this.__sub = () => { + if (this.state.__err) this.setState({ __err: null }); + this.forceUpdate(); + }; + this.__makeLogic(registry.get(this.__name).Logic, null); + ensureFetched(this.__name); + } + /** Error-boundary hook: a render crash anywhere in this DC's subtree + * (its own template, an x-import'd component, a child DC without its + * own deeper boundary) lands here instead of unmounting the page. */ + static getDerivedStateFromError(e) { + return { __err: e instanceof Error && e.message ? e.message : String(e) }; + } + componentDidCatch(e, info) { + console.error( + "[dc-runtime] render error in <" + this.__name + ">:", + e, + info?.componentStack || "" + ); + } + /** Instantiate the logic class (or the no-op base) and adopt `prevState` + * over its initial state — used both at mount and on hot-swap. */ + __makeLogic(Logic, prevState) { + const L = Logic || StreamableLogic; + try { + this.logic = new L(this.__userProps()); + this.__failedLogic = null; + this.__failedUserProps = null; + this.__ctorError = null; + } catch (e) { + console.error(e); + this.__failedLogic = Logic; + this.__failedUserProps = this.__userProps(); + this.__failedVer = registry.get(this.__name).ver; + this.__ctorError = this.__name + ": " + (e instanceof Error && e.message ? e.message : String(e)); + this.logic = new StreamableLogic( + this.__userProps() + ); + } + this.logic.__host = this; + if (prevState) + this.logic.state = { ...this.logic.state || {}, ...prevState }; + } + /** The props the author's logic + template see — internal __-prefixed + * wiring stripped. */ + __userProps() { + const { __name, __hintSize, __tplId, __hostStyle, ...rest } = this.props; + return rest; + } + __setLogicState(update, cb) { + const prev = this.logic.state; + const patch = typeof update === "function" ? update(prev) : update; + this.logic.state = { ...prev, ...patch }; + this.setState((s) => ({ __v: s.__v + 1 }), cb); + } + /** Swap the logic instance when the registry's Logic class changed + * (streaming completion, hot reload). State carries over; didMount + * re-fires after the swap commits so refs exist. */ + __reconcileLogic() { + const r = registry.get(this.__name); + const Next = r.Logic; + const Cur = this.logic.constructor; + if (Next === Cur || !Next && Cur === StreamableLogic || Next === this.__failedLogic && r.ver === this.__failedVer && shallowEqual(this.__userProps(), this.__failedUserProps)) { + return; + } + if (!this.__needsDidMount) { + try { + this.logic.componentWillUnmount(); + } catch (e) { + console.error(e); + } + } + this.__makeLogic(Next, this.logic.state); + this.__needsDidMount = true; + } + componentDidMount() { + registry.get(this.__name).subs.add(this.__sub); + try { + this.logic.componentDidMount(); + } catch (e) { + console.error(e); + } + } + componentDidUpdate(prevProps) { + this.logic.props = this.__userProps(); + if (this.__needsDidMount) { + if (this.state.__err || !registry.get(this.__name).tpl) return; + this.__needsDidMount = false; + try { + this.logic.componentDidMount(); + } catch (e) { + console.error(e); + } + } else { + try { + this.logic.componentDidUpdate(prevProps); + } catch (e) { + console.error(e); + } + } + } + componentWillUnmount() { + registry.get(this.__name).subs.delete(this.__sub); + if (!this.__needsDidMount) { + try { + this.logic.componentWillUnmount(); + } catch (e) { + console.error(e); + } + } + } + render() { + const r = registry.get(this.__name); + const cls = "sc-host" + (r.htmlStreaming ? " sc-streaming-html" : "") + (r.jsStreaming ? " sc-streaming-js" : ""); + const hintStyle = r.htmlStreaming ? hintToMin(this.props.__hintSize) : void 0; + const hostStyle = this.props.__hostStyle || hintStyle ? { ...hintStyle || {}, ...this.props.__hostStyle || {} } : void 0; + const hostBase = { + className: cls, + style: hostStyle, + "data-sc-name": this.__name, + "data-dc-tpl": this.props.__tplId + }; + const chain = Array.isArray(this.context) ? this.context : []; + if (chain.includes(this.__name)) { + const cycle = [ + ...chain.slice(chain.indexOf(this.__name)), + this.__name + ].join(" \u2192 "); + return h( + "div", + { ...hostBase, className: cls + " sc-has-error" }, + h(Placeholder, { + name: this.__name, + hintSize: this.props.__hintSize, + error: "circular import: " + cycle + }) + ); + } + if (this.state.__err) { + return h( + "div", + { ...hostBase, className: cls + " sc-has-error" }, + h( + "div", + { className: "sc-logic-error", "data-omelette-chrome": "" }, + this.__name + ": " + this.state.__err + ), + h(Placeholder, { + name: this.__name, + hintSize: this.props.__hintSize, + error: this.state.__err + }) + ); + } + this.__reconcileLogic(); + if (!r.tpl) { + return h( + "div", + hostBase, + h(Placeholder, { name: this.__name, hintSize: this.props.__hintSize }) + ); + } + const userProps = this.__userProps(); + this.logic.props = userProps; + let vals = userProps; + let renderErr = r.logicError || this.__ctorError; + try { + vals = { ...userProps, ...this.logic.renderVals() || {} }; + } catch (e) { + console.error(e); + renderErr = this.__name + ".renderVals(): " + (e instanceof Error && e.message ? e.message : String(e)); + } + this.__streamingNow = !!(r.htmlStreaming || r.jsStreaming); + this.__htmlStreamingNow = !!r.htmlStreaming; + return h( + "div", + { ...hostBase, className: cls + (renderErr ? " sc-has-error" : "") }, + renderErr && h( + "div", + { className: "sc-logic-error", "data-omelette-chrome": "" }, + renderErr + ), + h( + AncestorContext.Provider, + { value: [...chain, this.__name] }, + r.tpl(vals, this) + ) + ); + } + } + __publicField(StreamableComponent, "contextType", AncestorContext); + const named = /* @__PURE__ */ new Map(); + function getDC(name) { + const hit = named.get(name); + if (hit) return hit; + function Dispatcher(p) { + const [, setTick] = React.useState(0); + React.useEffect(() => { + const sub = () => setTick((n) => n + 1); + registry.get(name).subs.add(sub); + return () => { + registry.get(name).subs.delete(sub); + }; + }, []); + ensureFetched(name); + return h(StreamableComponent, { ...p, __name: name }); + } + Dispatcher.displayName = name; + named.set(name, Dispatcher); + return Dispatcher; + } + return { + getDC, + StreamableComponent + }; + } + + // src/bundled.ts + function bundledBlob(url) { + const blobs = window.__resourceBlobs; + const b = blobs ? blobs[url.split("#")[0]] : void 0; + return b instanceof Blob ? b : null; + } + + // src/cdn.ts + var REACT_URL = "https://unpkg.com/react@18.3.1/umd/react.production.min.js"; + var REACT_SRI = "sha384-DGyLxAyjq0f9SPpVevD6IgztCFlnMF6oW/XQGmfe+IsZ8TqEiDrcHkMLKI6fiB/Z"; + var REACT_DOM_URL = "https://unpkg.com/react-dom@18.3.1/umd/react-dom.production.min.js"; + var REACT_DOM_SRI = "sha384-gTGxhz21lVGYNMcdJOyq01Edg0jhn/c22nsx0kyqP0TxaV5WVdsSH1fSDUf5YJj1"; + var BABEL_URL = "https://unpkg.com/@babel/standalone@7.29.0/babel.min.js"; + var BABEL_SRI = "sha384-m08KidiNqLdpJqLq95G/LEi8Qvjl/xUYll3QILypMoQ65QorJ9Lvtp2RXYGBFj1y"; + function cdnScriptFor(url, sri) { + const res = window.__resources; + const v = res ? res[url] : void 0; + return typeof v === "string" && v ? { src: v } : { src: url, integrity: sri }; + } + + // src/external.ts + var isCustomElementName = (n) => !n.includes(".") && n.includes("-"); + function isRenderableType(g) { + if (typeof g === "function") return !isElementClass(g); + return typeof g === "object" && g !== null && typeof g.$$typeof === "symbol"; + } + function resolveDottedPath(root, name) { + let cur = root; + for (const seg of name.split(".")) { + if (cur == null) return void 0; + cur = cur[seg]; + } + return cur; + } + var GLOBAL_POLL_INTERVAL_MS = 50; + var GLOBAL_POLL_TIMEOUT_MS = 3e4; + function createExternalModules(onResolved) { + const cache = /* @__PURE__ */ new Map(); + let babelLoading = null; + const reportedMissing = /* @__PURE__ */ new Map(); + const polling = /* @__PURE__ */ new Set(); + function ensureBabel() { + if (window.Babel) return Promise.resolve(); + if (babelLoading) return babelLoading; + const babel = cdnScriptFor(BABEL_URL, BABEL_SRI); + babelLoading = new Promise((res, rej) => { + const s = document.createElement("script"); + s.src = babel.src; + if (babel.integrity) { + s.integrity = babel.integrity; + s.crossOrigin = "anonymous"; + } + s.onload = () => res(); + s.onerror = rej; + document.head.appendChild(s); + }); + return babelLoading; + } + const pending = /* @__PURE__ */ new Map(); + function load(kind, url, after) { + const existing = pending.get(url); + if (existing) return existing; + cache.set(url, null); + console.info("[dc-runtime] x-import: loading", url, "(" + kind + ")"); + const ready = Promise.all([ + kind === "jsx" ? ensureBabel() : Promise.resolve(), + after ?? Promise.resolve() + ]); + const p = ready.then(() => { + const pre = bundledBlob(url); + if (pre) return pre.text(); + return fetch(url).then((r) => { + if (!r.ok) throw new Error("HTTP " + r.status); + return r.text(); + }); + }).then((src) => { + const code = kind === "jsx" ? window.Babel.transform(src, { + filename: url, + presets: ["react", "typescript"] + }).code : src; + const module = { exports: {} }; + const before = new Set(Object.keys(window)); + //! nosemgrep: eval-and-function-constructor + new Function("React", "module", "exports", "require", code)( + getReact(), + module, + module.exports, + () => ({}) + ); + const globals = {}; + for (const k of Object.keys(window)) { + if (!before.has(k) && typeof window[k] === "function") { + globals[k] = window[k]; + } + } + cache.set(url, { mod: module.exports, globals }); + console.info( + "[dc-runtime] x-import: loaded", + url, + "\u2014 exports:", + Object.keys(module.exports), + "window globals:", + Object.keys(globals) + ); + onResolved(); + }).catch((e) => { + cache.set(url, { + mod: {}, + globals: {}, + error: "failed to load: " + (e instanceof Error && e.message ? e.message : String(e)) + }); + console.error( + "[dc-runtime] x-import: FAILED to load", + url, + "(" + kind + ")", + e + ); + onResolved(); + }); + pending.set(url, p); + return p; + } + function resolve2(url, name) { + const entry = cache.get(url); + if (!entry) return null; + const { mod, globals } = entry; + const C = mod && mod[name] || globals && globals[name] || typeof window !== "undefined" && window[name] || mod && mod.default; + if (typeof C === "function") return C; + const key = url + "\0" + name; + if (!reportedMissing.has(key)) { + reportedMissing.set( + key, + entry.error || 'no export named "' + name + '" (has: ' + Object.keys(mod).join(", ") + ")" + ); + console.error( + "[dc-runtime] x-import: module", + url, + "loaded but has no component named", + JSON.stringify(name), + "\u2014 available exports:", + Object.keys(mod), + "window globals:", + Object.keys(globals), + ". The module must `module.exports = {" + name + "}` or set `window." + name + "`." + ); + } + return null; + } + function waitForGlobal(name) { + if (polling.has(name)) return; + polling.add(name); + const started = Date.now(); + const isCE = isCustomElementName(name); + const tick = () => { + const found = isCE ? customElements.get(name) : isRenderableType(resolveDottedPath(window, name)); + if (found) { + polling.delete(name); + onResolved(); + return; + } + if (Date.now() - started >= GLOBAL_POLL_TIMEOUT_MS) { + console.warn( + "[dc-runtime] x-import: global", + JSON.stringify(name), + "never appeared on window after " + GLOBAL_POLL_TIMEOUT_MS + "ms" + ); + return; + } + setTimeout(tick, GLOBAL_POLL_INTERVAL_MS); + }; + setTimeout(tick, GLOBAL_POLL_INTERVAL_MS); + } + function resolveGlobal(url, name) { + const isCE = isCustomElementName(name); + if (!url) { + if (isCE) { + if (customElements.get(name)) return name; + waitForGlobal(name); + return null; + } + const g2 = resolveDottedPath(window, name); + if (isRenderableType(g2)) return g2; + waitForGlobal(name); + return null; + } + const entry = cache.get(url); + if (!entry) return null; + if (isCE && customElements.get(name)) return name; + const g = entry.globals[name] ?? resolveDottedPath(window, name); + if (isRenderableType(g)) return g; + if (name.includes(".")) return null; + const key = url + "\0global\0" + name; + if (!reportedMissing.has(key)) { + reportedMissing.set(key, null); + if (isCE && !customElements.get(name)) { + console.warn( + "[dc-runtime] x-import:", + url, + "loaded but no custom element", + JSON.stringify(name), + "is registered and window." + name + " is not a function \u2014 rendering <" + name + "> as an unknown element." + ); + } + } + return name; + } + function getError(url, name) { + const entry = cache.get(url); + if (entry?.error) return entry.error; + return reportedMissing.get(url + "\0" + name) || null; + } + return { load, resolve: resolve2, resolveGlobal, getError }; + } + function isElementClass(g) { + try { + return typeof g === "function" && typeof HTMLElement !== "undefined" && g.prototype instanceof HTMLElement; + } catch { + return false; + } + } + + // src/atomics.ts + var ATOMIC_CSS = ( + // layout + ".fx{display:flex}.col{display:flex;flex-direction:column}.grid{display:grid}.ac{align-items:center}.jc{justify-content:center}.jb{justify-content:space-between}.f1{flex:1}.noshrink{flex-shrink:0}.wrap{flex-wrap:wrap}.fw5{font-weight:500}.fw6{font-weight:600}.fw7{font-weight:700}.fw8{font-weight:800}.fs11{font-size:11px}.fs12{font-size:12px}.fs13{font-size:13px}.fs14{font-size:14px}.fs15{font-size:15px}.fs16{font-size:16px}.fs20{font-size:20px}.fs22{font-size:22px}.upper{text-transform:uppercase}.tc{text-align:center}.nowrap{white-space:nowrap}.gap8{gap:8px}.gap10{gap:10px}.gap12{gap:12px}.gap16{gap:16px}.gap24{gap:24px}.m0{margin:0}.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mb8{margin-bottom:8px}.mb12{margin-bottom:12px}.mb16{margin-bottom:16px}.posrel{position:relative}.posabs{position:absolute}.round{border-radius:50%}.ohide{overflow:hidden}.bbox{box-sizing:border-box}.pointer{cursor:pointer}.w100{width:100%}.b0{border:none}" + ); + + // src/helmet.ts + var DESIGN_DOC_MODE_RE = /]*\bname\s*=\s*["']design_doc_mode["'][^>]*\b(?:content|value)\s*=\s*["'](\w+)["']/i; + var CANVAS_BG_LIGHT = "#f0eee6"; + var CANVAS_BG_DARK = "#2e2c26"; + function createHelmetManager(doc, isStreaming) { + const mounted = /* @__PURE__ */ new Set(); + const live = /* @__PURE__ */ new Map(); + let designDocMode = null; + let canvasStyleEl = null; + let appTheme = "light"; + try { + const ds = doc.documentElement.dataset.theme; + appTheme = ds === "dark" || ds === "light" ? ds : new URLSearchParams(doc.defaultView?.location.search ?? "").get( + "theme" + ) === "dark" ? "dark" : "light"; + } catch { + } + function applyCanvasBg() { + if (!canvasStyleEl) return; + const bg = appTheme === "dark" ? CANVAS_BG_DARK : CANVAS_BG_LIGHT; + canvasStyleEl.textContent = `html,body{background:${bg}}#dc-root>.sc-host{position:relative}`; + } + function postDesignMode(mode) { + if (window.parent === window) return; + try { + window.parent.postMessage({ type: "__dc_design_mode", mode }, "*"); + } catch { + } + } + function setDesignDocMode(mode) { + if (mode === designDocMode) return; + designDocMode = mode; + postDesignMode(mode); + if (mode === "canvas") { + doc.documentElement.setAttribute("data-dc-canvas", ""); + canvasStyleEl = doc.createElement("style"); + canvasStyleEl.setAttribute("data-dc-canvas", ""); + applyCanvasBg(); + doc.head.appendChild(canvasStyleEl); + } else { + doc.documentElement.removeAttribute("data-dc-canvas"); + canvasStyleEl?.remove(); + canvasStyleEl = null; + } + } + window.addEventListener("message", (e) => { + const type = e.data && e.data.type; + if (type === "__dc_theme") { + const t = e.data.theme; + if (t === "light" || t === "dark") { + appTheme = t; + applyCanvasBg(); + } + return; + } + if (!designDocMode || type !== "__dc_probe") return; + postDesignMode(designDocMode); + }); + function compile(node) { + const raw = [...node.children]; + const helmetClosed = node.nextSibling != null || node.parentNode?.nextSibling != null; + if (node.hasAttribute("data-dc-atomics") && !mounted.has("__dc-atomics")) { + mounted.add("__dc-atomics"); + const el = doc.createElement("style"); + el.id = "__dc-atomics"; + el.textContent = ATOMIC_CSS; + doc.head.appendChild(el); + } + return (_vals, ctx) => { + const name = ctx && ctx.__name || ""; + const streaming = !!(name && isStreaming(name)); + for (let i = 0; i < raw.length; i++) { + const child = raw[i]; + const tag = child.tagName; + const mayBePartial = streaming && !helmetClosed && i === raw.length - 1; + if (tag === "SCRIPT") { + if (mayBePartial) continue; + const key = "SCRIPT|" + (child.getAttribute("src") || child.textContent || ""); + if (mounted.has(key)) continue; + mounted.add(key); + const el = doc.createElement("script"); + for (const { name: an, value } of [...child.attributes]) + el.setAttribute(an, value); + if (child.textContent) el.textContent = child.textContent; + doc.head.appendChild(el); + } else if (tag === "LINK" || tag === "META") { + if (mayBePartial) continue; + const key = tag + "|" + (child.getAttribute("href") || child.getAttribute("src") || child.outerHTML); + if (mounted.has(key)) continue; + mounted.add(key); + if (tag === "LINK") { + const rel = (child.getAttribute("rel") || "").toLowerCase().split(/\s+/); + const href = (child.getAttribute("href") || "").trim(); + const res = window.__resources; + const pre = res && rel.includes("stylesheet") && !rel.includes("alternate") ? res[href] : void 0; + const blob = typeof pre === "string" && pre ? bundledBlob(pre) : null; + if (blob) { + const el = doc.createElement("style"); + if (child.hasAttribute("disabled")) { + el.setAttribute("media", "not all"); + } else if (child.getAttribute("media")) { + el.setAttribute("media", child.getAttribute("media")); + } + if (child.getAttribute("title")) + el.setAttribute("title", child.getAttribute("title")); + void blob.text().then((css) => { + el.textContent = css; + }); + doc.head.appendChild(el); + continue; + } + } + doc.head.appendChild(child.cloneNode(true)); + } else { + const key = name + "|" + i; + let el = live.get(key); + if (!el || el.tagName !== tag) { + if (el) el.remove(); + el = doc.createElement(tag.toLowerCase()); + live.set(key, el); + doc.head.appendChild(el); + } + for (const { name: an, value } of [...child.attributes]) { + if (el.getAttribute(an) !== value) el.setAttribute(an, value); + } + if (el.textContent !== child.textContent) + el.textContent = child.textContent; + } + } + return null; + }; + } + return { compile, setDesignDocMode }; + } + + // src/pseudo.ts + function scanUnquotedUrl(css, i) { + if (css[i] !== "u" && css[i] !== "U" || css.slice(i, i + 4).toLowerCase() !== "url(" || /[a-z0-9_-]/i.test(css[i - 1] ?? "")) { + return -1; + } + let j = i + 4; + while (j < css.length && /\s/.test(css[j])) j++; + if (css[j] === '"' || css[j] === "'") return -1; + while (j < css.length && css[j] !== ")") { + if (css[j] === "\\") j++; + j++; + } + return j < css.length ? j + 1 : css.length; + } + function stripComments(css) { + let out = ""; + let quote = ""; + for (let i = 0; i < css.length; i++) { + const c = css[i]; + if (quote) { + if (c === "\\") { + out += c + (css[i + 1] ?? ""); + i++; + continue; + } + if (c === quote) quote = ""; + out += c; + } else if (c === "'" || c === '"') { + quote = c; + out += c; + } else if (c === "/" && css[i + 1] === "*") { + const end = css.indexOf("*/", i + 2); + i = end === -1 ? css.length : end + 1; + out += " "; + } else { + const end = scanUnquotedUrl(css, i); + if (end === -1) out += c; + else { + out += css.slice(i, end); + i = end - 1; + } + } + } + return out; + } + function importantify(css) { + css = stripComments(css); + const decls = []; + let start = 0; + let depth = 0; + let quote = ""; + for (let i = 0; i < css.length; i++) { + const c = css[i]; + if (quote) { + if (c === "\\") i++; + else if (c === quote) quote = ""; + } else if (c === "'" || c === '"') quote = c; + else if (c === "(") depth++; + else if (c === ")") depth = Math.max(0, depth - 1); + else if (c === ";" && depth === 0) { + decls.push(css.slice(start, i)); + start = i + 1; + } else { + const end = scanUnquotedUrl(css, i); + if (end !== -1) i = end - 1; + } + } + decls.push(css.slice(start)); + return decls.map((d) => d.trim()).filter(Boolean).map((d) => /!\s*important$/i.test(d) ? d : d + " !important").join(";"); + } + function createPseudoSheet(doc) { + let el = null; + const cache = /* @__PURE__ */ new Map(); + let n = 0; + return (pseudo, css) => { + const k = pseudo + "|" + css; + const hit = cache.get(k); + if (hit) return hit; + if (!el) { + el = doc.createElement("style"); + doc.head.appendChild(el); + } + const cls = "scp" + (n++).toString(36); + const isPseudoElement = pseudo === "before" || pseudo === "after"; + const sel = isPseudoElement ? "." + cls + "::" + pseudo : "." + cls + ":" + pseudo; + el.sheet.insertRule( + sel + "{" + (isPseudoElement ? css : importantify(css)) + "}", + el.sheet.cssRules.length + ); + cache.set(k, cls); + return cls; + }; + } + + // src/registry.ts + function createRegistry() { + const entries = /* @__PURE__ */ Object.create(null); + function get(name) { + return entries[name] || (entries[name] = { + html: "", + tpl: null, + Logic: null, + jsStreaming: false, + htmlStreaming: false, + ver: 0, + subs: /* @__PURE__ */ new Set(), + fetched: false + }); + } + function bump(name) { + const r = get(name); + r.ver++; + for (const fn of r.subs) fn(); + } + return { + entries, + get, + bump, + bumpAll() { + for (const n in entries) bump(n); + } + }; + } + + // src/runtime.ts + var COMPONENT_DIR = "."; + function createRuntime(doc = document) { + const registry = createRegistry(); + const pseudoClass = createPseudoSheet(doc); + const helmet = createHelmetManager( + doc, + (name) => registry.get(name).htmlStreaming + ); + const external = createExternalModules(() => registry.bumpAll()); + const factory = createComponentFactory(registry, ensureFetched); + const host = { + component: (name) => factory.getDC(name), + placeholder: (props) => h(Placeholder, props), + helmet: (node) => helmet.compile(node), + loadExternal: (kind, url, after) => external.load(kind, url, after), + resolveExternal: (url, name) => external.resolve(url, name), + resolveExternalGlobal: (url, name) => external.resolveGlobal(url, name), + resolveExternalError: (url, name) => external.getError(url, name), + pseudoClass + }; + function ensureFetched(name) { + const r = registry.get(name); + if (r.fetched) return; + r.fetched = true; + const url = COMPONENT_DIR + "/" + encodeURIComponent(name) + ".dc.html"; + const res = window.__resources; + const pre = res ? res[url] : void 0; + const target = typeof pre === "string" && pre ? pre : url; + const blob = bundledBlob(target); + (blob ? blob.text() : fetch(target).then((res2) => { + if (!res2.ok) { + console.error( + '[dc-runtime] sibling fetch for "' + name + '" failed:', + url, + "returned", + res2.status, + "\u2014 the reference renders as an empty placeholder." + ); + return ""; + } + return res2.text(); + })).then((t) => { + if (!t) return; + const parsed = parseDcText(t); + if (!parsed) { + console.error( + '[dc-runtime] sibling fetch for "' + name + '":', + url, + "has no block \u2014 not a Design Component." + ); + return; + } + if (parsed.props) r.propsMeta = parsed.props; + if (parsed.preview) r.preview = parsed.preview; + if (parsed.template && !r.html) updateHtml(name, parsed.template); + if (parsed.js && !r.Logic) updateJs(name, parsed.js); + }).catch( + (e) => console.error( + '[dc-runtime] sibling fetch for "' + name + '" threw:', + url, + e + ) + ); + } + let rootName = null; + function updateHtml(name, html) { + const r = registry.get(name); + r.html = html; + if (name === rootName) { + const mode = DESIGN_DOC_MODE_RE.exec(html)?.[1] ?? null; + if (mode || !r.htmlStreaming) helmet.setDesignDocMode(mode); + } + try { + r.tpl = compileTemplate(html, host); + } catch (e) { + console.error("[dc-runtime] template compile FAILED for", name, e); + } + registry.bump(name); + } + function updateJs(name, src) { + const r = registry.get(name); + const seq = r.jsSeq = (r.jsSeq || 0) + 1; + try { + const Cls = evalDcLogic(src); + if (r.jsSeq !== seq) return; + if (typeof Cls !== "function") { + r.logicError = name + ".dc.html:
    +
    +
    +
    05 · A/B COMPARE
    +

    版本比较

    +
    fw_ab_powerstate_regression · run-20260725-0003(A) ⇄ run-20260726-0007+复跑(B) · 报告生成于任务结束后 42s
    +
    + + + +
    + +
    + +
    + 环境锁定 ENV LOCK + ✓ 主机 HOST-A01/L02 同批 + ✓ BIOS F26b + ✓ OS/驱动一致 + ✓ 工具链 nvme-cli 2.9.1 · fio 3.36 + ✓ 工作流 v3 同签名 + 两次测试可比 · 无环境漂移 +
    + +
    +
    + +
    + FW_3.2.1 + A · 基线 + run-20260725-0003 · WS-04 +
    +
    +
    98%
    循环通过率
    +
    100/100 完成 · 失败 2
    自动恢复 1 · 人工介入 0
    +
    +
    +
    +
    +
    +
    +
    通过 98 恢复后通过 1 INFRA 1
    +
    +
    + +
    + FW_3.3.0-rc2 + B · 候选 + run-20260726-0007 + 复跑 · WS-03 +
    +
    +
    89%
    循环通过率 ▼ 9pp
    +
    97/100 完成 · 失败 11
    自动恢复 4 · 人工介入 1
    +
    +
    +
    +
    +
    +
    +
    +
    通过 89 恢复后通过 4 DUT 失败 5 INFRA 2
    +
    +
    + +
    问题变化 · ISSUE DELTA
    +
    +
    + +
    新增 NEW2
    +
    +
    阻断 FS-0074 数据校验失败 ×2
    DUT_DATA_FAILURE
    +
    DUT FS-0091 S4 唤醒掉盘 ×3
    DUT_ENUMERATION_FAILURE
    +
    +
    +
    + +
    已修复 FIXED5
    +
    FS-0031 冷启动超时
    FS-0044 SMART 读取挂起
    FS-0052 Trim 后延迟尖峰
    FS-0058 唤醒后链路降速
    FS-0063 日志页 CRC
    +
    +
    + +
    仍存在 PERSIST3
    +
    FS-0067 fio 参数兼容(SCRIPT)
    FS-0071 高温限速告警
    FS-0088 主机蓝屏(INFRA)
    +
    +
    + +
    频率/severity 变化1
    +
    FS-0071 高温限速
    A:4 次 → B:9 次 ▲ 偶发转频发
    建议纳入观察名单并触发热相关单变量验证
    +
    +
    + +
    +
    + +
    性能 · 温度 · 恢复
    + + + + + + + + + + + + + + +
    指标FW_3.2.1 AFW_3.3.0-rc2 BΔ判定
    顺序读 MB/s7,0127,048+0.5%PASS
    顺序写 MB/s6,3886,341-0.7%PASS
    4k 随机读 IOPS1,148k1,131k-1.5%PASS
    4k 随机写 IOPS238k218k-8.2%超阈值 -5%
    P99 写延迟 µs377412+9.3%观察
    S4 唤醒枚举耗时 s1.83.4 / 超时×3+89%关联 FS-0091
    SMART 温度峰值 °C44.146.2+2.1PASS
    自动恢复次数14×4观察
    +
    阈值来自已审核工作流 v3 · 全部指标可回链原始 metrics.json 与 fio 输出
    +
    + +
    +
    + +
    下一步建议 · NEXT
    +
    +
    最短复现
    fw_ab 复现包:S4 循环 ×20 · 固定 WS-03 + SAMPLE-002 · 预计 3.5h
    +
    单变量验证
    固定固件 B,更换主机 HOST-L01(排除 BIOS F26b 电源时序)
    +
    建议责任团队
    固件电源管理组(FS-0091/0074) · 测试平台组(FS-0067 脚本兼容)
    +
    +
    +
    + +
    缺陷草稿 · ISSUE DRAFT
    +
    +
    issue-draft.md · 待审阅
    +
    [FW_3.3.0-rc2] S4 唤醒后 PCIe 链路训练失败导致掉盘
    +
    复现率 3/100 · 附 Evidence Bundle ×3 · 最短复现包已生成 · 引用 kernel.log / power-actions
    +
    +
    +
    +
    +
    +