Enables asset type to be updated from derivative filename and refactors
_update_fields() to use filename_updates configuration dynamically.
Field Mappings Configuration (field_mappings.yaml):
Added to filename_updates:
- FERRERO.FIELD.MKTG.ASSET TYPE:
source: asset_type
required: true
Now updates from derivative filename:
- ROC_TEST-E2E2_EHI_1x1_DE_de.png → Asset Type = "EHI"
Metadata Extractor Refactor (metadata_extractor_mvp.py):
Old _update_fields():
- Hardcoded field updates (ASSET NAME, DESCRIPTION, STATE)
- Not using filename_updates configuration
- Required code changes to add new fields
New _update_fields():
- Dynamically processes filename_updates from config
- Supports transform: uppercase/lowercase
- Supports any source field from parsed_filename
- Uses forced_values from config (was hardcoded before)
- Add new fields via config, no code changes needed
Configuration-Driven Updates:
- ARTESIA.FIELD.ASSET NAME ← clean_filename
- ARTESIA.FIELD.ASSET DESCRIPTION ← subject_title
- FERRERO.FIELD.MKTG.ASSET TYPE ← asset_type (NEW)
- MAIN_LANGUAGES ← language_code (uppercase)
- FERRERO.FIELD.STATE ← "Local" (forced value)
Benefits:
- Asset type now correctly populated from filename
- Configuration-driven (add fields without code changes)
- Cleaner code (uses config instead of hardcoded logic)
- Forced values also configurable
- Easier to maintain and extend
Example:
Filename: ROC_TEST-E2E2_EHI_1x1_DE_de.png
Parsed asset_type: "EHI"
Field FERRERO.FIELD.MKTG.ASSET TYPE updated to: "EHI"
Impact:
All A2→A3 uploads will now have correct Asset Type from derivative
filename instead of inheriting from master (which may be different).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
70 lines
2 KiB
YAML
70 lines
2 KiB
YAML
# MVP Field IDs - Add or remove fields here (no code changes needed!)
|
|
|
|
mvp_fields:
|
|
# Asset Info Category
|
|
- FERRERO.FIELD.MKTG.ASSET TYPE
|
|
- FERRERO.FIELD.FISCAL YEAR
|
|
- MAIN_LANGUAGES
|
|
- FERRERO.FIELD.ASSETCOMPLIANCE
|
|
- ARTESIA.FIELD.ASSET DESCRIPTION
|
|
- FERRERO.FIELD.MARKETING.FLAVOUR
|
|
- FERRERO.FIELD.MARKETING.SIZE
|
|
- FERRERO.FIELD.STATE
|
|
- ARTESIA.FIELD.ASSET NAME
|
|
- FERRERO.FIELD.SUB BRAND
|
|
- FERRERO.FIELD.ASSET VALIDITY START PERIOD
|
|
- FERRERO.FIELD.ASSET VALIDITY END PERIOD
|
|
|
|
# Marketing Category
|
|
- MARKETING_TAG
|
|
- FERRERO.MARKETING.FIELD.AGENCY NAME
|
|
- FERRERO.MARKETING.FIELD.SPOT_VERSION
|
|
- FERRERO.MARKETING.FIELD.DIRECTOR_NAME
|
|
- FERRERO.MARKETING.FIELD.VIDEO_POST_PROD_COMPANY
|
|
- FERRERO.MARKETING.FIELD.VID_POST_PROD_CONTACT
|
|
- FERRERO.MARKETING.FIELD.AUDIO_POST_PROD_COMPANY
|
|
- FERRERO.MARKETING.FIELD.AUDIO_POST_PROD_CONTACT
|
|
|
|
# Market Category
|
|
- FERRERO.MARKET.FIELD.TYPE_VID
|
|
- FERRERO.MARKET.FIELD.IPRIGHT
|
|
- FERRERO.MARKET.PROD_COMPANY
|
|
- FERRERO.MARKET.FIELD.LICENSIN
|
|
- FERRERO.MARKET.FIELD.BUYOUT
|
|
- FERRERO.MARKET.FIELD.FERRERO PROPERTY
|
|
- FERRERO.MARKET.VID_N_STAT
|
|
- FERRERO.MARKET.FIELD.LICENSE
|
|
|
|
# CreativeX Category (from Box metadata template)
|
|
- FERRERO.TAB.FIELD.CREATIVEX # CreativeX Score (Platform > Rating %)
|
|
- FERRERO.FIELD.CREATIVEX LINK # CreativeX URL
|
|
|
|
# Fields to update from V2 filename
|
|
filename_updates:
|
|
ARTESIA.FIELD.ASSET NAME:
|
|
source: clean_filename
|
|
required: true
|
|
|
|
ARTESIA.FIELD.ASSET DESCRIPTION:
|
|
source: subject_title
|
|
required: false
|
|
|
|
FERRERO.FIELD.MKTG.ASSET TYPE:
|
|
source: asset_type
|
|
required: true
|
|
|
|
MAIN_LANGUAGES:
|
|
source: language_code
|
|
transform: uppercase
|
|
required: true
|
|
|
|
# Fields to force to specific values
|
|
forced_values:
|
|
FERRERO.FIELD.STATE: Local
|
|
|
|
# Default values for missing fields
|
|
defaults:
|
|
FERRERO.FIELD.ASSETCOMPLIANCE: "-"
|
|
MARKETING_TAG: "Tag"
|
|
FERRERO.FIELD.FISCAL YEAR: "2025/2026"
|
|
FERRERO.MARKETING.FIELD.AGENCY NAME: "Oliver" # Agency name (exact case required)
|