Commit graph

18 commits

Author SHA1 Message Date
DJP
c4eec014a4 Add test upload feature for direct folder testing
New test upload panel in Upload workflow:
- Upload directly to any folder ID (bypasses campaign selection)
- Pre-filled with test folder: e96080ba0cd1427d253a28a87504b6665eaa02cb
- Folder ID can be edited for testing different folders
- Shows success/failure with full error details
- Uses same upload mechanism as regular workflow

Use case:
- Test if specific folders allow uploads
- Bypass campaign workflow for testing
- Verify folder permissions
- Isolate upload issues

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-27 13:12:25 -04:00
DJP
1058525c3f Add metadata JSON download for master assets
New feature in Download workflow (A1→A2):
- Added '💾 JSON' button next to each master asset
- Downloads complete asset metadata as JSON file
- Filename format: {assetname}_metadata.json
- Pretty-printed JSON for readability

Use case:
- Inspect full metadata structure
- Reference for upload field requirements
- Debug metadata field values
- Documentation of master asset data

Buttons per asset:
- 📥 Download (file)
- 💾 JSON (metadata)
- 📋 View (toggle metadata display)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-27 11:39:36 -04:00
DJP
289d34bf2b Re-enable master asset fetching + Upload troubleshooting document
Master Asset Fetching:
- Re-enabled with better error handling
- Stores only lightweight data: asset_id, name, mime_type, model_id, security_policies
- Avoids storing massive metadata structure that causes crashes
- Graceful error handling if fetch fails

Upload Troubleshooting Document (UPLOAD_TROUBLESHOOTING.md):
- Comprehensive summary of upload blocking issue
- Details of all 5 upload approaches tested
- Technical specifications of API requests
- Error messages and HTTP codes
- Questions for Ferrero DAM support team
- Comparison of working downloads vs blocked uploads
- Recommended next steps

Ready for client to share with Ferrero support team to resolve API upload permissions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 11:24:39 -04:00
DJP
0ebdf5c755 Disable master assets fetching in upload - causes PHP crashes
Upload workflow issues:
- Master asset metadata structures too large for PHP to process
- Causes session storage crashes and HTTP 500 errors
- Temporarily disabled master assets fetching
- Upload folder finding still works

Current upload status:
- ALL file extensions (.tif, .jpg, .png) rejected by API
- Error: "Cannot import asset having restricted file extension"
- Tested with minimal payloads (just manifest + folder + file)
- Suggests server-level restrictions or account permissions issue

Awaiting client confirmation on:
- API upload permissions for user account
- Allowed file extensions for API uploads
- Alternative upload methods if API is restricted

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 11:17:26 -04:00
DJP
3a41a4f964 Add debug and reset features to Rework workflow (A5→A6)
Rework Workflow Enhancements:
- Add "Debug: Load ALL Campaigns" button to Rework tab
- Display all campaigns with their Content Scaling Status
- Add "Reset to A5" button for each campaign in debug view
- Show OAuth status and API response details
- Expandable campaign cards with full metadata view
- Session clearing when resetting campaigns

Upload Debug Improvements:
- Show uploaded filename and detected MIME type
- Display master asset being used for metadata
- Better visual separation of upload file vs master asset info

Mirrors Download workflow debug functionality for consistency across all workflow tabs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 10:09:55 -04:00
DJP
4f5ac8bfe7 Add standalone Upload workflow with master asset metadata selection
Upload Workflow Improvements:
- Fetch master assets metadata when finding upload folder (standalone workflow)
- Add UI selector to choose which master asset's metadata to copy
- Show master asset details: name, type, metadata model, security policies
- Add comprehensive upload debug output showing file/metadata info
- Add "Reset to A1" button in Upload tab for testing
- Default to first master asset if none selected

Upload Implementation Progress:
- Tried multiple approaches to bypass file extension restrictions
- Current status: All file extensions blocked by API (jpg, tif, png)
- Minimal upload attempt: manifest + security_policy + parent_folder
- Issue: "Cannot import asset having restricted file extension" for all types
- Suggests API upload restrictions or account-level permissions needed

