131 lines
4.2 KiB
Twig
131 lines
4.2 KiB
Twig
{% extends 'admin/base.html.twig' %}
|
|
|
|
{% block title %}Admin Dashboard{% endblock %}
|
|
|
|
{% block body %}
|
|
|
|
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
<h1 class="h3 mb-0">Dashboard</h1>
|
|
</div>
|
|
|
|
{# ============================= #}
|
|
{# USER INFO CARD #}
|
|
{# ============================= #}
|
|
|
|
<div class="card bg-black border-secondary mb-4 text-light">
|
|
<div class="card-body">
|
|
|
|
<h5 class="text-info mb-3">System Benutzer</h5>
|
|
|
|
<div class="mb-2">
|
|
<strong>User:</strong>
|
|
{{ app.user.userIdentifier }}
|
|
</div>
|
|
|
|
<div class="mb-2">
|
|
<strong>Rollen:</strong>
|
|
{{ app.user.roles|join(', ') }}
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
{# ============================= #}
|
|
{# SYSTEM RESET CARD #}
|
|
{# ============================= #}
|
|
|
|
{% if is_granted('ROLE_SUPER_ADMIN') %}
|
|
|
|
<div class="card bg-black border-danger mb-4 text-light">
|
|
<div class="card-body">
|
|
|
|
<h5 class="text-danger mb-3">System Reset</h5>
|
|
|
|
<div class="small text-light mb-3">
|
|
Der Reset entfernt:
|
|
<ul class="mb-2">
|
|
<li>Alle Dokumente und Versionen</li>
|
|
<li>Den gesamten NDJSON-Index</li>
|
|
<li>Den FAISS-Vektorindex</li>
|
|
<li>Alle Ingest-Jobs</li>
|
|
</ul>
|
|
Diese Aktion ist <strong>irreversibel</strong>.
|
|
</div>
|
|
|
|
{% for label, messages in app.flashes %}
|
|
{% for message in messages %}
|
|
<div class="alert alert-{{ label }}">
|
|
{{ message }}
|
|
</div>
|
|
{% endfor %}
|
|
{% endfor %}
|
|
|
|
<form method="post"
|
|
action="{{ path('admin_document_reset') }}"
|
|
onsubmit="return confirm('Wirklich das gesamte System zurücksetzen? Diese Aktion ist endgültig.');">
|
|
|
|
<input type="hidden"
|
|
name="_token"
|
|
value="{{ csrf_token('system_reset') }}">
|
|
|
|
<button type="submit"
|
|
class="btn btn-outline-danger">
|
|
System vollständig zurücksetzen
|
|
</button>
|
|
</form>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
{% endif %}
|
|
|
|
{# ============================= #}
|
|
{# KNOWLEDGE INDEX STATUS #}
|
|
{# ============================= #}
|
|
|
|
{% set percent = chunkLimit > 0 ? (chunkCount / chunkLimit * 100)|round(1) : 0 %}
|
|
|
|
<div class="card bg-black border-secondary text-light">
|
|
<div class="card-body">
|
|
|
|
<h5 class="text-info mb-3">Knowledge Index Status</h5>
|
|
|
|
<div class="mb-2">
|
|
<strong>Chunks:</strong>
|
|
{{ chunkCount|number_format(0, ',', '.') }}
|
|
/
|
|
{{ chunkLimit|number_format(0, ',', '.') }}
|
|
</div>
|
|
|
|
<div class="progress bg-dark" style="height: 18px;">
|
|
<div
|
|
class="progress-bar
|
|
{% if percent >= 95 %}
|
|
bg-danger
|
|
{% elseif percent >= 85 %}
|
|
bg-warning text-dark
|
|
{% else %}
|
|
bg-success
|
|
{% endif %}"
|
|
role="progressbar"
|
|
aria-valuenow="{{ percent }}"
|
|
aria-valuemin="0"
|
|
aria-valuemax="100"
|
|
style="width: {{ percent }}%;"
|
|
>
|
|
{{ percent }}%
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mt-3 small text-secondary">
|
|
System ist für maximal {{ chunkLimit|number_format(0, ',', '.') }} Chunks optimiert.
|
|
{% if percent >= 95 %}
|
|
<br><strong class="text-danger">Kapazitätsgrenze nahezu erreicht.</strong>
|
|
{% endif %}
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
{% endblock %}
|