kioai / DEPLOYMENT_CHECKLIST.md
kinaiok
Initial deployment setup for Hugging Face Spaces
5ef6e9d
# 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**: _______________
**備註**: