Stage - DOC Query Language

Localisation

Paris ou Montpellier, France

L'entreprise :

DecisionBrain est une jeune entreprise internationale qui développe et vend des solutions logicielles d'aide à la décision

Le stage se déroulera de préférence dans nos bureaux à Montpellier (Millénaire). Le télétravail est possible s'il est imposé par la règlementation

Decision Optimization Center

DecisionBrain développe une plateforme d'optimisation pour créer, déployer et maintenir des solutions d'aide à la décision entièrement évolutives. Rapidement, facilement, efficacement. Cette plateforme nommée DOC accélère la création et le déploiement de solutions d'aide à la décision. Elle est écrite en Java pour le back-end et en Angular pour le front-end, et repose sur un certain nombre de technologies telles que Spring, Docker, etc.

Description du poste :

Le DOC fournit une API d'accès aux données permettant d'interroger des données à partir d'un modèle de données généré en utilisant GraphQL.

Cette API est générique et générée au moment de l'exécution pour exposer les informations du modèle de données et du méta-modèle du projet. Il est connecté à une base de données relationnelle (Postgresql) via une couche JPA (Hibernate Criteria). Cette API permet déjà de demander des données avec des expressions de filtrage complexes. Cependant, la construction de filtres complexes nécessite un code personnalisé car le client web (UI) ne fournit pas un moyen convivial de les créer.

Le logiciel JIRA expose par exemple une telle fonctionnalité avec son langage d'interrogation JQL :

https://www.atlassian.com/blog/jira-software/jql-the-most-flexible-way-to-search-jira-14.

Ce sujet peut être divisé en plusieurs étapes :

  • Définissez un langage de requête (DSL) pour exprimer ces filtres avec sa documentation.
  • Étudier différentes bibliothèques de génération d'analyseurs, et valider que cela peut être implémenté dans la bibliothèque web DOC (candidat possible pour implémenter l'analyseur : https://sap.github.io/chevrotain).
  • Implémenter l'analyseur dynamique correspondant dans la bibliothèque web DOC (Angular), avec des tests. Cet analyseur sera responsable de l'analyse des expressions de requête et produira des objets de définition de requête filtrés, consommés par les API GraphQL existantes.
  • Intégrer l'analyseur dans une composante UI. Cette intégration doit être composée par un éditeur de requêtes fourni en standard aux utilisateurs.
  • Une API de validation avec des capacités de suggestion serait bien.
  • Compétences

    Le sujet du stage touche à une variété de technologies. La majeure partie de sa complexité vient de là, et probablement une partie importante de son intérêt aussi. Nous n'attendons pas du candidat qu'il maîtrise pleinement toutes ces technologies, mais il doit posséder de solides compétences dans un nombre suffisant d'entre elles pour pouvoir acquérir les technologies manquantes. Les technologies en question comprennent :

    • Le développement back-end, de préférence en Java. L'utilisation d'un cadre d'injection de dépendance tel que Spring. Une connaissance des bases de données, en particulier MongoDB.
    • Le développement Front-end, de préférence avec Angular.
    • Les Systèmes de versionnement, de préférence Git. La construction d'outils tels que Gradle ou Maven.

    Au-delà des compétences techniques, le candidat doit être autonome et capable de collaborer efficacement avec les autres membres de l'équipe. Des niveaux raisonnables en français parlé et en anglais écrit sont obligatoires.

    Qui sommes nous ?

    Chez DecisionBrain, le travail en équipe est primordial; il nous rend plus efficace et productif et nous permet de fournir de meilleurs résultats à long terme à nos clients. Si vous souhaitez rejoindre notre équipe, nous recherchons des personnes qui sont non seulement passionnées par les logiciels et la technologie, et qui en même temps partagent notre vision et nos valeurs et ainsi contribuent à constituer une équipe solide.

    Vous rejoindrez une jeune entreprise visionnaire et en pleine croissance, vous pourrez avoir un impact direct sur son évolution et son succès. Vous évoluerez rapidement avec une équipe très expérimentée et dynamique, et travaillerez avec des clients du monde entier.

[contact-form-7 id="1760" title="Formulaire de contact Emplois"]