16b905af8bfa17466098c5df3b5907ae986ce130
核心的 class-tmdo-back-compat.php 在 plugins_loaded:4 執行,AddOn 於 :6 才載入,所以核心的 alias 表涵蓋不到 AddOn 類別 —— 姊妹外掛或第三方若 以 WPDO_* 名稱引用本 AddOn 的類別會直接 fatal。 新增 includes/back-compat-aliases.php,於 plugins_loaded:7 為本 AddOn 自有類別建立 WPDO_ alias;主檔加入 require。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TbG1keQQ7XBa7qMQY16KCY
2meet Data Optimizer — Spoke SSO AddOn
為 2meet-spoke-sso(OAuth client / SSO 客戶端)提供高效能 token cache 與 SLO 整合。
What it does
把 spoke-sso 對 wp-data-optimizer 的依存抽出來:
| 項目 | 內容 |
|---|---|
| User entity group | sso 群組 7 欄位 → flat table wp_wpdo_user_sso(取代 _tmso_* usermeta EAV) |
| Custom tables | 2 張 mso 自訂表(2mso_sso_config / 2mso_user_mapping)→ doctor 健診 |
| CLI | wp tmdo spoke-sync(從舊 tmso* usermeta 遷移)/ wp tmdo spoke-force-logout(強制 token 過期) |
| Crypto | TMSO_Crypto interop wrapper(refresh_token AES-256-CBC encrypted) |
SSO Group 欄位
| 欄位 | Type | Searchable | 用途 |
|---|---|---|---|
hub_global_user_id |
text | ✓ | Hub 全局 user UUID(2mso_user_mapping.global_user_id bridge key) |
picture_url |
text | SSO 大頭貼 URL | |
last_id_token_hash |
text | SHA-256(last_id_token) for SLO 比較(不存明文,A-4 修復) | |
refresh_token_enc |
textarea | 加密 refresh token (enc_vN:ciphertext) |
|
token_expires_at |
datetime | ✓ | SSO token 過期時間(設過去可強制重新認證) |
sso_last_login_at |
datetime | 上次 SSO 登入時間 | |
sso_login_count |
integer | SSO 登入次數 |
設計原因:silent refresh 每 15 min 觸發一次,10M user 場景下 wp_usermeta EAV scan 會成熱點;flat table + object cache 命中可降低 DB load 10-50×。
Requirements
- WordPress ≥ 6.0
- PHP ≥ 8.1
- 2meet-data-optimizer ≥ 0.1.0
- 2meet-spoke-sso ≥ 1.15.0
Installation
wp plugin install /path/to/2meet-data-optimizer-spoke-addon-v0.1.0.zip --activate
# 驗證 sso group 已註冊
wp tmdo entity-fields --entity=user --group=sso
# 從舊 _tmso_* usermeta 遷移到 flat table
wp tmdo spoke-sync --dry-run
wp tmdo spoke-sync --batch-size=500
Fallback
若本 AddOn 未啟用,spoke-sso 仍能透過 native update_user_meta() 儲存 SSO 資訊(透過 _tmso_* usermeta 路徑),效能下降但功能不影響。
Phase
Phase 2 — 與 Hub AddOn 同期 ship。
License
GPL-2.0-or-later
Description
Languages
PHP
100%