Skip to content

Latest commit

 

History

134 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RigStage

RigStage 是以香港繁體中文為主的電腦商戶 3D 組裝工作台。v1.1 提供受保護的產品目錄、私人素材審核、持久化 PC Builder、可解釋相容性規則、已核准模型預覽、安全 JSON 匯出,以及預設關閉的零成本生成工作驗證管線。目前 source 另包含本機 AI 開發里程碑,用 synthetic adapter 驗證 credit、重試、GLB 安全閘及人工審批銜接;它不代表 production 已啟用 AI。

部署平台:Cloudflare Workers。 Vite 產生的前端由 Workers Static Assets 發佈,/api/* 由同一個 Worker 處理;受保護功能再使用 Cloudflare Access、D1、私人 R2、Workflows 及 Rate Limiting bindings。這不是 Cloudflare Pages 專案。

公開版本庫只描述可核對的程式行為、邏輯元件及自部署介面,不包含任何實際 hostname、Cloudflare account/resource identifier、Access policy 值、token、production 資料、私人資產或營運拓撲。由於可取得原始碼的人仍可閱讀程式及 migration,若連邏輯架構本身也屬機密,應使用私人版本庫及獨立的私人營運文檔。

目前 source version:v1.1.0;最新 GitHub release:v1.0.1。Source、release、 CI 及 production 狀態須分開核對。

可用性 / Availability 成熟度 / Maturity 證據 / Evidence
邀請制工作區 / Invite-only workspace 可用的人工審批 MVP;真實 AI provider 預設停用 / Human-review MVP; real AI provider disabled 入口網站 / Overview · 架構 / Architecture · 安全政策 / Security · 授權 / Licence

English summary

RigStage is an invite-only PC catalogue, private visual-asset review and 3D assembly workspace built with React and Cloudflare Workers. Version 1.1 adds a fail-closed, zero-cost generation-job validation pipeline. The current source also includes a local-development milestone with non-monetary credit accounting, attempt idempotency, strict GLB safety gates and an end-to-end synthetic review-to-Builder path without enabling a real AI provider.

現有功能

  • 公開的產品介紹主頁,以及導向受 Cloudflare Access 保護工作台的登入入口;主頁不讀取 session 或任何商戶資料。登入頁的主要說明、五種身份狀態、安全邊界、固定工作區目的地、Access CTA、未授權登出、返回操作及 footer 均以繁中優先、英文輔助顯示。App 只會把 next 解析成四個固定工作區根路徑後才產生登入/CTA URL;deep route、query、fragment 及動態識別碼不會被轉帶到目的地 URL 或可見畫面。390 px 文案與操作可換行。
  • 公開主頁的 header 導覽、hero、主要 CTA、三項產品重點、四個合成工作區畫面、三段實際流程、三個商戶使用情境、四項資料信任原則、最終登入區及 footer 均使用 typed 繁中/英文 copy;流程截圖的 alt、caption 及放大操作亦包含兩種語言。所有連結只前往同源登入/demo 根路徑、頁內 section 或本地合成截圖;公開畫面明確說明視覺素材不是相容性證據,390 px 雙語文案與操作可換行。
  • 香港繁體中文介面及港幣格式。
  • 讀取真實 D1 聚合資料的 Dashboard,以及產品目錄、素材審核及 PC Builder 路由;Dashboard 頁首、CTA、四個指標、最近工作及資料準備度均以繁中優先、英文輔助顯示。最近工作另由共享 schema 強制提供有界雙語細節、狀態及相對時間,並維持固定安全導向。
  • Cloudflare Access JWT 驗證、受限 assertion/身份欄位、邀請制用戶及 server-side workspace scope;畸形或超限身份會在 Rate Limiting 與 D1 前 fail closed。
  • 已綁定身份的一般讀取只解析 active workspace membership,不更新使用者列;只有使用者明確切換時,前端才以固定 PUT 端點及受保護 workspace 標頭持久化偏好。切換成功前保留目前資料範圍,局部或暫時失敗提供雙語重試/留在目前操作,全域身份失效則仍 fail closed。
  • Owner 及 admin 可在受保護的工作空間成員管理頁,以每頁最多 100 位的可續載名單建立 D1 邀請、調整允許角色及以兩步操作停用資格。下一頁的私人 member cursor 只經固定 API 的受保護標頭傳送,不進 URL;不存在、跨 workspace 或格式錯誤的 cursor 會 fail closed。更新使用樂觀版本;owner 不可自我管理,admin 不可管理 owner/admin,資料庫亦防止停用、降級或刪除最後一位 active owner。建立 D1 邀請不會修改 Cloudflare Access policy,部署管理員仍須把同一電郵加入精確 Allow 名單。
  • Owner 及 admin 可在工作空間活動記錄查看最近的關鍵狀態轉換,並按存取、目錄、素材、組裝或生成流程篩選。每頁最多 50 筆,較早記錄只以受保護 header cursor 載入;API 只投影有界 action、類別、時間與安全的執行者顯示名稱,不回傳電郵、target/request ID、物件位置或原始 audit metadata,讀取亦不會建立另一筆事件。
  • Dashboard、產品目錄、素材審核及 Builder 的 parent/deep route 都以 Worker-first 驗證 Access JWT 與 active D1 membership,Static Assets 不可繞過私人 shell 授權。
  • 公開 health endpoint,以及受保護的 session/workspace endpoint。
  • 公開 API 錯誤保留穩定代碼及 request ID,並以「繁體中文 / English」回傳可操作但不洩漏內部解析細節的訊息;雙欄介面會拆分顯示兩種語言。
  • Worker 以精確路徑及方法表執行 API preflight;受保護的未知路徑或錯誤方法會在 Access 驗證與 subject 限流後、workspace membership D1 查詢前,以通用雙語 404 或帶精確 Allow 的雙語 405 拒絕。
  • 受 workspace 限制的分頁產品目錄 API;私人分頁游標只經受保護請求標頭傳送,不寫入瀏覽器 URL,production 介面亦具備載入、空白與錯誤狀態。目錄頁首、操作、搜尋、分類、核實篩選、欄名、九個組件分類、四種庫存狀態、四種素材狀態及四種品質均以完整型別映射顯示繁中/英文;庫存英文數量正確處理單複數,viewer 寫入控制保持停用,列內可見文案不顯示私人 part/asset ID。雙語操作與狀態在 390 px 可換行而不遮蔽主要功能。
  • Staff、admin 及 owner 可新增、編輯和封存產品;私人 part ID 只經固定 API 的受保護標頭傳送,更新以版本條件避免覆寫較新資料。產品編輯器的新建/編輯/查看標題、版本、欄位、分類、庫存、規格核實、JSON 指引及所有操作狀態均以繁中優先、英文輔助顯示,並與目錄主清單共用完整型別映射。Viewer 只取得停用欄位、素材審核入口及關閉操作,不會渲染儲存、封存或建立素材草稿控制;390 px 文案及操作可換行,畫面不顯示私人 part/asset ID。新增、編輯、封存、素材草稿及 CSV/TSV 匯入均使用繁中/英文的提示、成功、警告或錯誤狀態;單語技術例外會換成安全文案,無法確認的寫入結果會要求重新載入才重試。
  • CSV 及 TSV 合成範本下載,以及每批最多 50 項的原子匯入。瀏覽器會先核對 256 KiB 上限、副檔名/正式 media type、有效 UTF-8、完整表格、SKU 和結構化規格;Worker 會以相同 schema 重新驗證,並拒絕偽造的 media-type prefix。
  • 素材審核佇列、固定詳情/審核 API、草稿保存、角色限制、樂觀鎖及原子 audit 記錄;每次從 D1 載入最多 50 項,下一頁游標只經受保護標頭傳送,拒絕 URL、格式錯誤及跨 workspace 游標,並可在游標素材剛完成審核後安全重播。私人 asset ID 只經受保護標頭傳送,不進詳情或審核 URL/body。頁首指引、草稿/待審/核准/拒絕狀態、來源種類、品質、版本、目前位置及已載入數量均由完整型別映射以繁中優先、英文輔助顯示,不會把已載入數誤稱為未知總數;上一項/下一項在未儲存變更或檔案、審核、生成操作期間保持停用,下一頁失敗亦保留目前素材供安全重試。窄畫面狀態徽章與導覽控制可換行而不顯示內部素材 ID。保存、核准、拒絕、檔案上載、精確檔案移除及模擬生成狀態均以雙語及相符的提示、成功、警告或錯誤語意顯示;六項核准清單、三個人手核實尺寸、核對提示及完成計數亦使用由 domain 規則約束的雙語文案。網絡中斷後不會假定寫入或工作未發生,而會要求先重新載入。拒絕採用同一素材版本內的兩步確認,先說明可能釋放保留 credit、但不會刪除私人檔案,第二次按下才送出審核 mutation;切換素材或進行其他表單操作會解除確認。
  • 從產品目錄固定端點建立私人素材草稿,part ID 不進 URL 或檔案 body;每項素材可分別保存正面、背面、左側及三分之四角度四張私人來源圖片,每張最多 10 MiB。瀏覽器先核對 .jpg.jpeg.png.webp 檔名、MIME 與實際 bytes;空白或通用 MIME 只可在安全副檔名及內容一致時標準化,私人檔名不會送到 Worker。Worker 再獨立核對 canonical MIME、完整容器邊界、PNG chunk CRC/JPEG marker/WebP RIFF 結構,以及每邊最多 8,192 px、總像素最多 24 MP 的瀏覽器安全上限;APNG 及 animated WebP 會在私人儲存前拒絕。縮圖列可選擇視角、顯示授權 API 載入/缺少狀態,並只取代或移除所選視角;正面圖是日後生成流程的唯一 canonical input,其餘視角只供人工審核,不會自動交給 AI 或推斷相容性。要求、操作、私人預覽、圖片使用權及 Access 邊界均以繁中優先、英文輔助顯示。
  • 透過固定檔案 API 與受保護的 asset/file-kind/source-view 標頭,上載最多 25 MiB 的自包含 glTF 2.0 GLB;瀏覽器會先核對 .glb、MIME 與完整 bytes,並把空白或通用 MIME 安全標準化為 model/gltf-binary。手動上載及模擬生成共用 buffer/accessor、三角形、node graph、尺寸、貼圖數量與貼圖 bytes 安全閘,並在核准前讀回重驗。經授權讀取後在審核室及 Builder 以 Three.js 人手預覽,私人 asset ID 不進檔案 URL 或 body。GLB 要求及操作狀態同樣提供雙語文案;審核 viewport 的四個鏡頭預設、合適視野/線框工具、鏡頭讀數、模型有無/載入/解碼失敗狀態及「視覺素材不構成相容性證明」亦以繁中優先、英文輔助顯示。取代或移除所選視角/GLB 都會重設核准清單、來源權利確認及已核實尺寸;移除必須對同一 workspace、素材版本、檔案種類及視角按兩次確認,其他私人檔案不受影響並繼續保持私人。
  • Builder viewport 的四個鏡頭、三個顯示模式、工具、場景讀數、類別、四種庫存狀態、已選組件摘要及 footer 亦完整雙語化。類別檢視載入一個已核准模型;總覽會依固定類別次序,以單一 Three.js canvas 平行載入最多九個已核准私人 GLB,局部失敗仍保留成功模型,並在切換組裝或離開頁面時取消未完成讀取及撤銷所有短期 object URL。本機示範使用逐組件 synthetic GLB,不讀取私人檔案。分離式 review grid 會正規化顯示大小,只供人手檢查,不代表實際安裝位置、比例或相容性;失敗文案亦不顯示 workspace/asset ID 或解析細節。
  • R2 物件維持私人;API 不回傳永久物件 URL、object key 或 checksum。瀏覽器的短期 Blob URL 綁定目前檔案要求的 abort signal,切換 workspace/素材或卸載畫面便冪等撤銷,遲到的已取消回應不會建立新 URL。回滾、取代及明確移除只清理單一精確 key,首次暫時失敗會重試一次;持續失敗會保留不再由目前素材讀取路徑使用的私人 orphan,而不推翻已提交的 D1 狀態。
  • 素材審核導向固定使用 /asset-review;指定素材只以 workspace 綁定的頁面記憶體交接,載入後即清除,不寫入 URL、history state 或持久儲存,畫面亦不顯示內部素材 ID。
  • 每個 workspace 可建立及保存組裝草稿,每個草稿最多九個類別;私人 build ID 只經固定 API 的受保護標頭傳送,不寫入 URL 或請求 body;更新使用樂觀版本及原子 D1 batch,封存採用兩步確認及邏輯狀態轉換。建立、切換、儲存、封存及私隱安全匯出的即時狀態均提供繁中/英文及相符的成功、提示、警告或錯誤語意;單語技術錯誤不會直接顯示。Builder 檢查器的三個分頁、空白狀態、已知規格欄位、規格核實狀態、相容性嚴重程度、證據標籤及 3D 素材狀態/品質/使用條件亦完整雙語化;未知自訂欄位會保留原鍵並標示為自訂,不猜測含義或顯示私人素材 ID。
  • Builder 頂部命令列以繁中優先、英文輔助顯示 workspace、目前組裝、組裝名稱、返回 Dashboard、建立、兩步封存及檢查器入口。固定文案由完整型別映射供應;viewer 不會取得新增或封存控制,390 px 圖示入口仍保留雙語無障礙名稱,畫面標籤不會把私人 build ID 當作可見文案。窄畫面檢查器使用有雙語標題的 modal dialog,支援初始焦點、Tab 循環、Escape/背景/按鈕關閉、背景捲動鎖定及關閉後焦點還原。
  • Builder 組件導覽列以完整型別映射顯示九個類別加總覽、一般步驟與總覽狀態、候選數、已選數、空候選、四種庫存狀態及目前選擇;英文數量正確處理單複數。錯誤、未選、待核實與警告的既有優先序保持不變,低庫存、未知及缺貨同時使用文字與相符顏色。介面說明只會使用目前 workspace 的目錄記錄,選擇必須明確按儲存才寫入 D1,且不顯示私人 part/asset ID。
  • Builder 底部狀態列以繁中優先、英文輔助顯示相容性、已選組件、workspace 總價及儲存/匯出操作。嚴重錯誤、未知結果、警告及通過依既有 fail-closed 優先序使用文字、圖示與語意顏色;英文計數正確處理單複數。狀態列可換行,390 px 圖示操作仍保留完整雙語無障礙名稱,匯出提示亦明確說明阻擋條件及不包含的私人/營運資料。
  • 六條相容性規則只讀取已核實的插槽、記憶體類型、尺寸淨空及電源建議;缺少資料會明確標記為未知。
  • 安全 JSON 匯出使用 schema 2,記錄 build version 及每件 component 的 catalogue version;它不包含使用者、workspace 識別資料、價格、庫存、私人素材或 Cloudflare 部署資料,亦不假裝是 immutable snapshot。
  • Cloudflare Workers Static Assets、D1、私人 R2 binding、Workflow binding及按 Access subject 限流。
  • 固定 URL 的生成工作 API 以受保護 asset 標頭指定目標,並受 workspace、角色、素材版本、已儲存使用權、可用 generation credit 及 Idempotency-Key 限制;asset ID 與 key 均不進 URL 或 body,瀏覽器只在結果不明時以記憶體保留同一素材版本的 key 作安全重試,同一素材只可有一項進行中或等待人工決定的保留工作。Owner/admin 可用另一個受保護 job 標頭及無 body 的兩步操作取消仍在 queued 的精確工作;只有取消的條件更新先於 Workflow claim 勝出才會原子釋放 credit,已開始的工作會保持執行並回傳衝突。審核面板以繁中優先、英文輔助顯示模式、工作狀態、非貨幣 credit、權益、模擬成本、GLB 驗證及目前素材最多 20 項近期工作;前端再次過濾 asset,歷史只顯示中立狀態、權益與香港時間,不顯示 job ID、供應商或私人物件資料。公開 failure/validation code 在共享 schema 及 D1 新增/更新邊界均只接受 1–128 個大寫英數或底線,任意內部文字會 fail closed。
  • 零成本 synthetic adapter 可在本地或明確控制的非正式環境驗證 Workflow、GLB 格式、安全檢查、私人 R2 draft ingestion 及人工審批銜接。
  • Generation credit 會在要求時原子保留,在核准時結算,在排隊取消、拒絕、失敗、啟動失敗或草稿被取代時釋放;這是非貨幣 entitlement 記帳,不是付款、餘額或售價。
  • Provider attempt 以穩定 attempt key 去重,供應商邊界只接收假名化工作參考、來源檔案描述及明確輸出限制。生成 GLB 在寫入 R2 前及讀回後均檢查自包含結構、尺寸、三角形、貼圖、byte bounds 及 checksum。
  • Tracked production 設定的 generation kill switch 預設關閉;沒有外部 3D provider、Workers AI 模型或付款呼叫。
  • 所有生成素材均視為草稿;只有經人手核准的資料才可進入後續流程。
  • 相容性只依賴結構化規格,不會從視覺模型推斷。

本地開發介面的產品、價格、庫存、素材及 3D 場景均為合成示範資料,不應用作真實報價或工程判斷。公開主頁只介紹產品及提供登入導向,不會載入 session、商戶記錄或私人素材。Production 工作台可在角色及 workspace 限制下讀寫 D1 目錄、審核、生成工作及組裝資料,以私人 R2 儲存經驗證的來源圖片及 GLB,並在已核准素材存在時於 Builder 讀取所選組件模型;版本庫不含任何真實商戶記錄。v1.1 是可用的邀請制人工審批 MVP;runtime synthetic GLB 只驗證安全管線,真實 3D 供應商生成、Workers AI 自動化,以及具機械約束或真實安裝位置的裝配場景不在此版本承諾內。

主頁的工作區畫面均從本地合成示範介面擷取,用作準確展示 Dashboard、產品目錄、私人素材審核及 Builder;不包含真實商戶資料、私人素材或 production data,亦不構成報價、工程規格或相容性證據。

技術棧

層面 使用技術
前端 React 19、React Router 8、Vite 8、TypeScript 6、Lucide React
3D 與資料驗證 Three.js 0.185、glTF 2.0/GLB、Zod 4
Edge 與存取控制 Cloudflare Workers、Static Assets、Access、Rate Limiting、jose
持久化與非同步工作 Cloudflare D1、私人 R2、Cloudflare Workflows
測試與品質 Vitest、Cloudflare Workers Vitest pool、ESLint、Prettier、Wrangler 4

精確套件版本以 package.json 及 lockfile 為準;Cloudflare binding 形狀以 wrangler.jsonc 的 identifier-free 範本為準。

本地開發

需要 Node.js 22.22 或以上版本。

npm install
npm run dev

完整檢查:

npm run check
npm run test
npm run build
npm run cf:dry-run
npm audit --audit-level=high

本地 UI 使用合成 session、目錄、素材審核及組裝記錄,方便測試版面、人手核准、相容性及匯出流程。Worker 的 Access 驗證沒有本地繞過;要測試真實登入及 D1 路徑,請使用受保護的非正式環境。

完整 synthetic 圖片 → 3D → 審核 → Builder 流程:

npm run local:ai:start

/asset-review 按「合成圖片」,明確勾選圖片使用權並儲存草稿,再建立模擬 GLB。完成六項核准清單及三個人手核實尺寸後核准素材,最後按「在 Builder 檢查」。這條路徑只在 Vite development mode 使用記憶體及 browser object URL,不會上載圖片、呼叫供應商或連接 production。

要驗證本機 D1 migration、R2 與 Workflow runtime:

npm run db:migrate:local
npm run test:worker
npm run local:ai:debug

local:ai:debug 明確使用 Wrangler --local、synthetic runtime vars 及本機儲存。受保護 API 仍然要求 Access 身份;此命令不加入身份繞過。一次執行全部本機品質閘可用 npm run local:ai:verify

自行部署(摘要)

自部署會建立一套完全獨立的 Cloudflare 資源,不會複製 RigStage 的正式資料、用戶、Access policy 或部署座標。本版本庫採用專有原始碼評估授權,不是開源軟件;它只允許受條款限制的私人、非生產評估,正式部署、服務營運、再散布或商業使用須先取得獨立書面許可。第三方與素材權利見 COPYRIGHT.mdTHIRD_PARTY_NOTICES.md

  1. 準備 Node.js 22.22 或以上版本、npm、Git、Cloudflare 帳戶,以及可設定 Cloudflare Access 的 hostname。
  2. Fork 或取得獲授權的 source copy,在新的工作目錄執行 npm ci,再完成下列品質檢查。
  3. 以 Wrangler 互動登入,在自己的 Cloudflare 帳戶建立一個空白 D1 database 及一個保持 private 的 R2 bucket。
  4. 在 Git 忽略的本機檔案填入自己的 Worker/D1/R2/Workflow/Rate Limiting 座標,以及 Access runtime secrets;不要改寫 tracked wrangler.jsonc 的 placeholders。
  5. 產生 .wrangler/deploy.jsonc,在 private config 明確關閉 workers.dev 及 preview URL,先 dry-run,再套用 migration 及部署 Worker。
  6. 在加入任何真實資料前,完成 Access、邀請及 workspace membership 的私人設定,並驗證所有 protected route 均 fail closed。
npm ci
npm run check
npm run test
npm run build
npm run cf:dry-run
npm audit --audit-level=high

npx wrangler login
npx wrangler d1 create <your-private-d1-name>
npx wrangler r2 bucket create <your-private-r2-name>

完整的私密設定檔格式、手動部署、Workers Builds、自部署驗收、回復及資料外洩檢查,見 Cloudflare Workers 自部署指南。該指南只使用 placeholders;請勿把終端輸出、實際 identifier 或 Access 值貼到 issue、pull request、截圖或聊天記錄。

Cloudflare Workers 部署設定

版本庫內的 wrangler.jsonc 只記錄 placeholder Worker label 及不含識別資料的 binding 範本。main 分支由 Cloudflare Workers Builds 執行 npm run buildnpm run deploy:ci;部署指令會以平台提供的 CI override 與 Cloudflare build secrets 產生 Git 忽略、mode-0600 的臨時設定,明確關閉 workers.dev 與 preview URLs,先套用尚未執行的 D1 migrations,再上傳 Worker。遠端 Wrangler stdout/stderr 由私密 wrapper 有界擷取,正常 build log 只輸出不含座標的成功或錯誤碼。Account ID、D1 ID、實際資源名稱、route、version ID、token、私有物件 URL 及商戶身份資料不會進入 Git 或一般建置日誌。

Cloudflare build 環境需要以下 secret 名稱,值只儲存在 Cloudflare:

  • RIGSTAGE_D1_DATABASE_ID
  • RIGSTAGE_D1_DATABASE_NAME
  • RIGSTAGE_R2_BUCKET_NAME
  • RIGSTAGE_WORKFLOW_NAME
  • RIGSTAGE_RATE_NAMESPACE_ID

Cloudflare Workers Builds 會自動提供 Worker 名稱 override;其他 CI 環境須以私密 build value 提供 RIGSTAGE_WORKER_NAME,不可把實際名稱寫入版本庫。

Access 的 TEAM_DOMAINPOLICY_AUD 是獨立的 runtime secrets,不屬於 build secrets;多個私人 Access applications 可在同一個 POLICY_AUD secret 使用有界、逗號分隔的 audience allowlist,實際值不應進入 Git 或 log。

私人 owner onboarding 只從 shell environment 讀取 OWNER_LOGIN_IDENTITY,並使用 Git 忽略、權限為 0600 且已關閉 workers.dev/preview URL 的 deployment config。工具不接受 command-line identity,也不輸出 identity、D1/Worker identifier 或 SQL;若日後已套用 generation credit migration,可由同一個私密流程建立不超過 1,000 單位的非貨幣 beta entitlement,現有記帳不會被重設。

npm run owner:onboard

真實值必須在執行前由私密 terminal session 放入環境;不要把 export 指令、終端記錄或結果貼入 issue、PR 或文件。

Tracked GENERATION_MODE=disabledGENERATION_MAX_COST_MINOR=0 是 production fail-closed 預設值,不是供應商設定。任何外部生成啟用都需要另一次明確批准、私密設定、費用上限及非正式環境驗證。

自部署入口見 Cloudflare Workers 自部署指南,身份及 D1 設定見 試行存取設定。生成與付款界線見 Generation pipelinePayment boundary,相容性證據見 規則文件,協作及回報渠道見 Contribution workflowSupport,公開安全政策見 SECURITY.md

安全邊界

  • 除 health endpoint 外,API 必須先驗證 Access JWT。
  • 私人 SPA parent 及 deep route 在讀取 Static Assets 前同樣驗證 Access JWT、owner invite 及 active workspace membership。
  • Workspace 選擇必須由 D1 membership 重新核對。
  • 首次身份綁定採用條件更新,失敗後重新讀取持久化 subject。
  • 已綁定身份的 session 與其他讀取不會更新 workspace 偏好或寫入 audit table;明確切換使用固定 PUT 端點,並在 D1 write boundary 重查 subject、active user、workspace 及 membership。
  • Dashboard 只執行有界、workspace-scoped 讀取,不會建立記錄或寫入 audit table。
  • 目錄及素材查詢必須同時限制 workspace;審核及檔案更新使用版本條件,並在 D1 commit 邊界重查產品仍為 active,避免覆寫其他人變更或寫入已封存產品。
  • 組裝讀寫必須同時限制 workspace;讀取空清單不會建立資料,更新使用版本及一次性 mutation token。
  • 匯出在有嚴重錯誤或未知相容性結果時會停止,並排除身份、營運及私人素材欄位。
  • Viewer 只可讀取;staff 只可保存草稿;owner 或 admin 才可核准或拒絕素材。前端拒絕確認只減少誤按,伺服器仍獨立執行角色、workspace、素材版本及狀態檢查。
  • 限流在任何 protected D1 工作前,把已驗證 Access subject 轉成版本化、domain-separated SHA-256 opaque key;raw subject、JWT 及電郵均不會傳入 Rate Limiting binding 或 request log。
  • 原始圖片、模型及渲染輸出必須維持私人存取。
  • Builder 只讀取已核准素材的私人 GLB;總覽每次最多載入九個,並在組裝/選擇切換或頁面卸載時取消未完成讀取及撤銷全部瀏覽器 object URL。
  • 生成工作先原子保留一個非貨幣 credit,提交 D1 job/entitlement/event/audit,再啟動 Workflow;輸入版本、使用權、成本上限、輸出格式及 checksum 任一失敗都不會建立可核准素材,保留 credit 只會釋放一次。
  • 模擬輸出會重設所有人工審核證據;production kill switch 關閉時不會建立工作或呼叫外部服務。

技術、AI 模型與參考資料

  • Runtime AI 模型:沒有。 現有 SyntheticGenerationProvider 是 deterministic TypeScript 測試 adapter,只建立合成 GLB fixture;它不執行 inference、不讀取來源圖片內容,也不呼叫 Workers AI、OpenAI 或第三方 3D provider。
  • 雲端技術: Cloudflare WorkersStatic AssetsAccessD1R2WorkflowsRate Limiting
  • Web 與 3D: ReactReact RouterViteTypeScriptThree.js 及 Khronos glTF 2.0 specification
  • 資料來源: repository 只包含 synthetic fixtures、程式測試資料及公開標準參考;不包含正式 catalogue、用戶、客戶、價格、庫存、圖片、模型、prompt、provider response 或資料庫 dump。
  • 完整的用途對照、版本依據、官方參考連結、AI/dataset 聲明及更新規則見 技術、模型與資料來源

授權 / Licence

RigStage 採用專有原始碼評估授權,不是開源軟件。該授權容許私人、 非生產的內部技術評估、安全審查、相容性測試及概念驗證;不授權正式部署、公開 或持續內部服務營運、再散布、代管或商業使用。硬件/產品品牌、第三方套件與服務, 以及使用者提供的圖片、資料和 3D 模型不在專案授權範圍內。

詳見 LICENSECOPYRIGHT.mdTHIRD_PARTY_NOTICES.md

About

邀請制電腦產品目錄、私人素材審核與 3D PC Builder。 / Invite-only catalogue, private asset review, and 3D PC Builder.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages