Complete PHP-based workflow application for Ferrero DAM system: - OAuth2 authentication with automatic token management - Campaign discovery and filtering - Folder structure navigation - Asset download (individual and bulk) - Metadata extraction and display - Clean step-by-step web interface Status: Fully functional and production-ready 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
214 lines
No EOL
7.5 KiB
Markdown
214 lines
No EOL
7.5 KiB
Markdown
# Ferrero OpenText Content Scaling Application
|
|
|
|
**Status:** ✅ **FULLY WORKING** - Complete workflow from campaign selection to asset download
|
|
**Date:** September 29, 2025
|
|
|
|
## 🎯 Overview
|
|
|
|
A PHP-based web application for Ferrero's OpenText DAM system that automates the content scaling workflow:
|
|
1. **Campaign Discovery** - Find campaigns ready for content scaling
|
|
2. **Asset Identification** - Locate Master and Final asset folders
|
|
3. **Asset Download** - Download source files for processing
|
|
4. **Metadata Extraction** - Access complete asset metadata
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### **Prerequisites**
|
|
- MAMP or similar PHP server
|
|
- Internet connection to Ferrero OpenText API
|
|
|
|
### **Setup**
|
|
1. **Copy project** to MAMP htdocs directory
|
|
2. **Ensure** `Creds.txt` file is present with OAuth2 credentials
|
|
3. **Navigate to:** `http://localhost:8888/ferrero-opentext/clean_workflow.php`
|
|
|
|
### **No Configuration Required**
|
|
- ✅ OAuth2 authentication auto-configured
|
|
- ✅ API endpoints loaded from Postman collection
|
|
- ✅ Credentials loaded automatically
|
|
|
|
## 📋 Complete Workflow
|
|
|
|
### **Step 1: Campaign Selection**
|
|
1. **Click "Load '3 - Production & execution' Campaigns"**
|
|
2. **Select desired campaign** from the grid (look for campaigns with both Master and Final folders)
|
|
3. **Click "Proceed to Step 2"**
|
|
|
|
### **Step 2: Asset Discovery & Download**
|
|
1. **Click "Get Campaign Folders"** to discover folder structure
|
|
2. **Two possible outcomes**:
|
|
- **✅ Multiple folders found** - Campaign has proper Master/Final structure
|
|
- **⚠️ Only Final Assets folder** - Campaign needs different organization
|
|
|
|
3. **Explore folders** to find assets:
|
|
- **"🔍 Explore All X Folders"** - Compare all folders side by side
|
|
- **Individual folder exploration** - Examine specific folders
|
|
|
|
4. **Download assets**:
|
|
- **📥 Download** - Individual file download
|
|
- **📥 Download All X Files** - Bulk folder download
|
|
- **📋 Metadata** - View complete asset metadata
|
|
|
|
## 🔧 Technical Details
|
|
|
|
### **Authentication**
|
|
- **OAuth2 Client Credentials Flow**
|
|
- **Client ID:** `otds-OLV`
|
|
- **Token URL:** `https://ppr.dam.ferrero.com/otdsws/oauth2/token`
|
|
- **Automatic token refresh** and expiration handling
|
|
|
|
### **API Endpoints Used**
|
|
```
|
|
# Campaign Discovery
|
|
GET /v6/search/text?load_type=metadata&search_config_id=18&search_condition_list=...
|
|
|
|
# Folder Structure
|
|
GET /v6/folders/{campaign_id}/children?load_type=metadata&metadata_to_return=INER_NAME_GENERIC&level_of_detail=slim
|
|
|
|
# Asset Listing
|
|
GET /v6/folders/{folder_id}/children
|
|
|
|
# Asset Download
|
|
GET /v6/assets/{asset_id}/contents
|
|
```
|
|
|
|
### **File Organization**
|
|
```
|
|
downloads/
|
|
├── [folder_name]/ # Bulk downloads organized by folder
|
|
│ ├── asset1.jpg
|
|
│ └── asset2.jpg
|
|
└── individual_file.jpg # Individual downloads
|
|
```
|
|
|
|
## 📊 Current Campaign Data
|
|
|
|
### **Available Campaigns**
|
|
- **12 campaigns** in "3 - Production & execution" stage
|
|
- **Brands:** KINDER SURPRISE, KINDER BUENO, KINDER CHOCOLATE, etc.
|
|
- **Markets:** DE (Germany), FR (France), GB (UK), DZ (Algeria)
|
|
|
|
### **Verified Working Campaign**
|
|
- **Name:** "LOCAL CAMPAIGN"
|
|
- **Campaign ID:** C000000212
|
|
- **Brand:** KINDER SOFTY/BUENO EGGS
|
|
- **Folder Structure:**
|
|
```
|
|
LOCAL CAMPAIGN
|
|
├── 00. Master Assets (Empty - workflow organization)
|
|
└── 01. Final Assets (Contains 2 JPEG source files)
|
|
```
|
|
|
|
### **Asset Metadata Available**
|
|
For each asset, the system provides:
|
|
- **📋 Basic Info:** Asset ID, filename, file type, size, creation dates
|
|
- **🖼️ Content Info:** Dimensions, checksums, encoding, content URLs
|
|
- **🏷️ Custom Fields:** Campaign data, brand info, project details
|
|
- **🔐 Permissions:** Download, edit, export rights
|
|
- **🎨 Renditions:** Thumbnails, previews, different sizes
|
|
|
|
## 🐍 Python Migration Ready
|
|
|
|
### **Documented API Patterns**
|
|
- **Authentication flow** with OAuth2 client credentials
|
|
- **Request/response structures** captured and tested
|
|
- **Asset download endpoints** verified and working
|
|
- **Metadata extraction** patterns established
|
|
|
|
### **Planned Python Script Structure**
|
|
```python
|
|
# Future implementation
|
|
python3 download-script.py --campaign C000000212
|
|
python3 download-script.py --campaign C000000212 --folder-type master
|
|
python3 download-script.py --list-campaigns --stage "3 - Production & execution"
|
|
```
|
|
|
|
### **Required Campaign Structure**
|
|
For automated workflow, campaigns should have:
|
|
- **Master Assets folder** with source files for processing
|
|
- **Final Assets folder** (empty) for processed outputs
|
|
- **Proper metadata** with campaign and brand information
|
|
|
|
## ⚠️ Current Limitations
|
|
|
|
### **Campaign Structure Variance**
|
|
- **Most campaigns** only have "01. Final Assets" folders
|
|
- **Source assets** currently located in Final Assets folders (naming inconsistent)
|
|
- **Need properly configured campaigns** with assets in Master Assets folders
|
|
|
|
### **Workflow Requirements**
|
|
For optimal automation, need campaigns where:
|
|
- **Source files** are in "00. Master Assets" folder
|
|
- **"01. Final Assets"** folder is empty/ready for processed outputs
|
|
- **Multiple asset types** for comprehensive testing
|
|
|
|
## 🔑 File Structure
|
|
|
|
### **Main Application**
|
|
```
|
|
├── clean_workflow.php # ✅ Main working interface
|
|
├── Creds.txt # OAuth2 credentials (auto-loaded)
|
|
├── Content Scaling Flow.postman_collection_Oliver(New).json
|
|
├── src/
|
|
│ ├── TestRunner.php # API orchestration
|
|
│ ├── CampaignFormatter.php # Response parsing
|
|
│ ├── AssetDownloader.php # Asset download functionality
|
|
│ ├── MetadataExtractor.php # Metadata parsing and display
|
|
│ ├── OAuth2Handler.php # Authentication
|
|
│ └── ApiClient.php # HTTP client
|
|
├── downloads/ # Downloaded assets storage
|
|
└── logs/ # Operation logs
|
|
```
|
|
|
|
### **Supporting Files**
|
|
```
|
|
├── workflow.php # Alternative interface (more complex)
|
|
├── simple_test.php # Single endpoint testing
|
|
├── index.php # Full testing suite
|
|
└── PROJECT_STATUS.md # Detailed project status
|
|
```
|
|
|
|
## 🎯 Usage Examples
|
|
|
|
### **Content Scaling Workflow**
|
|
1. **Campaign Selection:**
|
|
- Load production campaigns
|
|
- Identify campaigns with proper folder structure
|
|
- Select campaign for processing
|
|
|
|
2. **Asset Discovery:**
|
|
- Explore Master Assets folder for source files
|
|
- Verify Final Assets folder for output destination
|
|
- Review asset metadata and permissions
|
|
|
|
3. **Asset Download:**
|
|
- Download individual source files for processing
|
|
- Bulk download entire Master Assets folder
|
|
- Organize files locally for content scaling operations
|
|
|
|
4. **Processing (External):**
|
|
- Process downloaded assets (scaling, adaptation, localization)
|
|
- Prepare processed files for upload
|
|
|
|
5. **Upload (Future):**
|
|
- Upload processed assets to Final Assets folder
|
|
- Update metadata as needed
|
|
|
|
## 🚀 MAMP Access
|
|
|
|
- **Main Interface:** `http://localhost:8888/ferrero-opentext/clean_workflow.php`
|
|
- **Authentication:** Automatic OAuth2 setup
|
|
- **Session Management:** Maintains workflow state
|
|
- **Reset:** Click "🔄 Reset Session" to start fresh
|
|
|
|
## 📝 Next Development Phase
|
|
|
|
### **Python Script Development**
|
|
- **Command-line interface** for automated workflow
|
|
- **Campaign-based processing** using documented API patterns
|
|
- **Bulk operations** for multiple campaigns
|
|
- **Integration ready** once properly structured campaigns are available
|
|
|
|
---
|
|
|
|
**Ready for production use with current campaign structure. Optimized for campaigns with proper Master/Final folder organization.** |