Stores master asset CreativeX scores from DAM metadata during A1→A2 download for reference/reporting purposes (not used in uploads). Database Changes: creativex_scores table: - Added: tracking_id VARCHAR(6) column - Added: idx_creativex_tracking_id index - Updated comment: status can be 'active', 'superseded', or 'master-cx-score' Status Values: - 'active' - Current derivative score (from PDF extraction) - 'superseded' - Old derivative score (version history) - 'master-cx-score' - Master asset score (from A1→A2 DAM metadata) ← NEW Migration SQL (for existing databases): ALTER TABLE creativex_scores ADD COLUMN tracking_id VARCHAR(6); CREATE INDEX idx_creativex_tracking_id ON creativex_scores(tracking_id); Database Method Updates (database.py): store_creativex_score() signature: - Added: tracking_id parameter (optional, default None) - Added: status parameter (optional, default 'active') Logic: - If status='master-cx-score': Simple insert, no versioning - If status='active': Soft delete versioning as before - Always stores tracking_id if provided A1→A2 Script Updates (a1_to_a2_download.py): New Function: extract_creativex_from_dam_metadata() - Searches metadata_element_list for CREATIVEX fields - Extracts FERRERO.TAB.FIELD.CREATIVEX (score) - Extracts FERRERO.FIELD.CREATIVEX LINK (url) - Returns dict with score/url or None if not found - Handles tabular field structure for score - Handles nested value structure for URL Integration: - After successful master asset storage - Extracts CreativeX from asset metadata - If found: Stores in creativex_scores with status='master-cx-score' - Links to master via tracking_id - Logs when score found/stored - Logs "normal" when not found (not all masters are scored) Use Cases: A2→A3 Upload: - Still uses filename-based lookup ONLY ✅ - No changes to A2→A3 logic ✅ - Master scores not used for uploads ✅ Reporting/Analytics Tools: - Can query master score by tracking_id - Compare master vs derivative scores - Track score improvements - Audit trail Query Examples: -- Get master score for tracking ID SELECT * FROM creativex_scores WHERE tracking_id = '7xXgKp' AND status = 'master-cx-score'; -- Get derivative score for filename SELECT * FROM creativex_scores WHERE filename = 'file.mp4' AND status = 'active'; Test Record Created: - Filename: nutella_pbased.jpg - Tracking ID: 7xXgKp - Score: 85 - Status: master-cx-score Benefits: - Historical reference of master scores - Enables score comparison analytics - No impact on A2→A3 upload logic - Automatic extraction during A1→A2 - Optional (works even if masters don't have scores) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| migrations | ||
| backup.sh | ||
| check_backups.sh | ||
| init.sql | ||
| restore.sh | ||