ai_qc/backend/visual_qc_apps/element_alignment/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

56 lines
No EOL
2.4 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 ElementAlignmentApp(FlaskAppTemplate):
"""
Element Alignment Check
"""
def __init__(self):
# Define the hardcoded prompt
prompt = """You are performing a visual quality-control check on an advertisement to verify the alignment of its elements. Your task is to determine whether all design elements are properly aligned according to professional design standards.
ALIGNMENT CRITERIA:
1. Elements should be aligned horizontally and vertically where appropriate
2. Text blocks should have consistent alignment (left, right, center, or justified)
3. Related elements should share alignment points
4. Elements should align with a visible or implied grid structure
5. Centered elements should be precisely centered
6. Key alignment points include:
- Edges (top, bottom, left, right)
- Centers (horizontal and vertical)
- Baselines (for text)
STEPS TO EVALUATE:
1. Identify key elements in the design (logos, text blocks, images, buttons, etc.)
2. Check horizontal alignment of elements (left, center, right)
3. Check vertical alignment of elements (top, middle, bottom)
4. Look for any elements that appear misaligned or "off by a few pixels"
5. Check if text has consistent alignment (especially within the same block)
6. Check if centered elements are precisely centered
7. Look for any visible guides or grid systems and check if elements align with them
YOUR OUTPUT:
• State whether all elements appear properly aligned
• If any misalignment is detected, identify the specific elements and alignment issues
• Provide recommendations for correcting any alignment issues
• Include a JSON code block with these fields:
{
"all_elements_properly_aligned": true or false,
"alignment_check": "Pass" or "Fail",
"misaligned_elements": ["List specific misaligned elements, if any, else an empty array"],
"recommendations": ["List specific alignment 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 = ElementAlignmentApp()
app.run(debug=True)