{% extends "base.html" %} {% block title %}Résultat - {{ result.document_name }}{% endblock %} {% block content %} {# Dictionnaire de traduction des types de chunks #} {% set chunk_types = { 'main_content': {'label': 'Contenu principal', 'icon': '📄', 'desc': 'Paragraphe de contenu substantiel'}, 'exposition': {'label': 'Exposition', 'icon': '📖', 'desc': 'Présentation d\'idées ou de contexte'}, 'argument': {'label': 'Argument', 'icon': '💭', 'desc': 'Raisonnement ou argumentation'}, 'définition': {'label': 'Définition', 'icon': '📌', 'desc': 'Définition de concept ou terme'}, 'example': {'label': 'Exemple', 'icon': '💡', 'desc': 'Illustration ou cas pratique'}, 'citation': {'label': 'Citation', 'icon': '💬', 'desc': 'Citation d\'auteur ou référence'}, 'abstract': {'label': 'Résumé', 'icon': '📋', 'desc': 'Résumé ou synthèse'}, 'preface': {'label': 'Préface', 'icon': '✍️', 'desc': 'Préface, avant-propos ou avertissement'}, 'conclusion': {'label': 'Conclusion', 'icon': '🎯', 'desc': 'Conclusion d\'une argumentation'} } %}

✅ Traitement terminé

Le document {{ result.document_name }} a été analysé avec succès

· · ·
{{ result.pages }}
Pages
{{ result.chunks_count or 0 }}
Chunks
{% if result.files.images %}
{{ result.files.images|length }}
Images
{% endif %}
{{ "%.4f"|format(result.cost_total or result.cost or 0) }}€
Coût Total
{% if result.llm_stats %}

💰 Détail des coûts

OCR Mistral {{ "%.4f"|format(result.cost_ocr or 0) }}€
LLM Mistral API {{ "%.4f"|format(result.cost_llm or 0) }}€
└ {{ result.llm_stats.calls_count }} appels {{ result.llm_stats.total_input_tokens + result.llm_stats.total_output_tokens }} tokens
Total {{ "%.4f"|format(result.cost_total or 0) }}€
{% endif %}

📖 Informations du document

{% if result.metadata.title %} {% endif %} {% if result.metadata.author %} {% endif %}
Œuvre {{ result.metadata.work or result.document_name }}
Titre {{ result.metadata.title }}
Auteur {{ result.metadata.author }}
Pages {{ result.pages }}
Chunks {{ result.chunks_count or result.metadata.chunks_count or 0 }} segments de texte
{% if result.metadata.toc and result.metadata.toc|length > 0 %}

📑 Table des matières

    {% for item in result.metadata.toc[:20] %}
  • {% if item.level == 1 %} {{ item.title }} {% else %} {{ item.title }} {% endif %}
  • {% endfor %} {% if result.metadata.toc|length > 20 %}
  • ... et {{ result.metadata.toc|length - 20 }} autres sections
  • {% endif %}
{% endif %}

📁 Fichiers générés

{% if result.files.structured %} {% endif %} {% if result.files.weaviate %} {% endif %} {% if result.files.images %} {% endif %}
Markdown Voir le fichier
Chunks JSON Voir le fichier
Structure LLM Voir le fichier
OCR brut Voir le fichier
Weaviate JSON Voir le fichier
Images {{ result.files.images|length }} image(s) dans images/
{% if result.weaviate_ingest %}

🗄️ Données insérées dans Weaviate

{% if result.weaviate_ingest.success %}
✓ Ingestion réussie : {{ result.weaviate_ingest.count }} passages insérés dans la collection Passage
Œuvre {{ result.weaviate_ingest.work }}
Auteur {{ result.weaviate_ingest.author }}
Passages {{ result.weaviate_ingest.count }} objets vectorisés

Aperçu des passages insérés :

{% for passage in result.weaviate_ingest.inserted[:5] %}
📄 {{ passage.section }} {% set type_info = chunk_types.get(passage.unitType, {'label': passage.unitType, 'icon': '📝', 'desc': 'Type de contenu'}) %} {{ type_info.icon }} {{ type_info.label }}
{{ passage.chunk_id }}
"{{ passage.text_preview }}"
{% endfor %} {% if result.weaviate_ingest.count > 5 %}

... et {{ result.weaviate_ingest.count - 5 }} autres passages

{% endif %} {% else %}
⚠️ Erreur d'ingestion : {{ result.weaviate_ingest.error }}

Vérifiez que Weaviate est démarré (docker compose up -d) et que le schéma est initialisé (python schema.py).

{% endif %}
{% endif %} {% if result.files.images %}

🖼️ Images extraites

{% for img in result.files.images[:12] %}
Image
{{ img.split('/')[-1].split('\\')[-1] }}
{% endfor %} {% if result.files.images|length > 12 %}
+ {{ result.files.images|length - 12 }} autres
{% endif %}
{% endif %}
Analyser un autre PDF Voir tous les documents
{% endblock %}