Back-office

Douze modules. Un portail opérateur. Qualité audit dès le premier clic.

Le back-office de Connect est le même logiciel que nos propres opérateurs utilisent chaque jour — même RBAC, même audit log, mêmes rapports. Ci-dessous, chaque module avec l'écran réel, ce qu'il fait et le moteur qui l'alimente.

Douze modules. Un portail opérateur. Qualité audit dès le premier clic.

Sessions

Chaque session démarrée, en cours et terminée — avec la timeline OCPP, traces de paiement et état remboursement/litige attachés.

  • Vue live + historique, badges de statut (started, charging, terminated, refunded, disputed)
  • Export CSV streaming pour le set filtré
  • Clic vers la timeline OCPP + timeline d'autorisation de paiement par session
  • Force-cancel avec audit trail et code de raison attribué à l'opérateur
  • Masque le pill offline sur les sessions terminales ; tamponne resolved_at + audite force-cancel

Powered by: billing_sessions + session_payment_authorizations · audit charging_attempts · OCPP AMQP realtime → state machine

Portail opérateur — Liste de sessions avec badges de statut, recherche et export en masse

Stations et Lieux

Vue flotte de stations avec dashboards par lieu, panneau de pannes temps réel, classification OCPP des connecteurs et overrides de tarif par lieu.

  • Endpoint de dashboard par lieu avec lookup stations-by-location
  • Panneau de pannes filtré aux faults OCPP réels (codes vendor préservés)
  • Classification du connecteur par powerType, pas heuristique DC hardcodée
  • Timezone unifiée station-lieu pour l'alignement session et rapport
  • Adresse + ville enrichies automatiquement à la création de station

Powered by: stations + locations + station_connectors · table faults · agrégateur analytics par lieu

Portail opérateur — Dashboard Stations et Lieux avec utilisation et nombre de pannes par lieu

Tarifs et Overrides

Un catalogue de tarifs avec overrides par équipe, lieu, connecteur — et un snapshot du tarif réellement appliqué à chaque session walk-up.

  • Catalogue de tarifs avec compte d'overrides par équipe et par lieu
  • Snapshot de tarif walk-up enrichi avec contexte du lieu (timezone correcte)
  • Helper de lookup de tarif de connecteur résolvant par PK connecteur Citrine ou id OCPP
  • tariffName par équipe + compte d'overrides surfacé sur le détail équipe
  • Toutes les éditions émettent des events audit_logs (tariffs.create / update / delete)

Powered by: tariffs + tariff_overrides + connector_tariff_assignments · writer de snapshot walk-up · audit-mirror

Portail opérateur — Éditeur de tarifs avec panneau d'override par lieu

Rapports

Moteur de rapports à 23 templates : revenue & P&L, rapprochement settlements, remboursements, AR aging de flotte, efficacité de tarif, qualité de session + SLO, uptime réseau, cohortes de croissance et rétention, RGPD data exports — planifiés, livrés par URL signée par email.

  • 23 templates dans le catalogue, chacun tenant-scoped + period-helper partagé
  • Presets sauvegardés + exécutions planifiées via report_schedules + tick worker
  • Livraison par URL signée + endpoints GET /runs + GET /export-audit
  • Exporters CSV et XLSX avec ordre de colonnes déterministe
  • RBAC par template : reports.export / reports.schedule / reports.admin

Powered by: report_runs + report_schedules + report_template_settings + export_audit · template registry · scheduler worker

Portail opérateur — Catalogue de Rapports avec 23 templates, exécutions planifiées et audit d'export

Audit Log

Une seule timeline append-only d'events pour chaque changement financier, OCPP, RBAC et de configuration — avec un hash anchor quotidien et un endpoint de vérification rendant la chaîne tamper-evident.

  • Fondations d'audit_logs : financier, OCPP, RBAC, settings, push/exports
  • Hash anchor quotidien + rétention nocturne + endpoint de vérification de chaîne
  • Métriques Prometheus pour taux d'émission, lag, âge de l'anchor
  • Middleware request_id qui propage la corrélation à travers chaque event
  • Assertions d'émission couvertes en tests pour refund + locations + stations + settings

Powered by: audit_logs · daily anchor worker · primitives auditEmit + auditEmitTs · modules audit-mirror

Portail opérateur — Timeline audit log avec hash anchor quotidien et statut de vérification de chaîne

Flottes

Flottes multi-tenant avec cartes RFID, import bulk CSV, automatisation de relance et scope par équipe sur chaque rapport. Le refactor Teams→Fleets est passé en live sans downtime.

  • Émission + binding + révocation RFID par flotte avec audit trail
  • Import bulk CSV RFID avec validation contre la limite de longueur IdToken OCPP 1.6 (20 chars)
  • Rapport d'aged-receivables + worker d'automatisation de relance
  • Scope par flotte sur chaque template de rapport + agrégat dashboard
  • driverUserId requis à la création de carte de flotte ; tokens unbound → Blocked/TOKEN_UNBOUND propre

