from flask import Flask, request, jsonify import subprocess import json import os app = Flask(__name__) def run_puppeteer_script(question): """Uruchamia skrypt Node.js (Puppeteer) jako oddzielny proces.""" try: # Używamy npx, aby upewnić się, że Puppeteer jest dostępny # i że mamy najnowszą wersję zgodną z naszym skryptem JS. result = subprocess.run( ['node', 'ask_copilot.js', question], # Przekazanie pytania jako argumentu capture_output=True, text=True, check=True, env=dict(os.environ, PUPPETEER_EXECUTABLE_PATH='/usr/bin/google-chrome'), # Ustawienie zmiennej środowiskowej timeout=60 # Dodanie timeoutu ) # Skrypt JS powinien zwracać odpowiedź w formacie JSON return json.loads(result.stdout) except subprocess.CalledProcessError as e: return {"error": "Błąd podczas uruchamiania Puppeteer", "details": str(e)} except json.JSONDecodeError: return {"error": "Błąd dekodowania JSON", "output": result.stdout} except subprocess.TimeoutExpired: return {"error": "Przekroczono czas oczekiwania na odpowiedź"} @app.route('/api/ask', methods=['POST']) def ask_copilot_route(): """Endpoint API do zadawania pytań Copilot.""" data = request.get_json() if not data or 'question' not in data: return jsonify({"error": "Brak pytania"}), 400 question = data['question'] response = run_puppeteer_script(question) return jsonify(response) if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))