chore: initial snapshot of 2meet-data-optimizer 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,108 @@
|
||||
# CLAUDE.md — 2meet Data Optimizer (核心)
|
||||
|
||||
> 父環境:`/var/www/Studio/wp-local-dev/CLAUDE.md` 與 `/var/www/Studio/wp-local-dev30/CLAUDE.md`
|
||||
> 全域:`~/.claude/CLAUDE.md`(含 Karpathy Guidelines)
|
||||
|
||||
---
|
||||
|
||||
## Reset recovery
|
||||
|
||||
1. 讀本檔(CLAUDE.md)取得 plugin 上下文
|
||||
2. 讀 [PLAN.md](PLAN.md) 看當前 phase 進度
|
||||
3. 接續 PLAN.md 的下一個未完成步驟
|
||||
|
||||
---
|
||||
|
||||
## Plugin 概述
|
||||
|
||||
**2meet-data-optimizer** 是純通用 WordPress 反 EAV 引擎,從 `wp-data-optimizer v2.16.0` 提煉。
|
||||
|
||||
- 不依存 HivePress / WooCommerce / LatePoint / 2meet-*
|
||||
- 4 entity 通用(post/user/term/comment)
|
||||
- 整合層全部交給 11 個獨立 AddOn
|
||||
|
||||
完整拆分計畫見 `~/.claude/plans/wp-data-optimizer-2meet-data-optimizer-zesty-liskov.md`。
|
||||
|
||||
---
|
||||
|
||||
## 開發紀律
|
||||
|
||||
### 命名前綴
|
||||
- 類別:`TMDO_*`
|
||||
- 函式:`tmdo_*`
|
||||
- 常數:`TMDO_VERSION` / `TMDO_PATH` / `TMDO_URL` / `TMDO_FILE`
|
||||
- Hook:`tmdo_*`(同時 dual-fire `wpdo_*` 過渡)
|
||||
- Text-domain:`2meet-data-optimizer`
|
||||
|
||||
### 對外相容
|
||||
- 主要 API 公開:`TMDO_API`、`TMDO_Schema_Registry`、`TMDO_Entity_Registry`、`TMDO_Custom_Table_Registry`、`TMDO_Feature_Flags`、`TMDO_DB`、`TMDO_Crypto`、`TMDO_Logger`
|
||||
- **必加 `class_alias( 'TMDO_*', 'WPDO_*' )`** 對應全部上述 8 個類別
|
||||
- **必 dual-fire** `tmdo_*` 與 `wpdo_*` 共 9 個 hook(見 plan § 11.2)
|
||||
|
||||
### 反 EAV 紅線(CI gate 守門)
|
||||
- ❌ `SELECT FROM wp_postmeta / wp_usermeta / wp_termmeta / wp_commentmeta`(除一次性 migration / cron)
|
||||
- ❌ 硬編碼表名 `wp_postmeta` / `wp_options`,必走 `TMDO_DB::table()`
|
||||
- ❌ 主動 `add_action('updated_postmeta', ...)`(與 Hook Bus 衝突)
|
||||
- ❌ 單外掛 `autoload=yes` 的 `wp_options` > 30 條
|
||||
- ❌ 直接 `unserialize()`,必走 `TMDO_Safe_Unserialize::run()`
|
||||
|
||||
### 安全
|
||||
- 所有 SQL 走 `$wpdb->prepare()`
|
||||
- 動態 IN 子句用 `array_fill('%d')` 動態佔位符
|
||||
- DROP TABLE 前白名單 + prefix 雙重驗證
|
||||
- `manage_options` capability check + nonce
|
||||
- 輸出 `esc_html()` / `esc_attr()` / `esc_url()`
|
||||
|
||||
### Crypto
|
||||
- `TMDO_Crypto`:AES-256-GCM AEAD(`enc:v2:` 格式),向後相容讀取 `enc:v1:` (CBC)
|
||||
- 加密 wp_options 內 webhook 密鑰
|
||||
|
||||
---
|
||||
|
||||
## 任務管理
|
||||
|
||||
- 開始任務前更新 `PLAN.md`
|
||||
- 每完成一步驟,標記 ✅
|
||||
- 重要決策 / 踩坑記錄在 PLAN.md「Lessons learned」
|
||||
|
||||
---
|
||||
|
||||
## 常用指令
|
||||
|
||||
```bash
|
||||
# Lint
|
||||
find . -name "*.php" | grep -v vendor | grep -v tests | xargs php -l
|
||||
|
||||
# Unit tests
|
||||
./vendor/bin/phpunit --configuration phpunit.xml
|
||||
|
||||
# Integration tests(需本機 MariaDB)
|
||||
./vendor/bin/phpunit --configuration phpunit-integration.xml
|
||||
|
||||
# WP-CLI
|
||||
wp --path=/var/www/Studio/wp-local-dev30 tmdo status
|
||||
wp --path=/var/www/Studio/wp-local-dev30 tmdo doctor
|
||||
wp --path=/var/www/Studio/wp-local-dev30 tmdo benchmark hot_post --samples=200
|
||||
|
||||
# 打包(必經 10 終檢)
|
||||
/var/www/Studio/wp-local-dev/scripts/package-plugin.sh 2meet-data-optimizer
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 邊界
|
||||
|
||||
- ✅ 本外掛觸碰:4-entity 反 EAV 引擎、zone 表、migration、wizard、admin、CLI、REST、snapshot、diagnostic、notifications
|
||||
- ❌ 本外掛**不**觸碰:HP / WC / LP / 2meet-* 邏輯(全部交給 AddOn)
|
||||
- ❌ 本外掛**不**註冊:HP listing 欄位、WC product 欄位、SSO sso group、infocards postmeta(全部交給 AddOn)
|
||||
|
||||
---
|
||||
|
||||
## Phase 進度
|
||||
|
||||
```
|
||||
Phase 0 ✅ 骨架建立 (2026-05-15)
|
||||
Phase 1 ⬜ Core v0.1.0 (W1-W2)
|
||||
```
|
||||
|
||||
詳見 `PLAN.md`。
|
||||
Reference in New Issue
Block a user