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>
40 lines
1.9 KiB
Python
Executable file
40 lines
1.9 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 LowercaseTextApp(FlaskAppTemplate):
|
|
"""
|
|
Lowercase Text 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 more than 50% of the visible words on the advertisement are in lowercase (or mixed case with predominantly lowercase letters). Do not consider logos, the word "NEW," or any text on product packaging in your assessment.
|
|
|
|
STEPS TO EVALUATE:
|
|
1. Identify Words: Scan the advertisement to identify and count all visible, legible words excluding logos, the word "NEW," and text on packaging.
|
|
2. Classify Words: Count the number of words that are entirely in uppercase and the number of words that are in lowercase or sentence case (first letter capitalized).
|
|
3. Calculate Percentage: Determine if the percentage of lowercase/sentence case words is greater than 50% of the total count of words identified.
|
|
4. Lowercase Criteria: Number of lowercase/mixed case words divided by total number of words, multiplied by 100.
|
|
Evaluate:
|
|
5. If more than 50% of the words are lowercase or mixed case with predominantly lowercase letters, the check is a "Pass." Otherwise, the check is a "Fail."
|
|
|
|
YOUR OUTPUT:
|
|
Conclude with a JSON object indicating the result of the lowercase validation:
|
|
|
|
{
|
|
"lowercase_percentage": <calculated_percentage>,
|
|
"validation_result": "Pass" or "Fail"
|
|
}"""
|
|
|
|
# Initialize the Flask app with the prompt
|
|
super().__init__(__name__, prompt)
|
|
|
|
# Run the app if executed directly
|
|
if __name__ == "__main__":
|
|
app = LowercaseTextApp()
|
|
app.run(debug=True)
|