Upload 6 files
Browse files- templates/admin.html +14 -0
- templates/index.html +15 -2
- templates/promo.html +1 -0
templates/admin.html
CHANGED
|
@@ -26,6 +26,20 @@
|
|
| 26 |
modèles et aux tokens. Autres administrateurs : {{ admin_names|join(", ") }}.
|
| 27 |
</p>
|
| 28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
{% with messages = get_flashed_messages(with_categories=true) %}
|
| 30 |
{% if messages %}
|
| 31 |
<ul class="flash-list">
|
|
|
|
| 26 |
modèles et aux tokens. Autres administrateurs : {{ admin_names|join(", ") }}.
|
| 27 |
</p>
|
| 28 |
|
| 29 |
+
{% if not storage.durable %}
|
| 30 |
+
<p class="flash error storage-warning">
|
| 31 |
+
⚠ {{ storage.detail }}
|
| 32 |
+
</p>
|
| 33 |
+
{% elif storage.last_error %}
|
| 34 |
+
<p class="flash error storage-warning">
|
| 35 |
+
⚠ Dernière sauvegarde en échec : {{ storage.last_error }}
|
| 36 |
+
</p>
|
| 37 |
+
{% elif storage.mode != 'native' %}
|
| 38 |
+
<p class="flash info storage-ok">
|
| 39 |
+
✓ {{ storage.detail }}{% if storage.last_saved %} · dernière sauvegarde {{ paris_time(storage.last_saved, "%d/%m %H:%M") }}{% endif %}
|
| 40 |
+
</p>
|
| 41 |
+
{% endif %}
|
| 42 |
+
|
| 43 |
{% with messages = get_flashed_messages(with_categories=true) %}
|
| 44 |
{% if messages %}
|
| 45 |
<ul class="flash-list">
|
templates/index.html
CHANGED
|
@@ -29,6 +29,15 @@
|
|
| 29 |
<span>Nouvelle conversation</span>
|
| 30 |
</button>
|
| 31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
<div id="system-card">
|
| 33 |
<div id="status-line">
|
| 34 |
<span id="status-dot" class="dot dot-pending"></span>
|
|
@@ -78,7 +87,7 @@
|
|
| 78 |
<code>opsiom --api-key <em>VOTRE_CLE_API</em></code>
|
| 79 |
<button type="button" class="cli-copy-btn" aria-label="Copier">⧉</button>
|
| 80 |
</div>
|
| 81 |
-
<a class="cli-promo-link" href="{{
|
| 82 |
</details>
|
| 83 |
|
| 84 |
<details id="extras-promo" class="sidebar-details">
|
|
@@ -232,7 +241,11 @@
|
|
| 232 |
<li>Chaque message consomme des tokens à hauteur du texte envoyé et reçu, selon le modèle choisi.</li>
|
| 233 |
</ul>
|
| 234 |
|
| 235 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 236 |
</div>
|
| 237 |
</div>
|
| 238 |
|
|
|
|
| 29 |
<span>Nouvelle conversation</span>
|
| 30 |
</button>
|
| 31 |
|
| 32 |
+
<section id="history" aria-label="Historique des conversations">
|
| 33 |
+
<div id="history-head">
|
| 34 |
+
<span id="history-title">Historique</span>
|
| 35 |
+
<button id="history-clear" type="button" hidden>Tout supprimer</button>
|
| 36 |
+
</div>
|
| 37 |
+
<ul id="history-list"></ul>
|
| 38 |
+
<p id="history-empty">Tes conversations apparaîtront ici.</p>
|
| 39 |
+
</section>
|
| 40 |
+
|
| 41 |
<div id="system-card">
|
| 42 |
<div id="status-line">
|
| 43 |
<span id="status-dot" class="dot dot-pending"></span>
|
|
|
|
| 87 |
<code>opsiom --api-key <em>VOTRE_CLE_API</em></code>
|
| 88 |
<button type="button" class="cli-copy-btn" aria-label="Copier">⧉</button>
|
| 89 |
</div>
|
| 90 |
+
{% if octix_portal_url %}<a class="cli-promo-link" href="{{ octix_portal_url ~ '/compte' }}" target="_blank" rel="noopener">Récupérer ma clé API →</a>{% endif %}
|
| 91 |
</details>
|
| 92 |
|
| 93 |
<details id="extras-promo" class="sidebar-details">
|
|
|
|
| 241 |
<li>Chaque message consomme des tokens à hauteur du texte envoyé et reçu, selon le modèle choisi.</li>
|
| 242 |
</ul>
|
| 243 |
|
| 244 |
+
{% if octix_portal_url %}
|
| 245 |
+
<a id="quota-modal-cta" href="{{ octix_portal_url ~ '/compte' }}" target="_blank" rel="noopener">Gérer mon compte Octix →</a>
|
| 246 |
+
{% else %}
|
| 247 |
+
<a id="quota-modal-cta" href="{{ url_for('progression_page') }}">Débloquer plus de tokens →</a>
|
| 248 |
+
{% endif %}
|
| 249 |
</div>
|
| 250 |
</div>
|
| 251 |
|
templates/promo.html
CHANGED
|
@@ -7,6 +7,7 @@
|
|
| 7 |
<link rel="icon" href="{{ url_for('logo_png') }}">
|
| 8 |
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
|
| 9 |
<link rel="stylesheet" href="{{ url_for('static', filename='css/progression.css') }}">
|
|
|
|
| 10 |
<link rel="preconnect" href="https://fonts.googleapis.com">
|
| 11 |
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
| 12 |
</head>
|
|
|
|
| 7 |
<link rel="icon" href="{{ url_for('logo_png') }}">
|
| 8 |
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
|
| 9 |
<link rel="stylesheet" href="{{ url_for('static', filename='css/progression.css') }}">
|
| 10 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='css/admin.css') }}">
|
| 11 |
<link rel="preconnect" href="https://fonts.googleapis.com">
|
| 12 |
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
| 13 |
</head>
|