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

59 lines
No EOL
2.6 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 AnimationTransitionsApp(FlaskAppTemplate):
"""
Animation Transition Check
"""
def __init__(self):
# Define the hardcoded prompt
prompt = """You are performing a visual quality-control check on an animated advertisement. Your task is to evaluate the smoothness of transitions and timing for readability in the animation.
ANIMATION CRITERIA:
1. Transitions between frames/states should be smooth and professional (not abrupt or jarring)
2. Timing for each frame should provide sufficient time to read any text or headlines
3. Text should remain on screen long enough to be read completely before transitioning
- General guideline: minimum 3 seconds for a short headline
- Minimum 5 seconds for longer text blocks
4. Animation should not start with an empty frame
5. Movement should be fluid and purposeful
6. Transitions should enhance rather than distract from the message
STEPS TO EVALUATE:
1. Determine if the image shows multiple frames/states of an animation (storyboard, timeline, etc.)
2. If animation frames are visible, assess:
a. Whether transitions appear smooth based on visible keyframes
b. Whether timing provides adequate reading time for text
c. Whether the animation starts with content (not an empty frame)
3. If you cannot see multiple frames/states, state that "Animation transitions could not be fully assessed from this static image."
YOUR OUTPUT:
• State whether animation frames/states are visible in the image
• If visible, evaluate:
- Smoothness of transitions
- Adequate timing for reading text
- Start frame has content (not empty)
• Include a JSON code block with these fields:
{
"animation_frames_visible": true or false,
"transition_smoothness": "Pass" or "Fail" or "Not applicable",
"reading_time_adequate": "Pass" or "Fail" or "Not applicable",
"starts_with_content": "Pass" or "Fail" or "Not applicable",
"animation_check": "Pass" or "Fail" or "Not applicable",
"issues": ["List specific issues identified, if any, else an empty array"],
"recommendations": ["List specific recommendations if applicable, else an empty array"]
}"""
# Initialize the Flask app with the prompt
super().__init__(__name__, prompt)
# Run the app if executed directly
if __name__ == "__main__":
app = AnimationTransitionsApp()
app.run(debug=True)