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>
43 lines
1.8 KiB
Python
Executable file
43 lines
1.8 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 FaceGazeDirectionApp(FlaskAppTemplate):
|
|
"""
|
|
Face Gaze Direction
|
|
"""
|
|
|
|
def __init__(self):
|
|
# Define the hardcoded prompt
|
|
prompt = """You are performing a visual quality-control check on a Point of Sale (POS) advertisement. Your task is to determine if any face(s) present are looking at the product or main message. This is crucial for assessing engagement potential. Follow these steps to evaluate:
|
|
|
|
STEPS TO EVALUATE:
|
|
Face Detection: Identify if there is at least one face in the advertisement.
|
|
Eye Line Analysis: Determine if the line of sight of the face(s) is directed towards the product or main message.
|
|
If the face is aligned towards the camera or another direction, classify as not looking at the product/message.
|
|
Engagement Analysis: Based on eye line direction:
|
|
"Looking at Product/Message" indicates high engagement potential.
|
|
"Looking elsewhere" suggests low to medium engagement potential.
|
|
|
|
YOUR OUTPUT:
|
|
Indicate whether a face is present in the advertisement.
|
|
If a face is present, state whether the advertisement "passes" or "fails" the eye-line-to-message alignment check.
|
|
Include a JSON code block with these fields:
|
|
|
|
{
|
|
"face_present": true or false,
|
|
"eye_line_alignment": "Pass" or "Fail" (only if face_present is true),
|
|
"engagement_potential": "High" or "Low/Medium" (only if eye_line_alignment is "Pass")
|
|
}"""
|
|
|
|
# Initialize the Flask app with the prompt
|
|
super().__init__(__name__, prompt)
|
|
|
|
# Run the app if executed directly
|
|
if __name__ == "__main__":
|
|
app = FaceGazeDirectionApp()
|
|
app.run(debug=True)
|