Skip to content

Latest commit

 

History

186 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AisleStage — AI 電商素材工作台

AisleStage 是 contact-first、邀請制的 AI 電商素材工作台。它把一張有權使用的商品圖片、已核實的繁中/英文商業資料,以及人工批准,整理成一套 1:1、4:5、9:16 Campaign Pack。

AisleStage is a contact-first, invite-only ecommerce asset workspace. It turns an approved product image, verified Traditional Chinese and English commercial copy, and explicit human approval into a coordinated three-format Campaign Pack.

部署方式 / Deployment:本專案以一個 Cloudflare Worker 部署。Worker 提供 API、Queue、Scheduled handler 及存取控制;Vite 建置的 React SPA 則以 Workers Static Assets 隨同一版本一併部署。它不是只部署前端的 Cloudflare Pages 專案。

公開主頁位於 /,私人工作區位於 /app。正式環境先以 Cloudflare Access 驗證身份,Worker 再驗證簽章及 workspace membership。公開流程不提供自助註冊、公開生成或付款。

目前預設以確定性 SVG 合成保留商品原圖及準確文字。Campaign Agent 只檢查資料、規劃固定輸出並等待人工批准,不會自行新增產品宣稱、發佈廣告或跳過批准。

Campaign Agent 的方法只供同一 Worker 內部 Durable Object RPC 使用;repository 不把 這些方法標記成可由外部 WebSocket client 呼叫的 Agent SDK callable methods。

可用性 / Availability 成熟度 / Maturity 證據 / Evidence
邀請制 closed beta;沒有自助註冊 / Invite-only; no self-service signup Source v0.6.0; latest GitHub release v0.5.1 項目入口 / Project portal · 產品規格 / Product spec · 安全政策 / Security · 授權 / Licence

技術棧 / Technology stack

層面 使用技術 用途
前端 React 19、TypeScript 7、Vite 8 雙語 SPA、建置與靜態資產
Edge runtime Cloudflare Workers、Workers Static Assets、Wrangler 4 API、SPA、Queue consumer、Cron 與部署
身份與授權 Cloudflare Access、jose Edge identity、JWT 驗證及 workspace 授權
受保護資料 Cloudflare D1 應用資料;實際內容及內部組織不在公開概覽記錄
私人檔案 Cloudflare R2 只經授權 Worker route 讀取的來源及輸出檔案
非同步處理 Cloudflare Queues Campaign Pack 輸出、重試及 dead-letter 隔離
有狀態 Agent Cloudflare Agents SDK、Durable Objects Workspace-scoped 計劃與批准狀態
測試 Vitest、Cloudflare Vitest integration 隔離的 Worker、D1、R2、Queue 與 Durable Object 測試
可選 AI OpenAI Responses API、Image API 受閘門控制的 assisted adapter;預設停用

版本以 package.json 與 lockfile 為準。Cloudflare 方案、限制、模型可用性及價格會變動,部署前應重新核對官方文件。

