Enhanced upload process with better logging and true asset ID retrieval.
UPLOAD LOGGING IMPROVEMENTS:
- Now logs asset representation being sent:
- Model ID
- Security policy count
- Metadata field count
- Helps debug upload issues
ASSET ID vs JOB ID FIX:
Previously: When DAM returned job_handle, we stored job_id as asset_id
Now: Poll the job to get the ACTUAL asset ID
NEW METHOD: _poll_job_for_asset_id()
- Polls /v6/jobs/{job_id} endpoint (max 10 attempts, 2 sec delay)
- Checks multiple response locations for asset_id
- Logs job status progress
- Returns actual asset ID when job completes
- Falls back to job_id if asset ID not found
RESPONSE HANDLING:
1. If 'asset_resource_list' in response:
- Direct asset ID (synchronous upload)
- Log: "Upload successful: file.jpg → Asset ID: abc123"
2. If 'job_handle' in response:
- Async job (needs polling)
- Log: "Upload accepted (async): file.jpg → Job ID: job123"
- Log: "Polling job for actual asset ID..."
- Poll job status every 2 seconds
- Log: "Job status (attempt X): running/completed"
- Log: "✓ Job completed → Asset ID: abc123"
BENEFITS:
✓ True asset ID stored in database (not job ID)
✓ Better upload debugging with detailed logs
✓ Can track job progress
✓ Handles both sync and async uploads correctly
LOGGING EXAMPLE:
```
Uploading: my_file.jpg
Parent Folder ID: abc123
Asset Representation:
Model ID: ferrero.model.video
Security Policies: 2
Metadata Fields: 27
Upload accepted (async): my_file.jpg → Job ID: job456
Polling job for actual asset ID...
Job status (attempt 1): running
Job status (attempt 2): completed
✓ Job completed → Asset ID: asset789
```
Changes:
- scripts/shared/dam_client.py
- Added upload logging before API call
- Added _poll_job_for_asset_id() method
- Updated upload_asset() to poll jobs for asset ID
- Returns both asset_id and job_id in result
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| __pycache__ | ||
| __init__.py | ||
| box_client.py | ||
| config_loader.py | ||
| dam_client.py | ||
| database.py | ||
| filename_parser.py | ||
| metadata_extractor_mvp.py | ||
| notifier.py | ||