ferrero-opentext/Python-Version/scripts
DJP 32ad6b0370 Add detailed upload logging and job polling for actual asset ID
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>
2025-11-05 12:38:45 -05:00
..
shared Add detailed upload logging and job polling for actual asset ID 2025-11-05 12:38:45 -05:00
a1_to_a2_download.py Add optional mTLS certificate authentication with --auth-pfx flag 2025-11-04 18:01:23 -05:00
a2_to_a3_upload.py Complete Python automation implementation - All components built 2025-10-30 16:49:14 -04:00
a2_to_a3_upload_polling.py Add Box metadata extraction for CreativeX fields in A2→A3 workflow 2025-11-03 14:26:00 -05:00
a5_to_a6_download.py Add optional mTLS certificate authentication with --auth-pfx flag 2025-11-04 18:01:23 -05:00
b1_to_b2_download.py Add optional mTLS certificate authentication with --auth-pfx flag 2025-11-04 18:01:23 -05:00
daily_report.py Add daily summary report with comprehensive statistics 2025-11-04 16:34:44 -05:00
test_connection.py Add optional mTLS certificate authentication with --auth-pfx flag 2025-11-04 18:01:23 -05:00
test_mtls_cert.py Add optional mTLS certificate authentication with --auth-pfx flag 2025-11-04 18:01:23 -05:00
test_mtls_debug.py Add separate mTLS base URL configuration for certificate authentication 2025-11-05 08:25:31 -05:00