{% extends 'admin/base.html.twig' %}

{% block title %}Neues Indexierungsprofil{% endblock %}

{% block body %}
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h1 class="h3">Neues Indexierungsprofil</h1>

        <a href="{{ path('admin_ingest_profile_list') }}"
           class="btn btn-sm btn-outline-secondary">
            Zurück
        </a>
    </div>

    <div class="alert alert-warning border-warning bg-dark text-light mb-4">
        <strong>Wichtiger Hinweis:</strong><br>
        Änderungen am Indexierungsprofil beeinflussen die Struktur des Vektor-Indexes
        (Chunking, Embedding, Scoring). Nach Aktivierung ist ein vollständiger
        Global Reindex erforderlich.
    </div>

    <div class="card bg-black border-secondary text-light">
        <div class="card-body">

            <form method="post">
                <input type="hidden"
                       name="_token"
                       value="{{ csrf_token('create_ingest_profile') }}">

                <div class="row g-4">

                    <!-- ================================================= -->
                    <!-- CHUNKING -->
                    <!-- ================================================= -->
                    <div class="col-12">
                        <h5 class="text-info">Chunking-Konfiguration</h5>
                        <hr class="border-secondary">
                        <p class="text-secondary small">
                            Definiert, wie Dokumente in semantische Textabschnitte (Chunks) zerlegt werden.
                            Diese Struktur beeinflusst Retrieval-Qualität, Kontextstabilität und Indexgröße.
                        </p>
                    </div>

                    <div class="col-md-6">
                        <label class="form-label">Chunk Size</label>
                        <select name="chunk_size"
                                class="form-select bg-dark text-light border-secondary"
                                required>
                            {% for i in range(50, 1000, 25) %}
                                <option value="{{ i }}">
                                    {{ i }}
                                </option>
                            {% endfor %}
                        </select>
                        <div class="form-text text-secondary">
                            Maximale Wortanzahl pro Chunk.
                            <br><br>
                            <strong>Kleinere Werte:</strong> Mehr Chunks, höhere Granularität, präziseres Retrieval.
                            <br>
                            <strong>Größere Werte:</strong> Weniger Chunks, mehr Kontext pro Treffer.
                            <br><br>
                            Empfehlung für Produkt- und Wissensbasis: 600–1000.
                        </div>
                    </div>

                    <div class="col-md-6">
                        <label class="form-label">Chunk Overlap</label>
                        <select name="chunk_overlap"
                                class="form-select bg-dark text-light border-secondary"
                                required>
                            {% for i in range(25, 200, 25) %}
                                <option value="{{ i }}">
                                    {{ i }}
                                </option>
                            {% endfor %}
                        </select>
                        <div class="form-text text-secondary">
                            Anzahl überlappender Wörter zwischen zwei Chunks.
                            <br><br>
                            Verhindert Kontextabbrüche an Chunk-Grenzen.
                            <br>
                            Typischer Bereich: 10–20 % der Chunk Size.
                        </div>
                    </div>

                    <!-- ================================================= -->
                    <!-- EMBEDDING -->
                    <!-- ================================================= -->
                    <div class="col-12 mt-5">
                        <h5 class="text-info">Embedding-Konfiguration</h5>
                        <hr class="border-secondary">
                        <p class="text-secondary small">
                            Definiert das Modell zur Vektorisierung der Textabschnitte.
                            Embeddings bestimmen die semantische Ähnlichkeitsberechnung im FAISS-Index.
                        </p>
                    </div>

                    <div class="col-md-6">
                        <label class="form-label">Embedding Model</label>
                        <select name="embedding_model"
                                class="form-select bg-dark text-light border-secondary"
                                required>
                            <option value="intfloat/multilingual-e5-base">
                                intfloat/multilingual-e5-base (768 Dimensionen)
                            </option>
                        </select>
                        <div class="form-text text-secondary">
                            Das Embedding-Modell erzeugt numerische Vektoren aus Text.
                            Modellwechsel erfordert zwingend einen Global Reindex.
                        </div>
                    </div>

                    <div class="col-md-6">
                        <label class="form-label">Embedding Dimension</label>
                        <input type="number"
                               name="embedding_dimension"
                               value="768"
                               class="form-control bg-dark text-light border-secondary"
                               readonly>
                        <div class="form-text text-secondary">
                            Muss exakt zur Dimension des gewählten Embedding-Modells passen.
                            Falsche Werte führen zu inkonsistentem Vektorindex.
                        </div>
                    </div>

                    <!-- ================================================= -->
                    <!-- SCORING -->
                    <!-- ================================================= -->
                    <div class="col-12 mt-5">
                        <h5 class="text-info">Scoring & Retrieval</h5>
                        <hr class="border-secondary">
                        <p class="text-secondary small">
                            Definiert die Bewertungslogik für Retrieval-Ergebnisse.
                            Änderungen wirken sich direkt auf die Gewichtung von Keyword- und
                            Vektor-Treffern aus.
                        </p>
                    </div>

                    <div class="col-md-6">
                        <label class="form-label">Scoring Version</label>
                        <input type="number"
                               name="scoring_version"
                               value="1"
                               class="form-control bg-dark text-light border-secondary"
                               readonly>
                        <div class="form-text text-secondary">
                            Versionskennzeichnung der Scoring-Logik.
                            <br><br>
                            Eine Erhöhung erzwingt:
                            <ul class="mt-2">
                                <li>Neuaufbau des NDJSON-Index</li>
                                <li>Vollständigen FAISS-Rebuild</li>
                            </ul>
                            Gewährleistet reproduzierbare Retrieval-Ergebnisse.
                        </div>
                    </div>

                </div>

                <hr class="border-secondary my-4">

                <div class="d-flex justify-content-end">
                    <button type="submit"
                            class="btn btn-outline-info">
                        Profil erstellen
                    </button>
                </div>

            </form>
        </div>
    </div>

    <div class="mt-4 small text-secondary">
        Governance-Hinweis:
        Ein Indexierungsprofil ist versioniert und deterministisch.
        Änderungen sollten nur geplant erfolgen, da sie die komplette
        Wissensstruktur neu generieren.
    </div>
{% endblock %}
