72 lines
2.3 KiB
Python
72 lines
2.3 KiB
Python
"""Prompts blueprint — CRUD + activate для версионирования промптов."""
|
|
from flask import Blueprint, request, jsonify
|
|
from .db import prompts as db_prompts
|
|
|
|
prompts_bp = Blueprint("prompts", __name__)
|
|
|
|
|
|
@prompts_bp.route("/api/prompts", methods=["GET"])
|
|
def prompts_get():
|
|
role = request.args.get("role")
|
|
if not role:
|
|
return jsonify(ok=False, error="role required"), 400
|
|
p = db_prompts.get_active(role)
|
|
if p:
|
|
return jsonify(ok=True, **{
|
|
"id": p["id"], "role": p["role"], "name": p["name"],
|
|
"body": p["body"], "is_active": p["is_active"],
|
|
"notes": p.get("notes"), "created_at": str(p.get("created_at", "")),
|
|
})
|
|
return jsonify(ok=False, error="not found"), 404
|
|
|
|
|
|
@prompts_bp.route("/api/prompts/list", methods=["GET"])
|
|
def prompts_list():
|
|
role = request.args.get("role")
|
|
if not role:
|
|
return jsonify(ok=False, error="role required"), 400
|
|
versions = db_prompts.list_by_role(role)
|
|
return jsonify(ok=True, versions=versions)
|
|
|
|
|
|
@prompts_bp.route("/api/prompts/save", methods=["POST"])
|
|
def prompts_save():
|
|
body = request.get_json()
|
|
if not body:
|
|
return jsonify(ok=False, error="body required"), 400
|
|
role = body.get("role", "")
|
|
name = body.get("name", "")
|
|
prompt_body = body.get("body", "")
|
|
notes = body.get("notes", "")
|
|
try:
|
|
p = db_prompts.insert(role, name, prompt_body, notes)
|
|
return jsonify(ok=True, id=p["id"])
|
|
except Exception as e:
|
|
return jsonify(ok=False, error=str(e)), 500
|
|
|
|
|
|
@prompts_bp.route("/api/prompts/activate", methods=["POST"])
|
|
def prompts_activate():
|
|
body = request.get_json()
|
|
if not body:
|
|
return jsonify(ok=False, error="body required"), 400
|
|
prompt_id = body.get("id")
|
|
try:
|
|
db_prompts.activate(prompt_id)
|
|
return jsonify(ok=True)
|
|
except Exception as e:
|
|
return jsonify(ok=False, error=str(e)), 500
|
|
|
|
|
|
@prompts_bp.route("/api/prompts/delete", methods=["POST"])
|
|
def prompts_delete():
|
|
body = request.get_json()
|
|
if not body:
|
|
return jsonify(ok=False, error="body required"), 400
|
|
prompt_id = body.get("id")
|
|
try:
|
|
db_prompts.delete(prompt_id)
|
|
return jsonify(ok=True)
|
|
except Exception as e:
|
|
return jsonify(ok=False, error=str(e)), 500
|