Dashboard
Vue d'ensemble des sessions actives (derniere 2h)
{{ stat.label }}
Sessions recentes
| Session | App | Status | Steps | Platform | Date |
|---|---|---|---|---|---|
| {{ session.session_id?.substring(0, 12) }}... | {{ session.app_id }} | {{ session.status }} {{ session.final_result.overall_status }} | {{ session.steps_order?.join(', ') || '-' }} | {{ session.client?.platform || '-' }} | {{ formatDate(session.created_at) }} |
| Aucune session dans les 2 dernieres heures | |||||
Statistiques d'utilisation
Sessions par jour
Consommation du mois (toutes applications)
Sessions
Rechercher et explorer les sessions de verification
{{ sessionTotal }} session(s) trouvee(s)
| Session | App | Status | Steps | Duree | Platform | Date | TTL |
|---|---|---|---|---|---|---|---|
| {{ s.session_id?.substring(0, 12) }}... | {{ s.app_id }} | {{ s.status }} | {{ s.steps_order?.join(', ') || '-' }} | {{ s.total_duration_ms ? (s.total_duration_ms / 1000).toFixed(1) + 's' : '-' }} | {{ s.client?.platform || '-' }} | {{ formatDate(s.created_at) }} | {{ sessionTTL(s.created_at) }} |
| Recherche en cours... Lancez une recherche pour afficher les sessions | |||||||
Applications
Gerer les applications et cles API
{{ app.name }}
{{ app.app_id }}Aucune application
{{ detailApp.name }}
{{ detailApp.status }} {{ detailApp.billing?.plan || 'free' }} {{ detailApp.billing.billing_mode === 'per_session' ? 'Par session' : 'Par operation' }} Fixe: {{ formatCurrency(detailApp.billing.monthly_fixed_fee) }} XOF/mois{{ detailApp.app_id }}
Informations generales
Types de documents & options
Documents autorises
Cles API
| Nom | Cle (masquee) | Status | Creee | Actions |
|---|---|---|---|---|
| {{ k.name }} | {{ maskApiKey(k.api_key) }} | {{ k.status }} | {{ formatDate(k.created_at) }} |
|
| Aucune cle API | ||||
Cle regeneree avec succes — Copiez-la maintenant, elle ne sera plus affichee
{{ rotatedNewKey }}
Utilisation par cle API
| Cle | Requetes totales | Derniere utilisation | Ce mois |
|---|---|---|---|
| {{ k.name }} | {{ k.usage_stats?.total_requests || 0 }} | {{ k.usage_stats?.last_used_at ? formatDate(k.usage_stats.last_used_at) : 'Jamais' }} | {{ Object.values(val || {}).reduce((s,v) => s + (typeof v === 'number' ? v : 0), 0) }} ops - |
Quotas par type de session
Securite — {{ selectedKey.name }}
Restrictions d'acces pour cette cle
Cles temporaires
| Cle | Nom | Expire | Utilisations | Status |
|---|---|---|---|---|
| {{ tk.temp_key?.substring(0, 12) }}... | {{ tk.name || '-' }} | {{ formatDate(tk.expires_at) }} | {{ tk.used_count || 0 }} | revoque expire active |
Echecs Webhook (24h)
{{ webhookFailuresTotal }} echec(s)| Event | Session | URL | Tentatives | Erreur | Date |
|---|---|---|---|---|---|
| {{ wf.event }} | {{ wf.session_id?.substring(0, 10) }}... | {{ wf.webhook_url }} | {{ wf.attempts }} | {{ wf.last_error }} | {{ formatDate(wf.created_at) }} |
Utilisateurs de cette application
{{ appUsers.length }} utilisateur(s)| Nom | Role | Status | Actions | |
|---|---|---|---|---|
| {{ u.name }} | {{ u.email }} | {{ u.role }} | {{ u.status }} |
|
Aucun utilisateur attache a cette application
Statut & Actions
{{ detailApp.status === 'active' ? 'Les cles API de cette application sont fonctionnelles.' : detailApp.status === 'suspended' ? 'Les cles API sont temporairement desactivees.' : 'Les cles API sont desactivees. Reactivez pour restaurer l\'acces.' }}
Configuration Tarifs
{{ editingApp?.app_name || editingApp?.name }} — {{ editingApp?.app_id }}
Quotas mensuels inclus
Operations gratuites par mois. Au-dela, le prix de depassement s'applique.
Prix de depassement (XOF)
Prix par operation au-dela du quota mensuel inclus.
Simulateur de cout
Entrez le volume prevu par jour ou par mois pour estimer le cout mensuel.
| Operation | Volume {{ simMode === 'day' ? '/jour' : '/mois' }} | Total/mois | Inclus | Depassement | Cout |
|---|---|---|---|---|---|
| {{ field.label }} | {{ simMonthly(field.key) }} | {{ simIncluded(field.key) }} | {{ simOverage(field.key) }} | {{ formatCurrency(simCost(field.key)) }} | |
| Cout mensuel estime | {{ formatCurrency(totalSimulatedCost) }} XOF | ||||
Tarifs enregistres avec succes
Plan {{ pricingForm.plan }} — les nouveaux tarifs sont actifs immediatement.
Documents
Types de documents configures dans le systeme
{{ doc.name }}
Aucun document configure
{{ selectedDocument.name || selectedDocument.doc_type }}
{{ selectedDocument.doc_type }}Configuration complete
{{ JSON.stringify(selectedDocument, null, 2) }}
Plans
Gerer les plans tarifaires globaux
Chargement des plans...
{{ plan.name }}
{{ plan.description }}
Aucun plan configure
{{ creatingNewPlan ? 'Nouveau Plan' : 'Modifier: ' + editingPlan.name }}
Identifiant unique (lowercase, underscores)
Quotas mensuels inclus
0 = pas de limite specifique pour ce type de session
Tarifs unitaires
Tarifs hors-forfait
Features
Utilisateurs
Gerer les comptes utilisateurs
| Nom | Role | App | Status | Actions | |
|---|---|---|---|---|---|
| {{ u.name }} | {{ u.email }} | {{ u.role }} | {{ appName(u.app_id) }} ({{ u.app_id }}) - | {{ u.status }} |
|
Settings LLM
Configuration des providers IA et routage des requetes
Stats en temps reel (depuis redemarrage)
| Route:Provider | Requetes | Succes | Echecs API | Tokens in | Tokens out | Latence moy. |
|---|---|---|---|---|---|---|
| {{ key }} | {{ stat.total_requests }} | {{ stat.successes }} | {{ stat.api_failures }} | {{ formatNumber(stat.total_input_tokens) }} | {{ formatNumber(stat.total_output_tokens) }} | {{ stat.total_requests > 0 ? Math.round(stat.total_latency_ms / stat.total_requests) + 'ms' : '-' }} |
Historique par jour / provider
| Date | Route | Provider | Modele | Requetes | Succes | Echecs | Tokens in | Tokens out | Latence moy. |
|---|---|---|---|---|---|---|---|---|---|
| {{ stat.date }} | {{ stat.route }} | {{ stat.provider }} | {{ stat.model?.split('/').pop() }} | {{ stat.total_requests }} | {{ stat.successes }} | {{ stat.api_failures }} | {{ formatNumber(stat.total_input_tokens) }} | {{ formatNumber(stat.total_output_tokens) }} | {{ stat.avg_latency_ms ? Math.round(stat.avg_latency_ms) + 'ms' : '-' }} |
Routage des requetes
Providers & Cles API
Fallback automatique
Analyse & Prompts
Chargement des settings...
Configuration
Edition JSON des documents Elasticsearch — 50 derniers changements conserves
Chargement de la configuration...
Historique des versions
Restaurer la version {{ restoreVersion.version }} ?
Du {{ new Date(restoreVersion.updated_at).toLocaleString('fr-FR') }} par {{ restoreVersion.updated_by || 'inconnu' }}.
Entrez votre mot de passe pour confirmer.
Selectionnez un document a modifier
Registre d'Identites
Personnes identifiees par KYC (recto+verso PASS)
| Identifiant | Champs principaux | Document | Soumissions | Cree par | Date |
|---|---|---|---|---|---|
|
{{ id.identifier_value }}
{{ id.identifier_key }}
|
{{ f.label }}: {{ f.value }}
|
{{ id.document_type }} | {{ id.submissions_count || 1 }} | {{ id.created_by_app }} | {{ formatDate(id.created_at) }} |
Aucune identite trouvee
Les identites sont creees automatiquement lors de sessions KYC PASS avec recto+verso
| Identifiant | Type | App | Session | Face Match | Date |
|---|---|---|---|---|---|
| {{ sub.identifier_value }} | {{ sub.document_type }} | {{ sub.app_id }} | {{ sub.session_id?.substring(0, 12) }}... | {{ sub.face_match_score.toFixed(1) }}% - | {{ formatDate(sub.submitted_at) }} |
Aucune soumission
Migrations
Historique des migrations Elasticsearch
| ID | Description | Statut | Duree | Execute le |
|---|---|---|---|---|
| {{ m.migration_id }} | {{ m.description }} | {{ m.status === 'completed' ? 'OK' : 'FAILED' }} DESTRUCTIVE | {{ m.duration_ms ? m.duration_ms + 'ms' : '—' }} | {{ m.executed_at ? new Date(m.executed_at).toLocaleString('fr-FR') : '—' }} |
python3 migrate.py pour initialiser.
python3 migrate.py --status pour voir les migrations en attente.
python3 migrate.py pour executer les migrations.
Facturation
Consommation et couts par application
| Operation | Utilise | Inclus | Depassement | Prix unit. | Cout |
|---|---|---|---|---|---|
| {{ row.label }} | {{ row.used }} | {{ row.included }} | {{ row.overage }} | {{ row.unitPrice }} XOF | {{ formatCurrency(row.cost) }} |
| Abonnement fixe | {{ formatCurrency(selectedAppBilling.monthly_fixed_fee) }} | ||||
| Sous-total operations | {{ formatCurrency(selectedMonthData.costs.total) }} | ||||
| Total | {{ formatCurrency((selectedAppBilling?.monthly_fixed_fee || 0) + selectedMonthData.costs.total) }} XOF | ||||
Detail journalier - {{ selectedBillingMonth }}
Historique mensuel
Aucune donnee de facturation