LR Finances : ce qui a été livré, face au cahier des charges
Comparaison ligne par ligne entre le cahier des charges BDO (août 2025) et l'état réel du code du site, en réponse à la mise en demeure DAS du 03/07/2026.
Dossier DAS 0/1850200/29 PEMSinistre 11-06-26 — Police A/1921761/11Montant contesté 22.687,50 €Délai de réponse 15 jours calendrier
19Fait
2Partiel
9Manquant
5Hors périmètre
6Fait en plus
Lecture factuelle : l'audit du code confirme qu'une partie substantielle du cahier des charges est livrée et fonctionnelle (contenu, charte graphique, RGPD de base, 4 simulateurs de crédit avec gestion autonome des taux, 4 langues, module RDV partiel), avec des efforts significatifs au-delà du périmètre demandé (moteur 3D, module analytics, outillage de traduction). Plusieurs exigences explicites et nommées du cahier des charges restent toutefois absentes ou partielles dans le code livré à ce jour — en particulier le calcul de coût pour l'assurance (un parcours de demande par produit existe bien, mais pas d'estimation chiffrée) et le document "Annexe 1". BRIO et l'upload de documents doivent, eux, être lus à part : le premier bute sur l'absence d'API tierce chez Portima, le second sur une limitation légale à la collecte en ligne de documents sensibles évoquée avec le client — deux contraintes externes au prestataire plutôt que des manquements d'exécution, sous réserve de pouvoir documenter par écrit que ces arbitrages ont bien été communiqués à L.R. Finances (voir sections dédiées). Ces points correspondent, mot pour mot, à ceux que DAS demande de circonstancier. Ce rapport sert de base factuelle avant de répondre — il ne remplace pas un avis juridique.
* = argument de fond plausible, mais qui repose sur une décision/contrainte non documentée par écrit dans le projet — à sécuriser via emails et comptes-rendus de réunion avant réponse à DAS.
† = argument de méthodologie projet (finalisation habituelle à la mise en production), proposé pour contextualiser un manquant réel — à valider avec l'avocat avant usage, ne pas présenter comme un engagement pris avec le client.
Vérification complémentaire — messagerie interne OpenGraphy (9 emails, libellé "LR-finances", 25/02–22/05/2026) : une recherche a été menée dans les échanges internes entre Antoine Gounel et Jeremy Gobert (OpenGraphy). Elle ne couvre pas d'éventuels échanges directs avec le client (LR Finances / Rustem Liman), qui n'ont pas été recherchés à ce stade. Résultat : aucune trace de BRIO, upload/carte d'identité, backup, sécurité ou formation, même en interne. MyBroker et les simulateurs sont mentionnés, mais au niveau tâche ("mets ce lien", "y'a du français ici"), pas au niveau décision de périmètre. Ce résultat ne confirme ni n'infirme les réunions client évoquées (upload de documents, arbitrage assurance) : une réunion en présentiel ne laisse par nature aucune trace email, qu'elle ait eu lieu ou non. À creuser : une recherche ciblée sur les échanges directs avec LR Finances, si un tel fil existe.
Contenu, SEO & multilingue
3 fait
Fait
Contenu crédits & assurances repris et structuré
28 sous-pages substantielles couvrant prêts hypothécaires (7), tempérament (6), assurances particuliers (8) et professionnels (7) — pas de pages vides.
Le contenu éditorial ("Dernières actualités") est importé dynamiquement depuis l'API WordPress plutôt que dupliqué en statique — continuité éditoriale assurée.
Stack multilingue complète et opérationnelle (FR/NL/EN/TR)
L'infrastructure i18n est pleinement livrée : 4 fichiers de locale actifs, routing multilingue dédié, glossaire terminologique de 330 lignes et workflow de traduction documentés pour garantir la cohérence des termes financiers/assurantiels. Les fichiers de suivi (docs/*-missing-keys.txt) montrent qu'un travail de complétion de contenu reste en cours sur certaines clés en NL/EN/TR — un reliquat de contenu à finaliser, pas une lacune technique : la capacité du site à fonctionner et à être maintenu dans les 4 langues est acquise.
Palette codée en dur dans les tokens Tailwind, avec commentaires explicites ("Couleur principale / secondaire LR Finances"), échelles complètes, typographie unique (Barlow) appliquée uniformément. Aucune dérive détectée vers une palette hors charte.
assets/css/main.css:74-157
Simulateurs & gestion des taux
3 fait · 1 partiel · 1 hors périmètre
Fait
4 simulateurs de crédit fonctionnels et responsives
Crédit, hypothécaire, crédit auto, frais de notaire — avec mentions légales Art. 14 AR (TAEG, exemple représentatif) correctement implémentées.
Accès autonome aux taux, opérationnel pour les produits livrés
Un vrai back-office existe : interface WP ACF avec ~1100 champs, permettant à L.R. Finances d'ajuster elle-même les taux sans intervention développeur — l'exigence du cahier des charges est remplie pour l'usage réel. Le périmètre actuel couvre les produits de crédit, seuls simulateurs livrés à ce jour (voir simulateurs d'assurance en manquant ci-dessous) ; un fallback JSON statique existe comme filet de sécurité technique en cas d'indisponibilité WordPress, sans impact sur l'usage courant du back-office.
Assurances : parcours de demande par produit livré, mais pas de calcul de coût*
Correction par rapport à une première lecture trop rapide : un catalogue de 14 produits d'assurance existe bel et bien (habitation, auto, RC familiale, hospitalisation, épargne pension, solde restant dû, protection juridique, assistance voyage, + 6 produits professionnels), et chacune des 14 pages assurance du site embarque le formulaire multi-étapes pré-configuré sur ce produit. Le code contient même une étape dédiée "récapitulatif assurance" (garanties + message "un conseiller prendra contact avec vous pour personnaliser votre offre sur mesure").
Mais cette étape n'est jamais atteinte en production : toutes les pages assurance démarrent le formulaire directement à l'étape 4 (contact), sautant le récapitulatif. Et surtout, contrairement au crédit, aucun produit d'assurance n'a de simulationConfig (formules de taux/montant) dans le catalogue — le calcul de coût ("estimer rapidement le coût de leurs assurances", texte du cahier des charges) n'a techniquement pas été construit pour l'assurance. Le flux complet avec récapitulatif n'existe que sur une page de prévisualisation interne, non reliée à la navigation ni au sitemap public.
Vérification email (interne) : aucune trace d'une décision explicite de ne pas construire de calcul de prime. Les seuls éléments trouvés datent de fév.–mars 2026 et décrivent un chantier en cours ("l'autre formulaire est en cours de construction", "pas encore pleinement fini") et un bug de texte français sur un simulateur crédit — cohérent avec un développement inachevé plutôt qu'avec un choix assumé de s'arrêter à la demande de contact.
pages/insurance-broker-belgium/{private,professional}-insurance/*.vue (14 pages, start-step="4") · components/forms/LRFinancesForm/data/products.js (INSURANCE_PRODUCTS sans simulationConfig) · steps/Step3Simulation.vue (branche assurance non atteinte en prod) · pages/formulaire-preview.vue (non linké) · pages/simulations/index.vue (hub public : 4 outils crédit uniquement) · emails internes 25/02 et 06/03/2026
Hors périmètre
Upload de documents non construit — limitation légale évoquée en réunion avec le client*
Confirmé techniquement : aucune route d'upload, aucun composant de dépôt de fichier, aucune dépendance de gestion de fichiers (multer/formidable/S3) dans le projet. Cette absence a été discutée lors d'une réunion sur place chez L.R. Finances, en raison d'une limitation légale à la collecte en ligne de documents sensibles (carte d'identité, fiches de salaire, extraits bancaires) — argument plausible en Belgique, où le numéro de registre national figurant sur la carte d'identité fait l'objet d'un régime de protection spécifique distinct du RGPD général.
Point de vigilance à corriger avant toute réponse à DAS : plusieurs textes du site (FAQ, pages produits) affirment pourtant explicitement une capacité de dépôt en ligne — "Soumettez les documents requis... numériquement", "Complétez votre dossier en ligne" — alors que cette fonctionnalité n'a jamais été construite. C'est un écart entre la promesse éditoriale et le code livré, indépendant de la légitimité de la décision de ne pas construire l'upload. Comme pour BRIO, aucune trace écrite (email, compte-rendu de réunion) de cet arbitrage n'a été retrouvée dans le projet — à rechercher ailleurs pour sécuriser l'argument.
Intégration BRIO objectivement irréalisable — Portima n'expose pas d'API tierce
BRIO est un outil propriétaire de Portima qui ne propose pas d'API ouverte aux prestataires tiers. Cette contrainte est externe au prestataire : aucune intégration directe n'était réalisable, quel que soit l'effort ou la compétence technique engagés. Le cahier des charges anticipait d'ailleurs ce cas de figure en demandant, au §4.3.1, d'« analyser les possibilités d'interfaçage » et de « documenter les points de synchronisation et les éventuelles contraintes techniques » — soit un livrable d'analyse/documentation, distinct de l'intégration elle-même.
grep -ri "brio" . → 0 match dans tout le repo · emails internes (9 messages, fév.–mai 2026) : 0 mention
Hors périmètre
Transmission automatique des formulaires vers BRIO — même contrainte
Conséquence directe de l'absence d'API BRIO côté Portima : les données de simulation et de contact sont acheminées vers WordPress (CPT interne) + email, seul canal disponible en l'absence d'interface tierce exposée par Portima.
Ajout automatique des RDV dans BRIO — même contrainte
Demandé au cahier des charges pour le module de prise de rendez-vous, mais irréalisable pour la même raison structurelle : pas d'API BRIO côté Portima permettant l'écriture automatisée d'une fiche client/prospect depuis un système tiers.
server/api/forms/meeting.post.js — aucun appel BRIO possible en l'absence d'API
Prise de rendez-vous
3 fait · 1 partiel · 4 manquant
À la différence de BRIO ou de l'upload de documents, les points ci-dessous n'ont fait l'objet d'aucun arbitrage documenté ou discuté en réunion au-delà du choix initial d'intégrer Calendly — ce sont des développements non réalisés, sans justification externe identifiée.
Fait
Double parcours présentiel / visioconférence
Le choix du type de RDV exigé au cahier des charges est bien implémenté au niveau interface.
pages/appointment.vue:10-168
Fait
Formulaire RDV agence + confirmation email
Sauvegarde WordPress + email de confirmation automatique à l'admin et au visiteur pour le parcours présentiel.
Le widget Calendly est correctement intégré et fonctionnel : affichage des créneaux disponibles et prise de RDV en ligne pour le parcours visio, répondant à l'exigence fonctionnelle du cahier des charges sur ce point.
components/forms/CalendlyEmbed.vue
Partiel
Synchronisation calendrier = configuration manuelle Calendly, pas d'intégration native
Calendly permet de choisir Google Meet/Zoom/Teams comme outil de visio, ce qui est différent d'une synchronisation bidirectionnelle avec l'agenda professionnel de chaque collaborateur, telle que demandée.
docs/CLIENT-TODO-RDV.md §2 · aucune dépendance googleapis/microsoft graph dans package.json
Manquant
Synchronisation bidirectionnelle Google Calendar / Outlook
Aucune trace dans le code : pas de dépendance calendrier, pas d'OAuth calendrier, pas d'appel à une API Google/Microsoft.
grep négatif sur "googleapis", "oauth calendar", "microsoft graph"
Manquant
Plages horaires par collaborateur
Le système repose sur un compte Calendly unique, pas de gestion de plusieurs collaborateurs avec créneaux individuels.
docs/CLIENT-TODO-RDV.md §1 — compte unique mugla@lrfinances.be
Manquant
Lien sécurisé de modification / annulation de RDV
Aucune fonctionnalité de ce type côté site.
grep négatif "reschedule", "annulation", "cancel" en lien RDV
Manquant
Confirmation par SMS
Aucune trace de service SMS (Twilio ou équivalent) dans le projet.
grep négatif "sms", "twilio"
MyBroker
1 fait · 1 hors périmètre
Fait
Lien vers l'espace client MyBroker
Un lien vers le portail MyBroker de Portima est présent dans l'en-tête du site, répondant à l'exigence du cahier des charges de mettre à disposition un onglet de redirection vers l'espace client.
Confirmé par email (interne) : deux échanges internes (10 fév. et 6 mars 2026) demandent explicitement d'ajouter ce lien ("Ajoute lien accès mybroker.be dans preheader", "Mybroke renommer en mybroker, et mettre ce lien derrière : https://www.mybroker.be/"). Ce sont des consignes internes à OpenGraphy, pas une validation du client sur le périmètre — mais elles tracent la réalisation de la tâche.
Intégration API MyBroker / Portima — même contrainte que BRIO
Même situation que pour BRIO : Portima ne propose pas d'API tierce pour MyBroker, ce qui rend une intégration technique (transfert de contexte, SSO, écriture de données) objectivement irréalisable côté prestataire. Le mécanisme mybrokerEnabled déclaré dans le code, ainsi que la fonction sendToMyBroker documentée comme "placeholder", reflètent une tentative d'anticiper une intégration qui n'a jamais pu être branchée faute d'interface exposée par Portima.
FSMA (048872A), n° BCE, TVA, forme juridique et siège social sont renseignés avec de vraies valeurs, avec fonction de contrôle de complétude.
config/legal.js — checkLegalConfigCompleteness()
Fait
4 langues activées (FR, NL, EN, TR)
Conforme à l'exigence du cahier des charges — les 4 fichiers de locale existent et sont configurés.
i18n/locales/{fr,nl,en,tr}.js · nuxt.config.js
Fait
Page mentions légales structurée et fonctionnelle — 3 champs de donnée restants sur 42
La mécanique est complète : structure, i18n dans les 4 langues, 39 des 42 champs légaux effectivement renseignés (FSMA, BCE, TVA, forme juridique, siège social...). Restent 3 champs de donnée pure ("assureur RC Pro", "n° de police", "hébergeur") affichant encore [À COMPLÉTER] dans les 4 langues sur la page /legal-notice — une finalisation de contenu, pas une fonctionnalité manquante.
Document type "Annexe 1" — absent du parcours, mais le besoin réglementaire de base est couvert ailleurs
Aucune trace du document Annexe 1 ni d'un composant d'upload associé (voir aussi section Simulateurs). Classé ici en partiel plutôt qu'en manquant strict car les avertissements Art. 14 et la politique RGPD couvrent une partie de l'esprit réglementaire, sans répondre à l'exigence précise du document.
Nuxt 4 en SSR sur infrastructure Plesk, déploiement scripté, HTTPS actif.
nuxt.config.js:31-33 · package.json (script deploy) · rsync vers plesk.graphylabs.com
Partiel
Localisation européenne de l'hébergeur non documentée†
Le déploiement ne semble plus se faire chez OVH (mentionné au cahier des charges comme hébergeur d'origine), mais rien dans le repo ne prouve ni ne communique au client le pays réel d'hébergement. Le champ légal correspondant reste un placeholder non complété (voir section RGPD/FSMA).
Argument de contexte : la lettre DAS elle-même indique qu'au début juin 2026, "plusieurs composantes du site restaient encore à finaliser" — la mention légale de l'hébergeur relève classiquement des documents finalisés au passage en production, une étape que le client sait ne pas être close. Aucun engagement de calendrier précis n'a toutefois été formalisé par écrit sur ce point spécifique.
Confirmé par email (interne) : les URLs de travail échangées entre fév. et mai 2026 (lr-finance-1/2/3.plesk.graphylabs.com, lr-finances.plesk.graphylabs.com) confirment que le site tournait déjà sur Plesk/GraphyLabs et non chez OVH pendant le projet. Aucun email ne discute explicitement du pays d'hébergement final avec le client.
i18n/locales/fr.js:1650 — "[À COMPLÉTER — nom de l'hébergeur, adresse, pays]" · emails internes fév.–mai 2026 (URLs plesk.graphylabs.com)
Manquant
Politique de sauvegarde documentée†
Aucun document nulle part dans le projet ne précise fréquence, emplacement, rétention, tests de restauration ou contacts d'urgence — pourtant explicitement demandés au cahier des charges.
Argument de contexte : ce type de documentation se finalise généralement au moment du passage en production définitif, une fois l'infrastructure d'hébergement stabilisée — étape que le client sait, de son propre aveu (lettre DAS), ne pas être achevée. Aucun engagement de calendrier précis n'a toutefois été formalisé par écrit sur ce point spécifique.
grep -ri "backup|sauvegarde" → aucun document de politique trouvé (uniquement bruit sans rapport) · emails internes : 0 mention
Manquant
Plan de sécurité écrit†
La seule mesure de sécurité communiquée au client est une mention générique "HTTPS" dans la politique de confidentialité. Aucun document dédié, aucun header de sécurité (CSP/HSTS) déclaré, aucune trace d'audit ou de test d'intrusion.
Argument de contexte : comme pour le backup, un plan de sécurité formalisé se livre classiquement à la clôture de projet, une fois le périmètre technique définitif figé. Aucun engagement de calendrier précis n'a toutefois été formalisé par écrit sur ce point spécifique.
Aucun système de gestion de tickets, aucun délai d'intervention par niveau de criticité défini nulle part dans le projet.
Argument de contexte : un système de tickets et des SLA de maintenance se mettent normalement en place à l'entrée en phase de maintenance, une fois le site en production stable — étape que le client sait ne pas être atteinte (lettre DAS). Aucun engagement de calendrier précis n'a toutefois été formalisé par écrit sur ce point spécifique.
Documentation de transfert de compétences / formation technique au client†
Les seules occurrences de "formation" dans le projet concernent la formation réglementaire FSMA du courtier, aucune ne concerne un transfert de compétences technique sur le site livré.
Argument de contexte : la formation et le transfert de compétences interviennent normalement à la réception finale du site, une fois le périmètre fonctionnel stabilisé — pas en cours de développement. Aucun engagement de calendrier précis n'a toutefois été formalisé par écrit sur ce point spécifique.
Aucun document de gouvernance/jalons/reporting. Les seuls artefacts de suivi retrouvés sont des notes de travail ad hoc (TODO internes), pas un document contractuel de méthodologie.
Pas d'argument de clôture de projet applicable ici : contrairement aux deux points ci-dessus, le cahier des charges (§5.1) demandait cette méthodologie dans l'offre initiale, avant le démarrage du projet — pas comme livrable de fin de mission. Ce point reste exposé tel quel.
docs/CLIENT-TODO-RDV.md, docs/TODO-KORNEL-RECAP.md — notes internes, pas de méthodologie formalisée
Fait au-delà du cahier des charges
6 éléments
Plus
Moteur de rendu 3D temps réel avec shaders GLSL sur mesure
Déployé en production sur 52 pages du site — un niveau d'investissement technique très au-delà des "animations légères" demandées.
Outillage de traduction professionnel avec glossaire dédié
Glossaire terminologique de 330 lignes pour garantir la cohérence des termes financiers/assurantiels dans les 4 langues, workflow documenté — malgré l'incomplétude actuelle des traductions (voir section Contenu).
Architecture multilingue avancée au niveau des routes
Gestion fine du routing par langue, au-delà d'un simple sélecteur de langue.
docs/MULTILINGUAL-ROUTES.md
Plus
Simulateurs et arborescence produits plus riches que le minimum
Simulateur de frais de notaire et de crédit auto, non explicitement listés au cahier des charges ; mega-menu documenté pour une navigation produit fine.
Le projet n'est ni "non exécuté", ni "conforme à 100 %". C'est un état intermédiaire réel, avec des lacunes précises et vérifiables sur des points explicitement nommés dans le cahier des charges — pas de simples détails de confort.
Points les plus exposés dans une discussion contradictoire
Calcul de coût pour l'assurance — un parcours de demande existe pour les 14 produits d'assurance (le mot "simulateur" du cahier des charges est donc partiellement couvert), mais aucune estimation chiffrée n'est produite, contrairement au crédit. C'est défendable sur le fond : une prime d'assurance dépend de facteurs de souscription (profil, sinistralité, adresse, bien...) qu'un simulateur générique ne peut pas évaluer de façon fiable, contrairement à une mensualité de crédit qui se calcule mathématiquement à partir d'un montant, d'une durée et d'un taux. Mais aucune trace écrite (email, compte-rendu, doc projet) de cet arbitrage n'a été retrouvée dans le repo — à rechercher ailleurs pour transformer un bon argument technique en fait daté et opposable.
Annexe 1 — document FSMA explicitement requis, absent, sans contrainte externe identifiée pour l'expliquer.
Prise de RDV — 4 fonctionnalités nommées et absentes, sans justification. Sync bidirectionnelle Google/Outlook, plages horaires par collaborateur, lien d'annulation/modification, confirmation SMS : contrairement à BRIO ou à l'upload, aucun de ces points n'a été rediscuté au-delà du choix initial d'intégrer Calendly. Ce sont des développements non réalisés, sans contrainte externe à opposer — le point le plus directement exposé de tout l'audit.
Upload de documents — le résiduel documentaire, pas la décision elle-même*. La contrainte légale sur la collecte de documents sensibles est réelle et défendable, mais l'arbitrage n'a laissé aucune trace écrite dans le projet — à rechercher ailleurs (email, PV de réunion) avant de répondre à DAS.
Écart entre la promesse éditoriale et le code sur l'upload de documents. Le site affirme à plusieurs endroits (FAQ, pages produits) que le client peut "soumettre ses documents numériquement" ou "compléter son dossier en ligne" — une fonctionnalité qui n'existe pas dans le code. Indépendamment de la légitimité de la décision de ne pas construire l'upload, ce texte devra être corrigé ou explicité avant toute réponse formelle, sans quoi la partie adverse peut s'appuyer dessus pour contester la cohérence de la position du prestataire.
Points où le prestataire a une position solide
Contenu, charte graphique, RGPD de base, 4 langues activées, module RDV partiel, simulateurs de crédit avec gestion autonome des taux, parcours de demande par produit d'assurance, lien MyBroker : livrés et fonctionnels, vérifiables dans le code.
BRIO et MyBroker — dans les deux cas, la non-intégration tient à une contrainte objective et non contestable : Portima ne propose pas d'API tierce. Ce n'est pas une défaillance d'exécution du prestataire, c'est une impossibilité du produit tiers.
Upload de documents — même nature d'argument (contrainte légale sur des données sensibles, pas une défaillance), mais à sécuriser par une trace écrite et par la correction du texte du site (voir ci-dessus).
Travail substantiel au-delà du périmètre contractuel (moteur 3D, analytics, outillage de traduction) — utile pour démontrer la bonne foi et l'investissement réel, mais n'efface pas les manques listés ci-dessus : un juge/médiateur regardera la conformité aux points nommés du cahier des charges, pas le volume de travail au global.
La lettre DAS demande une position "circonstanciée" distinguant achevé / en cours / non exécuté, avec un calendrier de remédiation. Cet audit donne la matière factuelle brute ; la qualification juridique (résiliation aux torts, exigibilité de la facture, mécanisme de la prime) reste à trancher avec l'avocat d'OpenGraphy avant toute réponse formelle à DAS, dans le délai de 15 jours calendrier à compter de réception du courrier.