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>
51 lines
2.5 KiB
Python
Executable file
51 lines
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 VisualElementsCountApp(FlaskAppTemplate):
|
||
"""
|
||
Visual Elements Count
|
||
"""
|
||
|
||
def __init__(self):
|
||
# Define the hardcoded prompt
|
||
prompt = """You are performing a visual quality-control check on a POS advertisement. The brand wants to limit the design to no more than 4 distinct visual elements so that the message is clear and quick to process.
|
||
|
||
IMPORTANT PRE-ASSESSMENT INSTRUCTIONS:
|
||
Before assessment: Users often upload complex print production files with multiple panels, cut lines, and technical markings.
|
||
Your task: Focus ONLY on the primary consumer-facing visual - what the end customer would actually see after production.
|
||
|
||
Key instructions:
|
||
- Ignore cut lines, registration marks, and production guides
|
||
- If multiple panels exist, assess the main/largest consumer-facing design
|
||
- Disregard technical text, color bars, or printer information
|
||
- Focus on the final visual as it would appear on shelf/in-market
|
||
- Treat folded/die-cut layouts as the assembled final product
|
||
|
||
STEPS TO EVALUATE:
|
||
1. Examine the design components (logos, pack shots, icons, images, text blocks, promotion badges, etc.). Each distinct object or text grouping counts as one visual element that the viewer must actively notice.
|
||
2. Count the total number of these distinct visual elements.
|
||
3. If the count is more than 4, the design fails this checkpoint, as it may be too cluttered or complex. Otherwise, it passes.
|
||
|
||
YOUR OUTPUT:
|
||
• List all distinct visual elements you identified in the design (e.g., "1. Logo, 2. Product image, 3. Main headline...).
|
||
• State the total count of visual elements found.
|
||
• State whether the design "passes" or "fails" the simplified-design checkpoint.
|
||
• Provide a clear explanation of why it passes or fails based on the element count.
|
||
• If it fails, provide 1–2 concise recommendations for reducing or combining elements to achieve clarity.
|
||
• Include a JSON code block with two fields:
|
||
"visual_element_count": the total number of visual elements
|
||
"compliance_status": "Pass" or "Fail"
|
||
"""
|
||
|
||
# Initialize the Flask app with the prompt
|
||
super().__init__(__name__, prompt)
|
||
|
||
# Run the app if executed directly
|
||
if __name__ == "__main__":
|
||
app = VisualElementsCountApp()
|
||
app.run(debug=True)
|