chore: initial snapshot of 2meet-data-optimizer-spoke-addon v0.1.0
Baseline before backporting wp-data-optimizer v3.0.1-v3.4.6. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TbG1keQQ7XBa7qMQY16KCY
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
# 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
|
||||
|
||||
```bash
|
||||
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](../2meet-data-optimizer-hub-addon/) 同期 ship。
|
||||
|
||||
詳見 [PLAN.md](PLAN.md) 與 [DESIGN.md](DESIGN.md)。
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
GPL-2.0-or-later
|
||||
Reference in New Issue
Block a user