Djinious
DjiniousMapSIG agentique

Une donnée ouverte n’est pas un jeu de données.C’est une affirmation à vérifier.

Plan de contrôle géospatialModéliserExploiter

DjiniousMap collecte des données géospatiales, mesure ce qu’elles contiennent réellement, et refuse de les afficher tant que les coordonnées ne permettent pas une lecture fiable. Ce qui survit à cette épreuve devient une carte en direct, une analyse spatiale, un workflow — ou une réponse qu’un agent IA donne à votre équipe.

DjiniousMap
Une page de détail de jeu de données montrant EPSG:4326 déclaré, EPSG:2154 déduit avec une confiance de 100 %, un avertissement signalant que les deux ne concordent pas, un profil complet, des constats de qualité, et ses points tracés sur la région Provence-Alpes-Côte d’Azur.
Un jeu de données collecté dont l’éditeur a déclaré EPSG:4326, alors que ses coordonnées se mesurent en EPSG:2154. Les deux lectures sont conservées, le désaccord est signalé, et la carte est tracée à partir du CRS déduit — le seul que les preuves confirment.
bases de données, une seule garantie d’isolation
2bases de données, une seule garantie d’isolationSurrealDB PERMISSIONS · PostGIS RLS
sécurité au niveau ligne, propriétaire inclus
FORCEsécurité au niveau ligne, propriétaire inclusnosuperuser · nobypassrls
en-têtes de requête lus pour l’identité
0en-têtes de requête lus pour l’identitécookie de session uniquement · pas de bouchon de dev
confiance de l’inférence CRS, dans la capture ci-dessus
100%confiance de l’inférence CRS, dans la capture ci-dessusdéclaré 4326 · mesuré 2154

Ce que c’est

Un catalogue, un atelier cartographique et un moteur d’analyse qui partagent un même modèle de tenant

La plupart des piles géospatiales sont trois produits assemblés tant bien que mal : quelque chose qui ingère, quelque chose qui dessine, quelque chose qui calcule. Chacun garde sa propre copie de qui peut voir quoi. DjiniousMap est un plan de contrôle unique, et l’isolation est appliquée en dessous des trois à la fois.

Catalogue collecté

Un collecteur récupère les jeux de données publics et les enregistre avec leur URL source, leur licence et leur classification. Être enregistré n’est pas la même chose qu’être présent : rien n’est copié dans la plateforme tant que vous ne l’avez pas matérialisé, et le catalogue indique clairement ce qui relève de l’un ou de l’autre.

data.gouv.fr · vos propres sources

Inférence de CRS

Le système de référence de coordonnées déclaré par l’éditeur est traité comme une affirmation. La plateforme mesure les coordonnées, identifie le CRS dans lequel elles se trouvent réellement, et indique son niveau de confiance. Quand les deux divergent, les deux sont conservés et le désaccord est affiché.

EPSG · déclaré vs mesuré

Constats de qualité

Précision de coordonnées excessive, données obsolètes, géométrie invalide ou nulle — chaque constat explique ce qui a été mesuré, pourquoi cela compte, et quoi faire. Quand il n’y a rien sur quoi juger, le verdict est Indéterminé plutôt qu’une supposition déguisée en résultat.

avec remédiation, et avec « indéterminé »

Atelier cartographique

Composez des couches à partir des jeux de données matérialisés, stylez-les, filtrez-les, et ajoutez des widgets de catégorie, d’histogramme, de formule ou de série temporelle qui filtrent la carte de façon croisée. Une carte est un actif versionné : une vue peut être publiée, partagée et restaurée à une version antérieure.

deck.gl · fonds de carte IGN

Analyse spatiale

Exécutez des isochrones, des itinéraires, du géocodage direct et inverse, et des jointures spatiales sur des couches matérialisées. Les résultats reviennent dans le catalogue comme des jeux de données à part entière, si bien que la sortie d’une analyse est une entrée de premier rang pour la suivante.

isochrones · itinéraires · géocodage

