Files
PROJECT-CONTORL/openspec/changes/archive/2025-12-29-add-document-management/tasks.md
beabigegg 3108fe1dff feat: implement document management module
- 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>
2025-12-29 22:03:05 +08:00

2.7 KiB
Raw Blame History

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 浮水印生成測試