Spaces:
Running
Running
| import sys | |
| import os | |
| import time | |
| import webbrowser | |
| import threading | |
| import uvicorn | |
| import logging | |
| # Set up professional logging | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format="%(asctime)s | %(levelname)s | %(message)s", | |
| ) | |
| logger = logging.getLogger("super-ai-launcher") | |
| # ASCII Art Header | |
| BANNER = r""" | |
| ____ _ _ ____ _____ ____ _ ___ _ _ _ _ _ __ ______ ___ ____ | |
| / ___|| | | | _ \| ____| _ \ / \ |_ _| / \ | \ | | / \ | | \ \ / / ___|_ _/ ___| | |
| \___ \| | | | |_) | _| | |_) | / _ \ | | / _ \ | \| | / _ \ | | \ V /\___ \ | \___ \ | |
| ___) | |_| | __/| |___| _ < / ___ \ | | / ___ \| |\ |/ ___ \| |___| | ___) | | ___) | | |
| |____/ \___/|_| |_____|_| \_\/_/ \_\___| /_/ \_\_| \_/_/ \_\_____|_| |____/___|____/ | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| TRADING INTELLIGENT TERMINAL - AI PHΓN TΓCH BIα»U Δα» NαΊΎN Sα» 1 THαΊΎ GIα»I | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| """ | |
| def print_banner(): | |
| # Clear console for a clean startup | |
| os.system('cls' if os.name == 'nt' else 'clear') | |
| print("\033[96m" + BANNER + "\033[0m") | |
| print(" [*] Δang khα»i Δα»ng hα» thα»ng phΓ’n tΓch AI...") | |
| print(" [*] Δang nαΊ‘p cΖ‘ sα» dα»― liα»u thα» trΖ°α»ng...") | |
| print(" [*] Hα» thα»ng sαΊ½ tα»± Δα»ng mα» trΓ¬nh duyα»t sau khi hoΓ n tαΊ₯t.") | |
| print(" ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ\n") | |
| # Import the FastAPI app | |
| try: | |
| from main import app | |
| except ImportError: | |
| # If running from within the backend folder | |
| sys.path.append(os.path.dirname(__file__)) | |
| from main import app | |
| def open_browser(): | |
| """Wait for the server to start and then open the browser.""" | |
| # Give the server a few seconds to initialize | |
| time.sleep(2.5) | |
| url = "http://127.0.0.1:8000" | |
| logger.info(f"KαΊΏt nα»i thΓ nh cΓ΄ng! Δang mα» bαΊ£ng Δiα»u khiα»n tαΊ‘i {url}...") | |
| webbrowser.open(url) | |
| if __name__ == "__main__": | |
| print_banner() | |
| # Start the browser opener in a separate thread | |
| threading.Thread(target=open_browser, daemon=True).start() | |
| # Run the uvicorn server | |
| logger.info("Khα»i Δα»ng Backend Core...") | |
| try: | |
| # Hide the detailed uvicorn logs for a cleaner professional feel, | |
| # or keep them for transparency. Let's use 'warning' level for uvicorn | |
| # but keep our own logs at 'info'. | |
| uvicorn.run(app, host="127.0.0.1", port=8000, log_level="warning") | |
| except Exception as e: | |
| logger.error(f"Lα»i khα»i Δα»ng hα» thα»ng: {e}") | |
| print("\n [!] CΓ³ lα»i xαΊ£y ra trong quΓ‘ trΓ¬nh khα»i Δα»ng.") | |
| print(" [!] NhαΊ₯n Enter Δα» xem chi tiαΊΏt lα»i vΓ thoΓ‘t...") | |
| input() | |