2.3 KiB
2.3 KiB
修复方案
1. 删除废弃的静态 action 入口
修改 assets/js/runtime/main.js:
- 完整删除全局
_win.bd.on('click', '[data-action]', ...)委托。 - 完整删除仅被该委托调用的
action_ajax()函数。 - 保留紧随其后的独立
[ajax-action]处理器以及其他合法的data-action属性读取。 - 不创建
assets/action/action.php,不增加兼容代理,不把旧协议映射到新接口。
仓库内文章互动、评论点赞、关注等已有 WordPress AJAX/REST 实现,因此这是单一路径硬切换。
2. 精确同步运行时压缩产物
修改 assets/js/runtime/main.min.js:
- 从唯一
_win.bd.on("click","[data-action]"起点,精确删除到下一个_win.bd.on("click","[ajax-action]"起点之前的旧压缩块。 - 不执行全量前端构建,以免覆盖或重新格式化其他已有运行时产物。
- 删除后确认
[ajax-action]处理器仍存在,action_ajax和/action/action.php均消失。
当前该文件虽然出现在状态列表中,但内容与 HEAD 完全一致,因此可安全形成仅针对旧块的内容差异。
3. 增加硬切换契约测试
新增 tests/widget-system/runtime-action-hard-cut-contract.test.cjs:
- 同时检查
main.js与main.min.js。 - 断言旧全局
[data-action]委托不存在。 - 断言
action_ajax不存在。 - 断言
/action/action.php不存在。 - 断言独立
[ajax-action]处理器仍保留且只有一份。 - 不禁止整个仓库使用
data-action,避免误伤下载、弹窗和其他新业务属性。
4. 验证
- 运行新增的 runtime action 契约测试。
- 运行全部
tests/widget-system/*.test.cjs。 - 使用
rg检查源码和压缩产物中不存在action/action.php、action_ajax和旧委托。 - 执行
git diff --check,确认没有格式问题。 - 不做真实视觉验收,不恢复静态 PHP 直连入口。
5. 提交
从当前 origin/main 创建 worktree/fix-legacy-action-404 分支,只提交:
assets/js/runtime/main.jsassets/js/runtime/main.min.jstests/widget-system/runtime-action-hard-cut-contract.test.cjs
现有其他 CSS、JavaScript 状态项和 .zcode/plans 文件不进入提交。验证通过后推送该分支到远端。