"""Настройки: LLM-статус, пинг и редактор промптов.""" from __future__ import annotations from flask import Blueprint, jsonify, render_template, request from ..auth.decorators import login_required from ..services.llm_client import get_llm_config, ping_llm from ..services import prompt_store settings_bp = Blueprint('settings', __name__) @settings_bp.route('/settings', methods=['GET']) @login_required def settings_page(): cfg = get_llm_config() return render_template( 'settings.html', configured=cfg is not None, provider=cfg.provider if cfg else None, model=cfg.model if cfg else None, base_url=cfg.base_url if cfg else None, ) @settings_bp.route('/settings/prompts', methods=['GET']) @login_required def prompts_page(): return render_template('settings_prompts.html', prompts=prompt_store.get_all()) @settings_bp.route('/api/llm/ping', methods=['POST', 'GET']) @login_required def api_llm_ping(): return jsonify(ping_llm()) @settings_bp.route('/api/ai/prompts', methods=['GET']) @login_required def api_get_prompts(): return jsonify(prompts=prompt_store.get_all()) @settings_bp.route('/api/ai/prompts/', methods=['PUT']) @login_required def api_save_prompt(prompt_id: str): body = request.get_json(silent=True) or {} system = str(body.get('system') or '').strip() user = str(body.get('user') or '').strip() try: prompt_store.save_prompt(prompt_id, system, user) except KeyError as e: return jsonify(ok=False, error=str(e)), 404 except Exception as e: return jsonify(ok=False, error=str(e)), 500 return jsonify(ok=True)