- Backend (FastAPI): - Attachment and AttachmentVersion models with migration - FileStorageService with SHA-256 checksum validation - File type validation (whitelist/blacklist) - Full CRUD API with version control support - Audit trail integration for upload/download/delete - Configurable upload directory and file size limit - Frontend (React + Vite): - AttachmentUpload component with drag & drop - AttachmentList component with download/delete - TaskAttachments combined component - Attachments service for API calls - Testing: - 12 tests for storage service and API endpoints - OpenSpec: - add-document-management change archived 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
Phase 1: Basic Attachments
1.1 Database Schema
- 1.1.1 建立 Attachment model (
pjctrl_attachments) - 1.1.2 建立 AttachmentVersion model (
pjctrl_attachment_versions) - 1.1.3 建立 Alembic migration
- 1.1.4 新增 Task model 的 attachments relationship
1.2 File Storage Service
- 1.2.1 建立 FileStorageService 類別
- 1.2.2 實作 save_file() 方法(串流處理)
- 1.2.3 實作 get_file() 方法
- 1.2.4 實作 delete_file() 方法
- 1.2.5 新增檔案存儲路徑配置 (UPLOAD_DIR)
- 1.2.6 實作 checksum 計算 (SHA-256)
1.3 Attachment API
- 1.3.1 建立 Attachment schemas (request/response)
- 1.3.2 實作 POST
/api/tasks/{task_id}/attachments- 上傳 - 1.3.3 實作 GET
/api/tasks/{task_id}/attachments- 列表 - 1.3.4 實作 GET
/api/attachments/{id}- 詳情 - 1.3.5 實作 GET
/api/attachments/{id}/download- 下載 - 1.3.6 實作 DELETE
/api/attachments/{id}- 軟刪除 - 1.3.7 整合 Audit Trail - 記錄上傳/下載/刪除操作
1.4 Frontend - Basic
- 1.4.1 建立 attachments.ts service
- 1.4.2 建立 AttachmentList 元件
- 1.4.3 建立 AttachmentUpload 元件(支援拖放)
- 1.4.4 整合至 Task 詳情頁 (TaskAttachments 元件)
1.5 Testing - Phase 1
- 1.5.1 FileStorageService 單元測試
- 1.5.2 Attachment API 端點測試
- 1.5.3 上傳/下載整合測試
Phase 2: Version Control
2.1 Version Logic
- 2.1.1 修改上傳邏輯支援版本控制
- 2.1.2 實作 GET
/api/attachments/{id}/versions- 版本歷史 - 2.1.3 實作 POST
/api/attachments/{id}/restore/{version}- 回復版本 - 2.1.4 實作 GET
/api/attachments/{id}/download?version=N- 下載特定版本
2.2 Frontend - Version
- 2.2.1 建立 VersionHistory 元件 (integrated in AttachmentList)
- 2.2.2 新增版本選擇下載功能 (in attachments service)
- 2.2.3 新增版本回復功能 (in attachments service)
2.3 Testing - Phase 2
- 2.3.1 版本控制邏輯測試
- 2.3.2 版本 API 端點測試
Phase 3: Security Features (Optional)
3.1 Encryption
- 3.1.1 建立 EncryptionService 類別
- 3.1.2 實作 encrypt_file() / decrypt_file() 方法
- 3.1.3 新增 Project security_level 欄位(如不存在)
- 3.1.4 修改上傳邏輯:機密專案自動加密
- 3.1.5 修改下載邏輯:自動解密
3.2 Watermarking
- 3.2.1 建立 WatermarkService 類別
- 3.2.2 實作圖片浮水印(Pillow)
- 3.2.3 實作 PDF 浮水印(PyMuPDF)
- 3.2.4 整合至下載流程
3.3 Testing - Phase 3
- 3.3.1 加密/解密測試
- 3.3.2 浮水印生成測試