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

62 lines
2.4 KiB
Python
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 CallToActionApp(FlaskAppTemplate):
"""
Call to Action Check
"""
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 whether the text on the advertisement includes an effective call-to-action with the following criteria:
1. Uses an imperative verb (such as "Buy", "Try", "Get", "Discover", etc.)
2. Contains 10 words or less
3. Is free of spelling and grammar errors
4. Encourages the viewer to buy, use, or consume the product featured
STEPS TO EVALUATE:
1. Examine the Text Content: Identify any text present on the advertisement, specifically focusing on the call-to-action.
2. Call-to-Action Analysis:
a. Identify the main call-to-action text (if present)
b. Check if it begins with or contains an imperative verb
c. Count the number of words (must be 10 or fewer)
d. Check for spelling and grammar errors
3. Effectiveness Check:
a. Evaluate if the text includes clear persuasive language encouraging purchase, use, or consumption
b. Assess whether it goes beyond merely being a product claim
c. Determine if it inspires action
YOUR OUTPUT:
1. State whether a call-to-action is present
2. If present:
- Note if it uses an imperative verb
- Count the words (should be 10 or fewer)
- Verify it's free of spelling/grammar errors
- Assess if it effectively encourages action
3. Provide an overall pass/fail assessment
4. If it fails, provide 12 concise recommendations for improvement
5. Include a JSON code block with these fields:
{
"cta_present": true or false,
"uses_imperative_verb": true or false,
"word_count": number,
"word_count_acceptable": true or false,
"spelling_grammar_correct": true or false,
"encourages_action": true or false,
"overall_assessment": "Pass" or "Fail",
"recommendations": ["Recommendation 1", "Recommendation 2"] (if failed)
}"""
# Initialize the Flask app with the prompt
super().__init__(__name__, prompt)
# Run the app if executed directly
if __name__ == "__main__":
app = CallToActionApp()
app.run(debug=True)