feat(faq): dynamic substitutions support

Ce code avait été initalement codé, mais le contenu de la FAQ n'en a à
ce stade plus besoin. On le garde sous le coude car c'est peu touchy
et ça pourrait bientôt resservir.
This commit is contained in:
Colin Darie 2024-05-17 15:53:59 +02:00
parent e9920c76d5
commit 417cac5b83
No known key found for this signature in database
GPG key ID: 4FB865FDBCA4BCC4
3 changed files with 25 additions and 3 deletions

View file

@ -21,7 +21,7 @@ class FAQController < ApplicationController
application_base_url: Current.application_base_url, application_base_url: Current.application_base_url,
application_name: Current.application_name, application_name: Current.application_name,
contact_email: Current.contact_email contact_email: Current.contact_email
} }.merge(dynamic_substitutions)
FAQsLoaderService.new(substitutions) FAQsLoaderService.new(substitutions)
end end
@ -36,4 +36,13 @@ class FAQController < ApplicationController
rescue KeyError rescue KeyError
raise ActionController::RoutingError.new("FAQ not found: #{path}") raise ActionController::RoutingError.new("FAQ not found: #{path}")
end end
# Hash of dynamic values used for substitutions.
# The values are fetched from or calculated into the Rails cache.
def dynamic_substitutions
{
# Example:
# procedures_count: Rails.cache.fetch("faq/procedures_count", expires_in: 1.day) { helpers.number_with_delimiter(Procedure.publiee.count, delimiter: ' ') },
}
end
end end

View file

@ -9,13 +9,13 @@ class FAQsLoaderService
def initialize(substitutions) def initialize(substitutions)
@substitutions = substitutions @substitutions = substitutions
@faqs_by_path ||= Rails.cache.fetch(["faqs_data", ApplicationVersion.current, substitutions], expires_in: 1.week) do @faqs_by_path ||= Rails.cache.fetch(["faqs_data", ApplicationVersion.current, substitutions], expires_in: 1.day) do
load_faqs load_faqs
end end
end end
def find(path) def find(path)
Rails.cache.fetch(["faq", path, ApplicationVersion.current, substitutions], expires_in: 1.week) do Rails.cache.fetch(["faq", path, ApplicationVersion.current, substitutions], expires_in: 1.day) do
file_path = @faqs_by_path.fetch(path).fetch(:file_path) file_path = @faqs_by_path.fetch(path).fetch(:file_path)
parse_with_substitutions(file_path) parse_with_substitutions(file_path)

View file

@ -9,6 +9,19 @@ title: "Comment trouver ma démarche ?"
# Comment trouver ma démarche ? # Comment trouver ma démarche ?
> [!INFO]
> *%{application_name}* est un service de la direction interministérielle du numérique, service du Premier ministre,
intervenant sous légide du ministère de la Transformation et de la Fonction publiques,
permettant aux administrations publiques de lÉtat, aux opérateurs et collectivités de dématérialiser leurs démarches administratives.
> À ce jour, [%{procedures_count} formulaires sont disponibles sur %{application_name}](/stats), mis en oeuvre par %{services_count} services et organismes publics.
>
> Les administrations peuvent utiliser dautres dispositifs de dématérialisation et dont vous pouvez retrouver les informations sur le site [services-public.fr](https://www.service-public.fr), ou bien à partir des sites internet de chaque organisme.
> Ce site ne répertorie donc pas lensemble des démarches en ligne déployées par les administrations et services publics. Nous vous invitons à parcourir [service-public.fr](https://www.service-public.fr), le site officiel dinformation et de démarches administratives si vous avez une question sur vos droits, une démarche à faire pour être davantage guidé(e).
>
> Pour effectuer un dépôt sur %{application_name} vous devez notamment disposer dun lien qui vous a été communiqué par ladministration.
## 1. Trouver le lien de votre démarche ## 1. Trouver le lien de votre démarche
Pour déposer un dossier sur %{application_name}, il est nécessaire de disposer du lien de la démarche qui vous intéresse. Il ressemble à un lien de cette forme : Pour déposer un dossier sur %{application_name}, il est nécessaire de disposer du lien de la démarche qui vous intéresse. Il ressemble à un lien de cette forme :