AiReach — AiPower 單元 + Node BFF + React 前端三件套設計方案 v1.3
[!NOTE]
本文件定位為開發參考用的臨時設計稿,協助團隊在正式規格文件發布前對齊架構邊界;待正式規格建立後,可由正式文件取代並移除此參考稿。
〇、架構方向變更(v1.5):AiReach 自建獨立 Backend
〇.1 調整後的整體架構
〇.2 職責搬遷對照
| 維度 | 原口徑(基於 AiPower) | 調整後(獨立 Backend) |
|---|
| 業務後端 | AiPower 單元 + 流程,不寫微服務 | AiReach Backend Service(獨立服務,新建) |
| 業務主資料 | AiPower 單元表 | Backend 自有 DB |
event_inbox 冪等 | AiPower 平臺單元 | Backend |
tenant_integration 金鑰 | BFF → AiPower 平臺單元 | BFF → Backend |
| 業務出站簽名 | AiPower 單元直髮 Aile 閘道器 | Backend 讀 TI 直髮 Aile 閘道器 |
| Tool API(供 AileAI) | AiPower 把資料能力工具化 | Backend 暴露 Tool API |
| 排程 / 多租戶 / 欄位建模 | AiPower 平臺能力 | Backend 自建 |
權衡:AiPower 原本白送的「快速建制 單元 / 流程、排程、多租戶隔離、欄位建模、AI SDK」自建後需自行選型實現,初期成本與維護量上升;換得技術棧自由與不受平臺節奏約束。
〇.3 全域性口徑替換(適用於下文 §一~§九)
下文多數章節成稿於 AiPower 口徑,在後續版本逐節落地前,按以下規則換算:
- 「AiPower 單元 / 流程 / 業務單元」→「AiReach Backend Service」
- 「AiPower 平臺單元
event_inbox / tenant_integration」→「Backend 內的 event_inbox / tenant_integration」
- 「AiPower OpenAPI」→「Backend API」
- 「資料與統計 / 工具域」由 AiReach Backend 承載
- 「業務出站簽名」由 Backend 讀
tenant_integration 直髮 Aile 閘道器
- BFF、AileAI、Aile / AS、前端 / AIFF 的職責不變
一、命名與定位
| 層級 | 實體 | 角色定位 | 本期形態 |
|---|
| 底座層 | Aile | 多租戶客服 / 通訊底座;裡面包含:AS(生態統一認證服務,獨立)與 aile-service-* 業務服務套件(auth / platform-integration / message / tenant / room / account / job ...)。AS 與 aile-service-* 是兩個並列概念,不是同物。 | 不變 |
| 平 臺層 | AiPower | Java 開發平臺:提供單元(Unit)與流程(Flow)的快速建制、欄位建模、事件掛鉤、排程、AI 能力、賬號體系、多租戶隔離等能力 | v1.5 起不採用;相關能力改由 AiReach Backend 自建 |
| 業務層 | AiReach | 應用層概念。本期實現物 = AiReach Backend Service(獨立) + BFF(Node.js) + React 前端 | 獨立註冊為 Aile IntegrationApp aireach |
| AI 編排層 | AileAI | AI 編排域(Phase 2 引入):Copilot 對話編排、多 Agent / skills、RAG 知識檢索、MCP 聯結器與流式輸出;經 Backend Tool API 取結構化資料,經 RAG / MCP 取知識規範 | Phase 2 接入;MVP 不啟用 |
1.1 AiReach 應用三件套
| 元件 | 形態 | 技術棧 | 主要職責 | 本期是否新建 |
|---|
| 業務後端 | 獨立部署的 AiReach Backend Service | Java / Node(自選) | 領域建模 + 業務流程 + event_inbox 單元(冪等去重) + AI 能力經 AileAI 編排 | 新建(獨立服務) |
| BFF | 獨立部署的 Node.js 服務 | Node.js + TypeScript | 1) 前端聚合:把 AiPower 多個單元的資料聚合為 UI 所需檢視 | |
- 走 AS 完成 SSO / Token 校驗
- Aile 整合入站協議:
/install /update /uninstall /rotate-secret;webhook 接收驗籤(不承擔業務後端的出站簽名)
- 與 Backend 整合:install / rotate-secret 時把
tenant_integration 同步到 AiPower 平臺單元 • 入站事件透傳 eventId • 規範化命令下發
- AIFF 配置註冊:在 install 後呼叫
/openapi/v1/aiff/** 註冊槽位 + endpoint
- 前端聚合出站呼叫:模板 / 預覽 / 受眾查詢 / 標籤等 UI 觸發的 Aile 呼叫由 BFF 本地簽名代發 | 新建 |
| 前端 | 一份獨立 React Web(不另打 AIFF 包) | React + TypeScript | 營銷運營控制檯 UI;同一份部署同時供獨立 Web 與多個 AIFF 槽位(以不同
endpoint URL 路由區分) 呼叫 | 新建 |
1.2 AiReach 與 Aile 的接入身份表
| 欄位 | 取值 |
|---|
Aile 側 integrationAppId | aireach |
| Aile 側註冊者 | Aile 平臺管理員一次性 POST /admin/integrations/apps |
installBaseUrl | AiReach BFF 暴露的 HTTPS 安裝入口 |
tenantIntegrationId / tenantIntegrationSecret | 每個 Aile 租戶安裝時生成;BFF 本地 tenant_integration 表落檔 |
webhookUrl | BFF 匯出的單一 webhook 接收地址(業務事件 + notice.* 合併端點) |
| SSO | BFF 走 AS(Aile 統一認證服務)完成 OAuth / Token 校驗 |
| AIFF 嵌入 | BFF 發起呼叫 POST /openapi/v1/aiff/** 註冊「槽位 + endpoint URL」 |
| 安裝 / webhook 是否經 AiPower | 否。入站協議在 BFF;BFF 以「內部呼叫」下發給 AiPower 單元(並同步 tenant_integration 到 AiPower 平臺單元) |
| 業務出站簽名是否在 BFF | 否。AiPower 單元 / 流程從本地 tenant_integration 平臺單元讀取 Secret 後直接簽名呼叫 Aile 閘道器;BFF 僅承擔前端聚合出站 + install / AIFF 註冊的簽名 |
1.3 關鍵邊界
- Aile 側本期只看到一條
aireach IntegrationApp;入站契約動作(install / webhook / AIFF 註冊)在 BFF;業務後端出站簽名呼叫 AiPower 單元 / 流程直接對 Aile 閘道器發起(BFF 不在業務出站鏈路上)。
- AiPower 業務單元不感知 Aile 簽名 / 協議細節,只接收 BFF 傳入的「規範化事件 / 命令 + eventId」與發起「規範化出站請求」;冪等去重由 AiPower
event_inbox 單元完成。
- BFF 同時是前端聚合層與 Aile↔AiPower 之間的協議橋。
- 前端只部署一份 React Web;AileDesktop 中的嵌入由在 AS 側註冊的 AIFF 配置驅動,不需要另打 AIFF 包。
二、架構總覽
2.1 整體部署拓撲
2.2 各元件職責與部署要點
| 元件 | 部署單元 | 對外介面 | 儲存 | 執行身份 |
|---|
| 前端 | 一份 React Web。獨立訪問走 /app/*;AileDesktop 嵌入走 /embed/* | 向 BFF 發起 REST / GraphQL | 無(程序記憶體 + IndexedDB 可選) | 兩種入口均使用 BFF 返回的會話身份 |
| BFF | 獨立 Node.js 服務 | 對前端:REST / GraphQL | | |
對 Aile:1) 走 AS 完成 SSO / Token 校驗;2) 接收 PI 下發的 /install 與 Webhook;3) 經 Aile 閘道器以 AILE 簽名呼叫各 aile-service-* OpenAPI(含 /openapi/v1/aiff/** 註冊) | | | | |
| 對 AiPower:HTTPS OpenAPI | 僅協議層狀態:tenant_integration 、nonce / token / SSO session 快取(不再持有 event_inbox) | 以 tenantIntegrationId / Aile 租戶身份作上下文 | | |
| AiPower 業務單元 + 流程 | 執行於 AiPower 平臺執行時,不獨立部署 | 對 BFF:AiPower OpenAPI(單元讀寫 + 流程觸發) | 業務主資料 + event_inbox冪等:campaign / audience / dispatch / contact_profile / opt_out_ledger / conversion_log / event_inbox等均以單元表儲存 | AiPower 租戶上下文(與 Aile 租戶對映) |
2.3 前端兩種開啟方式
同一份 React 程式碼,只是入口路由不同。
| 維度 | 獨立 Web(/app/*) | AIFF 槽位(/embed/*) |
|---|
| 入口 | 獨立域名 aireach.<corp>.com | AS 側註冊的 AIFF 配置中 endpoint URL 指向同一部署的 /embed/* 路由 |
| 登入態 | BFF 重定向走 AS SSO,後返 Cookie 會話 | AIFF 框架注入 Aile token / 上下文,BFF 校驗後建會話 |
| 上下文 | UI / URL 傳遞 | AIFF 框架以 URL 引數 / bridge 注入 tenantId serviceNumberId contactId 等 |
| 外殼 | 頂欄 + 側欄 | 隱藏頂欄 / 側欄,複用 AileDesktop 外殼 |
| 服務號選擇 | UI 切換器 | 預設跟隨 AileDesktop 當前服務號 |
| 除錯 | 瀏覽器 DevTools | AileDesktop AIFF DevTools(若提供) |
兩種開啟方式都走同一個 BFF 域 + 同一份 React 部署。
2.4 四方全景架構(含 AileAI,Phase 2 引入)