ai_qc/backend/visual_qc_apps/aspect_ratio/app.py
nickviljoen 3fec052c12 Create frontend and backend folder structure for deployment
Organized the application into separate frontend and backend directories for cleaner deployment and better separation of concerns.

Frontend Directory (frontend/):
- index.html: Single-page web interface (renamed from web_ui.html)
- README.md: Frontend deployment guide
- Total size: ~113 KB (self-contained)
- Smart base path detection (works at / or /ai_qc/)
- No configuration changes required

Backend Directory (backend/):
- All Python files (api_server.py, llm_config.py, etc.)
- visual_qc_apps/: 33 QC check modules
- profiles/: 6 QC profile configurations
- brand_guidelines/: Reference asset storage
- config/: Environment configurations
- scripts/: Deployment automation
- uploads/, output/: Data directories
- requirements.txt, ai_qc.service, apache_config.conf
- Complete documentation

New Documentation:
- FOLDER_STRUCTURE.md: Comprehensive guide to new structure
- frontend/README.md: Frontend deployment instructions
- backend/BACKEND_README.md: Backend deployment guide

Deployment Mapping:
- frontend/ → /var/www/html/ai_qc/ (web root)
- backend/ → /opt/ai_qc/ (application directory)

Benefits:
- Clear separation of concerns
- Backend code not in web-accessible directory
- Independent frontend/backend updates
- Matches server's existing patterns (/opt/veo3, /opt/voice2text)
- Industry-standard architecture
- Easy to deploy and maintain

Original files preserved in root directory for reference.
Ready for production deployment following MIGRATION_GUIDE.md.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06 11:55:53 +02:00

57 lines
No EOL
2.5 KiB
Python
Executable file

import os
import sys
# Add parent directory to path to import shared modules
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
from visual_qc_apps.flask_app_template import FlaskAppTemplate
class AspectRatioApp(FlaskAppTemplate):
"""
Aspect Ratio Check
"""
def __init__(self):
# Define the hardcoded prompt
prompt = """You are performing a visual quality-control check on an advertisement to verify its aspect ratio. Your task is to determine whether the design has the correct aspect ratio for its intended use.
COMMON ASPECT RATIOS:
1. 16:9 - Standard widescreen video, digital displays, YouTube, social media video
2. 4:3 - Traditional TV/computer monitors, some digital presentations
3. 9:16 - Mobile video, Instagram Stories, TikTok
4. 1:1 - Square format for Instagram, Facebook, Twitter
5. 21:9 - Ultrawide displays, cinematic video
6. 2:1 - Film, some social media platforms
7. 3:2 - Print photography, some display ads
8. 4:5 - Instagram portrait orientation
9. Custom ratios for specific ad placements (billboards, banners, etc.)
STEPS TO EVALUATE:
1. Look for any visible dimensions or aspect ratio information in the image
2. If dimensions are visible, calculate the aspect ratio
3. Determine the likely intended use of the advertisement (based on content or metadata)
4. Check if the calculated aspect ratio matches the standard ratio for that intended use
5. If no dimensions are visible, try to visually estimate if the overall proportions match common formats
6. If you cannot determine dimensions or intended use, state that "Aspect ratio could not be verified."
YOUR OUTPUT:
• State whether dimension information was visible in the image
• If visible, state the calculated aspect ratio (e.g., "16:9", "4:3")
• State the likely intended use of the advertisement
• State whether the aspect ratio "passes" or "fails" for the intended use
• Include a JSON code block with these fields:
{
"dimensions_visible": true or false,
"calculated_aspect_ratio": "16:9" or other ratio or "Unknown",
"intended_use": "Social media video" or other use or "Unknown",
"aspect_ratio_check": "Pass" or "Fail" or "Not applicable",
"recommendations": ["List specific recommendations if applicable, else an empty array"]
}"""
# Initialize the Flask app with the prompt
super().__init__(__name__, prompt)
# Run the app if executed directly
if __name__ == "__main__":
app = AspectRatioApp()
app.run(debug=True)