diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..60d98c1f4 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,47 @@ +# RapportNav + +## Rédiger simplement les compte-rendus de missions des affaires maritimes + +RapportNav est l’application de rédaction de rapport qui vise à remplacer la multiplicité des outils et formats de rapport par un unique compte rendu de mission. L’ensemble des statistiques en sont ensuite extraites. L’agent est guidé pour rédiger son rapport au fil de sa mission. Cet outil présente encore des problèmes de développement et agrandit son périmètre d'intervention (outil utilisable par les ULAM, les patrouilleurs, et les agents Navpro). + +Lien vers la page Produit : https://beta.gouv.fr/startups/rapportnav.html + +### Contexte + +Le Dispositif de Contrôle et de Surveillance (DCS) des Affaires Maritimes englobe l’ensemble des moyens des Affaires Maritimes dédiés aux contrôles des pêches, de l’environnement marin, du travail et de la navigation maritime. Ces unités interviennent sur plusieurs politiques publiques avec, pour chacune, plusieurs donneurs d’ordres et centres de coordination nationale, chacun exigeant la transmission d’un rapport à un format spécifique avec les données le concernant. +Problème + +Nous listons plusieurs problèmes: +- La multiplication des demandes de rapports avec des modalités et formats différents aux unités est fortement chronophage pour elles. +Les modalités de comptabilisation et de rapportage variant au niveau local, il est complexe de construire une vision nationale de l’action de l’État. +- L’hétérogénéité de la qualité des données collectées ne permet pas une analyse pertinente de la situation sur le terrain +Des outils de rapportage et de ciblage comme Monitor Fish et Monitor Env se développent sur le périmètre de la pêche et de l’environnement marin, mais n’adressent qu’une partie du périmètre d’activités des unités concernées + +### Solution + +RapportNav est initialement une application de rédaction de rapport qui vise à remplacer la multiplicité des outils et formats de rapport par un unique compte-rendu de mission. L’ensemble des statistiques en sont ensuite extraites. Nous souhaitons refondre l’expérience utilisateur du RapportNav existant afin d’optimiser son usage par les unités terrain, et ainsi la qualité des données saisies. L’engagement des bureaux de la DGAMPA dans l’analyse de ces données permettra d’améliorer les orientations et la coordination des actions des unités sur le terrain, et de maximiser leur impact auprès des citoyens. Les périmètres où nous souhaitons améliorer l’impact de l’action de l’État : la pêche, la protection de l’environnement marin, les conditions de travail des gens de mer, la navigation maritime, la sécurité des navires. +Étapes + +La 1ere version de Rapport Nav a eu plusieurs objectifs: +- Unifier la rédaction des rapports de missions pour les ULAM : le produit s’est d’abord focalisé sur la suppression de rapports existants et redondants rédigés par les agents des Unités Littorales des Affaires Maritimes (ULAM). +- Extension aux Patrouilleurs des Affaires Maritimes (PAM) : l’inclusion des Patrouilleurs des Affaires Maritimes (PAM) comme bénéficiaires du produit permet d’aller plus loin dans l’unification du rapportage. + +Sur la base de cet existant, une réflexion pour faire de Rapport Nav une start up d’état a été mise en œuvre. À cette occasion, nous avons retravaillé la trajectoire du produit mais aussi son impact. +Impact +- Faciliter la saisie des informations pour les unités sur le terrain, et donc maximiser la qualité des données collectées +- Optimiser la visibilité des activités terrain mais aussi l’utilisation des moyens mis à disposition des unités par l’Etat. +- Faciliter le partage et la diffusion d’information sur les contrôles effectués par les affaires maritimes, au sein des affaires maritimes ainsi qu’avec les autres administrations. +- Permettre aux bureaux concernés de définir des grandes orientations sur les missions de surveillance et contrôle, et de constater les résultats de ces actions +- Permettre aux unités de mieux cibler leurs actions sur le terrain +- le cas échéant, améliorer la réglementation pour la rendre plus applicable +- Mieux protéger la population halieutique, l’environnement nautique, les gens de mer dans l’exercice de leur activité, les individus pratiquant des activités nautiques de plaisance + +### Futurs développements + +Rapport Nav est actuellement utilisé par l’ensemble des agents des ULAM et en partie par les PAM. Les futurs développements doivent permettre : +- d’améliorer l’expérience utilisateur de l’outil afin de faciliter la saisie des informations, +- d’harmoniser le schéma de données avec ceux de Monitor Fish et Monitor Env afin que les données soient interopérables, et que ces applications puissent être utilisées de manière complémentaire, +- de prendre en compte les besoins spécifiques de chacun des bureaux engagés dans la démarche d’amélioration du ciblage des contrôles des unités terrain, en commençant par le bureau des gens de mer. + +Ces futurs développements s’inscrivent dans le cadre d’un changement de procédure pour les unités terrain. + diff --git a/docs/_sidebar.md b/docs/_sidebar.md new file mode 100644 index 000000000..166681cc3 --- /dev/null +++ b/docs/_sidebar.md @@ -0,0 +1,6 @@ + +* [Home](/) +* [Concepts généraux](concepts/index) +* [Fonctionnalités utilisateurs](features/index) +* [Concepts techniques](engineering/index) +* [Process opérationnels](operations/index) diff --git a/docs/concepts/_sidebar.md b/docs/concepts/_sidebar.md new file mode 100644 index 000000000..1114e96be --- /dev/null +++ b/docs/concepts/_sidebar.md @@ -0,0 +1,6 @@ +* [Retour](/) +* [Concepts et Objectifs](concepts/index) +* [Utilisateurs](concepts/users.md) +* [Missions](concepts/missions.md) +* [MonitorEnv & MonitorFish](concepts/fish-env.md) +* [Entités à maîtriser](concepts/main-entities.md) diff --git a/docs/concepts/fish-env.md b/docs/concepts/fish-env.md new file mode 100644 index 000000000..8be4e20a5 --- /dev/null +++ b/docs/concepts/fish-env.md @@ -0,0 +1,35 @@ +# Co-saisie avec MonitorFish et MonitorEnv + +Il y a un concept essentiel à assimiler ici : RapportNav n'est pas un outil standalone, il dépend de [MonitorFish et MonitorEnv](https://beta.gouv.fr/startups/monitorfish.html) pour exister. +Ces 3 softwares sont intimement liés. + +## Leur raison d'être + +Monitor est là pour optimiser l’effort de contrôle en permettant aux agents de mener des actions les plus efficientes possibles (notion de coût/efficacité de la mission), et ce en valorisant l’ensemble de leurs compétences et des moyens mis à leur disposition. Le projet vise à favoriser la réalisation des objectifs des plans de contrôle et améliorer le taux d’infraction des inspections. Le suivi de ces deux indicateurs-clés permet d’objectiver sur le long terme l’impact de la start-up. + +La solution se décline en deux outils opérationnels : MonitorFish pour la partie “pêche professionnelle” (CNSP), MonitorEnv pour la partie “environnement marin” (CACEM). + +Plusieurs axes de développement : +- centraliser toutes les informations importantes sur une carte +- développer des outils d’aide au ciblage (alertes en temps réel, facteur de risque…) +- faciliter le partage d’informations entre le CNSP, le CACEM et les agents de terrain +- outiller une montée en compétence en matière d’analyse de données + +## Les liens RapportNav <> Monitor + +En préambule, il est mentionné que RapportNav ne peut être considéré standalone car il dépend de Monitor. Pourquoi cela ? +Cela est dû à des raisons organisationnelles et techniques. +Organisationelles car ces 3 softwares sont gérés par 3 startups d'état différentes, sur des budgets et timeline différentes. +Techniques car les Missions sont stockées a l'heure actuelle chez MonitorEnv, d'où la forte dépendance. + + +## La co-saisie + +Avec RapportNav2, le concept de co-saisie a été intégré. +Il consiste à partager la saisie des rapports par différents acteurs afin que chacun puisse s'occuper des parties dont il a la plus fine connaissance tout au long de la chaine d'execution. +Chacun apporte sa pierre à l'édifice là où il est le plus compétent. + +Ainsi, certaines informations seront saisies par les centres (ouverture d'un mission, saisie des moyens engagés, actions de controles ou surveillances...) +alors que d'autres seront complétées par les unités terrains qui sont au plus proche de la réalité (détails des controles effectués, infractions, membres d'équipages...) + +Ces informations sont synchronisées entre RapportNav et Monitor afin que les centres et les unités puissent les consulter. diff --git a/docs/concepts/index.md b/docs/concepts/index.md new file mode 100644 index 000000000..299ac22cc --- /dev/null +++ b/docs/concepts/index.md @@ -0,0 +1,15 @@ +# RapportNav - Concepts généraux + +Dans cette section, nous allons passer en revue les concepts les plus importants autour de RapportNav et des missions du DCS (Dispositif de Contrôles et Surveillances). + +Ces concepts sont essentiels à maîtriser afin de comprendre RapportNav dans sa globalité. + + +## Objectifs + +A la fin de la lecture de ce module, il vous faudra comprendre : +- ce qu'est RapportNav, pourquoi, comment et pour qui +- le lien à MonitorFish/Env +- la co-saisie +- les concepts de Mission, Action etc + diff --git a/docs/concepts/main-entities.md b/docs/concepts/main-entities.md new file mode 100644 index 000000000..83a78168c --- /dev/null +++ b/docs/concepts/main-entities.md @@ -0,0 +1,80 @@ +# Les concepts à maîtriser + + +## Missions + +La Mission est le concept le plus important car il réside tout en haut de la pyramide. + +Au niveau d'une mission seront stockées : +- un identifiant +- les dates de début/fin +- les unités impliquées +- les moyens impliqués +- qui a ouvert la mission (CNSP, CACEM, unité) +- des observations +- si le rapport est complet +- tout un tas d'autres infos + +Cet objet est commun à RapportNav + MonitorFish + MonitorEnv. + + +## Actions + +Au sein d'une mission, plusieurs actions peuvent être ajoutées. + +Au niveau d'une action seront stockées : +- un identifiant +- les dates de début/fin +- des observations +- potentiellement des contrôles +- potentiellement des infractions +- tout un tas d'autres infos relatives au type d'action + +Certaines Actions sont communes avec MonitorFish/Env mais pas toutes. Celles en commun sont : +- MonitorFish + - Contrôles +- MonitorEnv + - Contrôles + - Surveillance + +Les autres actions sont seulement disponibles pour RapportNav. + + +### Types d'actions + +Il existe environ une trentaine d'actions différentes : +- Les actions en co-saisie + - Contrôles Pêche pro + - Contrôles environement marin + - Surveillances environement marin +- Le statut du navire (PAM) +- Des notes libres +- Les contacts avec les centres +- Des actions spécifiques telles que : + - assistances et sauvetages + - lutte anti pollution + - lutte anti immigration illégale + - permanence Vigimer + - cérémonies et événements + - ... + + +A l'exception des notes libres, toutes les actions sont comptabilisées en stats. + +### Contrôles + +Pour les actions de contrôle, selon les cas, plusieurs types de contrôles peuvent être effectués tels que : +- Contrôles administratifs +- Contrôles règles de navigation +- Contrôles respect des règles de sécurité +- Contrôles Gens de Mer + +Une action peut donc avoir 0 ou plusieurs contrôles. + +Il est important de ne pas confondre une action de contrôle (control pêche ou env par ex) et un contrôle au sein d'une action (généralement de contrôle). + +### Infractions + +Un contrôle peut déboucher sur une infraction. Un contrôle peut donc avoir 0 ou 1 infraction. +Une infraction peut avoir plusieurs [NATINF](https://www.justice.gouv.fr/documentation/ressources/liste-infractions-vigueur-nomenclature-natinf). + diff --git a/docs/concepts/missions.md b/docs/concepts/missions.md new file mode 100644 index 000000000..b377d3556 --- /dev/null +++ b/docs/concepts/missions.md @@ -0,0 +1,69 @@ +# Missions + +## Definition + +Ume mission s'étend sur un plage temporelle allant de quelques heures à plusieurs jours. + +Elle est effectuée par divers agents (PAM, ULAM) utilisants divers moyens (Patrouilleurs, semi rigides, véhicules terrestres, moyens aériens...) + + +### Statut de mission + +Une mission est considérée : +- à venir : quand la mission n'est pas encore commencée +- en cours : quand elle est commencée mais non terminée +- terminée : quand la date de fin est déjà passée + + +### Statut du rapport + +Il existe aussi des informations concernant le statut du rapport afin de vérifier que toutes les données requises ont été correctement remplies. + +Il est affiché si : +- le rapport est complété ou non +- quel type d'utilisateur doit entrer/modifier des informations (unités, CNSP ou CACEM) + + + +## Types de missions + +Pour chaque type d'unité, plusieurs types de missions peuvent être rencontrés. + +### PAM + +#### Mission "standard" + +Ces missions sont d'une durée de 12 jours et occupent une bordée. + +Au cours de ces missions, de multiples actions de contrôles, surveillances env, lutte anti pollution etc etc peuvent être effectuées, en co-saisie ou non avec les centres. + +Cette mission peut contenir indirectement d'autres missions. + +#### Mission inter-services + +Ces missions interviennent lorsqu'un patrouilleur effectuera des missions avec d'autres services de l'état, tel que l'OFB, les douanes... + +Ces missions sont généralement plus courtes que 12 jours. + + +### ULAM + +#### Mission avec sortie terrain + +Le type de mission le plus courant pour les ULAMs. Il s'agit de rapporter ce qu'il s'est passé lors d'une sortie terrain. +Plusieurs types d'actions y seront répertoriées, en co-saisie ou non avec les centres. + +Ces missions ne dépassent jamais la journée et il peut y en avoir plusieurs par jour pour la même unité. + +#### Mission sans sortie terrain + +A COMPLETER + +#### Mission renfort extérieur + +Il existe des cas où des agents ULAM sont déployés dans d'autres services de l'état. +Ces missions ne possèdent aucunes actions, juste un début et une fin. + +Elles sont surtout présentes afin de mettre en valeur le temps passé par ces unités à aider d'autres services. + + diff --git a/docs/concepts/users.md b/docs/concepts/users.md new file mode 100644 index 000000000..c5f76228d --- /dev/null +++ b/docs/concepts/users.md @@ -0,0 +1,30 @@ +# Les utilisateurs de RapportNav + +Il existe 4 types différents d'utilisateurs +- Admin +- PAM (Patrouilleurs) +- ULAM (Unités Littorales) +- GM (Gens de Mer) + +## Qui sont-ils? + +### Admin + +Les administrateurs sont les membres de l'équipe RapportNav au sein du bureau DGAMPA. +On y trouve l'intrapreneur.e ainsi que d'autres membres tels que les développeurs. + +### PAM + +Les Patrouilleurs ont accès à la plateforme, et ce pour chaque bordée. +Il s'agira du commandant de chaque bordée mais aussi potentiellement de son second et potentiellement aussi des chefs de quart. +Il n'y a pas de règle fixe, cela dépendant d'un commandant à un autre. + +### ULAM + +Dans le cas des ULAMs, à la fois le/la chef/cheffe ULAM ainsi que les unités auront accès. + + +### GM + +Des membres du bureau en charge des problématiques Gens de Mer (agents NavPro) ont aussi accès à RapportNav (seulement sur la v1, un jour sur la v2) + diff --git a/docs/engineering/_sidebar.md b/docs/engineering/_sidebar.md new file mode 100644 index 000000000..67db9610c --- /dev/null +++ b/docs/engineering/_sidebar.md @@ -0,0 +1,12 @@ +* [Retour](/) +* [Tech homepage](engineering/index) +* [Stack](engineering/stack/index) +** [Frontend](engineering/stack/frontend) +** [Backend](engineering/stack/backend) +** [Database](engineering/stack/database) +** [Infrastructure](engineering/stack/infra) +* [Concepts principaux](engineering/concepts/index) +** [Gestion des utilisateurs](engineering/concepts/auth) +** [L'objet Mission](engineering/concepts/missions-and-actions) +** [Complétude des missions](engineering/concepts/mission-completion) +** [Gestion des dates](engineering/concepts/dates) diff --git a/docs/engineering/concepts/auth.md b/docs/engineering/concepts/auth.md new file mode 100644 index 000000000..e6728209e --- /dev/null +++ b/docs/engineering/concepts/auth.md @@ -0,0 +1,19 @@ +# Gestion des utilisateurs + +## Utilisateurs + +Les utilisateurs sont stockés dans la table `users` de la base de données. + +Les mots de passe sont hashés a l'aide de [BCrypt](org.springframework.security.crypto.bcrypt.BCrypt) (`BCrypt.gensalt(10)`) + +## Authentification + +### Méthode + +L'authentification email/password se fait à l'aide d'un JWT token ayant une validité de 30 jours. + +Ce Bearer token est transmis avec les requêtes API entre le frontend et l'API. + +### Gestion des mots de passe + +Aucune gestion des mots de passe, comme redemander un mot de passe, n'a été mise en place. diff --git a/docs/engineering/concepts/dates.md b/docs/engineering/concepts/dates.md new file mode 100644 index 000000000..b8a9158d1 --- /dev/null +++ b/docs/engineering/concepts/dates.md @@ -0,0 +1,2 @@ +# Gestion des datetimes + diff --git a/docs/engineering/concepts/index.md b/docs/engineering/concepts/index.md new file mode 100644 index 000000000..71b1e4c2d --- /dev/null +++ b/docs/engineering/concepts/index.md @@ -0,0 +1,8 @@ +# Concepts techniques + + +Objectifs : +- comprendre comment les Missions et les Actions sont récupérées et agrégées +- comprendre la gestion des utilisateurs +- comprendre la notion de complétude de mission + diff --git a/docs/engineering/concepts/mission-completion.md b/docs/engineering/concepts/mission-completion.md new file mode 100644 index 000000000..0458305df --- /dev/null +++ b/docs/engineering/concepts/mission-completion.md @@ -0,0 +1,2 @@ +# Complétude des missions + diff --git a/docs/engineering/concepts/missions-and-actions.md b/docs/engineering/concepts/missions-and-actions.md new file mode 100644 index 000000000..3c1ae9d82 --- /dev/null +++ b/docs/engineering/concepts/missions-and-actions.md @@ -0,0 +1,2 @@ +# Mission et Actions + diff --git a/docs/engineering/images/hexa-archi.png b/docs/engineering/images/hexa-archi.png new file mode 100644 index 000000000..fbd74c4ee Binary files /dev/null and b/docs/engineering/images/hexa-archi.png differ diff --git a/docs/engineering/index.md b/docs/engineering/index.md new file mode 100644 index 000000000..a18a2019c --- /dev/null +++ b/docs/engineering/index.md @@ -0,0 +1,10 @@ +# Concepts techniques + + + + + +Les objectifs à la fin de ce module : +- comprendre l'architecture de RapportNav +- comprendre les intéractions avec MonitorEnv/Fish +- comprendre l'infrastructure diff --git a/docs/engineering/stack/backend.md b/docs/engineering/stack/backend.md new file mode 100644 index 000000000..fe43c5fb6 --- /dev/null +++ b/docs/engineering/stack/backend.md @@ -0,0 +1,85 @@ +# Backend + +## Stack + +Le backend utilise les outils suivants : +- kotlin comme langage +- spring-boot comme framework +- gradle comme build tool + + +## Architecture + +### Clean Architecture + +Le pattern d'architecture utilisé est commun entre RapportNav et les Monitor, il s'agit de clean architecture dans sa variante hexagonale. + +Le diagramme suivant est une bonne explication, bien que plus complet que la réalité de RapportNav. +![hexa-archi.png](../images/hexa-archi.png) + +La clean architecture permet de compartimenter les différents layers applicatifs (domain, data sources, data storage, APIs...) qui ont des mappers pour passer d'un niveau à un autre. +Ainsi, toute la logique métier est basée sur ses propres définitions. +Cela permet d'éviter par ex de devoir changer la logique métier alors qu'une API externe a changé. + +Ceci dit, ce pattern vient avec un coût et une certaine lourdeur d'utilisation mais sur le long-terme, il nous permet d'éviter bien des soucis. + + +### Convention des Layers et Entités + +#### Domain + +Situé dans le dossier `domain/`, c'est le coeur de la logique business/métier. + +On y trouvera: +- la définition des Entités +- des méthodes `use-cases` où la logique métier est implémentée +- des repositories afin d'accéder à des méthodes d'autres layers (storage) + +#### Infrastructure + +Situé dans `infrastructure/`, on y trouvera les layers de : +- stockage +- data sources +- API externes +- cache + +##### Storage + +Situé dans `infrastructure/database`, c'est à cet endroit grâce à JPA que les méthodes de lecture/écriture dans la database seront effectués. + +##### Data sources + +On trouvera ici autant de dossiers que de data sources comme : +- `monitorfish/` pour accéder aux APIs MonitorFish +- `monitorenv/` pour accéder aux APIs MonitorEnv + +##### APIs + +Dans `api/` seront listées ici toutes les APIs externe que RapportNav met à disposition. + +##### cache + +Dans `cache/` sera configuré la gestion des différents caches. +Un cache a été mis en place pour réduire les intéractions avec les Monitors. +La technologie de cache est `caffeine` + +On distingue 2 types de caches: +- longue durée, invalidé une fois par server restart car ces données sont très statiques: + - NATINFs + - ControlPlans (thématiques de contrôles/surveillances) +- très courtes durées, de l'ordre de quelques minutes, généralement pour économiser de la bandwidth pour: + - Missions Env + - Actions Env + - Actions Fish + + +#### Convention de nommage + +La convention de nommage d'une entités `xxx` sera: +- `xxxEntity` pour le domain layer +- `xxxModel` pour le database layer +- `xxx` pour l'API + + + + diff --git a/docs/engineering/stack/database.md b/docs/engineering/stack/database.md new file mode 100644 index 000000000..4ccf2f4c7 --- /dev/null +++ b/docs/engineering/stack/database.md @@ -0,0 +1,5 @@ +# Database + +La base de données tourne sous postgresql 16. + +Hibernate et JPA nous aide à y accéder depuis le niveau applicatif. diff --git a/docs/engineering/stack/frontend.md b/docs/engineering/stack/frontend.md new file mode 100644 index 000000000..3a599eda1 --- /dev/null +++ b/docs/engineering/stack/frontend.md @@ -0,0 +1,14 @@ +# Frontend + + +## Stack technique + +Les outils/frameworks suivants sont utilisés : +- React +- [tanstack-query](https://tanstack.com/query/latest) comme store et fetch +- [monitor-ui](https://github.com/MTES-MCT/monitor-ui) comme design system +- [vite](https://vite.dev/) comme build tool + +## Architecture + +TODO finir ça quand MVP ULAM est en place diff --git a/docs/engineering/stack/index.md b/docs/engineering/stack/index.md new file mode 100644 index 000000000..39969282f --- /dev/null +++ b/docs/engineering/stack/index.md @@ -0,0 +1,6 @@ +# Stack technique + + +Objectifs : +- comprendre les différents layers et comment ils communiquement entre eux +- comprendre comment le frontend et le backend sont architectés diff --git a/docs/engineering/stack/infra.md b/docs/engineering/stack/infra.md new file mode 100644 index 000000000..840db4283 --- /dev/null +++ b/docs/engineering/stack/infra.md @@ -0,0 +1,106 @@ +# Infrastructure + +L'hébergement et l'infrastructure de ce projet est gérée par le bureau NUM3 de la DAM-SI (Systemes d'Information de la Direction des Affaires Maritimes). Ils sont basés à Saint Malo. +Ils se chargent de toute la partie hébergement et fournissent plusieurs outils. + +A terme, il est possible que RapportNav soit migré sur le réseau eco du ministère de l'écologie. + +## Le RIE et les machines virtuelles + +L'application RapportNav n'est accessible que dans un réseau privé appellé RIE (Réseau Interministériel). +Autrement dit, il n'est pas possible d'accéder à RapportNav et les MonitorFish/Env via l'internet "normal". + +Pour ce faire, il faut se connecter au RIE via : +- une machine virtuelle +- un certificat +- ~~VPN (option indisponible)~~ + +Côté software, il faudra rajouter un proxy de sortie pour pouvoir envoyer/recevoir de la data de l'extérieur. + +### Demande de machine virtuelle + +Afin d'obtenir une machine virtuelle, l'intrapreneur.e devra effectuer une demande auprès de la DAM-SI/NUM3. +Ces VMs peuvent tourner sur Windows ou Ubuntu. + +Ces machines sont très très lentes, il ne faut pas hésiter à demander plus de mémoire physique et/ou virtuelle. + +### Demande de certificats + +Grâce à un certificat d'accès, il est possible d'accéder depuis l'extérieur à certains sites du RIE. +Cela a notamment été mis en place lors du covid. +Similairement aux machines virtuelles, l'intrapreneur.e devra en effectuer une demande. + + +## Hébergement + +La DAM-SI dispose d'un gitlab self-hosted et nous met à disposition un repository ainsi qu'une chaine de déploiement. + +### Les environements + +Trois environnements nous sont mis à disposition +- ~~dev - machine disponible mais non setup~~ +- [integration](https://csam-test.din.developpement-durable.gouv.fr) +- [production](https://rapport-nav.din.developpement-durable.gouv.fr/) + +Bien entendu, ces environnements ne sont accessible que via le RIE. + +### Gitlab + +Le repo [gitlab/rapportnav2](https://gitlab-sml.din.developpement-durable.gouv.fr/rapportnav-v2/rapportnav_v2) est accessible apès avoir : +- obtenu un compte Cerbere (demande auprès de l'intrapreneur.e) +- été invité par la DAM-SI et obtenu un token + + +### Mirroring the repo + +Ce repo gitlab est un miroir de notre repo github. +Les deux repos doivent donc être synchronisé dans les 2 sens car les équipes RapportNav et DAM-SI peuvent ajouter des changements sur la codebase. + + +### Chaine de déploiement CI/CD + +La DAM-SI nous fournit une chaine CI/CD pré-programmée via Ansible. + +#### Configuration + +Au sein du repo rapportnav2 se trouve un dossier `.gitlab-ci` dans lequel se trouvent : +- des configs nécessaires et spécifique au projet +- un template de Dockerfile + +En effet, certaines configs sont vraiment spécifiques au projet comme par ex la manière de build le backend ou le frontend. + +Les différentes pipelines sont accessibles [ici](https://gitlab-sml.din.developpement-durable.gouv.fr/rapportnav-v2/rapportnav_v2/-/pipelines) et sont déclenchées +- à la main en sélectionnant une branche +- automatiquement après un push sur la branche main + +La configuration de la pipeline se trouve [ici](https://gitlab-sml.din.developpement-durable.gouv.fr/rapportnav-v2/rapportnav_v2/-/ci/editor?branch_name=main&tab=1) + +#### Continuous Integration (CI) + +Dans les grands principes, la Continuous Integration se chargera de build et analyser le projet + +##### CI Build + +Dans cette toute première étape, différents élements vont être build et recombinés : +- le frontend +- le backend +- le tout ensemble dans une image Docker + +##### CI Analysis + +Une fois le projet buildé, différentes étapes d'analyse de failles et de qualité de code sont effectuées : +- Analyse des dépendances via [dependency-check](https://owasp.org/www-project-dependency-check/) +- Analyse des images/containers Docker via [Trivy](https://trivy.dev/latest/) +- Analyse de qualité via [sonarqube](https://github.com/SonarSource/sonarqube) + +Pour chacune de ces étapes, certaines configs, telles que la criticalité des failles, sont disponibles dans le fichier `.gitlab-ci.yml`. +Il conviendra d'en discuter avec la DAM-SI car in fine, ils ont la responsabilité de cette chaine CI. + + +#### Continuous Deployment (CD) + +Lors de cette étape, uniquement déclenchée manuellement via l'UI Gitlab, il est possible de choisir sur quel environement déployer (pour l'instant intégration ou production). +Ainsi l'image Docker sera taggée et déployée sur les machines correspondantes. + + + diff --git a/docs/features/_sidebar.md b/docs/features/_sidebar.md new file mode 100644 index 000000000..c93002fac --- /dev/null +++ b/docs/features/_sidebar.md @@ -0,0 +1,5 @@ +* [Retour](/) +* [Fonctionnalités utilisateurs](features/index) +* [Compléter un rapport de mission](features/mission) +* [Exporter Rapport de Patrouille](features/rapport-patrouille) +* [Exporter Tableaux AEM](features/aem) diff --git a/docs/features/aem.md b/docs/features/aem.md new file mode 100644 index 000000000..27d28bb0e --- /dev/null +++ b/docs/features/aem.md @@ -0,0 +1,47 @@ +# Tableaux AEM + +## Description + +AEM = Action de l'Etat en Mer + +Dans leur process, les PAM et ULAM doivent compléter un template de tableau AEM et l'envoyer à leur hiérarchie. + +Ce tableau était écrit à la main par les commandants et était une tâche très fastidieuse. +Il leur est désormais disponible d'exporter ce tableau quand leur mission est **terminée** et **complétée**. + +Il est possible de combiner plusieurs missions en 1 seul tableau après avoir précisé la mission principale. + +Il est aussi possible d'exporter selon des plages de dates différentes : à la mission, à la jouréem au mois... + + +## Lancer l'export + +Une fois la mission **terminée** et **complétée**, les utilisateurs peuvent se rendre sur la page d'accueil et profiter des différentes options d'export. +Il leur est possible d'exporter : +- un tableau pour une seule mission +- un tableau avec plusieurs missions combinées dans une mission principale (très courant pour missions inter-services) +- un zip avec un tableau par mission + +Dans le cas des missions combinées en une seule, ce n'est pas grave si les missions secondaires sont incompletes car on veut juste récupérer les actions. +Dans le cas du zip avec un tableau par mission, les missions incomplètes ne seront pas exportées. + +![homepage.png](images/homepage.png) +![export-patrouille.png](images/export-aem.png) +![export-zip.png](images/export-zip.png) + + +## Contenu + +Ces tableaux ont un couverture plus large que le rayon d'action des unités du DCS, il y a donc des sections qui n'ont pas vocation à être remplies. + +Les sections qui nous intéressent sont : +- #1 - Sauvegarde de la vie humaine +- #2 - Assistance aux navires en difficulté et sécurité maritime +- #3.3 - Lutte contre le trafic en mer d’espèces protégées +- #4 - Protection de l’environnement, gestion du patrimoine marin et des ressources publiques marines, surveillance des espaces protégés +- #7 - Souveraineté et protection des intérêts nationaux + +![aem1.png](images/aem1.png) +![aem2.png](images/aem2.png) +![aem3.png](images/aem3.png) +![aem4.png](images/aem4.png) diff --git a/docs/features/images/activite-navire.png b/docs/features/images/activite-navire.png new file mode 100644 index 000000000..b4501f300 Binary files /dev/null and b/docs/features/images/activite-navire.png differ diff --git a/docs/features/images/aem1.png b/docs/features/images/aem1.png new file mode 100644 index 000000000..4a904c311 Binary files /dev/null and b/docs/features/images/aem1.png differ diff --git a/docs/features/images/aem2.png b/docs/features/images/aem2.png new file mode 100644 index 000000000..a376adbb4 Binary files /dev/null and b/docs/features/images/aem2.png differ diff --git a/docs/features/images/aem3.png b/docs/features/images/aem3.png new file mode 100644 index 000000000..ff772de6b Binary files /dev/null and b/docs/features/images/aem3.png differ diff --git a/docs/features/images/aem4.png b/docs/features/images/aem4.png new file mode 100644 index 000000000..0014729a3 Binary files /dev/null and b/docs/features/images/aem4.png differ diff --git a/docs/features/images/autres-missions.png b/docs/features/images/autres-missions.png new file mode 100644 index 000000000..1f87ccc3c Binary files /dev/null and b/docs/features/images/autres-missions.png differ diff --git a/docs/features/images/bilan-operationnel.png b/docs/features/images/bilan-operationnel.png new file mode 100644 index 000000000..1a4da734e Binary files /dev/null and b/docs/features/images/bilan-operationnel.png differ diff --git a/docs/features/images/equipage.png b/docs/features/images/equipage.png new file mode 100644 index 000000000..f6883d5c7 Binary files /dev/null and b/docs/features/images/equipage.png differ diff --git a/docs/features/images/export-aem.png b/docs/features/images/export-aem.png new file mode 100644 index 000000000..679335a43 Binary files /dev/null and b/docs/features/images/export-aem.png differ diff --git a/docs/features/images/export-patrouille.png b/docs/features/images/export-patrouille.png new file mode 100644 index 000000000..dbfd4c0cb Binary files /dev/null and b/docs/features/images/export-patrouille.png differ diff --git a/docs/features/images/export-zip.png b/docs/features/images/export-zip.png new file mode 100644 index 000000000..b02d5a41e Binary files /dev/null and b/docs/features/images/export-zip.png differ diff --git a/docs/features/images/homepage.png b/docs/features/images/homepage.png new file mode 100644 index 000000000..b21d99ed8 Binary files /dev/null and b/docs/features/images/homepage.png differ diff --git a/docs/features/images/mission-page.png b/docs/features/images/mission-page.png new file mode 100644 index 000000000..6db5d192f Binary files /dev/null and b/docs/features/images/mission-page.png differ diff --git a/docs/features/images/timeline.png b/docs/features/images/timeline.png new file mode 100644 index 000000000..abfdf3e51 Binary files /dev/null and b/docs/features/images/timeline.png differ diff --git a/docs/features/index.md b/docs/features/index.md new file mode 100644 index 000000000..f367e02a7 --- /dev/null +++ b/docs/features/index.md @@ -0,0 +1,10 @@ +# Fonctionnalités utilisateur + +RapportNav a un double objectif : +- collecter des données qualifiées afin de mieux orienter le ciblage des contrôles +- faire gagner du temps aux unités en ne remplissant plus qu'un seul rapport au lieu de plusieurs + +Ainsi RapportNav permet aux unités de : +- compléter leur rapports de mission +- exporter les tableaux AEM +- exporter les rapports de patrouille (PAM uniquement) diff --git a/docs/features/mission.md b/docs/features/mission.md new file mode 100644 index 000000000..957a44b14 --- /dev/null +++ b/docs/features/mission.md @@ -0,0 +1,34 @@ +# Compléter un rapport + +Afin de compléter leur rapports de mission, les unités ont accès à 2 pages pour : +- lister toutes leurs missions +- éditer un rapport + +## Liste de missions + +:a première page permet de lister les missions par patrouiller dans le cas des PAM, par centre pour les ULAM. + +Il leur est aussi permis d'exporter divers rapports. + +![homepage.png](images/homepage.png) + +### Diƒférences entre PAM et ULAM + +Bien que similaire dans l'esprit, il existe des divergences entre la version PAM et ULAM : +- les rapports sont affichés a l'année pour PAM, au mois pour ULAM +- ULAM a la possibilité d'exporter les tableaux AEM au mois +- les cellules de la liste n'affichent pas les mêmes informations + + +## Éditer un rapport + +En cliquant sur une mission, il est possible de la modifier. + +![mission-page.png](images/mission-page.png) + +Cette page contient 3 colonnes et pour faire simple : +- colonne de gauche : informations sur la mission (dates, équipages, moyens, conso, observations...) +- colonne du centre: chronologie des actions + ajout d'actions +- colonne de droite : détails d'une mission avec divers formulaires + + diff --git a/docs/features/rapport-patrouille.md b/docs/features/rapport-patrouille.md new file mode 100644 index 000000000..cec89d0c3 --- /dev/null +++ b/docs/features/rapport-patrouille.md @@ -0,0 +1,88 @@ +# Rapport de patrouille (PAM) + +## Description + +Dans leur process, les PAM doivent écrire et envoyer un rapport de patrouille à leur hiérarchie. + +Ce rapport était écrit à la main par les commandants et était une tâche très fastidieuse. +Il leur est désormais disponible d'exporter ce tableau quand leur mission est **terminée** et **complétée**. + +Il est possible de combiner plusieurs missions en 1 seul rapport après avoir précisé la mission principale. + +## Lancer l'export + +Une fois la mission **terminée** et **complétée**, les utilisateurs peuvent se rendre sur la page d'accueil et profiter des différentes options d'export. +Il leur est possible d'exporter : +- un rapport pour une seule mission +- un rapport avec plusieurs missions combinées dans une mission principale (très courant pour missions inter-services) +- un zip avec un rapport par mission + +Dans le cas des missions combinées en une seule, ce n'est pas grave si les missions secondaires sont incompletes car on veut juste récupérer les actions. +Dans le cas du zip avec un rapport par mission, les missions incomplètes ne seront pas exportées. + +![homepage.png](images/homepage.png) +![export-patrouille.png](images/export-patrouille.png) +![export-zip.png](images/export-zip.png) + + +## Contenu + +### Activité du navire + +![activite-navire.png](images/activite-navire.png) + +La première section du rapport concerne l'activité du navire, qui permet d'avoir une vision de la répartition du temps entre différentes tâches. + +Le premier tableau est calculé grâce aux actions de statut, d'où l'importance pour les utilisateurs de bien renseigner leur statuts tout au long de la mission. + +D'autres données sont ensuite affichées : +- le nombre d'heures en patrouille environnement (calculé grâce aux actions Env) +- le nombre d'heures en patrouille migrants (calculé grâce aux action Nav immigration illégale) +- la distance parcourue et la consomation en carburant +- des observations générales sur la mission + +### Chronologie + +![timeline.png](images/timeline.png) + +La même chronologie que sur l'interface est affichée dans le rapport de patrouille. +Il s'agit de lister toutes les actions entre le début et la fin de la mission, organisées par jour. + +Il est possible pour les commandants de venir étoffer cette chronologie si nécessaire. + + +### Bilan opérationnel + +![bilan-operationnel.png](images/bilan-operationnel.png) + +Grâce aux différentes actions renseignées dans l'interface entre RapportNav et MonitorFish/Env, d'autres tableaux sont générés : +- Contrôles en mer des navires de pêche professionnels +- Contrôles en mer navires de plaisance +- Contrôles à terre - navires au débarquement, à quai +- Contrôles environnement marin + + +### Autres missions + +![autres-missions.png](images/autres-missions.png) + +Ensuite sont renseignées plusieurs indicateurs à propos de certains types d'actions telles que : +- assistance et sauvetage +- manifestations nautiques +- lutte anti-pollution +- permanence Vigimer/BAAEM +- soutien à la politique de formation des agents de l'état + + +### Equipage + +![equipage.png](images/equipage.png) + +Similairement à l'interface, les commandants ont l'obligation de mentionner quels membres de l'équipage ont été présents/absents. + + +### Rapport chef mécanicien + +Le rapport du chef mécanicien est attaché au rapport de patrouille par le commandant. + +Ce rapport n'utilise aucune des données collectée par RapportNav, il n'est donc pas généré. diff --git a/docs/guide.md b/docs/guide.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 000000000..38082fa17 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,27 @@ + + +
+ +