Files
hesu-JT/docs/superpowers/plans/2026-08-15-acceptance-log.md
T
2026-08-27 11:54:26 +08:00

6.8 KiB
Raw Blame History

HESU WordPress 主题 — 全量验收日志(Task 13)

日期:2026-08-17 环境:WP 7.0.4 + SQLite + CF7 6.1.6(http://127.0.0.1:8090);静态对照站 http://127.0.0.1:8080 方法:Playwright 浏览器实测 + wp-cli + curl;截图/控制台记录在 .playwright-mcp/

结论:20/20 项通过(含 8 项发现即修复),无结构性阻塞。修复清单见文末。

A. 前端对照(A1-A12)

# 项目 结果 证据
A1 首页 通过 stats data-count 20/15,000/72/30 动画生效;bento 4 卡+banner;news 4 卡;reveal 12 处
A1i 轮播 通过 network 12 卡/8 克隆、真实拖拽 -1774→-2321px;partner 自动轮播 2→0 + 3 圆点可点
A2 建材 通过 is-bp 浅色底;5 张 SVG 产品卡;#products 锚点 + view-more
A3 汽车出口 通过 4 个 bp-cap SVG 能力卡;ae-pulse 2.6s 标注 5 个;hover 静态站同样无 — 记录不改
A4 售后改装 通过 与静态结构一致(同 A3 组件)
A5 物流 通过 bp-stat 计数 1250/12/99/80(iconKey 修复后图标齐全)
A6 翻屏 通过 wheel 每屏 889px;nav data-i 1-4 active 跟随;点击直达屏 4(3556px)
A7 关于 通过 au-1 pin intro 淡出 1→0;au-3 zoom 1→2.2 + reveal 0→1;au-gps 3 卡自动播+圆点
A8 时间线 通过 5 段/3 节点,与静态一致(静态即纵向折叠式)
A9 联系 通过 7 个可见 label;空提交 6 字段 invalid 红 #e5484d;OSM iframe 1265x460(src 修复后与静态逐字一致);select chevron + 按钮箭头桥接
A10 新闻 通过 tab → /news-cat/delivery-cases/ 高亮+过滤;分页 1/2/3/› → /news/page/2/;single 面包屑 Home/News;最新一篇无 next(正确)
A11 Header/Footer 通过 Business mega 8 卡、About mega 4 卡;移动抽屉 14 链接;footer 5 列+社交+年份;contact 页 footer-contact 行(修复后)
A12 菜单高亮 通过 bm/after-sales → Business 高亮;/news/ 仅 News(双高亮修复后)

JS 隐藏内容检查:10 路由均服务端渲染完整内容(禁 JS 时不缺内容)。

B. 后台流程(B13-B17)

# 项目 结果 证据
B13 新闻流程 通过 新建 post 802 → 首页网格出现 + exhibition-info 归档 → 删除 → 两处消失
B14 Customizer 通过 tiktok 改 → footer href 生效;新闻 hero 改 → aboutus2 图;copyright 改 → footer 文案;全部还原
B15 CF7 通过(含 2 修复) 停用 → 前端占位提示(修复后);激活 → 表单回归;删除表单 152 → 再激活 → 自动重建 803 "HESU Inquiry" + formId 写回 + 7 label 齐全
B16 编辑角色锁定 通过(含 1 修复) 见下详述
B17 meta description 通过(补丁) 9 页 + 新闻归档均有 <meta name="description">(wp_head 钩子;页面用 excerpt)

B16 详述(编辑角色锁定)

  • 建号 acceptor_editor(editor 角色)登录,打开建材页块编辑器:
    • 无插入器:editor-document-tools__inserter-toggle display:none(lock.js CSS + allowed_block_types_all 收窄 hesu/* 双保险);强制点击无反应。
    • page-shell/子块选项菜单无 Delete / Move to Trash / Duplicate:仅 Rename/Hide。
    • 发现:WP 7.0.4 对 editor 开放 Lock/Unlock 模态框,实测可解除实例锁后 Delete(templateLock:'all' 不回护已解锁子块)→ 已修复:block_editor_settings_all 强制 canLockBlocks=false(非管理员),工具栏变为禁用 "Locked" 指示器,Unlock 入口消失。
    • 文字可改:Business Introduction → +X → 保存 → DB + 前端生效 → 还原 → DB 干净。
    • 测毕删号:wp user delete acceptor_editor --reassign=1,仅剩 admin。

C. 质量项(C18-C20)

# 项目 结果 证据
C18 php -l 通过 55 个 PHP 文件递归,0 语法错误
C19 控制台 通过(含 1 修复) 10 路由 0 error/0 warning(contact 的 OSM iframe LngLat 报错系 & 损坏,修复后归零)
C20 死链/404/字体 通过 28 个内链 curl 全 200;锚点 #business/#gp-2..5/#products/#inquiry/#top 全存在;7 个 woff2 全 200;垃圾 URL 404

修复清单(本轮验收产出)

  1. meta description(B17):inc/setup.php 加 hesu_meta_description()(wp_head 优先级 5;singular 用 excerpt、fallback 首段 30 词;新闻归档/分类固定文案);inc/seed.php 9 页补 excerpt。
  2. 首页 Learn More 链接:post 704 内 ?page_id=712 → /contact/(DB 手术)。
  3. 物流页 stat 图标缺失:hesu/stat 增加 iconKey 白名单内联 SVG(block.json/render.php/index.js + helpers.js 提供 RawHTML + seed/markup.php 传 iconKey),重生成 708。
  4. 联系页 footer-contact 行:inc/walker-mega.php contact 页 intro 列补 Email/Tel(对齐静态 contact.html 178)。
  5. /news/ 双高亮:walker-mega 祖先高亮跳过与顶级项同 URL 的子项。
  6. CF7 停用裸 shortcode(spec §12.8 违规):blocks/contact-form/render.php 增加 $cf7_active 插件在位判断,缺插件时输出可见引导占位;css/contact.css 补 select chevron + 提交按钮箭头。
  7. 编辑角色锁绕过:inc/blocks.php 加 block_editor_settings_all → canLockBlocks=false(非管理员)。
  8. 种子写入剥转义(本轮最重):wp_insert_post/wp_update_post 按已转义数据处理,直接传序列化区块会把 & 的 & 转义剥成 u0026(实锤:联系页 OSM iframe src 损坏 → Leaflet "Invalid LngLat" 控制台报错、静态站同 URL 无错)。修复:inc/seed.php 三处写入(页面内容二次填充、新闻插入、formId 写回)统一 wp_slash() + 前后 kses_remove_filters()/kses_init_filters();DB 中 712 已修复,坏 revision 804/809 已删。

已接受的偏差(静态 vs WP,非缺陷)

  • auto-export bp-viewmore 用 div、静态用 section(样式无差);新闻 tab 为 All+4 分类(WP 数据驱动,静态是 3 个 JS 过滤 tab);footer 当前页高亮(静态无);contact 提交在无邮件环境走 failed 状态(静态语义本就如此,sent 绿色态已用 class 切换验证)。
  • Footer 的 Privacy/Terms/Sitemap 保持静态站的 #top 占位链接(spec §6 曾设想 Customizer 化;与静态站 1:1 一致优先,未实现——如需后续补,加 3 个 URL 设置即可)。
  • contact-map 的 iframe URL 可配置(管理员可嵌任意 https 页面);如需收紧可加 OpenStreetMap 域白名单。

遗留项

  • 无阻塞遗留。备注:编辑角色对文章内容的原始 REST 写入权限属 WordPress 角色模型本身,主题锁定目标(防误操作)已达成。