Workflows et automatisation

Composez un pipeline sur un canevas, publiez-le comme un actif versionné, et déclenchez-le selon une planification ou un événement — dataset.refreshed, par exemple. Les exécutions tournent sur une file de tâches à bail et diffusent leur progression en direct.

déclencheurs par événement et par planification

Dans le produit

Voyez-la fonctionner.

Chaque capture ci-dessous est le produit en fonctionnement.

01 · 01 · Collecte

Être enregistré n’est pas la même chose qu’être présent

Enregistrez un jeu de données depuis le catalogue public ou depuis l’une de vos propres connexions. L’enregistrement consigne où résident les données, qui les publie, comment elles sont licenciées et comment elles sont classifiées — public, interne, restreint ou confidentiel. Aucune entité n’a encore été déplacée.

  • Collecte publique depuis data.gouv.fr, avec les identifiants propres de l’éditeur conservés
  • Vos propres sources via des connexions, enregistrées de la même façon
  • Enregistré mais non matérialisé est un état à part entière, affiché comme tel dans le catalogue
DjiniousMap
Le catalogue de jeux de données DjiniousMap, chaque ligne portant sa source, sa classification et son état, avec des actions par ligne pour le géocodage, le géocodage inverse, les isochrones et les itinéraires sur les lignes qui ont été profilées.
Le catalogue distingue Enregistré de Profilé. Une entrée de référence porte une URL source et rien d’autre ; une entrée profilée a vu ses entités copiées et mesurées, ce qui débloque les actions spatiales à droite.

02 · 02 · Profiler

Le CRS déclaré est une affirmation ; le CRS déduit est une mesure

La matérialisation copie les entités dans la plateforme et les profile : nombre d’entités, types de géométrie, index spatial, taux de géométrie nulle et invalide, colonnes temporelles, et le système de référence de coordonnées dans lequel se trouvent réellement les nombres. Le profil est ce en quoi tout le reste fait confiance en aval — et un jeu de données ne peut pas être tracé avant d’être profilé, car le tracer quand même est exactement ce qui fait finir une couche dans le golfe de Guinée.

  • Le CRS déduit est indiqué avec un niveau de confiance, à côté du code déclaré par l’éditeur
  • Un désaccord entre les deux est signalé, jamais corrigé en silence
  • Quand aucun CRS ne peut être déduit, le jeu de données est refusé pour la cartographie, mais l’aperçu en tableau continue de fonctionner
DjiniousMap
Une page de détail de jeu de données montrant EPSG:4326 déclaré, EPSG:2154 déduit avec une confiance de 100 %, un avertissement signalant que les deux ne concordent pas, un profil complet, des constats de qualité, et ses points tracés sur la région Provence-Alpes-Côte d’Azur.
L’éditeur a déclaré WGS 84, alors que les coordonnées se mesurent en RGF93 / Lambert-93 avec une confiance de 100 %. La plateforme conserve les deux valeurs, énonce la contradiction, et trace la carte à partir de la valeur déduite.

03 · 03 · Composer

Une carte est un document. Les documents ont des versions.

Réunissez des jeux de données matérialisés en couches sur une carte : stylez-les, ordonnez-les, filtrez-les, et ajoutez des widgets qui filtrent de façon croisée toutes les autres couches. La carte est un document, versionné comme tout autre actif, si bien qu’une vue publiée est reproductible et qu’une modification malheureuse n’est qu’à une version d’être annulée.

  • Widgets de catégorie, d’histogramme, de formule et de série temporelle, chacun filtrant la carte de façon croisée
  • Relecture temporelle sur toute colonne identifiée comme temporelle par le profileur
  • Fonds de carte IGN et autres, avec le rendu des couches tiré des tokens de design propres au produit
  • Seuls les jeux de données profilés sont proposés comme couches, si bien qu’une couche ne peut pas être construite sur des coordonnées dont la projection est inconnue