Technical Details:
- Upload endpoint: /v6/assets (POST with multipart/form-data)
- Required fields: manifest, parent_folder_id, files, asset_representation
- Security policy ID: 1594 (from V3 collection)
- File extension restrictions appear to be server/account level

Next Steps:
- Verify API upload permissions with client
- Check allowed file extensions for API uploads
- May need different upload approach or web interface integration

Working Features:
-  Download workflow (A1 → A2) fully functional
-  Status updates working with proper locking
-  Master asset metadata fetching and selection
- 🔄 Upload blocked by file extension restrictions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 09:50:43 -04:00
DJP
156f9ae51d Fix status updates and enhance workflow with proper error handling
Major improvements to workflow_v3.php and supporting classes:

**Status Updates (A1→A2, A2→A3, A5→A6):**
- Fix StatusManager to use correct PATCH endpoint: /v6/folders/{id}
- Add lock_strategy=optimistic parameter to prevent locking errors
- Update request body structure to use edited_folder format
- Status updates now working correctly

**Status Field Extraction:**
- Fix CampaignFormatter to extract CONTENT.SCALING.STATUS field
- Handle domain values with field_value.value path
- Now correctly filters campaigns by status (A1, A2, A5, etc.)

**Error Handling:**
- Extract and display actual API error messages
- Show HTTP status codes in all error messages
- Add expandable debug panels with full API responses
- Enhanced upload error reporting with detailed diagnostics

**Campaign Search:**
- Update to use Postman collection requests directly (avoids 503 errors)
- Fix URL encoding (rawurlencode instead of urlencode)
- Add comprehensive debug output showing OAuth status and API responses
- Search now attempts Postman request first, falls back to manual query

**Upload Improvements:**
- Rewrite AssetUploader to use native PHP CURLFile for multipart uploads
- Add support for additional file types: .mov, .mp4, .avi, .zip, .txt, .doc, .xlsx
- Increase max upload size to 100MB for video files
- Simplify asset_representation to minimal structure
- Add infrastructure to inherit metadata from master assets

**Testing Features:**
- Add "Reset to A1" button for testing workflow iterations
- Add debug mode to view all campaigns and their metadata
- Show Content Scaling Status on all campaign cards
- Display filtering debug info (total vs filtered counts)

**UI Improvements:**
- Rename buttons to clarify "Content Scaling Status" terminology
- Add status badges to campaign cards showing current status
- Better visual feedback for successful/failed operations

Current Status: Workflow A1→A2 fully working. Upload A2→A3 ready for testing
once DAM server recovers from HTTP 503 errors.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 16:43:09 -04:00
DJP
cf71bcfd96 Complete workflow V3: Add Upload (A2→A3) and Rework (A5→A6) workflows
NEW: Upload Workflow (A2→A3)
- Load campaigns with status A2 (assets sent to agency)
- Select campaign and find upload target folder (Final Assets)
- Multi-file upload with drag-drop interface
- AssetUploader class with multipart/form-data support
- Upload files with metadata to DAM
- Update status to A3 after upload

NEW: Rework Workflow (A5→A6)
- Load campaigns with status A5 (rework needed from agency)
- Select campaign and get rework assets
- Download individual or bulk rework assets
- Beautiful metadata display
- Update status to A6 when rework assets received

Features:
- Three complete workflow tabs (Download, Upload, Rework)
- Status transitions: A1→A2, A2→A3, A5→A6
- Session-based workflow state management
- Clear workflow data button for each tab
- Campaign selection with visual feedback
- Download confirmed working (tested with real asset)
- OAuth2 auto-refresh throughout all workflows

Technical:
- AssetUploader class for multipart file uploads
- Proper metadata JSON structure for uploads
- Support for multiple file formats (JPG, PNG, PDF, AI, PSD, etc.)
- Error handling for each workflow step
- Beautiful UI with color-coded status badges