已完成能力

  • Session、帳號狀態及 workspace 授權;
  • 公開雙語產品主頁與獨立 /app 工作區;
  • Cloudflare Access JWT 驗證及受控 workspace membership;
  • active membership 的真實 workspace 切換:按需載入最多 50 個工作區,切換後完整重新載入私人圖片、Agent、用量及管理 state;per-tab API scope 與瀏覽器資源 cookie 都會再次由 Worker 核對 D1 membership,不會建立 membership 或改變角色;
  • owner/admin 專用的存取管理:owner 可加入 admin/member、調整非 owner 角色及移除非本人員;admin 只可加入/移除一般 member;所有操作只限目前 workspace,且不會改動 Cloudflare Access allow policy 或發送邀請電郵;
  • owner/admin 專用的工作區活動記錄;只顯示操作類型、時間及已知操作者,不輸出圖片、原始檔名或 Campaign Brief;
  • 全成員可讀的 workspace-scoped 用量 dashboard;只顯示目前可用/預留數、完成/退回總數及近期技術事件,不輸出 ledger、generation 或 provider identity;
  • owner/admin 專用的整合就緒度 dashboard;按需核對 Access、requested/effective Generation 與 Agent mode、workspace 併發、五個 assisted gate、server credential 是否存在,以及付款仍停用的固定邊界,不返回 secret、provider identity、workspace identity 或部署 mapping;
  • versioned Campaign Brief JSON 本機匯入/匯出;64 KiB、10 秒、strict UTF-8/exact schema/欄位上限及固定推廣目的預檢,不傳送網絡 request,亦不包含 workspace、user、圖片或 provider identity;匯入後必須重新核對及批准 Agent 計劃;
  • 工作台進階品牌控制:可直接管理主要語言、1–8 個 #RRGGBB 品牌色、限制字詞及最多 12 個目標渠道;品牌色由 browser、Agent/Campaign Pack client、Worker、私人品牌庫與 SVG compositor 共用同一 fail-closed 驗證,任意 CSS 色值不會進入顯示或輸出;逗號、頓號、分號或換行分隔的限制字詞會在批准前比對雙語商業文案,渠道只作 Brief 分發記錄,不會自動發佈或改變固定三個輸出;
  • 私人 R2 商品圖上傳;browser 先以 10 秒有界本機預檢核對 4 MB/8192 px/32 MP、格式、結構、metadata 與尺寸,通過後才建立 request,Worker 再獨立重驗並保存已驗證尺寸;另包括顯式商業使用權確認及授權預覽;
  • workspace-scoped 私人來源圖庫;可重用最近 20 張已驗收圖片並查看已驗證寬高及權利確認狀態,原始本機檔名、儲存 identity 與確認操作者不會進入列表;migration 前的舊資料會明確標示尺寸或使用權未確認;
  • workspace-scoped 核准商品資料庫;只保存 Agent 已批准的雙語商業欄位,相同內容去重,不連帶圖片或品牌;
  • workspace-scoped 品牌快照庫;只保存目前已由 Agent 核准的品牌欄位,相同內容會去重,選用後必須重新規劃;
  • Workspace-scoped Campaign Agent 與人工批准 revision;
  • 原子、具冪等鍵的三比例 Campaign Pack 建立;
  • Queue 重送安全、失敗回復及輸出額度核算;
  • 私人 SVG 草稿、逐一人工審核、受控下載及繁中/英文文案;已核准的 canonical SVG 可保留原件,並在瀏覽器本機另存固定尺寸 PNG,衍生檔不會上傳或改寫正式輸出;
  • Campaign Packs 與素材庫可重開歷史私人預覽、核對 provenance、由 owner/admin 審批草稿、下載已核准 SVG 原件、本機另存 PNG 及逐項刪除;
  • 本機合成 demo 與隔離 Workers integration tests。

詳細產品、資料及執行合約見 docs/PRODUCT_SPEC.mddocs/ENGINEERING.md。公開文件只描述必要的技術界面,不記錄真實帳戶、資源拓撲、資料表內容、營運資料或內部部署映射。

本機開發

需要 Node.js 22 或更新版本。

npm ci
npm run dev

開發介面使用合成 demo 資料;整合測試使用隔離 bindings,不連接正式資源或付費 provider。

完整檢查:

git diff --check
npm run check
npm test
npm run build
npm run cf:dry-run
npm audit --omit=dev
npm run release:check

npm run check 亦會核對由 wrangler types 產生的 worker-env.d.ts,避免 bindings 與程式型別漂移。

自部署快速步驟 / Self-hosting quick start