DjiniousMap
L’atelier DjiniousMap montrant les arrondissements de Lyon en polygones orange et le réseau cyclable de Rillieux-la-Pape en lignes bleues sur le fond de carte Plan IGN, un widget de catégorie Arrondissement, et une réglette de relecture temporelle.
Deux couches matérialisées composées sur Plan IGN, avec un widget de catégorie filtrant de façon croisée par arrondissement et une réglette de relecture temporelle liée à la colonne de date propre à la couche.

04 · Trois dimensions

Extrudez une couche selon une colonne qu’elle porte déjà

Une couche de polygones dotée d’un attribut numérique peut être extrudée selon cet attribut. Le cas évident est la hauteur des bâtiments : BD TOPO fournit une hauteur mesurée sur chaque emprise, si bien que régler « Extruder par » sur cette colonne transforme un plan en modèle de volumes — et comme la valeur appartient au bâtiment lui-même, le volume est une lecture plutôt qu’une illustration.

  • N’importe quelle colonne numérique peut piloter l’élévation ; l’exagération est explicite et vaut 1 par défaut
  • L’inclinaison et l’azimut font partie du document enregistré, si bien qu’une vue 3D publiée s’ouvre telle qu’elle a été composée
  • La couche extrudée se filtre et se filtre de façon croisée comme n’importe quelle autre — un histogramme sur la hauteur affine le modèle
  • Proposée uniquement sur les couches de polygones, car il n’y a rien à extruder sur un point ou une ligne
DjiniousMap
L’atelier DjiniousMap montrant les bâtiments parisiens de BD TOPO extrudés en modèle de volumes sous une caméra inclinée, avec vue au-dessus de la Seine sur l’Île de la Cité, Notre-Dame, le Quartier Latin et Les Halles, avec un widget d’histogramme de hauteur.
Chaque emprise BD TOPO® visible, extrudée selon sa propre hauteur mesurée à une exagération de 1 — 606 667 bâtiments dans la couche. L’histogramme à droite filtre le modèle de façon croisée par hauteur.

05 · 04 · Agir

Exécutez-la, publiez-la, planifiez-la, partagez-la

Exécutez une analyse, publiez un workflow, planifiez-le, partagez le résultat. Le travail qui prend du temps tourne sur une file de tâches à bail avec pulsations, si bien qu’un worker qui meurt en cours d’exécution libère son bail au lieu de bloquer la tâche — et chaque modification atterrit au passage dans un journal d’audit en ajout seul.

  • Isochrones, itinéraires, géocodage direct et inverse, et analyse spatiale sur des couches matérialisées
  • Workflows composés sur un canevas, publiés comme actifs versionnés, déclenchés par planification ou par événement
  • Liens de partage publics et cartes intégrables, y compris un module intégré conversationnel
DjiniousMap
La page des automatisations de DjiniousMap listant les automatisations déclenchées par événement et par planification, avec leur workflow cible, leur déclencheur et l’état de leur dernière exécution.
Une automatisation lie un déclencheur à une version publiée d’un workflow. Celle-ci se déclenche sur dataset.refreshed pour la collecte BD TOPO et reconstruit les isochrones d’accès aux aérodromes.

06 · Regardez-le à l’œuvre

Un agent qui audite le catalogue, retransmis en direct

On demande à un agent externe quels jeux de données la plateforme refusera de tracer. Il parcourt le catalogue, lit deux profils, et explique la différence entre un jeu de données sans CRS déductible et un autre dont l’éditeur a simplement déclaré le mauvais code. Sa conversation apparaît dans le panneau de l’assistant à mesure qu’il travaille.

  • L’agent externe ouvre une session et y pousse sa transcription ; aucun LLM n’est rattaché de ce côté-ci
  • Elle s’affiche avec les mêmes blocs qu’une exécution native produit — raisonnement, appels d’outils avec leurs arguments et résultats, la réponse
  • C’est une session comme les autres : cantonnée au tenant, présente dans le journal en ajout seul, rejouable, exportable
