Skip to content

WP31:本地构建产物放映入口与边界 ​

状态:已完成(2026-10-18)。阶段:M3。主责:跨模块验证 / 运维。 上层工作项:R06(入口边界);详见模块计划。本包是该工作项的实施拆分,不是另一份配置契约。

前置与输入 ​

前置完成:WP30。 字段与行为以统一契约为准;所有依赖编号见执行清单。

修改范围与交付 ​

  • 修改范围:使用普通用户鉴权的现有下载入口取得真实、不可变的构建产物 ZIP,本地解压并按产物 base_url 启动静态文件服务进行放映;记录构建来源、入口文件、路由与资源可达性、浏览器参数和可重复步骤。远端构建访问入口、构建访问票据/按构建 Cookie、代理和续签不进入本包,交由后续独立代理服务另行设计、评审和验收。
  • 交付物:可重复的本地构建产物放映步骤、支持边界,以及 WP32/WP33 使用的固定产物与启动方式。
  • 提交边界:不新增或修改构建访问接口、票据、Cookie、代理、网关或部署入口;不恢复 public fallback;不以创作预览 artifact 或 Runtime 开发服务器替代真实构建产物;不把本地静态服务写成产品能力。

完成标准 ​

  • [x] 实现及评审覆盖上述修改范围,未超出提交边界。
  • [x] 行为验收:产物来自真实构建任务且字节可校验;本地静态服务按产物 base 提供入口,路由、资源、字体和放映配置正常;重启本地服务和浏览器后可按步骤复现;匿名入口、票据和远端代理不参与验收。
  • [x] 验证范围:真实构建 → 鉴权下载 ZIP → 解压 → 本地静态服务 → 桌面浏览器放映一条链,核对 ZIP SHA-256 与构建记录。
  • [x] 关联验收:M3 专项:本地构建产物入口;见联调与验收计划。
  • [x] 记录代码版本、实际测试命令/结果、未运行项及原因,产物保存到任务专属临时目录。
  • [x] 回填本卡状态与证据;阶段能力是否开放由对应阶段出口包决定,单包完成不等于整阶段交付。

建议提交标题:WP31:本地构建产物放映入口与边界。通常按一个可评审 PR 实施;若实际改动仍过大,先按输入/输出再拆子包,保留父编号和依赖。

测试环境与命令选择遵循 dev-start-test,不因执行本卡重复启动服务或重置开发数据。

实施记录(2026-10-18) ​

  • 真实构建与下载:专属证据账号通过普通登录会话创建构建任务(base_url="./"),轮询到 succeeded 后用同一会话下载 ZIP;ZIP 字节 SHA-256 与构建记录一致。最终产物为构建任务 13:index.html 在压缩包根目录,共 22 个文件,含 assets/ 下哈希化脚本/样式/字体与 __build_assets/ 视频;SHA-256 73580772e85a0f75aa3f783f9ae2b4c7b0c5894d6fd2285ead8d6eadb12807de,大小 15,448,159 字节。未使用预览 artifact、Runtime 开发服务器或 public fallback。
  • 本地入口:.tmp/wp31/serve.mjs 以产物目录为根、base_url="./" 绑定 127.0.0.1:7415,提供 MIME、Range、健康检查与 SPA 回退;hash 路由 #/intro?runtimeMode=normal 直接进入放映。重启静态服务与浏览器后按同一命令可复现。
  • 浏览器冒烟(无头 Chromium,1280×720):开场进入放映 166ms;intro→content 5017ms、content→media 5013ms、media→closing 4143ms、closing→intro 4996ms;17 个响应中 16 个资源全部 200,字体与视频可达,无失败请求与控制台错误。无头环境 Screen Wake Lock 被拒绝(wakeLock=denied),计时放映不受影响;有头浏览器持有屏幕锁的证据见 WP32。
  • 产物在 WP32 媒体重试修复后重新构建,WP31 冒烟与 WP32/WP33 均使用构建任务 13 的同一 SHA;证据脚本与截图保存在 .tmp/wp31/,不提交构建产物。
  • 代码版本:本卡不修改产品代码;放映 Runtime 的恢复修复提交为 20e7f0e(WP32)。实际命令:uv run python .tmp/wp31/setup.py、uv run python .tmp/wp31/rebuild.py、node .tmp/wp31/browser.mjs。
  • 未运行:远端构建访问入口、构建访问票据/Cookie、代理与续签;匿名入口和远端分发不作为本卡证据。证据账号、工作空间、项目、构建产物对象与 .tmp 凭证已清理(.tmp/wp31/cleanup.json,DB 剩余 0)。

全屏放映统一模型后的入口补充(2026-10-18) ​

  • 直接打开构建产物链接现在只进入预览,不再按 auto_start 在窗口内自动推进;用户需在 Runtime 窗口点击“进入放映”请求全屏后开始本次放映。
  • 本卡已记录的真实构建、ZIP 校验、静态服务与浏览器冒烟仍然有效;其自动翻页证据产生于统一模型之前的窗口化入口,不能直接作为全屏无人值守证据。
  • 无人值守/kiosk 入口需另行设计并在全屏模式下重新记录长稳;本卡不开放该能力。