自部署會在你的 Cloudflare 帳戶建立一套全新的 Worker、D1、R2、Queues、Durable Object 及 Access 設定;它不會連接 AisleStage 的任何既有環境或資料。本版本庫採用專有原始碼評估授權,不是開源軟件;它只允許受條款限制的私人、非生產評估,正式部署、服務營運、再散布或商業使用須先取得獨立書面許可。商品圖、品牌、商標及第三方服務權利亦須另外核對。

  1. Fork/clone repository,在 Node.js 22+ 執行 npm ci
  2. 執行 npm run checknpm testnpm run buildnpm run cf:dry-runnpm run release:check
  3. 使用 npx wrangler login --use-keyring 登入你自己的 Cloudflare 帳戶;不要把 whoami 或 dashboard 輸出貼到公開 issue/CI log。
  4. 在自己的帳戶建立一個 D1 database、一個 private R2 bucket、一個 generation Queue 及一個 dead-letter Queue。
  5. 把公開 placeholder 模板複製成被 Git 忽略的 wrangler.local.jsonc,限制檔案權限,並只在該檔填入自己的資源映射與 Access 設定。
  6. 建立 Cloudflare Access self-hosted application,明確保護 /app/app/*/api/*。Allow policy 只加入獲批准身份,不可使用 Everyone
  7. 先核對目標,再執行 npm run cf:migrate;之後執行 npm run cf:deploy。新環境保持 GENERATION_MODE=disabledASSISTED_PROVIDER=disabled
  8. 匿名及已授權地檢查根路由、/app、深層 workspace route、session、私人檔案 headers 與 generation kill switch。

完整命令、設定欄位、首次 owner 建立、驗收、更新與 AI 選配界線見 docs/SELF_HOSTING.md。Cloudflare Access 的 path/JWT 細節見 docs/ACCESS_SETUP.md

Cloudflare 公開設定合約

程式依賴下列穩定、通用的 binding 名稱:

DB
MEDIA_BUCKET
GENERATION_QUEUE
CAMPAIGN_AGENT
ASSETS

Tracked wrangler.jsonc 只可保存 placeholder、通用 binding 名稱及 fail-closed 預設值。它不是可直接連接正式環境的設定檔。

可進 Git 必須留在受保護設定
通用 binding 名稱、placeholder、公開模式說明 Account/database identifier、實際資源名稱及 deployment URL
合成 fixture、公開測試、一般錯誤類別 真實使用者、商品、campaign、brief、營運及資料庫內容
空白 secret 名稱示例 API key、Access audience、team domain、cookie、JWT 及邀請碼
官方文件 URL Dashboard 截圖、CLI inventory、private object URL 及 provider payload

正式值只可放在被忽略且限制權限的本機設定、Wrangler secret、Cloudflare Secrets Store 或同等受保護系統。不要把 secret 放進 VITE_* 變數、前端 bundle、.env、文件、commit、PR、issue、artifact 或 log。

預設安全模式為:

  • AUTH_MODE=access
  • ACCESS_AUTO_PROVISION=disabled
  • REGISTRATION_MODE=closed
  • GENERATION_MODE=disabled
  • AGENT_MODE=deterministic
  • ASSISTED_PROVIDER=disabled

確定性輸出不需要外部 AI key。任何 assisted 模式都必須先完成 provider、資料處理、固定評估、成本及 secret 五類批准;正式商品圖、準確文字、授權與伺服器端核算控制仍不可交由模型決定。

文件索引

所有公開測試、截圖、commit、PR 及文件只可使用合成資料。執行 npm run release:check 只是其中一道閘門;發佈前仍需人工檢查 staged diff、commit/PR 文字及擬上傳 artifact。本次文件核對不代表任何實際部署狀態。

授權 / Licence

AisleStage 採用專有原始碼評估授權,不是開源軟件。該授權容許私人、 非生產的內部技術評估、安全審查、相容性測試及概念驗證;不授權正式部署、公開 或持續內部服務營運、再散布、代管或商業使用。

AisleStage uses a proprietary source evaluation licence, not an open-source licence. It permits limited private, non-production evaluation, but not production deployment, operation of a public or ongoing internal service, redistribution, hosting, or commercial use.

商品圖片、產品資料、廣告文案、品牌、商標、模型及平台服務不在專案授權範圍內。 介面的 rights confirmation 只記錄提交者聲明,不是授權保證。詳見 COPYRIGHT.mdTHIRD_PARTY_NOTICES.md

技術、AI 模型與參考資料 / Technology, AI models and references

以下是本 repository 實際使用或明確參考的公開技術資料;核對日期為 2026-08-10

實際使用的技術

AI 模型與 API 狀態

  • 預設及自部署基線不使用 AI 模型deterministic compositor 直接組合已批准商品圖與文字;新部署保持 generation/assisted 功能停用。
  • Repository 包含一個可選但預設停用的 OpenAI adapter:gpt-5.6-terraResponses API/Structured Outputs 提供受限規劃與文案結構;gpt-image-2Image generation API 產生背景候選。
  • Adapter success response 具實際串流 byte/chunk 上限、嚴格 JSON/欄位驗證及 bounded PNG 檢查;不以 Content-Length 作唯一大小保護。
  • Adapter request 及完整 response body 共用 30 秒 deadline;逾時中止後只按 bounded Queue policy 重試,永久失敗才冪等退回 reserved output。
  • Workers AI model catalogAI Gateway 只作評估與治理參考,不是目前已接駁的 production provider
  • 模型名稱、輸入資料、價格、可用地區及保留政策會變動。啟用前必須重新做合成資料評估、人工保真檢查、法律/資料處理核對及成本上限;不得把真實 prompt、response、商品圖、brief 或 key 寫入 repository 或 log。

本 repository 不包含客戶資料集、正式資料庫 dump、provider response corpus 或模型訓練資料。示例與測試只應使用合成內容;上述連結是實作與安全界線的主要公開參考,並不代表第三方服務背書或授權。

About

邀請制 AI 電商素材工作台,以已核實資料及人工批准建立 Campaign Pack。 / Invite-only, human-reviewed ecommerce asset workspace.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages