From d8e7a7190af031942dd0d2f19ee03575c68d613e Mon Sep 17 00:00:00 2001 From: wpdev Date: Fri, 31 Jul 2026 08:30:52 +0800 Subject: [PATCH] =?UTF-8?q?docs(plan):=20=E8=A8=98=E9=8C=84=20dev30=20?= =?UTF-8?q?=E5=AF=A6=E6=A9=9F=E9=A9=97=E8=AD=89=E7=B5=90=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A 33 OK + 15 WC MISSING → B 49 OK / All checks passed。 alias / CLI 雙命名空間 / anti-EAV 寫入 / audit 欄位 / REST allowlist 逐項實測通過;brandcards 的 doctor_callback 在新 ABI 下仍正常。 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01TbG1keQQ7XBa7qMQY16KCY --- PLAN.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/PLAN.md b/PLAN.md index 9c91116..f697a8d 100644 --- a/PLAN.md +++ b/PLAN.md @@ -210,7 +210,28 @@ | 5 | AddOn 同步 F1–F5(Standard_Post_Interceptor、HP detector v3.4.5、WC) | ✅ 2026-07-31 | | 6 | 功能與診斷 PR-G(crypto 健檢、doctor_callback ABI、15 個 usermeta 欄位…) | ✅ 2026-07-31(**Settings 分區 AJAX 未做**,見下) | | 7 | 全域清理與 CI(strict_types、phpcs.xml、phpstan + baseline、gitea workflows) | 🔶 部分(strict_types / PHPCS / PHPStan ✅;**CI workflow、ci-package.sh、39 個測試檔補齊、文件移植未做**) | -| 退休 | 兩站台切到 B、移除 A、B 升 1.0.0 | ⬜ | +| 退休 | 兩站台切到 B、移除 A、B 升 1.0.0 | 🔶 dev30 已切換並驗證通過;dev 未切、A 未移除、版本未升 | + +### dev30 實機驗證結果(2026-07-31) + +環境:`2meet-brandcards` 1.8.3 / `2meet-hub-core` 1.16.0 / `2meet-spoke-sso` 1.15.0 同時啟用;HivePress / WooCommerce 未安裝,故只啟用核心 + hub-addon + spoke-addon。 + +| 項目 | A v3.0.0(切換前) | B v0.1.0(切換後) | +|---|---|---| +| `doctor` | 33 個 `[OK]` + 15 個 WC 表 MISSING 警告 | **49 個 `[OK]`、All checks passed** | +| 姊妹外掛自訂表 | 36 張 OK | 36 張 OK(含 brandcards 的 `doctor_callback` 回傳訊息) | +| 新健檢 | 無 | `Backup dir blocked (HTTP 404)`、`Crypto key derivable` 皆 OK | + +逐項確認: +- **alias**:15 個核心類別 + trait + interface + `wpdo_run()` + `WPDO_VERSION` 全部可用 +- **CLI**:`wp tmdo bridge-status / crypto-status / mode-audit` 與 `wp wpdo *` 兩條路徑都通(38 個子指令) +- **anti-EAV 寫入**:`WPDO_API::set_entity()` → `wp_wpdo_user_sso.known_login_ips` 寫入成功(A14 生效) +- **audit**:`wp_wpdo_audit` 的 `group_name` / `action` / `trace_id`(UUIDv4)皆有值(A11/A12 生效) +- **REST allowlist**:註冊 `show_in_rest => false` 的欄位不出現在 `get_rest_visible_hot_columns()`(A5/A6 生效) +- **doctor_callback ABI 變更**:brandcards 既有 callback 在 1 參數簽章下仍正常 +- 前台 HTTP 200;`_load_textdomain_just_in_time` notice 僅出現在 `wp plugin activate` 當下(啟用鉤子早於 `init`),一般請求與前台皆無 + +**實機才抓到的 fatal**:`TMDO_Logger::trace_id()` 在 B 提煉時遺漏,而 `Audit_Logger::write_row()` 會呼叫它。A12 把 Audit_Logger 掛上後,任何一次受管 meta 寫入都會 fatal。PHPUnit 沒有覆蓋 audit 寫入路徑 → 這類「跨模組才會踩到」的缺口只有實機能發現。 ### 尚未完成(follow-up)