租戶、主機與資料篩選器
ToRun 建立在 ABP Framework 的多租戶模型之上。標記為 IsMultiTenant 的資料列帶有 TenantId 欄位,框架會自動依它篩選;在某個租戶情境中執行的查詢,永遠看不到另一個租戶的資料列。主機情境(TenantId == null)看到的是獨立的一部分:SubscriptionPlan、AiProvider 和 LegalDocument 等標準目錄就在那裡。
為什麼我們把主機視為完整的參與者
大多數 SaaS 產品把主機當作「管理工具」附加上去。我們把主機建模為一個手足租戶:主機有自己的儀表板、自己的 AI 政策與自己的計費關係。這讓我們能在每位客戶都在使用的同一套元件上,執行我們自己的正式環境流量。
依租戶綁定方案的功能
訂閱方案包含 FeatureLimit、Entitlement、Capability 與 Mode 資料列。租戶啟用方案後,其可使用的功能集合是該方案與全域目錄的交集。新增一種模式不需要逐一修改租戶:只要租戶持有的方案包含該模式,就會自動取得。
每次呼叫時注入 BYOK
即使基礎設施是共用的,BYOK 憑證也僅限於擁有它們的租戶。每個 AI 請求都會以同一個資料篩選器在租戶情境中解析憑證;在儲存層,金鑰不可能在租戶之間外洩。
我們刻意不做的事
我們不在資料庫或程序層級隔離租戶。為每個租戶各自擴充一個資料庫的成本,會摧毀多租戶 SaaS 產品的單位經濟。只要結構描述從第一天起就為此設計,資料篩選器加上依租戶區分的快取就已足夠。