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>
62 lines
2.4 KiB
Python
Executable file
62 lines
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 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 1–2 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)
|