DjiniousMap
Enregistré sur la pile de développement préchargée. L’application est réelle, tout comme la retransmission — la transcription est poussée via le même point d’entrée qu’utiliserait n’importe quel agent externe. Les tours de parole de l’agent sont scriptés pour que l’enregistrement soit reproductible ; chaque chiffre qu’il cite est vérifié sur la pile en fonctionnement avant que la capture ne commence.

IA et agents

Un agent à l’intérieur du modèle de tenant, pas à côté

L’assistant n’est pas une surcouche qui lit votre écran. Il appelle la même API que vous, en tant que principal reconnu par la base de données, sous les mêmes politiques au niveau ligne — il n’y a donc aucune ambiguïté sur ce qu’il peut atteindre, et aucun second modèle de permissions à maintenir en phase avec le premier.

01

Il planifie avant d’agir

Face à une demande aux conséquences importantes, l’agent propose un plan et s’arrête. Vous voyez l’analyse qu’il compte exécuter et les couches qu’il compte toucher, et il attend. Un agent qui exécute d’abord et rend compte ensuite est un agent qu’il faut surveiller ; un agent qui propose est un agent que vous pouvez diriger.

02

Chaque appel d’outil est visible

La transcription montre chaque appel d’outil avec ses arguments et son résultat au fur et à mesure — y compris les appels qui ont renvoyé une erreur. Un outil qui a échoué puis a été retenté fait partie de l’enregistrement, car une trace qui ne montre que le chemin réussi est un résumé, pas une trace.

03

Il répond avec les objets propres du catalogue

Quand l’agent parle d’un jeu de données, il affiche la fiche de ce jeu de données : le profil, la lecture du CRS, les constats. Vous regardez la vue propre de la plateforme sur l’enregistrement, pas une paraphrase qu’en fait l’agent.

04

Sa portée est un fait de base de données

L’agent se connecte comme un principal parmi d’autres. Une requête à laquelle il ne devrait pas pouvoir répondre ne renvoie rien, pour la même raison que pour une personne : la politique n’a pas produit les lignes. Il n’existe pas de liste blanche spécifique aux agents qui puisse être mal configurée.

05

Un serveur MCP, avec des jetons délimités par agent

Les agents en dehors de l’application — un assistant de code, un analyste planifié, vos propres outils — atteignent la plateforme via un serveur Model Context Protocol, avec la même surface d’outils que l’assistant intégré. Les jetons sont émis par agent et portent leurs propres périmètres, et révoquer l’un d’eux laisse la session de tous les autres agents intacte.

06

Retransmission de conversation

La transcription d’un agent externe s’affiche dans le panneau de l’assistant propre à l’application, avec un badge et sans zone de saisie, car une session de retransmission n’a aucune exécution à démarrer. Le serveur alloue les numéros de séquence sous un verrou par session, et les types d’événements forment le même ensemble fermé qu’ajoute une exécution native.

07

Une intégration conversationnelle pour les lecteurs

Une carte publiée peut être intégrée avec un panneau de discussion à côté, délimité aux données de cette carte par le jeton de partage. Un lecteur pose une question en mots et obtient une réponse tirée des couches de la carte — sans compte, et sans portée au-delà de ce que le jeton a déjà rendu public.

DjiniousMap
L’onglet des jetons API des paramètres de DjiniousMap, listant trois jetons MCP émis — un client portable, un audit planifié et un notebook en lecture seule — chacun avec sa date de création, son état de dernière utilisation et son propre contrôle Révoquer.
Un jeton par agent, chacun révocable indépendamment. Le secret est affiché une fois à la création et jamais plus, ce qui explique pourquoi aucun n’apparaît ici.

Capacités

Toute la surface, pièce par pièce

DjiniousMap est une API Bun unique au-dessus de deux bases de données, avec un client React par-dessus : ce qui collecte les données, ce qui les mesure, ce qui les trace, ce qui calcule dessus, et ce qui tient les lignes de chaque tenant hors des requêtes de tous les autres.

Ingestion4 capacités

Collecte publique

