31c23b64ff
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
45 lines
1.3 KiB
Markdown
45 lines
1.3 KiB
Markdown
# DESIGN — 2meet Data Optimizer Quotation AddOn
|
|
|
|
> 父外掛架構決策見 [`../2meet-data-optimizer/DESIGN.md`](../2meet-data-optimizer/DESIGN.md)
|
|
|
|
---
|
|
|
|
## 角色定位
|
|
|
|
本 AddOn 是 `2meet-data-optimizer` 的整合層,負責將 `2meet-quotation` 的 EAV 模式(postmeta / 自訂表)橋接到核心反 EAV 引擎。
|
|
|
|
- **不**修改 `2meet-quotation` 本身
|
|
- **不**繞過 `2meet-data-optimizer` 核心
|
|
- 只透過公開合約(`TMDO_API`、`tmdo_register_*` hook)參與
|
|
|
|
---
|
|
|
|
## 啟動順序
|
|
|
|
```
|
|
plugins_loaded:4 2meet-data-optimizer (core) 啟動
|
|
plugins_loaded:5-6 本 AddOn bootstrap → 註冊 hook callback
|
|
plugins_loaded:6+ 2meet-quotation 本體啟動
|
|
init:0 核心 fire tmdo_register_* → 本 AddOn 的 callback 執行
|
|
```
|
|
|
|
詳見 plan 文件第 3 章「載入順序」。
|
|
|
|
---
|
|
|
|
## 為什麼是獨立 AddOn 而非塞進核心
|
|
|
|
- 核心 `2meet-data-optimizer` 對外承諾「零依存任何業務外掛」
|
|
- 整合層發版節奏應跟隨 `2meet-quotation` 而非核心
|
|
- 站台不用 `2meet-quotation` 時不需被迫載入這段程式碼
|
|
|
|
---
|
|
|
|
## 邊界檢查清單
|
|
|
|
- [ ] 不直接 `SELECT FROM wp_*meta`
|
|
- [ ] 不繞過 Hook Bus
|
|
- [ ] 所有 SQL 走 `$wpdb->prepare()`
|
|
- [ ] DB 表名走 `TMDO_DB::table()`
|
|
- [ ] 對外只 expose `TMDO_Quotation_*` 命名空間
|