Refactor routes Flask en Blueprints

This commit is contained in:
2026-08-09 09:50:49 +02:00
parent a25043dc3f
commit c2f97276b6
24 changed files with 1773 additions and 1688 deletions
+73
View File
@@ -0,0 +1,73 @@
from flask import Blueprint, jsonify, render_template, request
from app.decorators import login_required
analyse_bp = Blueprint("analyse", __name__)
@analyse_bp.route("/analyse", methods=["GET"])
@login_required
def analyse():
"""Page d'analyse technique. Si un ISIN est passé en paramètre (?isin=...),
on l'analyse et on affiche la fiche complète ; sinon on affiche la page
de recherche."""
isin = request.args.get("isin", "").strip().upper()
if not isin:
return render_template("analyse.html", resultat=None)
from app.services.analysis import analyse_action
print(f"[analyse] ISIN demandé : {isin}", flush=True)
resultat = analyse_action(isin)
if resultat is None:
# ISIN absent du référentiel actions
return render_template(
"analyse.html",
resultat={
"isin": isin,
"action": None,
"erreur": f"Aucune donnée trouvée pour l'ISIN {isin}. "
f"Vérifiez le code ou importez d'abord l'historique.",
},
isin_recherche=isin,
)
if resultat.get("erreur"):
# ISIN présent mais historique insuffisant
print(f"[analyse] {isin} : {resultat['erreur']}", flush=True)
else:
print(
f"[analyse] {isin} : cours={resultat.get('cours')} "
f"score={resultat.get('score')} tendance={resultat.get('tendance')}",
flush=True,
)
return render_template("analyse.html", resultat=resultat, isin_recherche=isin)
@analyse_bp.route("/analyse/<isin>", methods=["GET"])
@login_required
def analyse_isin(isin):
"""Page d'analyse technique complète pour un ISIN donné."""
from app.services.analysis import analyse_action
isin = isin.strip().upper()
resultat = analyse_action(isin)
return render_template("analyse.html", resultat=resultat, isin_recherche=isin)
@analyse_bp.route("/api/analyse/<isin>", methods=["GET"])
@login_required
def api_analyse(isin):
"""API JSON retournant l'analyse technique complète d'un ISIN."""
from app.services.analysis import analyse_action
isin = isin.strip().upper()
resultat = analyse_action(isin)
if resultat is None:
return jsonify({"erreur": f"ISIN {isin} introuvable dans le référentiel actions."}), 404
if resultat.get("erreur"):
return jsonify(resultat), 200
return jsonify(resultat)