71 lines
2.0 KiB
Python
71 lines
2.0 KiB
Python
from __future__ import annotations
|
|
import os, json, threading
|
|
from flask import Flask, jsonify, render_template, abort
|
|
from trading_bot import main as trading_bot_main # dostosuj jeśli moduł nazywa się inaczej
|
|
|
|
# Katalog projektu (tam gdzie leży ten plik)
|
|
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
|
|
# Domyślnie dane są w głównym katalogu projektu; można nadpisać przez env DATA_DIR
|
|
DATA_DIR = os.environ.get("DATA_DIR", BASE_DIR)
|
|
|
|
def _load_json(name: str):
|
|
path = os.path.join(DATA_DIR, name)
|
|
if not os.path.isfile(path):
|
|
return None
|
|
try:
|
|
with open(path, "r", encoding="utf-8") as f:
|
|
return json.load(f)
|
|
except Exception:
|
|
return None
|
|
|
|
app = Flask(
|
|
__name__,
|
|
static_folder="static",
|
|
static_url_path="/static", # <-- ważne: z wiodącym slashem
|
|
template_folder="templates",
|
|
)
|
|
|
|
@app.route("/")
|
|
def index():
|
|
return render_template("index.html")
|
|
|
|
@app.route("/api/snapshot")
|
|
def api_snapshot():
|
|
data = _load_json("snapshot.json")
|
|
if data is None:
|
|
abort(404, description="snapshot.json not found")
|
|
return jsonify(data)
|
|
|
|
@app.route("/api/history")
|
|
def api_history():
|
|
data = _load_json("portfolio_history.json")
|
|
if data is None:
|
|
abort(404, description="portfolio_history.json not found")
|
|
return jsonify(data)
|
|
|
|
@app.route("/api/positions")
|
|
def api_positions():
|
|
data = _load_json("positions.json")
|
|
if data is None:
|
|
data = []
|
|
return jsonify(data)
|
|
|
|
@app.route("/api/trades")
|
|
def api_trades():
|
|
data = _load_json("trade_log.json")
|
|
if data is None:
|
|
data = []
|
|
return jsonify(data)
|
|
|
|
def start_trading_bot():
|
|
"""Uruchamia bota w osobnym wątku."""
|
|
trading_thread = threading.Thread(target=trading_bot_main, daemon=True)
|
|
trading_thread.start()
|
|
print("[Flask] Trading bot uruchomiony w wątku.")
|
|
|
|
if __name__ == "__main__":
|
|
print(f"[Flask] DATA_DIR: {DATA_DIR}")
|
|
start_trading_bot()
|
|
app.run(host="0.0.0.0", port=int(os.environ.get("PORT", 5000)), debug=True)
|