# Testing GCS File Uploads from Frontend ## โœ… Pre-Testing Checklist Before testing, ensure the following are configured: ### 1. Environment Variables (.env file) Make sure your `.env` file has these values: ```env GCP_PROJECT_ID=re-platform-workflow-dealer GCP_BUCKET_NAME=your-bucket-name-here GCP_KEY_FILE=./credentials/re-platform-workflow-dealer-3d5738fcc1f9.json ``` **Important:** - Replace `your-bucket-name-here` with your actual GCS bucket name - Ensure the credentials file path is correct - The credentials file should exist at the specified path ### 2. GCS Bucket Setup - [ ] Bucket exists in GCP Console - [ ] Service account has permissions (Storage Object Admin) - [ ] Bucket is accessible (public or with proper IAM) ### 3. Backend Server - [ ] Backend server is running - [ ] Check backend logs for GCS initialization message: ``` [GCS] Initialized successfully ``` ## ๐Ÿงช Testing Steps ### Test 1: Upload Document (Standalone) 1. **Navigate to a Request Detail page** - Open any existing workflow request - Go to the "Documents" tab 2. **Upload a document** - Click "Upload Document" or browse button - Select a file (PDF, DOCX, etc.) - Wait for upload to complete 3. **Verify in Backend Logs:** ``` [GCS] File uploaded successfully ``` 4. **Check Database:** - `storage_url` field should contain GCS URL like: ``` https://storage.googleapis.com/BUCKET_NAME/requests/REQ-2025-12-0001/documents/... ``` 5. **Verify in GCS Console:** - Go to GCS Console - Navigate to: `requests/{requestNumber}/documents/` - File should be there ### Test 2: Upload Document During Workflow Creation 1. **Create New Workflow** - Go to "Create Request" - Fill in workflow details - In "Documents" step, upload files - Submit workflow 2. **Verify:** - Check backend logs for GCS upload - Check GCS bucket: `requests/{requestNumber}/documents/` - Files should be organized by request number ### Test 3: Upload Work Note Attachment 1. **Open Work Notes/Chat** - Go to any request - Open the work notes/chat section 2. **Attach File to Comment** - Type a comment - Click attachment icon - Select a file - Send the comment 3. **Verify:** - Check backend logs - Check GCS bucket: `requests/{requestNumber}/attachments/` - File should appear in attachments folder ### Test 4: Download/Preview Files 1. **Download Document** - Click download on any document - Should redirect to GCS URL or download from GCS 2. **Preview Document** - Click preview on any document - Should open from GCS URL ## ๐Ÿ” What to Check ### Backend Logs **Success:** ``` [GCS] Initialized successfully { projectId: '...', bucketName: '...' } [GCS] File uploaded successfully { fileName: '...', gcsPath: '...' } ``` **Error (Falls back to local):** ``` [GCS] GCP configuration missing. File uploads will fail. [GCS] GCS upload failed, falling back to local storage ``` ### Database Verification Check the `documents` and `work_note_attachments` tables: ```sql -- Check documents SELECT document_id, file_name, storage_url, file_path FROM documents WHERE request_id = 'YOUR_REQUEST_ID'; -- Check attachments SELECT attachment_id, file_name, storage_url, file_path FROM work_note_attachments WHERE note_id IN ( SELECT note_id FROM work_notes WHERE request_id = 'YOUR_REQUEST_ID' ); ``` **Expected:** - `storage_url` should contain GCS URL (if GCS configured) - `file_path` should contain GCS path like `requests/REQ-2025-12-0001/documents/...` ### GCS Console Verification 1. Go to [GCS Console](https://console.cloud.google.com/storage) 2. Navigate to your bucket 3. Check folder structure: ``` requests/ โ”œโ”€โ”€ REQ-2025-12-0001/ โ”‚ โ”œโ”€โ”€ documents/ โ”‚ โ”‚ โ””โ”€โ”€ {timestamp}-{hash}-{filename} โ”‚ โ””โ”€โ”€ attachments/ โ”‚ โ””โ”€โ”€ {timestamp}-{hash}-{filename} ``` ## ๐Ÿ› Troubleshooting ### Issue: Files not uploading to GCS **Check:** 1. `.env` file has correct values 2. Credentials file exists at specified path 3. Service account has correct permissions 4. Bucket name is correct 5. Backend logs for errors **Solution:** - System will automatically fall back to local storage - Fix configuration and restart backend - Re-upload files ### Issue: "GCP configuration missing" in logs **Cause:** Missing or incorrect environment variables **Fix:** ```env GCP_PROJECT_ID=re-platform-workflow-dealer GCP_BUCKET_NAME=your-actual-bucket-name GCP_KEY_FILE=./credentials/re-platform-workflow-dealer-3d5738fcc1f9.json ``` ### Issue: "Key file not found" **Cause:** Credentials file path is incorrect **Fix:** - Verify file exists at: `Re_Backend/credentials/re-platform-workflow-dealer-3d5738fcc1f9.json` - Update `GCP_KEY_FILE` path in `.env` if needed ### Issue: Files upload but can't download/preview **Cause:** Bucket permissions or CORS configuration **Fix:** - Check bucket IAM permissions - Verify CORS is configured (see GCP_STORAGE_SETUP.md) - Check if bucket is public or using signed URLs ## โœ… Success Indicators - โœ… Backend logs show "GCS Initialized successfully" - โœ… Files upload without errors - โœ… Database `storage_url` contains GCS URLs - โœ… Files visible in GCS Console under correct folder structure - โœ… Downloads/previews work from GCS URLs - โœ… Files organized by request number with documents/attachments separation ## ๐Ÿ“ Notes - **No Frontend Changes Required:** The frontend uses the same API endpoints - **Automatic Fallback:** If GCS is not configured, system uses local storage - **Backward Compatible:** Existing local files continue to work - **Folder Structure:** Files are automatically organized by request number