| # Hugging Face Spaces 部署檢查清單 |
|
|
| ## 部署前檢查 |
|
|
| ### 必要檔案 |
| - [ ] `Dockerfile` - Docker 建置配置 |
| - [ ] `README.md` - Space 配置檔(包含 YAML front matter) |
| - [ ] `.dockerignore` - 排除不需要的檔案 |
| - [ ] `.env.example` - 環境變數範例 |
| - [ ] `DEPLOYMENT.md` - 部署指南 |
|
|
| ### 專案檔案 |
| - [ ] `package.json` - 根目錄 workspace 配置 |
| - [ ] `pnpm-lock.yaml` - 依賴鎖定檔 |
| - [ ] `pnpm-workspace.yaml` - Workspace 配置 |
| - [ ] `tsconfig.base.json` - TypeScript 基礎配置 |
| - [ ] `tsconfig.json` - TypeScript 配置 |
|
|
| ### 後端檔案 |
| - [ ] `artifacts/api-server/` - 完整後端程式碼 |
| - [ ] `artifacts/api-server/src/index.ts` - 已移除背景 token refresh |
| - [ ] `artifacts/api-server/src/lib/localTempStorage.ts` - 本地暫存邏輯 |
|
|
| ### 前端檔案 |
| - [ ] `artifacts/image-gen/` - 完整前端程式碼 |
| - [ ] `artifacts/image-gen/dist/` - 建置後會自動生成 |
|
|
| ### 資料庫檔案 |
| - [ ] `lib/db/` - 資料庫層 |
| - [ ] `lib/db/package.json` - 已更新為 better-sqlite3 |
| - [ ] `lib/db/drizzle.config.ts` - 已改為 SQLite 配置 |
| - [ ] `lib/db/src/index.ts` - 已改為 SQLite 連接 |
|
|
| ### 共享庫 |
| - [ ] `lib/api-client-react/` - React API 客戶端 |
| - [ ] `lib/api-spec/` - OpenAPI 規格 |
| - [ ] `lib/api-zod/` - Zod 驗證 |
|
|
| ## 環境變數設定 |
|
|
| ### 必要變數(在 Space Settings 中設定) |
| - [ ] `JWT_SECRET` - JWT 密鑰(至少 32 字元隨機字串) |
| - [ ] `ENCRYPTION_KEY` - 加密密鑰(必須是 32 字元) |
|
|
| ### 可選變數 |
| - [ ] `DATABASE_URL` - 資料庫路徑(預設:file:/data/sqlite.db) |
| - [ ] `TEMP_STORAGE_PATH` - 暫存路徑(預設:/app/temp-storage) |
| - [ ] `TURNSTILE_SOLVER_URL` - Turnstile 服務 URL(如有) |
|
|
| ## Space 設定 |
|
|
| ### 基本設定 |
| - [ ] Space SDK 選擇 "Docker" |
| - [ ] Space hardware 選擇 "CPU basic"(免費) |
| - [ ] License 設定為 "MIT" |
|
|
| ### Persistent Storage |
| - [ ] 啟用 Persistent Storage |
| - [ ] 掛載路徑設定為 `/data` |
| - [ ] 確認容量足夠(免費版有限制) |
|
|
| ## 建置檢查 |
|
|
| ### Docker 建置 |
| - [ ] Dockerfile 語法正確 |
| - [ ] 所有依賴都能正確安裝 |
| - [ ] 前端建置成功 |
| - [ ] 後端建置成功 |
| - [ ] 暴露端口 7860 |
|
|
| ### 執行時檢查 |
| - [ ] 伺服器能正常啟動 |
| - [ ] 資料庫檔案能正確建立 |
| - [ ] 暫存目錄能正確建立 |
| - [ ] 日誌輸出正常 |
|
|
| ## 功能測試 |
|
|
| ### 基本功能 |
| - [ ] 首頁能正常載入 |
| - [ ] 用戶註冊功能正常 |
| - [ ] 用戶登入功能正常 |
| - [ ] 第一個用戶成為管理員 |
|
|
| ### 管理功能 |
| - [ ] 能進入管理後台 |
| - [ ] 能設定 geminigen.ai 憑證 |
| - [ ] 能查看系統狀態 |
| - [ ] 能管理用戶 |
|
|
| ### 圖像生成 |
| - [ ] 能輸入提示詞 |
| - [ ] 能選擇模型 |
| - [ ] 能選擇風格和比例 |
| - [ ] 能上傳參考圖像 |
| - [ ] 能成功生成圖像 |
| - [ ] 圖像能正常顯示 |
|
|
| ### 影片生成 |
| - [ ] 能輸入提示詞 |
| - [ ] 能選擇模型(Grok-3 / Veo 3.1) |
| - [ ] 能設定進階選項 |
| - [ ] 能上傳參考圖像 |
| - [ ] 能成功生成影片 |
| - [ ] 進度追蹤正常 |
| - [ ] 影片能正常播放 |
|
|
| ### 歷史記錄 |
| - [ ] 圖像歷史能正常顯示 |
| - [ ] 影片歷史能正常顯示 |
| - [ ] 能刪除記錄 |
| - [ ] 私密/公開過濾正常 |
|
|
| ## 效能檢查 |
|
|
| ### 資源使用 |
| - [ ] CPU 使用率合理 |
| - [ ] 記憶體使用率合理 |
| - [ ] 磁碟空間足夠 |
|
|
| ### 回應時間 |
| - [ ] 頁面載入速度可接受 |
| - [ ] API 回應時間合理 |
| - [ ] 圖像生成時間正常 |
| - [ ] 影片生成時間正常 |
|
|
| ## 維護檢查 |
|
|
| ### 自動清理 |
| - [ ] 舊檔案能自動清理(24 小時) |
| - [ ] 清理日誌正常輸出 |
| - [ ] 磁碟空間不會持續增長 |
|
|
| ### 日誌監控 |
| - [ ] 能在 Space Logs 查看日誌 |
| - [ ] 錯誤日誌清晰可讀 |
| - [ ] 無異常錯誤持續出現 |
|
|
| ### 備份 |
| - [ ] 知道如何備份資料庫 |
| - [ ] 知道如何還原資料庫 |
| - [ ] 定期備份計畫已建立 |
|
|
| ## 安全檢查 |
|
|
| ### 憑證安全 |
| - [ ] JWT_SECRET 是隨機生成的 |
| - [ ] ENCRYPTION_KEY 是隨機生成的 |
| - [ ] 不在程式碼中硬編碼敏感資訊 |
| - [ ] .env 檔案已加入 .gitignore |
|
|
| ### 存取控制 |
| - [ ] 管理功能需要管理員權限 |
| - [ ] 私密內容只有擁有者能查看 |
| - [ ] API 端點有適當的認證 |
|
|
| ## 文件檢查 |
|
|
| ### 使用者文件 |
| - [ ] README.md 說明清楚 |
| - [ ] DEPLOYMENT.md 步驟完整 |
| - [ ] .env.example 註解清楚 |
|
|
| ### 開發文件 |
| - [ ] 程式碼註解充足 |
| - [ ] 關鍵邏輯有說明 |
| - [ ] 已知限制有記錄 |
|
|
| ## 部署後驗證 |
|
|
| ### 立即檢查 |
| - [ ] Space 狀態為 "Running" |
| - [ ] 能訪問 Space URL |
| - [ ] 首頁正常顯示 |
| - [ ] 無 JavaScript 錯誤 |
|
|
| ### 24 小時後檢查 |
| - [ ] Space 仍在運行 |
| - [ ] 資料庫資料保存正常 |
| - [ ] 舊檔案已自動清理 |
| - [ ] 無記憶體洩漏 |
|
|
| ### 一週後檢查 |
| - [ ] 長期穩定性良好 |
| - [ ] 磁碟空間使用穩定 |
| - [ ] 無異常錯誤累積 |
| - [ ] 用戶回饋正面 |
|
|
| ## 問題排查 |
|
|
| ### 常見問題 |
| - [ ] 知道如何查看日誌 |
| - [ ] 知道如何重啟 Space |
| - [ ] 知道如何還原資料 |
| - [ ] 知道如何聯繫支援 |
|
|
| ### 緊急處理 |
| - [ ] 有備份還原計畫 |
| - [ ] 有降級方案 |
| - [ ] 有聯繫管道 |
|
|
| ## 完成確認 |
|
|
| - [ ] 所有檢查項目都已完成 |
| - [ ] 所有功能都正常運作 |
| - [ ] 文件都已更新 |
| - [ ] 團隊成員都已知悉 |
|
|
| --- |
|
|
| **部署日期**: _______________ |
| |
| **部署人員**: _______________ |
| |
| **Space URL**: _______________ |
| |
| **備註**: |
| |