51 lines
2.3 KiB
Markdown
51 lines
2.3 KiB
Markdown
## 修复方案
|
||
|
||
### 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.js`
|
||
- `assets/js/runtime/main.min.js`
|
||
- `tests/widget-system/runtime-action-hard-cut-contract.test.cjs`
|
||
|
||
现有其他 CSS、JavaScript 状态项和 `.zcode/plans` 文件不进入提交。验证通过后推送该分支到远端。 |