No description
Find a file
nickviljoen 477780df09 Add client-specific output folders and 14-day auto-cleanup
## New Features

### Client-Specific Output Folders
- Files now saved in client-specific subdirectories (loreal/, diageo/, unilever/, general/)
- Automatic client detection from profile ID
- Better organization for multi-client environment
- Each client only sees their own QC reports

### Automatic File Cleanup
- Auto-delete reports older than 14 days on every file listing request
- Keeps output folder clean and manageable
- Configurable cleanup age (default: 14 days)

### File Filtering by Client
- API endpoint `/api/output_files` now accepts `?client=<client_id>` parameter
- Frontend automatically filters files by selected client
- No more cluttered file lists for clients

### Migration Script
- `migrate_output_files.py` - Move existing files to client folders
- Dry-run mode by default (use --execute to run)
- Deletes files older than 14 days during migration
- Supports both development (--dev) and production (--production)

## API Changes

### Modified Endpoints
- `GET /api/output_files?client=<client_id>` - List files filtered by client
- `GET /output/<client>/<filename>` - Serve files from client folders
- `GET /output/<filename>` - Legacy route for backward compatibility

### New Functions
- `get_client_from_profile(profile_id)` - Detect client from profile
- `ensure_client_output_folder(client)` - Create client folders
- `cleanup_old_files(max_age_days)` - Delete old files

## File Structure
```
output-dev/
├── loreal/
│   └── 20260202_102514_Missing_text_report.html
├── diageo/
│   └── 20260202_103423_Product_shot_report.html
├── unilever/
│   └── 20260202_104512_Key_visual_report.html
└── general/
    └── 20260202_105634_Other_report.html
```

## Frontend Changes
- `loadSavedFiles()` now includes client parameter in API calls
- Automatically filters saved files by selected client
- Clean UI showing only relevant reports

## Usage

### Migration (Development)
```bash
# Dry-run (no changes)
python3 migrate_output_files.py

# Execute migration
python3 migrate_output_files.py --execute
```

### Migration (Production)
```bash
# Dry-run for production folder
python3 migrate_output_files.py --production

# Execute migration
python3 migrate_output_files.py --production --execute
```

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-02 11:18:05 +02:00
__pycache__ Updated tool discriptions 2025-12-06 14:54:36 +02:00
backend Add client-specific output folders and 14-day auto-cleanup 2026-02-02 11:18:05 +02:00
config updates 2025-11-06 09:40:34 +02:00
frontend Create frontend and backend folder structure for deployment 2025-11-06 11:55:53 +02:00
output Have created Dev and Prod enviroments to test locally 2025-09-11 21:58:44 +02:00
uploads updates 2025-11-06 09:40:34 +02:00
.gitignore diagnostic test 2026-01-19 22:17:18 +02:00
ai_qc.service Add production deployment migration guide and configuration files 2025-11-06 11:45:31 +02:00
apache_config.conf Add production deployment migration guide and configuration files 2025-11-06 11:45:31 +02:00
AUTH_FIX_GUIDE.md diagnostic test 2026-01-19 22:17:18 +02:00
backend_backup_20251206_153116.tar.gz Improvements to Prod vs Dev testing 2025-12-06 15:39:13 +02:00
CLAUDE.md Add comprehensive production deployment documentation 2025-11-06 23:23:02 +02:00
CLEANUP_SUMMARY.md initial commit 2025-08-12 14:52:49 -05:00
config.env SSO Added 2025-08-20 15:30:29 +02:00
debug_mode.txt Updated UI for creating profiles and profile discriptions 2025-12-06 14:32:47 +02:00
DEPLOYMENT_RESTRUCTURE.md Add production deployment migration guide and configuration files 2025-11-06 11:45:31 +02:00
DEPLOYMENT_STEPS.md UI Update to be more BTG look and feel 2025-11-15 10:52:52 +02:00
DEV_PROD_SETUP.md Have created Dev and Prod enviroments to test locally 2025-09-11 21:58:44 +02:00
FOLDER_STRUCTURE.md Create frontend and backend folder structure for deployment 2025-11-06 11:55:53 +02:00
headless_curl_examples.sh initial commit 2025-08-12 14:52:49 -05:00
MIGRATION_CHECKLIST.md Add production deployment migration guide and configuration files 2025-11-06 11:45:31 +02:00
MIGRATION_GUIDE.md Add production deployment migration guide and configuration files 2025-11-06 11:45:31 +02:00
MIGRATION_SUMMARY.md Add production deployment migration guide and configuration files 2025-11-06 11:45:31 +02:00
msal_pkce_flow.md SSO Added 2025-08-20 15:30:29 +02:00
README.md Improvements to Prod vs Dev testing 2025-12-06 15:39:13 +02:00
REORGANIZATION_COMPLETE.md Add reorganization completion summary document 2025-11-06 11:57:31 +02:00
requirements.txt Add production deployment migration guide and configuration files 2025-11-06 11:45:31 +02:00
server.log initial commit 2025-08-12 14:52:49 -05:00
server_debug.log initial commit 2025-08-12 14:52:49 -05:00
web_ui.html Add client-specific output folders and 14-day auto-cleanup 2026-02-02 11:18:05 +02:00

Visual AI QC - Repository Structure

⚠️ Important: Work in backend/ Directory

All development and production code is now in the backend/ directory.

Directory Structure

ai_qc/
├── backend/              # 👈 MAIN APPLICATION - Work here!
│   ├── api_server.py     # Flask application
│   ├── llm_config.py     # LLM configuration (Gemini model settings)
│   ├── profile_config.py # Profile management
│   ├── visual_qc_apps/   # QC check modules (33 checks)
│   ├── profiles/         # QC profile configurations (6 profiles)
│   ├── brand_guidelines/ # Reference assets
│   ├── scripts/          # Deployment scripts
│   ├── config/           # Environment configs
│   ├── uploads/          # File uploads (production)
│   ├── output/           # Generated reports (production)
│   └── ...               # All other application files
│
├── frontend/             # Frontend-only deployment (optional)
├── config/               # Legacy config (deprecated)
└── CLAUDE.md             # Development guide

Quick Start

Local Development

cd backend/
./scripts/run-local.sh
# Access at http://localhost:7183

Production Deployment

# SSH to production server
ssh user@server

# Deploy backend to /opt/ai_qc
cd /opt/ai_qc
git pull origin main
cd backend
sudo systemctl restart ai_qc.service

Why This Structure?

Previously, we had duplicate files in both root and backend/ directories, causing sync issues. Now:

Single source of truth: All code in backend/ No sync issues: No duplicate files to keep in sync Clear structure: Production deploys from backend/ Simpler workflow: One place to make changes

Documentation

  • Full Documentation: See backend/CLAUDE.md
  • Deployment Guide: See backend/DEV_PROD_SETUP.md
  • API Endpoints: See backend/README.md

Making Changes

  1. Navigate to backend/
  2. Make your changes
  3. Test locally with ./scripts/run-local.sh
  4. Commit and push
  5. Deploy to production: git pull on server

🚀 Always work in the backend/ directory!