import os import sys import logging from pathlib import Path from app import app from config import Config from training import TrainingDataManager # Ensuring the backend directory is in the system path backend_dir = Path(__file__).parent sys.path.insert(0, str(backend_dir)) # Configure logging logging.basicConfig( level=getattr(logging, Config.LOG_LEVEL), format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__) def setup_environment(): """Set up the application environment.""" try: # Validate and create required directories Config.validate_paths() # Initialize training data manager training_manager = TrainingDataManager() # Log training data statistics stats = training_manager.get_training_statistics() logger.info(f"Training data loaded: {stats}") # Validate training data validation = training_manager.validate_training_data() logger.info(f"Training data validation: {validation}") return True except Exception as e: logger.error(f"Error setting up environment: {e}") return False def main(): """Main application entry point.""" logger.info("Starting Memory Module Detection API") # Set up environment if not setup_environment(): logger.error("Failed to set up environment") sys.exit(1) # Display configuration logger.info(f"Server configuration:") logger.info(f" - Host: {Config.HOST}") logger.info(f" - Port: {Config.PORT}") logger.info(f" - Debug: {Config.DEBUG}") logger.info(f" - Algorithm: {Config.ALGORITHM}") logger.info(f" - Max file size: {Config.MAX_CONTENT_LENGTH} bytes") # Start the Flask application try: app.run( host=Config.HOST, port=Config.PORT, debug=Config.DEBUG, threaded=True ) except KeyboardInterrupt: logger.info("Application stopped by user") except Exception as e: logger.error(f"Application error: {e}") sys.exit(1) if __name__ == '__main__': main()