Un collecteur enregistre des jeux de données depuis data.gouv.fr, en conservant l’identifiant externe propre de l’éditeur, l’URL source, la licence et la fréquence de mise à jour. Une nouvelle collecte met à jour l’enregistrement en place plutôt que de créer un doublon.

Connexions

Enregistrez vos propres sources et créez des jeux de données à partir d’elles. Une connexion porte ses identifiants et son accessibilité séparément des jeux de données qui l’utilisent, si bien que faire tourner un secret n’orpheline pas une entrée du catalogue.

Matérialisation

Copier les entités d’un jeu de données dans la plateforme est un acte explicite, avec sa propre tâche. Elle télécharge la source, détecte le format, et insère par lots dans une table créée pour ce seul jeu de données — une table par jeu de données, jamais un stockage d’entités partagé.

Formats

GeoJSON, GeoPackage et les variantes compressées que le catalogue open-data français publie réellement, y compris du GeoJSON gzippé de plusieurs centaines de mégaoctets. L’ingestion fonctionne en flux plutôt qu’en tampon, si bien que la taille de la source est limitée par le disque, pas par la mémoire.

Mesure5 capacités

Inférence de CRS

Les coordonnées sont mesurées et confrontées à des projections candidates, ce qui produit un code EPSG déduit et un niveau de confiance. Le code déclaré par l’éditeur est enregistré à côté et n’est jamais écrasé. Quand les deux divergent, la plateforme le signale et trace à partir de la valeur mesurée.

Le profil

Nombre d’entités, types de géométrie, présence d’un index spatial, taux de géométrie nulle et invalide, colonnes temporelles, SRID déclaré et déduit, et l’emprise (bounding box) en WGS 84. L’emprise est calculée dans PostGIS, car ST_Transform n’existe que là.

Constats de qualité

Chaque constat énonce ce qui a été mesuré, pourquoi cela compte, et la remédiation. La précision de coordonnées excessive quantifie la précision implicite au regard d’un GNSS de qualité géodésique ; les données obsolètes nomment la colonne et le seuil ; la géométrie invalide rapporte un taux plutôt qu’un verdict.

Indéterminé est un résultat

Quand les données nécessaires à un constat manquent — pas de fréquence de mise à jour déclarée, pas de propriétaire, pas de colonne de type date — le verdict est Indéterminé, et la page indique quelles données manquaient. Une supposition présentée comme une mesure serait pire que l’absence de réponse.

Aptitude

Un jeu de données qui ne peut pas être placé sur une carte est signalé comme inapte à la visualisation, avec le constat qui en est la cause. L’aperçu en tableau continue de fonctionner : la donnée n’est pas inutilisable, elle est simplement non cartographiable, et la plateforme distingue les deux.

Composition5 capacités

Couches

Les jeux de données matérialisés deviennent des couches avec leur propre style, opacité, ordre et visibilité. Le remplissage, le contour, l’épaisseur du contour et le rayon des points se règlent par couche, et le rendu se résout via les tokens de design du produit, si bien que changer de palette de marque repeint la carte en même temps que l’habillage.

Filtres

Filtres catégoriels, par plage et temporels, par couche, composables et partageables. Un filtre créé par un widget lui reste rattaché, si bien que supprimer le widget supprime les filtres qu’il a créés — de façon atomique, sans laisser d’orphelins.

Widgets et filtrage croisé

Sélectionner dans un widget filtre la carte et tous les autres widgets, ce qui rend une carte multi-couches explorable plutôt que simplement lisible.

Relecture temporelle

Toute colonne identifiée comme temporelle par le profileur peut piloter une chronologie : parcourez-la ou lancez-la, et la carte se redessine sur la période. La réglette n’apparaît que si une telle colonne existe, si bien qu’elle ne suggère jamais une dimension temporelle que les données n’ont pas.

Actifs versionnés

Une carte est un actif avec des versions publiées immuables, un slug et un pointeur de version courante — le même modèle qu’un workflow. Publier fige un document et hache son corps, si bien qu’une vue partagée est exactement celle qui a été partagée.

