Files
MtoRagSystem/templates/admin/system/prompt.html.twig
2026-02-18 19:31:46 +01:00

190 lines
8.5 KiB
Twig
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{% extends 'admin/base.html.twig' %}
{% block title %}System Prompt{% endblock %}
{% block body %}
<div class="container-fluid">
<!-- HEADER -->
<div class="d-flex justify-content-between align-items-center mb-4">
<h1 class="h3">System Prompt Verwaltung</h1>
</div>
<!-- Flash Messages -->
{% for message in app.flashes('success') %}
<div class="alert alert-success">{{ message }}</div>
{% endfor %}
{% for message in app.flashes('danger') %}
<div class="alert alert-danger">{{ message }}</div>
{% endfor %}
<div class="row g-4">
<!-- ===================================================== -->
<!-- LEFT SIDE Versionen (50%) -->
<!-- ===================================================== -->
<div class="col-lg-6">
<div class="card bg-black border-secondary text-light h-100">
<div class="card-body">
<h5 class="text-info mb-3">Versionen</h5>
<div class="table-responsive">
<table class="table table-dark table-striped table-hover align-middle">
<thead class="table-secondary text-dark">
<tr>
<th>Version</th>
<th>Status</th>
<th>Kommentar</th>
<th>Erstellt</th>
<th class="text-end">Aktionen</th>
</tr>
</thead>
<tbody>
{% for p in all %}
<tr>
<td>v{{ p.version }}</td>
<td>
{% if p.active %}
<span class="badge bg-success">Aktiv</span>
{% else %}
<span class="badge bg-dark border border-secondary">
Inaktiv
</span>
{% endif %}
</td>
<td>{{ p.comment ?? '-' }}</td>
<td>{{ p.createdAt|date('d.m.Y H:i:s') }}</td>
<td class="text-end">
{% if not p.active and is_granted('ROLE_SUPER_ADMIN') %}
<form method="post"
action="{{ path('admin_system_prompt_activate', {id: p.id}) }}"
class="d-inline"
onsubmit="return confirm('Diese Version aktivieren?');">
<input type="hidden"
name="_token"
value="{{ csrf_token('activate_system_prompt_' ~ p.id) }}">
<button class="btn btn-sm btn-outline-success me-2">
Aktivieren
</button>
</form>
<form method="post"
action="{{ path('admin_system_prompt_delete', {id: p.id}) }}"
class="d-inline"
onsubmit="return confirm('Version wirklich löschen?');">
<input type="hidden"
name="_token"
value="{{ csrf_token('delete_system_prompt_' ~ p.id) }}">
<button class="btn btn-sm btn-outline-danger">
Löschen
</button>
</form>
{% else %}
<span class="text-secondary">—</span>
{% endif %}
</td>
</tr>
{% else %}
<tr>
<td colspan="5" class="text-center text-secondary py-4">
Keine Versionen vorhanden.
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<hr class="border-secondary mt-4">
<div class="small text-secondary">
<strong>Governance-Hinweis:</strong><br>
Der aktive System Prompt beeinflusst das globale Antwortverhalten des LLM unmittelbar.
Änderungen sollten dokumentiert, versioniert und nachvollziehbar erfolgen.
</div>
</div>
</div>
</div>
<!-- ===================================================== -->
<!-- RIGHT SIDE Neue Version (50%) -->
<!-- ===================================================== -->
<div class="col-lg-6">
<div class="card bg-black border-secondary text-light h-100">
<div class="card-body">
<h5 class="text-info mb-3">Neue Version erstellen</h5>
<form method="post">
<input type="hidden"
name="_token"
value="{{ csrf_token('create_system_prompt') }}">
<div class="mb-3">
<label class="form-label">Kommentar (optional)</label>
<input type="text"
name="comment"
class="form-control bg-dark text-light border-secondary"
placeholder="Warum wurde der Prompt geändert?">
<div class="form-text text-secondary">
Dokumentation der Änderung für spätere Nachvollziehbarkeit.
</div>
</div>
<div class="mb-3">
<label class="form-label">Prompt-Inhalt</label>
<div class="form-text text-secondary mb-2">
Verfügbare Variable:
<code>{% verbatim %}{% now %}{% endverbatim %}</code>
(aktuelles Datum / Zeit)
</div>
<textarea name="content"
rows="18"
class="form-control bg-dark text-light border-secondary"
required>{{ active ? active.content : '' }}</textarea>
</div>
{% if is_granted('ROLE_SUPER_ADMIN') %}
<div class="d-flex justify-content-end">
<button class="btn btn-outline-info">
Neue Version speichern
</button>
</div>
{% endif %}
</form>
</div>
</div>
</div>
</div>
</div>
{% endblock %}