Powered by: fleets + fleet_cards + fleet_invoices · dunning worker · adaptateur Citrine pour fleets

Portail opérateur — Liste de flottes avec compte RFID, AR aging, statut de relance et import bulk CSV

Campagnes Push

Campagnes push côté opérateur avec segmentation d'audience, planification et rapport d'efficacité d'envoi. Construites sur un client APNs HTTP/2 recoverable.

  • BO sort + filter + search + actions par ligne sur /admin/push/campaigns
  • Template d'efficacité d'envoi push & email par campagne
  • Sessions APNs HTTP/2 récupèrent après timeouts (recovery de sessions mortes)
  • Parité de canal email + push dans la même ligne de campagne
  • Opt-out par utilisateur pour l'email résumé de session de charge

Powered by: push_campaigns · client APNs · template analytics send-effectiveness

Portail opérateur — Liste de campagnes push avec sort, filter, search et actions par ligne

Utilisateurs et RBAC

Un catalogue de permissions avec scopes comme reports.export, reports.schedule, users.export, audit.read — groupés en Departments seedés et assignables par équipe.

  • Catalogue de permissions avec action + module + description par permission
  • 5 Departments seedés avec bundles de permissions par département
  • Règles allow/deny par équipe appliquées dans les branches walk-up + fleet
  • Export CSV d'utilisateurs gated par users.export
  • acquisitionSource exposé sur /api/admin/users/:id pour rapports de funnel

Powered by: permissions + departments + department_permissions + team_permissions · TeamAccessRule

Portail opérateur — Utilisateurs et RBAC avec Departments seedés et accès scoped par équipe

What's New

Module release notes côté opérateur avec flag prominent, titres et résumés localisés, ordre catch-up scroll par published_at.

  • title + short_summary localisés par entrée
  • Flag prominent pour releases haute-signal
  • Filtrage par audience : operator-only, driver-only, mixed
  • published_at backfillé sur chaque entrée pour que le catch-up scroll s'ordonne correctement
  • Versioning par ligne de release (core, app, operator)

Powered by: whats_new_entries · whatsnew TS module · audience filtering API

Portail opérateur — Module What's New avec flag prominent et entrées localisées

Erasure Requests

Surface RGPD Article 17 pour recevoir, exécuter et auditer les demandes d'effacement — avec cascade-delete de PII, scrub d'audit-log et anonymisation d'auth-tokens.

  • Cascade-delete end-to-end de PII à la suppression utilisateur
  • auth_tokens anonymisés, leads cascade-deleted
  • Audit_logs non critiques avec PII scrubbed à la suppression utilisateur
  • UI opérateur pour triage + exécution + vérification de chaque demande
  • Chaque étape d'erasure émet un event audit typé RGPD

Powered by: erasure_requests · taxonomie d'events gdpr.* · pipeline cascade-delete

Portail opérateur — File d'attente de erasure requests RGPD avec état de cascade-delete et audit trail

Settings (Runtime Config)

Configuration runtime scope-tenant : SMTP, store URLs, EMAIL_FROM_NAME, switch d'email résumé session, flags QR-config — toutes éditables sans redeploy.

  • Groupement SMTP + EMAIL_FROM_NAME + headers FROM par tenant
  • Store URLs (App Store + Play Store) lues via runtime-config
  • Flags QR-config (online/offline) sans round-trip de probe Citrine
  • Copy descriptif + parité .env.example pour chaque clé allowlisted
  • Surface du commit SHA déployé via /api/version

Powered by: table runtime_config · module settings · endpoint /api/version

Portail opérateur — Éditeur de configuration runtime avec SMTP, store URLs et knobs par tenant

API et Webhooks

Tout ce que fait le back-office, exposé en REST avec OpenAPI 3.1. Webhooks pour début/fin de session, événements de paiement et changements d'état de borne. Identifiants à scope token.

  • Spec OpenAPI 3.1, browsable in-portal
  • Identifiants à scope token avec RBAC par route
  • Log de livraison webhook avec retry + vérification de signature
  • /health rich (db + amqp + citrine + disk + memory + cpu)
  • Versioning via /api/version exposant le commit déployé + version CitrineOS

Powered by: api_tokens + webhook_deliveries + audit-mirror · /health rich · /api/version

Portail opérateur — Browser API et Webhooks avec spec OpenAPI, scopes de token et log webhook

Envie d'une visite hands-on ?

Choisissez un créneau de 30 minutes. Nous vous loguons dans un tenant sandbox avec la forme de votre réseau réel — bornes, tarifs, flottes — et parcourons chaque module ci-dessus.