Adds upsert logic that marks old records as 'superseded' while creating new 'active' records, preserving full history for audit/analysis. Changes: - Updated store_creativex_score() to check for existing filename - Old records marked status='superseded' before inserting new 'active' record - Returns is_update flag to indicate if this was an update vs new insert - Logs score changes (e.g., "Score: 80.0 -> 85.0") Documentation updates: - Added "Understanding Status Field" section with soft delete explanation - Separated queries into "Latest Scores" vs "History/Audit" sections - Added A2→A3 integration guide with example code - Documented query logic and behavior table for future integration - Added migration notes for existing data Query patterns for A2→A3: - status='active' → Latest/current score (use this in workflows) - status='superseded' → Previous scores (history/audit trail) - get_creativex_score_by_filename() automatically filters for active Benefits: - Easy lookup of latest scores (just filter status='active') - Full history preserved for tracking score changes over time - No data loss when files are re-scored - Clear audit trail of when scores changed Tested and verified: - Existing record (80.0) marked as superseded - New record (85.0) created as active - Queries correctly return only active record 🤖 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 | ||