Ready for testing with real campaign data!

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-17 16:43:26 -04:00
DJP
8cfa971078 Add debug for asset_content_info structure and try all renditions 2025-10-17 15:52:44 -04:00
DJP
9bf6813575 Add fallback to preview/thumbnail renditions if original file missing 2025-10-17 15:50:59 -04:00
DJP
7bd8c30803 Fix rendition URL path - remove duplicate /otmmapi/ prefix 2025-10-17 15:49:15 -04:00
DJP
e0ec556c5e Use cached asset data from folder listing for download (has rendition URLs) 2025-10-17 15:47:36 -04:00
DJP
02c2f0343c Fix: Use load_type=full to get rendition URLs in asset_content_info 2025-10-17 15:44:59 -04:00
DJP
6ea945aabc Fix rendition URL extraction from asset_content_info 2025-10-17 15:38:51 -04:00
DJP
1f88226426 Fix download using renditions + beautiful metadata display
MAJOR FIX: Download now works!
- Extract rendition URL from asset metadata (content.url)
- Download via /v6/renditions/{id} instead of /v6/assets/{id}/contents
- Fallback to direct download if no rendition found
- Files now download successfully!

Beautiful Metadata Display:
- Color-coded sections with icons
- Basic Info (blue) - asset details
- Content Info (green) - file size, dimensions, URLs
- Custom Fields (yellow) - collapsible by category
- Permissions (red) - visual checkmarks
- Renditions (teal) - all available versions

Download Improvements:
- First fetch asset metadata to find correct download URL
- Try rendition URL from metadata
- Show download method and URL used
- Better error messages with tried URL

Metadata Features:
- Grid layout for easy reading
- Collapsible sections to reduce clutter
- Human-readable field names
- Array values displayed as comma-separated
- Shows rendition sizes and dimensions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-17 15:34:21 -04:00
DJP
a165bd347c Fix asset name extraction and add workflow cache clearing
Fixes:
- Extract folder/asset names from INER_NAME_GENERIC field (correct field ID)
- Add fallback to 'name' field if metadata field not found
- Fix debug_assets.php to maintain campaign_id in URL parameters
- Add "Clear Workflow Data" button to reset cached session data
- Improve error messages when files don't exist in storage
- Allow status update even if downloads fail (test environment)

Changes:
- Update extractFolderName() to check INER_NAME_GENERIC first
- Fix debug_assets.php folder and asset name extraction
- Add clear_results action to workflow_v3.php
- Show folder names correctly in debug interface
- Display clear message about test environment file availability

Working:
 OAuth2 authentication
 Campaign search by status
 Folder navigation
 Asset listing with correct IDs
 Metadata extraction
⚠️  Download fails - files don't exist in test environment storage

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-17 15:30:32 -04:00
DJP
633c5a525e Fix workflow V3: metadata display and download error handling
Fixes:
- Metadata button now works (fixed JavaScript and element IDs)
- Display full metadata as JSON when clicked
- Detect and show proper error when files don't exist in storage
- Show detailed download error messages (HTTP 500, file not found)
- Display download success/failure with file size and path
- Use old working Postman collection with OAuth2 configured
- Update StatusManager to use working search pattern + status filter

Changes:
- Switch to Content Scaling Flow.postman_collection_Oliver(New).json
- Fix downloadAsset to detect JSON error responses
- Improve metadata display with toggle functionality
- Show clear error messages for missing files in DAM storage

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-17 15:13:01 -04:00
DJP
a179be5da8 Add Workflow V3 with status-based campaign management
New Features:
- ConfigV3 class with test/production environment switching
- StatusManager for campaign status updates (A1→A2→A3, A5→A6)
- workflow_v3.php with tabbed interface for different workflows
- Auto-refreshing OAuth2 token (60-second buffer before expiry)
- Download workflow: Load A1 campaigns → Download master assets → Update to A2
- Metadata display for all assets
- Configurable base URLs for certificate auth and IP filtering

Status Workflow:
- A1: Ready for localization → Download assets → A2
- A2: Assets sent to agency → Upload processed → A3 (coming soon)
- A5: Rework needed → Download rework assets → A6 (coming soon)

Technical:
- Uses Content Scaling Flow V3.postman_collection.json
- Supports multiple environments (test/production)
- Session-based workflow state management
- Master Assets folder always "01. Master Assets"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-17 15:00:21 -04:00