## Phase 1: Basic Attachments ### 1.1 Database Schema - [x] 1.1.1 建立 Attachment model (`pjctrl_attachments`) - [x] 1.1.2 建立 AttachmentVersion model (`pjctrl_attachment_versions`) - [x] 1.1.3 建立 Alembic migration - [x] 1.1.4 新增 Task model 的 attachments relationship ### 1.2 File Storage Service - [x] 1.2.1 建立 FileStorageService 類別 - [x] 1.2.2 實作 save_file() 方法(串流處理) - [x] 1.2.3 實作 get_file() 方法 - [x] 1.2.4 實作 delete_file() 方法 - [x] 1.2.5 新增檔案存儲路徑配置 (UPLOAD_DIR) - [x] 1.2.6 實作 checksum 計算 (SHA-256) ### 1.3 Attachment API - [x] 1.3.1 建立 Attachment schemas (request/response) - [x] 1.3.2 實作 POST `/api/tasks/{task_id}/attachments` - 上傳 - [x] 1.3.3 實作 GET `/api/tasks/{task_id}/attachments` - 列表 - [x] 1.3.4 實作 GET `/api/attachments/{id}` - 詳情 - [x] 1.3.5 實作 GET `/api/attachments/{id}/download` - 下載 - [x] 1.3.6 實作 DELETE `/api/attachments/{id}` - 軟刪除 - [x] 1.3.7 整合 Audit Trail - 記錄上傳/下載/刪除操作 ### 1.4 Frontend - Basic - [x] 1.4.1 建立 attachments.ts service - [x] 1.4.2 建立 AttachmentList 元件 - [x] 1.4.3 建立 AttachmentUpload 元件(支援拖放) - [x] 1.4.4 整合至 Task 詳情頁 (TaskAttachments 元件) ### 1.5 Testing - Phase 1 - [x] 1.5.1 FileStorageService 單元測試 - [x] 1.5.2 Attachment API 端點測試 - [x] 1.5.3 上傳/下載整合測試 ## Phase 2: Version Control ### 2.1 Version Logic - [x] 2.1.1 修改上傳邏輯支援版本控制 - [x] 2.1.2 實作 GET `/api/attachments/{id}/versions` - 版本歷史 - [x] 2.1.3 實作 POST `/api/attachments/{id}/restore/{version}` - 回復版本 - [x] 2.1.4 實作 GET `/api/attachments/{id}/download?version=N` - 下載特定版本 ### 2.2 Frontend - Version - [x] 2.2.1 建立 VersionHistory 元件 (integrated in AttachmentList) - [x] 2.2.2 新增版本選擇下載功能 (in attachments service) - [x] 2.2.3 新增版本回復功能 (in attachments service) ### 2.3 Testing - Phase 2 - [x] 2.3.1 版本控制邏輯測試 - [x] 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 浮水印生成測試