兩塊互相配合的基石
REZICS 將「內容是什麼」與「內容出現在哪裡」分開建模。
- Block Schema 定義一份可渲染文件由哪些帶型別的區塊組成,以及每個區塊如何保有穩定身份、版本與驗證規則。
- 內容結構 定義內容單元的出現位置、父子關係、順序、目的地與已發布修訂。
這個分離讓同一篇章節/貼文能在多個位置重用,不必複製正文;每次出現又能有自己的節點 ID、順序與導覽語義。
Block Schema:不是裸 JSON
幾乎所有可保存的 JSON 文件都必須先有可辨認的基礎物件,而不是把任意 Portable Text 陣列直接塞進欄位。最基本的 Portable Text 文件具有以下語義:
{
_type: "portable-text",
_key: "6 位元組/12 碼十六進位鍵值",
content: PortableText,
}
_type 決定解析與渲染協議;_key 讓區塊在修訂、段落評論與結構操作中保持身份;文件版本則在每次結構規範演進時提供明確的遷移邊界。格式驗證之後仍要進行引用、權限與可見性驗證,識別碼格式本身不代表目標可讀。
已實作的區塊家族
目前共用 Block Schema 已能表達 Portable Text、單元引用、完整貼文呈現、單元清單、搜尋驅動內容動態、選單與其他受控內容表面。每個變體都是封閉聯集的一部分,不允許未知區塊在渲染器裡默默通過。
專區、停靠區、維基導覽與未來可重用文件都建立在這個共同基礎上。是否將某份區塊文件升格為獨立單元,必須由跨擁有者重用、獨立作者、發布歷史或可見性等真實需求證明。
內容結構現在已經能做什麼
- 為書籍、媒體、貼文、領域分類結構與導覽建立具類型的結構。
- 以穩定節點 ID、父節點與分數位置保存大型有序樹。
- 讓節點引用可重用內容單元,並區分內容、單元目的地與外部網址。
- 以完整草稿編輯書籍/媒體結構,再將有界變更編譯成原子請求。
- 保存修訂、比較差異,並透過新修訂還原舊狀態。
- 讓閱讀器把結構投影成目錄、上一章/下一章與閱讀進度位置。
大型連載與匯入
單次結構變更最多編譯 10,000 個邏輯命令,限制的是一個原子變更,不是整本書的總節點數。大型網路小說可以把完整樹分成多次可恢復寫入:每次帶入已提交節點與一組有界的新節點,成功後取得下一次需要的修訂權杖。
因此大於 10,000 章的作品不需要載入一個無界交易,也不必犧牲衝突偵測;匯入可以中斷後續傳,最後再驗證完整快照。
正在開發與規劃
更多區塊變體、跨擁有者區塊單元、強引用索引、段落級評論、完整大型匯入工作流與 GameContentStructure 仍分別處於開發或規劃階段。每一種新區塊都必須定義保存、發布、讀取、刪除、快取與失敗狀態。
關係與邊界
Block Schema 不是編輯器;內容結構也不是正文。編輯器產生經驗證的文件,貼文/章節擁有內容,內容結構安排它們的出現位置,歷史則保存已發布修訂。