ferrero-opentext/README.md
DJP 716f0be068 Initial commit: Ferrero OpenText Content Scaling Application
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>
2025-10-17 14:29:20 -04:00

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.**