Files
2meet-data-optimizer/CLAUDE.md
T
wpdev d36bb954d1 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
2026-07-31 05:06:36 +08:00

109 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`