Files
contracts-flask/site/routes/prompts_bp.py
T
“Naeel” e3f5581712
Deploy contracts-flask / validate (push) Canceled after 0s
v2.0.15: фиксы по ревью Соннета (10 находок)
- #1 process.py: target_id→target_hash (UPDATE/DELETE больше не UNRESOLVED)
- #2 Dockerfile: COPY upload
- #3 prompts.py: убран created_by из SELECT
- #4 prompts_bp.py: save_new_version/delete_prompt
- #5 llm.py/classify.py: LLM-конфиг из config.py
- #6/#7 compare.js: escHtml (XSS)
- #8-#10: комментарии + мёртвый gen_random_uuid
2026-08-26 15:59:21 +03:00

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.save_new_version(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(prompt_id)
return jsonify(ok=True)
except Exception as e:
return jsonify(ok=False, error=str(e)), 500