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>
39 lines
1.1 KiB
Python
Executable file
39 lines
1.1 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
"""
|
|
Production server wrapper for Visual AI QC
|
|
Runs the Flask application using Waitress WSGI server
|
|
"""
|
|
import argparse
|
|
import sys
|
|
import os
|
|
from waitress import serve
|
|
|
|
# Add current directory to Python path
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
# Import the Flask app
|
|
from api_server import app
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description='Run Visual AI QC API Server')
|
|
parser.add_argument('--host', default='localhost', help='Host to bind to')
|
|
parser.add_argument('--port', type=int, default=7183, help='Port to bind to')
|
|
parser.add_argument('--workers', type=int, default=2, help='Number of worker threads')
|
|
|
|
args = parser.parse_args()
|
|
|
|
print(f"Starting Visual AI QC server on {args.host}:{args.port}")
|
|
print(f"Worker threads: {args.workers}")
|
|
print(f"Working directory: {os.getcwd()}")
|
|
|
|
# Use Waitress WSGI server (production-ready)
|
|
serve(
|
|
app,
|
|
host=args.host,
|
|
port=args.port,
|
|
threads=args.workers,
|
|
url_scheme='http'
|
|
)
|
|
|
|
if __name__ == '__main__':
|
|
main()
|