betagouv / espace-membre-next

Gestion des membres de la communauté
MIT License
2 stars 6 forks source link

Espace Membre

L'espace membre de l’incubateur

Dev de l'app Espace Membre

Variables d'environnement

Lancer en mode développement

Une fois Postgres lancé, vous pouvez démarrer l'application avec ces commandes :

» npm install # Récupère les dépendances
» npm run migrate # Applique les migrations
» npm run seed # Ajoute des utilisateurs dans la base users. Utilisez l'un des primary_email présent dans la bdd pour vous connecter
» npm run dev
   ...
   Running on port: 8100

L'application sera disponible sur http://localhost:8100 (8100 est le port par défaut, vous pouvez le changer avec la variable d'env PORT)

Lancer avec docker-compose

Lancer avec docker sans docker-compose

Lancer en mode production

» npm run build
» npm run start
   ...
   Running on port: 8100

Lancer les tests

» npm run test

Générer clé API OVH

Si vous n'avez pas les droits pour générer les credentials OVH, postez un message sur #incubateur-amélioration-secretariat.

Lien : https://eu.api.ovh.com/createToken/

GET /email/domain/beta.gouv.fr/*
POST /email/domain/beta.gouv.fr/account
DELETE /email/domain/beta.gouv.fr/account/*
POST /email/domain/beta.gouv.fr/redirection
DELETE /email/domain/beta.gouv.fr/redirection/*
POST /email/domain/beta.gouv.fr/account/*/changePassword
POST /email/domain/beta.gouv.fr/mailingList
POST /email/domain/beta.gouv.fr/mailingList/*/subscriber
DELETE /email/domain/beta.gouv.fr/mailingList/*/subscriber/*
GET /email/domain/beta.gouv.fr/mailingList/*/subscriber
GET /email/domain/beta.gouv.fr/responder/*
POST /email/domain/beta.gouv.fr/responder
PUT /email/domain/beta.gouv.fr/responder/*
DELETE /email/domain/beta.gouv.fr/responder/*

Debug avec le serveur SMTP Maildev

Maildev est un serveur SMTP avec une interface web conçus pour le développement et les tests.

Sans docker: Une fois installé et lancé, il suffit de mettre la variable d'environnement MAIL_SERVICE à maildev pour l'utiliser. MAIL_USER et MAIL_PASS ne sont pas nécessaires.

Avec docker: ne pas préciser de MAIL_SERVICE, les bonnes variables d'environnement sont déjà précisées dans le docker-compose

Tous les emails envoyés par le code de l'espace membre seront visibles depuis l'interface web de Maildev (http://localhost:1080/).

Debug sans notifications Mattermost

Pour certaines actions, l'espace membre envoie une notification Mattermost. En local, vous pouvez mettre les variables d'environnements CHAT_WEBHOOK_URL_SECRETARIAT et CHAT_WEBHOOK_URL_GENERAL à un service qui reçoit des requêtes POST et répond avec un 200 OK systématiquement.

Beeceptor permet de le faire avec une interface en ligne sans besoin de télécharger quoi que ce soit.

Sinon, certains outils gratuits comme Mockoon ou Postman permettent de créer des serveurs mock facilement aussi (Guide Postman).

Debug avec un autre domaine OVH

Lorsqu'on utilise un autre domaine OVH (par exemple, un domain bac-à-sable pour le développement), la variable SECRETARIAT_DOMAIN doit être renseignée. Par défaut, le domaine est beta.gouv.fr.

Debug avec une autre API utilisateur

Configurer la variable d'environnement USERS_API (par défaut à https://beta.gouv.fr/api/v1.6/authors.json)

Créer des migrations

KnexJS permet de créer des migrations de base de données. Un shortcut a été ajouté au package.json pour créer une migration :

npm run makeMigration <nom de la migration>

Une fois la migration créée, vous pouvez l'appliquer avec :

npm run migrate

Pour utiliser d'autres commandes, le CLI de KnexJS est disponible avec ./node_modules/knex/bin/cli.js. Par exemple, pour faire un rollback :

./node_modules/knex/bin/cli.js migrate:rollback

Scripts pour faire des taches en local

Générer le graphe des redirections emails

Supprimer une redirection

Explication du fonctionnement des pull requests Github

En prod, l'app sécrétariat génère des pulls requests sur le github reposity betagouv/beta.gouv.fr. Pour cela une une branche est créée sur un fork du repository betagouv/beta.gouv.fr et une pull request est effectuée depuis ce fork vers ce repository initial betagouv/beta.gouv.fr.

Pourquoi utiliser un fork ?

Afin de créer une branche et faire une pull request sur un repository, on donne les droits d'accès en écriture sur ce repository via un token (GITHUB_TOKEN) utilisé par le code. Pour prévenir tout problème ces droits sont donnés sur le repository "fork", et non sur le repository principal.

Il faut donc préciser ces variables d'environnement:

En dev : le GITHUB_REPOSITORY est un fork de betagouv/beta.gouv.fr, et le GITHUB_FORK un fork de ce fork.

Pour simplifier, on peut utiliser des repos communs entre dev. Demandez a vos collègues le nom des repository à spécifer dans le .env ainsi que les droits d'accès au resository GITHUB_FORK

Sripts CRON

Les tâches CRON sont gérées par une app scalingo dédiée via le Procfile

Configuration de production

enabled fréquence code description
10:00 am mon newsletterMondayReminderJob Rappel mattermost newsletter 1
08:00 am thurs newsletterThursdayMorningReminderJob Rappel mattermost newsletter 2
02:00 pm thurs newsletterThursdayEveningReminderJob Rappel mattermost newsletter 3
04:00 pm thurs sendNewsletterAndCreateNewOneJob Envoi de la newsletter et creation d'un nouveau PAD + message mattermost
02:00 pm removeBetaAndParnersUsersFromCommunityTeam Move expired user to mattermost alumni
02:00 pm mon sendReminderToUserAtDays Send mattermost message to expired users (90 days)
05:00 am mon sendReminderToUserAtDays Send mattermost message to expired users (30 days)
10:00 am sendGroupDeSoutienReminder Send mattermost message groupe de soutien
every 8 min. createUsersByEmail Create missing mattermost users and send invitation email
every 8 min. addUsersNotInCommunityToCommunityTeam Add existing users to community team if there not in
08:00 am 1 th reactivateUsers Reactivate mattermost accounts if any
10:00 am removeUsersFromCommunityTeam Remove expired users from mattermost community team (90 days)
10:10 am moveUsersToAlumniTeam Add user to mattermost alumni team
05:30 pm mon PostEventsFromBetaOnMattermost Post event of the week from betagouv calendar
08:00 am mon Post event of the week from gip calendar undefined
05:00 am mon createMailingListForStartups Créé des mailings-list OVH pour les startups
09:30 am 1 th Feb, May, Aug and Nov sendEmailToStartupToUpdatePhase Envoie par mail une relance pour mise à jour de la phase de la SE
10:00 am 1 th buildCommunityBDD Met à jour la table communauté à partir des users
every 4 min. pullRequestStateMachine Verifie les pulls requests sur GitHub et envoie un email de rappel à l'équipe ou au référent
10:00 am syncBetagouvUserAPI Synchronize user info from beta.gouv.fr api with bdd
10:05 am syncBetagouvStartupAPI Synchronize startup info from beta.gouv.fr api with bdd
10:10 am syncMattermostUserWithMattermostMemberInfosTable Add new mattermost user to mattermost_member_info table
10:15 am syncMattermostUserStatusWithMattermostMemberInfosTable Get mattermost user activity info from api and sync with mattermost_member_info table
At 0h SyncFormationFromAirtable Synchronise les données AirTable des formations avec la DB
At 0h SyncFormationInscriptionFromAirtable Synchronise les données AirTable des inscriptions aux formations avec la DB
0 min mon Unblock blacklisted email Unblock emails from MAILING_LIST_NEWSLETTER Brevo mailing-list
every 8 min. recreateEmailIfUserActive Recreate email for user active again
every 8 min. setEmailAddressesActive Add pending users to mailing-list and set email as active
every 8 min. sendOnboardingVerificationPendingEmail Envoi d'un email de relance pour les adresses en attente de validation
every 4 min. emailCreationJob Créé les emails en attente sur OVH
every 4 min. cron de creation de redirection Créé les redirections email en attente sur OVH
every 4 min. setEmailRedirectionActive Ajoute les nouvelles redirections aux mailing-lists brevo et active l'adresse
every 4 min. subscribeEmailAddresses Re-inscrit les désabonnés à la mailing-list brevo incubateur
every 4 min. unsubscribeEmailAddresses Désinscrit les membres expirés de la mailing list
every 5 min. mon, tues, wed, thurs and fri addGithubUserToOrganization Envoi des invitations GitHub et ajout à la team GitHub/betagouv
06:00 pm removeGithubUserFromOrganization Désinscrit les membres expirés de l'organisation GitHub
08:00 am and 02:00 pm deleteRedirectionsAfterQuitting Supprime les redirections email OVH des utilisateurs expirés
08:00 am sendJ1Email Email départ J+1
08:00 am sendJ30Email Email départ J+30
10:00 am deleteSecondaryEmailsForUsers Supprime dans la DB les emails secondaires des membres expirés
03:00 pm deleteOVHEmailAcounts Supprime les emails OVH des membres expirés (30 days)
03:00 pm setEmailExpired Marque en DB les emails des membres comme expirés
08:00 am removeEmailsFromMailingList Supprime les utilisateurs expirés des mailing-lists brevo ONBOARDING,NEWSLETTER
02:00 pm reinitPasswordEmail Réinitialise le mot de passe email des membres expirés après 5 jours
10:00 am sendContractEndingMessageToUsers15days Sending contract ending message to users (15 days)
10:00 am sendContractEndingMessageToUsers30days Sending contract ending message to users (30 days)
10:00 am sendContractEndingMessageToUsers2days Sending contract ending message to users (2 days)
At 0h pullRequestWatcher Remind user with pending GitHub pull request on author file
At 0h pullRequestWatcherSendEmailToTeam Remind team with pending GitHub pull request on author file
10:00 am 1 th sendMessageToActiveUsersWithoutSecondaryEmail Send message to active user without secondary email to update secondary email