Fixed issue where only 1 of 3 master asset IDs was being added to the FERRERO.MASTERASSETIDS tabular field. The bug was caused by calling _add_master_asset_id_field() before _add_master_asset_ids_field(), which created the field with a single value and blocked the multi-value method from adding all IDs. Changes: - metadata_extractor_mvp.py: Prioritize master_opentext_ids parameter using if/elif logic to prevent single-ID method from blocking multi-ID - a2_to_a3_upload_polling.py: Load multiple master assets in PPR mode - filename_parser.py: Parse multiple tracking IDs (e.g., ID1+ID2+ID3) - query_db.py: Fix .env loading path - Added documentation and test files for multiple master asset IDs Tested in PPR with 3 tracking IDs (BqB8vo+SfUQ7m+laRJo0) - all 3 master asset IDs now correctly appear in the metadata structure. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
5 KiB
5 KiB
PPR-Only Multiple Tracking IDs - Implementation Complete
✅ Changes Implemented
Multiple tracking IDs feature is now ACTIVE in PPR and DISABLED in PROD via environment detection.
Files Modified
1. scripts/shared/filename_parser.py
- Added
__init__method with DAM URL parameter - Added
_is_ppr_environment()method - Updated tracking ID parsing to:
- PPR: Parse multiple IDs separated by
+(e.g.,BqB8vo+SfUQ7m+laRJo0) - PROD: Use only first ID (backward compatible)
- PPR: Parse multiple IDs separated by
2. scripts/a2_to_a3_upload_polling.py
- Pass DAM URL to FilenameParser for environment detection
- Loop through all tracking IDs (PPR) or single ID (PROD)
- Look up all master assets in database
- Collect all
opentext_idvalues - Pass list to metadata extractor
3. scripts/shared/metadata_extractor_mvp.py
- Added
master_opentext_idsparameter (list) - New method:
_add_master_asset_ids_field()to handle multiple IDs - Builds
valuesarray with all master IDs
Environment Detection Logic
PPR Environment:
- DAM URL contains:
ppr.dam.ferrero.com - Multiple tracking IDs: ✅ ENABLED
- Filename format:
1234568_ROC_ST_SND_6S_16x9_REF_DE_de_BqB8vo+SfUQ7m.jpg
PROD Environment:
- DAM URL contains:
dam.ferrero.com(not ppr) - Multiple tracking IDs: ❌ DISABLED
- Filename format:
1234568_ROC_ST_SND_6S_16x9_REF_DE_de_BqB8vo.jpg(single ID) - If multiple IDs provided, uses FIRST ID only with warning
Testing in PPR
Test 1: Single Tracking ID (Backward Compatible)
Filename:
1234568_ROC_STRANGER-THINGS_SND_6S_16x9_REF_DE_de_BqB8vo.jpg
Expected Result:
- Parses as single tracking ID
- One master asset looked up
- One value in MASTERASSETIDS field
- ✅ Works exactly as before
Test 2: Multiple Tracking IDs (New Feature)
Filename:
1234568_ROC_STRANGER-THINGS_SND_6S_16x9_REF_DE_de_BqB8vo+SfUQ7m+laRJo0.jpg
Expected Result:
- PPR environment detected
- Parses 3 tracking IDs:
BqB8vo,SfUQ7m,laRJo0 - Looks up 3 master assets in database
- Gets 3 opentext_ids:
fc5c389776516bb58044c7d4bf479da458599bafad3948d72ea8550a338a600ae87a1bdd1968b066020d76f957ec9f4ec0b18035a2d012cd3fd376c2
- Creates MASTERASSETIDS field with 3 values
Log Output:
PPR Environment - Multiple tracking IDs detected: 3
Parsed 3 tracking IDs: BqB8vo, SfUQ7m, laRJo0
PPR - Multiple master assets detected: BqB8vo, SfUQ7m, laRJo0
Using primary master BqB8vo for metadata, linking 3 total masters
PPR - Added MASTERASSETIDS field with 3 master IDs
Added FERRERO.MASTERASSETIDS field with 3 master asset ID(s): fc5c389776516bb58044c7d4bf479da458599baf, ad3948d72ea8550a338a600ae87a1bdd1968b066, 020d76f957ec9f4ec0b18035a2d012cd3fd376c2
Test Commands
Dry Run (Recommended First)
python scripts/a2_to_a3_upload_polling.py --dryrun
Check the JSON output for:
{
"id": "FERRERO.MASTERASSETIDS",
"parent_table_id": "FERRERO.TABULAR.FIELD.MASTERASSETIDS",
"type": "com.artesia.metadata.MetadataTableField",
"values": [
{"value": {"field_value": {"value": "fc5c389776516bb58044c7d4bf479da458599baf"}}},
{"value": {"field_value": {"value": "ad3948d72ea8550a338a600ae87a1bdd1968b066"}}},
{"value": {"field_value": {"value": "020d76f957ec9f4ec0b18035a2d012cd3fd376c2"}}}
]
}
Real Upload to PPR
python scripts/a2_to_a3_upload_polling.py
Then verify in PPR DAM:
- Search for the uploaded asset
- Open metadata
- Check "Master Asset IDs" tabular field
- Should show multiple rows
Error Handling
Missing Master Assets:
- If one tracking ID is not found in database, it's skipped with warning
- Derivative still uploads with available master links
- Log message:
Master asset not found for tracking ID: xyz - skipping
PROD Environment with Multiple IDs:
- Uses FIRST tracking ID only
- Logs warning:
PROD Environment - Multiple tracking IDs not supported, using first ID only - Works as backward compatible (no errors)
Current Environment Check
Your .env file shows:
DAM_BASE_URL=https://ppr.dam.ferrero.com/otmmapi
✅ PPR Environment - Multiple tracking IDs are ENABLED
Agency Tool Requirements
To use multiple tracking IDs, the Agency tool needs to:
- Concatenate tracking IDs with
+delimiter - Example:
tracking_id_1 + "+" + tracking_id_2 + "+" + tracking_id_3 - Place in filename:
{job}_{brand}_{...}_{tracking_ids}.{ext}
Most derivatives will still use single tracking ID - this is only for special cases where one derivative references multiple masters.
Production Safety
✅ PROD is Protected:
- Environment detection prevents multiple IDs in PROD
- If multiple IDs accidentally used, only first ID is processed
- No breaking changes to PROD behavior
- Fully backward compatible
Ready to Test! 🚀
Your PPR environment is now ready to test multiple tracking IDs.
- Create test file with multiple IDs
- Upload to Box:
DAM-UPLOAD/1234568/ - Run with
--dryrunfirst - Verify JSON shows multiple values
- Real upload and check in PPR DAM