|
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: |
|
|
|
|
|
result = subprocess.run( |
|
['node', 'ask_copilot.js', question], |
|
capture_output=True, |
|
text=True, |
|
check=True, |
|
env=dict(os.environ, PUPPETEER_EXECUTABLE_PATH='/usr/bin/google-chrome'), |
|
timeout=60 |
|
) |
|
|
|
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))) |