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/", 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/", 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)