diff --git a/Python-Version/COMPLETE_WORKFLOW_GUIDE.md b/Python-Version/COMPLETE_WORKFLOW_GUIDE.md index adecac3..f60474d 100644 --- a/Python-Version/COMPLETE_WORKFLOW_GUIDE.md +++ b/Python-Version/COMPLETE_WORKFLOW_GUIDE.md @@ -8,6 +8,134 @@ --- +## Complete Workflow Overview: A1 → A4 (with A5-A6 Rejection Cycle) + +```mermaid +flowchart TB + subgraph Creation["PHASE 1: Campaign Creation"] + A1_START[Campaign Manager creates campaign in DAM] --> A1_UPLOAD[Creative team uploads master assets] + A1_UPLOAD --> A1_STATUS[Set campaign status to A1] + end + + subgraph A1toA2["PHASE 2: A1→A2 Master Download (AUTOMATED - Every 5 min)"] + A1_STATUS -->|Script detects A1 campaign| A1_DETECT[a1_to_a2_download.py] + A1_DETECT --> A1_DOWNLOAD[Download all master assets from DAM] + A1_DOWNLOAD --> A1_TRACKING[Generate unique tracking IDs
pOiJ9s, a7K9mP, bvSGyd] + A1_TRACKING --> A1_BOX[Upload to Box with tracking IDs
nutella_hero_pOiJ9s.mp4] + A1_BOX --> A1_DB[Store in database with full metadata] + A1_DB --> A1_CX{CreativeX in
master metadata?} + A1_CX -->|Yes| A1_CX_STORE[Store master score
status='master-cx-score'] + A1_CX -->|No| A1_CX_SKIP[Log: No CreativeX normal] + A1_CX_STORE --> A1_CHECK{All assets
successful?} + A1_CX_SKIP --> A1_CHECK + A1_CHECK -->|Yes| A1_UPDATE[Update DAM status A1 → A2] + A1_CHECK -->|No| A1_RETRY[Retry failed on next run] + A1_UPDATE --> A1_EMAIL[Email: Masters ready for localization] + A1_RETRY -.->|5 min later| A1_DETECT + end + + subgraph Agency["PHASE 3: Agency Localization + CreativeX Scoring"] + A1_EMAIL --> AG_RECEIVE[Agency receives Box URLs + tracking IDs] + AG_RECEIVE --> AG_DOWNLOAD[Download masters from Box] + AG_DOWNLOAD --> AG_CREATE[Create localized versions
DE, FR, IT versions + aspect ratios] + AG_CREATE --> AG_CREATIVEX[🔴 CRITICAL: Submit EVERY derivative to CreativeX
200 derivatives = 200 analyses required] + AG_CREATIVEX --> AG_PDF[Receive PDF scorecard for EACH asset] + AG_PDF --> AG_PDF_UP[Upload ALL PDFs to Box 350605024645] + AG_PDF_UP --> AG_SCORE_RUN[Run creativex_scoring_storing.py] + AG_SCORE_RUN --> AG_SCORE_DB[Scores stored in database
status='active'] + AG_SCORE_DB --> AG_VERIFY[Verify: derivative count = score count ✅] + AG_VERIFY --> AG_NAMING[Use Naming Tool for EACH derivative
Copy exact filename] + AG_NAMING --> AG_UPLOAD[Upload to Box A2→A3 folder
With job number + tracking ID] + end + + subgraph A2toA3["PHASE 4: A2→A3 Derivative Upload (AUTOMATED - Every 5 min)"] + AG_UPLOAD -->|Script detects files| A2_DETECT[a2_to_a3_upload_polling.py] + A2_DETECT --> A2_PARSE[Parse filename: Extract tracking ID] + A2_PARSE --> A2_LOOKUP[Load master metadata from database] + A2_LOOKUP --> A2_CX_LOOKUP[Lookup CreativeX score by filename] + A2_CX_LOOKUP --> A2_CX_CHECK{Score found?} + A2_CX_CHECK -->|Yes| A2_CX_USE[Score: 71, URL: actual] + A2_CX_CHECK -->|No| A2_CX_DEFAULT[⚠️ Score: 0, URL: placeholder
Email warning sent] + A2_CX_USE --> A2_BUILD[Build asset representation] + A2_CX_DEFAULT --> A2_BUILD + A2_BUILD --> A2_OVERRIDE[Override from filename:
Language, Asset Type, Description] + A2_OVERRIDE --> A2_MAP[Map asset type: EHI → heroimage] + A2_MAP --> A2_STRIP[Strip to clean filename] + A2_STRIP --> A2_UPLOAD[Upload to DAM Final Assets] + A2_UPLOAD --> A2_DELETE[Delete from Box] + A2_DELETE --> A2_EMAIL[Email: Upload successful] + A2_EMAIL --> A2_STATUS[Campaign status: A3] + end + + subgraph Approval["PHASE 5: Approval Process"] + A2_STATUS --> A3_REVIEW[Legal/Compliance/Brand review in DAM] + A3_REVIEW --> A3_CHECK[Check quality, compliance, guidelines] + A3_CHECK --> A3_DECISION{Approved?} + end + + subgraph Success["✅ APPROVED PATH"] + A3_DECISION -->|✅ All checks passed| A4_STATUS[Status updated to A4] + A4_STATUS --> A4_WEBHOOK[Webhook sent to Make.com] + A4_WEBHOOK --> A4_LIVE[Assets go LIVE] + A4_LIVE --> A4_DONE[🎉 Campaign Complete - Assets in market] + end + + subgraph Rejection["❌ REJECTED PATH - Rework Required"] + A3_DECISION -->|❌ Issues found| A5_MARK[Approver marks specific assets:
ECOMMERCE STATUS = NOT APPROVED] + A5_MARK --> A5_LEGAL[Legal reviewer adds comments:
Missing copyright, compliance issues] + A5_LEGAL --> A5_IACC[IA&CC reviewer adds comments:
Brand guideline violations] + A5_IACC --> A5_APPROVER[General approver adds comments:
Creative feedback] + A5_APPROVER --> A5_STATUS[Campaign status → A5] + end + + subgraph A5toA6["PHASE 6: A5→A6 Rejection Download (AUTOMATED)"] + A5_STATUS -->|Script detects A5| A5_DETECT[a5_to_a6_download.py] + A5_DETECT --> A5_FILTER[🔍 Filter: Download ONLY
NOT APPROVED assets] + A5_FILTER --> A5_APPROVED[✅ APPROVED assets: Skipped
Not re-downloaded] + A5_FILTER --> A5_TRACKING[Lookup EXISTING tracking ID
REUSE: pOiJ9s] + A5_TRACKING --> A5_DOWNLOAD[Download rejected assets from DAM] + A5_DOWNLOAD --> A5_BOX_UP[Upload to Box A5→A6 folder
Separate folder from A1→A2] + A5_BOX_UP --> A5_EMAIL_OUT[Email with ALL rejection comments:
Legal + IA&CC + Approver feedback] + A5_EMAIL_OUT --> A5_AGENCY[Agency receives detailed feedback] + end + + subgraph Rework["PHASE 7: Agency Fixes + Re-upload"] + A5_AGENCY --> RW_DOWNLOAD[Download rejected assets from Box] + RW_DOWNLOAD --> RW_REVIEW[Review ALL rejection comments] + RW_REVIEW --> RW_FIX[Fix issues based on feedback] + RW_FIX --> RW_CREATIVEX[🔴 Re-submit to CreativeX
MUST get new score for fixed version] + RW_CREATIVEX --> RW_PDF[Upload new PDF with updated score] + RW_PDF --> RW_SCORE_RUN[Run creativex_scoring_storing.py] + RW_SCORE_RUN --> RW_DB[Database updated with new score
Old score marked 'superseded'] + RW_DB --> RW_NAMING[Use Naming Tool:
NEW job number + SAME tracking ID] + RW_NAMING --> RW_EXAMPLE[Example: 7777_NUT_SUMMER_OLV_30S_16x9_DE_de_pOiJ9s.mp4
↑ New job | Same tracking ↑] + RW_EXAMPLE --> RW_UPLOAD_A2[Upload to A2→A3 folder] + RW_UPLOAD_A2 -.->|Re-enters A2→A3 automation| A2_DETECT + end + + subgraph ReworkLoop["🔄 Rework Can Repeat Multiple Times"] + RW_NOTE1[Rejected again? → Back to A5] -.-> A5_STATUS + RW_NOTE2[Assets can go through A5→A6
cycle 2, 3, 4+ times until approved] + end + + style A4_DONE fill:#4CAF50,stroke:#2E7D32,stroke-width:4px,color:#FFF + style A5_MARK fill:#EF5350,stroke:#C62828,stroke-width:3px + style RW_CREATIVEX fill:#9C27B0,stroke:#6A1B9A,stroke-width:3px + style AG_CREATIVEX fill:#9C27B0,stroke:#6A1B9A,stroke-width:3px + style A1_TRACKING fill:#2196F3,stroke:#1565C0,stroke-width:2px + style A5_TRACKING fill:#2196F3,stroke:#1565C0,stroke-width:2px + style RW_NOTE1 fill:#FFE082,stroke:#F57C00 + style RW_NOTE2 fill:#FFE082,stroke:#F57C00 +``` + +**🔴 CRITICAL REQUIREMENTS HIGHLIGHTED:** +1. **CreativeX Scoring (Purple):** Every derivative MUST be scored individually +2. **Tracking IDs (Blue):** Critical link between master and derivatives, reused in rework +3. **Rejection Comments (Red):** Legal, IA&CC, and approver feedback guide fixes +4. **Rework Loop (Orange):** Can repeat until approved - same tracking ID maintained + +--- + ## Table of Contents 1. [Executive Overview](#executive-overview)