# TPS - Téléprocédures Simplifiées ## Context Téléprocédures Simplifiées, ou TPS pour les intimes, est une plateforme 100 % web et 0 % email, conçue afin de répondre au besoin urgent de l'État d'appliquer la directive sur le 100 % démat' à l'horizon 2018 pour les procédures administratives. ## Dépendances ### Tous environnements - postgresql ### Développement - Mailcatcher : `gem install mailcatcher` - Hivemind : * Mac : `brew install hivemind` * Linux : voir https://github.com/DarthSim/hivemind#installation ### Tests - Chrome - chromedriver : * Mac : `brew install chromedriver` * Linux : voir https://sites.google.com/a/chromium.org/chromedriver/downloads ## Initialisation de l'environnement de développement Afin d'initialiser l'environnement de développement, éxécutez la commande suivante : bundle install ## Création de la base de données Les informations nécessaire à l'initialisation de la base doivent être pré-configurées à la main grâce à la procédure suivante : su - postgres psql > create user tps_development with password 'tps_development' superuser; > create user tps_test with password 'tps_test' superuser; > \q Afin de générer la BDD de l'application, il est nécessaire d'éxécuter les commandes suivantes : # Create and load the schema for both databases rake db:create db:schema:load # Migrate the development database and then the test database rake db:migrate rake db:migrate RAILS_ENV=test ## Bouchonnage de l’authentification Créer le fichier `config/france_connect.yml` avec le contenu ```yaml particulier_identifier: '' particulier_secret: '' particulier_redirect_uri: '' particulier_authorization_endpoint: '' particulier_token_endpoint: '' particulier_userinfo_endpoint: '' particulier_logout_endpoint: '' ``` Créer le fichier `config/github_secrets.yml` avec le contenu ```yaml client_id: '' client_secret: '' ``` *Note : les valeurs pour ces deux paramètres sont renseignées dans le Keepass* ## Création des comptes initiaux rails c > email = "" > password = "" > Administration.create(email: email, password: password) > Administrateur.create(email: email, password: password) > Gestionnaire.create(email: email, password: password) > User.create(email: email, password: password) ## Lancement de l'application hivemind ## Programmation des jobs AutoArchiveProcedureJob.set(cron: "* * * * *").perform_later WeeklyOverviewJob.set(cron: "0 8 * * 0").perform_later AutoReceiveDossiersForProcedureJob.set(cron: "* * * * *").perform_later(procedure_declaratoire_id, "received") FindDubiousProceduresJob.set(cron: "0 0 * * *").perform_later ## Exécution des tests (RSpec) Pour exécuter les tests de l'application, plusieurs possibilités : - Lancer tous les tests rake spec rspec - Lancer un test en particulier rake spec SPEC=file_path/file_name_spec.rb:line_number rspec file_path/file_name_spec.rb:line_number - Lancer tous les tests d'un fichier rake spec SPEC=file_path/file_name_spec.rb rspec file_path/file_name_spec.rb ## Linting - Faire tourner RuboCop : `bundle exec rubocop` - Faire tourner Brakeman : `bundle exec brakeman` - Linter les fichiers HAML : `bundle exec haml-lint app/views/` - Linter les fichiers SCSS : `bundle exec scss-lint app/assets/stylesheets/` ## Déploiement - Tout nouveau commit ajouté à la branche `dev` est automatiquement déployé [en intégration](https://tps-dev.apientreprise.fr/) - Tout nouveau commit ajouté à la branche `master` est automatiquement déployé [en production](https://tps.apientreprise.fr/) ## Régénérer les binstubs bundle binstub railties --force rake rails:update:bin ## Tâches Super Admin - ajouter un compte super admin : `bundle exec rake admin:create_admin[email-du-compte-github@exemple.com]` - lister les comptes super admin : `bundle exec rake admin:list` - supprimer un compte super admin : `bundle exec rake admin:delete_admin[email-du-compte-github@exemple.com]`