""" Flask Admin Interface pentru Import Comenzi Web → ROA Gestionează mapările SKU în tabelul ARTICOLE_TERTI """ from flask import Flask, jsonify, request, render_template_string from flask_cors import CORS from dotenv import load_dotenv import oracledb import os import logging from datetime import datetime # Configurare environment load_dotenv() # Configurare logging logging.basicConfig( level=logging.DEBUG, format='%(asctime)s | %(levelname)s | %(message)s', handlers=[ logging.FileHandler('/app/logs/admin.log'), logging.StreamHandler() ] ) logger = logging.getLogger(__name__) # Environment Variables pentru Oracle user = os.environ['ORACLE_USER'] password = os.environ['ORACLE_PASSWORD'] dsn = os.environ['ORACLE_DSN'] # Oracle client - AUTO-DETECT: thick mode pentru 10g/11g, thin mode pentru 12.1+ force_thin_mode = os.environ.get('FORCE_THIN_MODE', 'false').lower() == 'true' instantclient_path = os.environ.get('INSTANTCLIENTPATH') if force_thin_mode: logger.info(f"FORCE_THIN_MODE=true: Folosind thin mode pentru {dsn} (Oracle 12.1+ required)") elif instantclient_path: try: oracledb.init_oracle_client(lib_dir=instantclient_path) logger.info(f"Thick mode activat pentru {dsn} (compatibil Oracle 10g/11g/12.1+)") except Exception as e: logger.error(f"Eroare thick mode: {e}") logger.info("Fallback la thin mode - verifică că Oracle DB este 12.1+") else: logger.info(f"Thin mode (default) pentru {dsn} - Oracle 12.1+ required") app = Flask(__name__) CORS(app) def start_pool(): """Inițializează connection pool Oracle""" try: pool = oracledb.create_pool( user=user, password=password, dsn=dsn, min=2, max=4, increment=1 ) logger.info(f"Oracle pool creat cu succes pentru {dsn}") return pool except Exception as e: logger.error(f"Eroare creare pool Oracle: {e}") raise @app.route('/health') def health(): """Health check pentru Docker""" return jsonify({"status": "ok", "timestamp": datetime.now().isoformat()}) @app.route('/') def home(): """Pagina principală admin interface""" html_template = """
Loading...