Calcul5 capacités

Analyse spatiale

Exécutez des analyses sur des couches matérialisées et faites atterrir le résultat dans le catalogue comme un jeu de données à part entière, profilé comme n’importe quel autre. Une sortie est donc une entrée de premier rang, et la filiation est une relation du catalogue plutôt qu’une convention de nommage de fichiers.

Isochrones

Des polygones de temps de trajet depuis un point ou depuis chaque entité d’une couche, via un fournisseur d’itinéraires interchangeable. Le résultat est un jeu de données, qui peut donc être stylé, filtré et joint comme n’importe quel autre.

Itinéraires

Des itinéraires point à point avec la même abstraction de fournisseur, renvoyant une géométrie que l’atelier peut tracer.

Géocodage, dans les deux sens

Le géocodage direct transforme une colonne d’adresses en points ; le géocodage inverse transforme des points en adresses. Les deux s’exécutent comme des tâches sur tout un jeu de données plutôt que ligne par ligne.

La file de tâches

Tout ce qui prend du temps s’exécute sur une file à bail avec pulsations. Un worker qui meurt en cours d’exécution cesse d’émettre des pulsations et son bail expire, si bien que la tâche est reprise au lieu de rester bloquée indéfiniment dans un état d’exécution.

Orchestration3 capacités

Canevas de workflow

Composez un pipeline sous forme de graphe, configurez chaque nœud, et publiez-le comme un actif versionné. Une exécution diffuse sa progression en direct, et le flux est durable : se reconnecter rejoue l’exécution depuis son journal d’événements plutôt que de perdre ce qui s’est passé pendant votre absence.

Déclencheurs

Les automatisations lient un déclencheur à une version publiée d’un workflow. Les déclencheurs par planification se déclenchent selon une cadence ; les déclencheurs par événement se déclenchent sur des événements de la plateforme tels que dataset.refreshed, si bien qu’une reconstruction suit une collecte sans que personne ait à la surveiller.

État de la dernière exécution

Chaque automatisation porte le résultat de sa dernière exécution, si bien qu’un pipeline en échec silencieux depuis une semaine est visible sur la page de liste et pas seulement dans un journal.

Distribution3 capacités

Liens de partage publics

Publiez une carte derrière un jeton de partage pour des lecteurs sans compte. Le jeton délimite ce qui est lisible ; ce n’est pas un contournement du modèle de tenant, mais un principal au sein de celui-ci.

Intégrations

Le même visualiseur s’exécute en mode intégré pour placer une carte en direct dans une autre page — y compris une intégration conversationnelle, où le lecteur pose des questions à la carte plutôt que d’en manipuler les commandes.

Interface fournisseur v1

Expose la plateforme comme un service aux applications sœurs Djinious : jetons de service délimités, une surface d’opérations versionnée sous /api/provider/v1, et /ready, /version et /metrics pour l’opérateur.

Confiance

Une isolation que vous pouvez vérifier, pas une isolation qu’on vous promet

Le multi-tenant est habituellement un problème de relecture de code : chaque nouvelle requête n’est qu’à une clause WHERE oubliée d’une fuite. DjiniousMap déplace la frontière dans les deux bases de données, où une requête erronée ne renvoie rien plutôt que les lignes de quelqu’un d’autre.

SurrealDB — permissions par verbe

Chaque table est SCHEMAFULL et porte une clause PERMISSIONS pour chaque verbe, évaluée par rapport à l’enregistrement avec lequel la connexion s’est authentifiée. Une lecture refusée ne renvoie rien. Une écriture refusée ne renvoie rien non plus — c’est pourquoi chaque écriture vérifie qu’une ligne est bien revenue plutôt que de supposer qu’elle a été appliquée.

SCHEMAFULL · PERMISSIONS

PostgreSQL — sécurité au niveau ligne avec FORCE

