from flask import jsonify, request import db from core.flask_app import app @app.route("/game//quests//dialogues", methods=["POST"]) def quest_dialogues(slug, quest_id): """Toujours les 3 colonnes ENTIÈRES (voir db.set_quest_dialogues) — le client (renderQuestDialogueColumns, quest-editor.js) poste l'objet complet à chaque modification plutôt qu'une réplique isolée. Refusé (400) si la somme des récompenses des questions ("❓ Question") dépasse la récompense totale de la quête (recompense_score) — voir db.quest_dialogues_total_reward. Validé ICI (avant persistance) plutôt que dans db.set_quest_dialogues, pour renvoyer un message d'erreur explicite au lieu d'enregistrer silencieusement un état incohérent.""" quest = db.get_quest(slug, quest_id) if quest is None: return jsonify({"error": "quête introuvable"}), 404 body = request.get_json(silent=True) or {} sanitized = db.sanitize_quest_dialogues(body.get("dialogues")) allocated = db.quest_dialogues_total_reward(sanitized) if allocated > quest["recompense_score"]: return jsonify({ "error": ( f"La somme des récompenses des questions ({allocated} pts) dépasse " f"la récompense totale de la quête ({quest['recompense_score']} pts)." ), }), 400 dialogues = db.set_quest_dialogues(slug, quest_id, body.get("dialogues")) return jsonify({"dialogues": dialogues})