feat(embed,ui04): E07 acceptance — matrix completion, hostile-CSS hardening, measurements and record closure
- E07 e2e (7 cases): 4-viewport fixed size, narrow shrink + dual-slot 12px stack, single/static + empty state + two-photo loop copies, broken-thumb drop, reducedMotion stop with manual arrows, forged postMessage rejected, hostile CSS (!important box-sizing/border) with inline-important countermeasures + duplicate script dedup - loader v2: geometry-critical properties upgraded to inline !important (beats host stylesheet !important) - pre-existing fixes: likes.spec view-count assertion vs concurrent session's AlbumHeader unicode icons (toContainText); embed-v2 host port moved to 3998 (3999 collides with embed-crossorigin under parallel full runs); prettier formatting of two concurrent-session files (formatting-only) - evidence: matrix EMB-A01..A16 closed in acceptance record (mechanism-level items honestly marked), measurements (loader v2 9885B/gzip 3959B, first-load 1 GET + 1 WS, DOM<=16), refreshed screenshots/recordings, master plan UI-04 note - regression: root lint/typecheck/test 12 packages green; embed suites 43/43; admin embed-slots 5/5; journey pre-existing env failure reproduced at clean HEAD (registered) Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -66,7 +66,7 @@
|
||||
- [x] E04 操作和生命周期(登记见下)
|
||||
- [x] E05 实时气泡(登记见下;含效果示例 embed-preview-2026-09-22.html 对齐)
|
||||
- [x] E06 管理预览与接入(登记见下)
|
||||
- [ ] E07 验收(EMB-A01…A16 逐项见第 5 节)
|
||||
- [x] E07 验收(登记见下;矩阵见第 5 节)
|
||||
|
||||
### E02 登记(2026-09-22)
|
||||
|
||||
@@ -179,33 +179,76 @@
|
||||
- E06 出口确认:后台保存与第三方跨源实际效果一致(admin e2e ov settings
|
||||
投影 + viewer e2e 真实宿主效果两条链均有证据)。
|
||||
|
||||
### E07 登记(2026-09-22)
|
||||
|
||||
- 矩阵补齐 e2e(embed-v2.spec.ts E07 块 7 用例全过):A01 四视口恒 195×280;
|
||||
A02 狭窄收缩不溢出 + 双槽纵排 12px 间距不重叠;A03 单图静态(transform 恒定
|
||||
+ 单实例)/空相册空态收起可用/两图矮片循环副本(DOM>2);A04 破图 onError
|
||||
受控移出窗口且其余照片继续滚动;A07 reducedMotion 停自动滚动 + 方向键手动
|
||||
可用;A11 宿主伪造 expand/collapse 消息无效;A12 敌意全局 CSS
|
||||
(box-sizing/border !important)下尺寸保持——loader v2 几何关键属性升级为
|
||||
inline !important 反制 + 同槽重复 script 标签去重。
|
||||
- 全量回归:根级 lint/typecheck/test 12 包全绿(api 56、viewer 244、admin 83、
|
||||
loader 36、worker 14、contracts 29 等);viewer build 产物正常;三套嵌入
|
||||
e2e 合跑 43/43(v2 23 + v1 embed 14 + crossorigin 6);admin embed-slots 5/5。
|
||||
- 性能记录(§12,不编百分比):loader v2 9,885B / gzip 3,959B(v1 对照
|
||||
9,462B / 3,733B);嵌入页首屏数据请求 = 1×GET public embed-slots(后续 30s
|
||||
ETag 轮询,304 零负载)+ reactions 开启时 1×WS 只读连接(E05 网络断言:
|
||||
零点赞/浏览提交);组件仅渲染可见窗口 + 缓冲实例(≤16,20s 断言)。
|
||||
- 静态对照:actual/desktop/e02-static-desktop.png、actual/mobile/
|
||||
e02-static-mobile.png(全链终态重采)vs 目标图(设计对照结论见 E02 节);
|
||||
动态证据:recordings/e03-scroll-32s.webm(≥4 循环边界)、
|
||||
recordings/e05-hearts-16s.webm(6 次真实点赞节奏)。
|
||||
- 存量失败登记(非 UI-04 引入,干净 HEAD 可复现):journey.spec「processPhoto
|
||||
已发布」与并行会话/残留 worker 的队列消费竞争(本任务多次清理游离 worker;
|
||||
记忆库亦有登记);likes.spec view-count 精确断言与并行会话 AlbumHeader
|
||||
Unicode 图标(◉)改动冲突——本任务以 toContainText 最小修复。两处均已
|
||||
在本轮全量中分别验证:journey 失败与工作树无关(stash 后 HEAD 复现),
|
||||
likes 修复后通过。
|
||||
- 并行会话混入登记:E06 admin 侧中间态被并行会话 eebf3b3 卷入(其提交信息
|
||||
为 users list);本任务 3bba8d1 携带最终态补齐。本轮 prettier 顺带格式化
|
||||
并行会话遗留的两文件(useAdminUserPages.ts / users/index.vue,纯格式)。
|
||||
|
||||
## 4 测量与证据索引
|
||||
|
||||
(E02+ 起登记:尺寸实测、位移曲线、DOM/连接上限统计、录屏清单。)
|
||||
- 尺寸实测:E02 块断言(195×280/半径 12/边 1px/border-box/首图 193×135/缝 3px/
|
||||
收起 44/44+24 可视)+ E07 多视口;基线对照见第 1 节 v1 表。
|
||||
- 位移:16px/s 实测 2s=32px(30-34 断言);边界连续性 12s 采样最大误差 <2.5px。
|
||||
- 资源上限:DOM 实例 20s 恒 ≤16;数据队列 ≤30;粒子同屏 ≤8、发射 ≥250ms。
|
||||
- 产物体积:loader v2 9,885B/gzip 3,959B(v1 9,462B/3,733B);viewer 构建
|
||||
JS 241KB/gzip 84KB(含观众页全量,非嵌入页独立分包)。
|
||||
- 首屏请求:1×GET embed-slots(30s ETag 轮询)+ 1×WS(reactions 开);
|
||||
E15 零提交断言。
|
||||
- 截图/录屏:actual/desktop|mobile/e02-*.png;recordings/e03-scroll-32s.webm、
|
||||
e05-hearts-16s.webm。
|
||||
|
||||
## 5 验收矩阵 EMB-A01…A16
|
||||
|
||||
| 编号 | 场景 | 状态 | 证据 |
|
||||
|---|---|---|---|
|
||||
| EMB-A01 | 多视口固定尺寸 195×280 | 待验 | |
|
||||
| EMB-A02 | 狭窄/横屏/安全区/多实例不越界 | 待验 | |
|
||||
| EMB-A03 | 横/竖/全景/单图/0图/2图短循环 | 待验 | |
|
||||
| EMB-A04 | decode 慢/破图/签名到期/304/失败恢复 | 待验 | |
|
||||
| EMB-A05 | 循环锚定 + DOM 上限 | 待验 | |
|
||||
| EMB-A06 | 隐藏/删除/关闭/换绑/停用清理 | 待验 | |
|
||||
| EMB-A07 | 点击/拖动/悬停/键盘/reducedMotion | 待验 | |
|
||||
| EMB-A08 | 收起展开/记忆/默认收起/后台配置更新 | 待验 | |
|
||||
| EMB-A09 | 双上下文真实点赞/重复 burst/错相册/不可见归属 | 待验 | |
|
||||
| EMB-A10 | WS 断线不假造气泡 | 待验 | |
|
||||
| EMB-A11 | 真跨源 + 消息伪造拒绝 | 待验 | |
|
||||
| EMB-A12 | 宿主全局 CSS/重复 script/SPA 移除 | 待验 | |
|
||||
| EMB-A13 | 后台预览隔离 + v2 接入代码 | 待验 | |
|
||||
| EMB-A14 | v1 保留 + 普通 viewer 无回归 | 待验 | |
|
||||
| EMB-A15 | 不上报浏览/不提交点赞 | 待验 | |
|
||||
| EMB-A16 | 证据完整、未测项如实标注 | 本记录即载体 | |
|
||||
| EMB-A01 | 多视口固定尺寸 195×280 | 通过 | E01 门(桌面/手机)+ E07 四视口(320/430/768/1920) |
|
||||
| EMB-A02 | 狭窄/横屏/安全区/多实例不越界 | 通过(横屏=代码路径) | E07 狭窄收缩+双槽 12px;safe-area=env() calc(loader 源码);orientationchange→onViewportChange 重排 |
|
||||
| EMB-A03 | 横/竖/全景/单图/0图/2图短循环 | 通过 | 混合比例 fixtures(E02/E03)+ E07 单图静态/空态/两图副本 |
|
||||
| EMB-A04 | decode 慢/破图/签名到期/304/失败恢复 | 通过(分级) | 破图=E07 onError 移出;decode 闸=启动门(实现+E02 静置);304/签名=feed 既有链(v1 e2e 14 + 单测)复用 |
|
||||
| EMB-A05 | 循环锚定 + DOM 上限 | 通过 | E03 边界连续 <2.5px + 20s DOM≤16;锚定单测(幸存保位/新图入尾/移除回退) |
|
||||
| EMB-A06 | 隐藏/删除/关闭/换绑/停用清理 | 通过 | 停用→destroy E04 e2e;照片隐藏/换绑=feed merge/anchorRebuild 单测 + v1 A22 e2e(同管线) |
|
||||
| EMB-A07 | 点击/拖动/悬停/键盘/reducedMotion | 通过 | E04 五用例(弹窗深链命中/拖动取消/Space/Escape)+ E07 reducedMotion |
|
||||
| EMB-A08 | 收起展开/记忆/默认收起/后台配置更新 | 通过(记忆=同机制复用) | E01 手机默认收起+展开同尺寸、E04 Escape/把手;收起记忆=sessionStorage 同 v1 键(v1 e2e 覆盖机制);config 动态=loader params 单测 + v1 同管线 e2e |
|
||||
| EMB-A09 | 双上下文真实点赞/重复 burst/错相册/不可见归属 | 通过 | E05 e2e 真实点赞归属;去重/错相册(房间隔离)/不可见缓存=单测 |
|
||||
| EMB-A10 | WS 断线不假造气泡 | 通过(设计+单测级) | 无伪造路径(useEmbedReactions 仅真实帧驱动 + ingestForTest 显式测试口);断线=照片轮询独立(实现结构);真断线演练随 P5 T8 |
|
||||
| EMB-A11 | 真跨源 + 消息伪造拒绝 | 通过 | 全部用例宿主 3998/3999 真 http 跨源;E07 伪造 expand/collapse 无效 |
|
||||
| EMB-A12 | 宿主全局 CSS/重复 script/SPA 移除 | 通过(SPA 移除=v1 同机制) | E07 敌意 CSS+重复 script;v1 crossorigin e2e 同模式机制 |
|
||||
| EMB-A13 | 后台预览隔离 + v2 接入代码 | 通过 | admin e2e UI-04 用例(预览零请求设计 + iframe 内真实组件 + 模拟出心形 + v2 代码卡) |
|
||||
| EMB-A14 | v1 保留 + 普通 viewer 无回归 | 通过 | v1 embed 14 + crossorigin 6 全绿(settings 兼容断言在内);viewer 244 单测;全量套件除存量 journey(见 E07 登记) |
|
||||
| EMB-A15 | 不上报浏览/不提交点赞 | 通过 | E05 网络断言(交互全通道触发后 0 提交) |
|
||||
| EMB-A16 | 证据完整、未测项如实标注 | 通过 | 本记录 + measurements/截图/录屏索引;未测项均在对应行如实标注(A02 横屏/A04 304/A08 记忆/A10 断线/A12 SPA 为机制级证据,非实测) |
|
||||
|
||||
## 6 未完成项与外部资源
|
||||
|
||||
- 真实 CDN/发布不在本轮(方案 §1.2);本轮只产出构建产物与文档。
|
||||
- E02 起静态样板需真实摄影素材(非 sharp 色块)——种子照片拟下载固定摄影样本入 MinIO;
|
||||
网络不可用时降级为记录待验,不标记通过。
|
||||
- 真实 CDN/生产发布不在本轮(方案 §1.2):本轮只产出构建产物与接入文档;
|
||||
测试服务器部署(含 v2 loader 产物)按既定「测试服务器优先」流程另行执行。
|
||||
- 机制级(非实测)项汇总(EMB-A02 横屏/A04 304 链/A08 收起记忆/A10 真断线/
|
||||
A12 SPA 移除):实现与 v1 同机制,v1/单测有证据;真机/真断线演练随 P5。
|
||||
- 存量失败(非本任务):journey.spec 队列消费竞争(并行会话/游离 worker,
|
||||
干净 HEAD 复现);已按记忆库流程多次清理游离 worker。
|
||||
- 真机验证(G2)与全球访问(A28)不属于嵌入组件本轮范围。
|
||||
|
||||
Reference in New Issue
Block a user