Les tables d’entités sont gouvernées par une sécurité au niveau ligne déclarée FORCE, si bien que les politiques s’appliquent aussi au rôle propriétaire. Ce rôle est créé nosuperuser et nobypassrls : aucun principal de la base de données ne peut passer outre une politique, y compris celui qui a créé la table.

nosuperuser · nobypassrls

L’organisation est définie avant la première instruction

Chaque requête ouvre sa transaction via un utilitaire qui définit l’organisation avant l’exécution de toute instruction ; les politiques lisent ce paramètre. Une requête qui n’a résolu aucune organisation ne peut pas ouvrir de transaction du tout, si bien que « oublié de la délimiter » n’est pas un état atteignable.

SET LOCAL, par transaction

La matérialisation est également protégée par la base de données

La fonction qui crée la table d’entités d’un jeu de données vérifie d’abord que celui-ci existe — une vérification qui s’exécute sous la sécurité au niveau ligne propre de l’appelant. Un tenant qui demande à matérialiser le jeu de données d’un autre tenant ne voit aucune ligne et se voit refuser l’accès par la base de données, pas par un gestionnaire applicatif.

security definer, RLS de l’appelant

La suite déduit ses attentes des droits accordés

La suite de tests inter-tenants parcourt les deux bases et construit ses attentes à partir des droits et politiques qu’elle y trouve, plutôt qu’à partir d’une liste que quelqu’un maintient. Une table ajoutée sans politique fait échouer le parcours au lieu de passer parce que personne n’a pensé à ajouter un cas.

tests d’isolation

Un cookie de session, et rien d’autre

Les mots de passe sont en Argon2id, vérifiés dans la base de données. La session est un jeton aléatoire de 256 bits dans un cookie HttpOnly, dont seul le hash SHA-256 est stocké. Les en-têtes de requête ne sont jamais consultés pour l’identité, et il n’existe ni bouchon ni contournement. Les identifiants de connexion fédèrent vers le noyau Djinious partagé.

Argon2id · HttpOnly · SHA-256

Un journal d’audit en ajout seul, avec une rétention obligatoire

Chaque modification atterrit dans un journal d’audit en ajout seul sur le chemin même de la modification. Un balayage de maintenance planifié gère la rétention de l’audit et l’expiration des sessions, et une commande de réconciliation énumère les deux bases et sort avec un code non nul quand les lignes projetées ne concordent pas.

audit · réconciliation

Dans le fil numérique

Ce qu’elle reçoit. Ce qu’elle transmet.

DjiniousMap assure sa part de la boucle d’ingénierie et transmet ses preuves — et fonctionne tout aussi bien seule.

Seule

DjiniousMap est à lui seul une plateforme géospatiale complète : collectez des données ouvertes ou vos propres sources, profilez-les honnêtement, composez-les en cartes versionnées, exécutez des isochrones, des itinéraires et du géocodage, et automatisez le pipeline — avec un cloisonnement par tenant imposé par la base de données plutôt que par le code applicatif.

Réserver une démo

Voyez-la sur votre problème.

Apportez le jeu de données qui fait débat chez vous. Quatre-vingt-dix minutes sur vos propres données, pas les nôtres : nous le profilerons devant vous et lirons le résultat au fur et à mesure — y compris les cas où la plateforme refuse de le tracer, et pourquoi.

  1. Enregistrez un jeu de données que vous apportez — depuis une URL, ou depuis l’une de vos propres sources via une connexion
  2. Matérialisez-le en direct et lisez le profil à voix haute : CRS, géométrie, index, taux de nul et d’invalide
  3. Passez en revue ses constats de qualité, y compris ceux qui reviennent Indéterminé, et pourquoi
  4. Composez-le en une carte avec une deuxième couche, filtrez-le, et filtrez de façon croisée avec un widget
  5. Exécutez une analyse dessus — une isochrone ou une jointure spatiale — et regardez le résultat atterrir de nouveau dans le catalogue
  6. Posez à l’assistant une question que nous n’avons pas préparée, avec la trace des outils visible