Conversation
La DGFiP demande une adresse IP publique de connexion, qui doit accepter une adresse IPv4 ou IPv6, une plage CIDR, et plusieurs valeurs séparées par des virgules, points-virgules ou sauts de ligne — les demandeurs ont souvent plusieurs IP de sortie. IPAddr couvre tous ces formats et expose private?, loopback?, link_local? et prefix, ce qui permet de refuser ce qui n'est pas une adresse publique : 10.x, 172.16-31.x, 192.168.x, fd00::/8, loopback, lien local, et les plages 0.0.0.0/0 et ::/0 qui videraient le champ de son sens. La classe s'appelle PublicIpAddressValidator plutôt que PublicIPAddressValidator : enregistrer « IP » comme acronyme global ferait chevaucher l'alternation des acronymes avec DGFIP. Le validateur ne dépend d'aucun champ DGFiP et se réutilise tel quel.
La DGFiP demande une adresse IP publique de connexion et l'adresse postale du contact technique, les deux obligatoires, sur cinq APIs en priorité : SFiP, Impôt Particulier, RIAL, INFINOE et FICOBA. SFiP R2P est inclus en plus — même marque « Courtier fonctionnel SFiP », et c'est lui qui récupère le flux des demandes R2P dépréciées — à faire confirmer par la DGFiP. Les attributs vivent dans deux concerns dédiés plutôt que dans ExtraContactsInfos, qui est inclus par les 36 classes DGFiP et étendrait les champs aux treize autres APIs. Le cloisonnement du périmètre tient à cette déclaration : les vues, partagées, se contentent d'un garde respond_to?. Les classes de production déclarent les attributs elles aussi. Le passage en production mute la demande existante (start_next_stage change type et form_uid sur le même enregistrement) : sans la déclaration, la valeur saisie en bac à sable deviendrait invisible. L'adresse IP se pose dans le bloc basic_infos, où est déjà rendue la volumétrie approximative — donc sur le formulaire bac à sable, conformément à la maquette et à la demande. L'adresse postale se pose dans la carte du contact technique, au-dessus du séparateur « Contact supplémentaire » : elle décrit le contact technique lui-même, pas la personne supplémentaire que ce bloc introduit. Le complément d'adresse reste facultatif. Côté consultation, trois fichiers sont nécessaires : seules api_impot_particulier et api_sfip surchargent le bloc contacts, FICOBA, RIAL et INFINOE retombent sur la vue par défaut. Sans les deux, l'adresse serait saisie puis invisible sur trois des cinq APIs. Les textes d'aide reprennent mot pour mot ceux fournis par la DGFiP. Les gardes respond_to? dans les factories rendent valides les quarante traits DGFiP existants sans les toucher un par un. Le spec d'acceptance des formulaires et les deux steps Cucumber partagés sont mis à jour pour la même raison : ils traversent les formulaires éditeur, qui n'ont pas de static_blocks et redemandent donc basic_infos et contacts.
Six scénarios sur FICOBA : le champ IP obligatoire dès l'étape du projet, le refus d'une adresse privée, l'adresse du contact technique obligatoire et son complément facultatif, une demande complète dont les deux valeurs se retrouvent au récapitulatif, et l'absence des deux champs sur une API DGFiP hors périmètre. Le sixième déroule la chaîne réelle : remplissage du bac à sable, soumission, validation par un instructeur, démarrage de la production, soumission de la production, puis vérification que les valeurs saisies au bac à sable sont toujours là. C'est ce qui prouve l'héritage par static_blocks à travers un vrai approve, le point le plus fragile de la conception. Les scénarios négatifs vérifient le blocage à l'étape du tunnel plutôt qu'à la soumission finale : c'est là que le demandeur rencontre l'erreur, et ça évite de rejouer le tunnel entier à chaque cas. Côté instruction, le scénario porte sur API Impôt Particulier, qui passe par la surcharge du bloc contacts plutôt que par la vue par défaut déjà couverte côté demandeur.
ba8891e to
c1a4a30
Compare
| adresse_ip_publique: | ||
| hint: L’ouverture de l’accès aux informations de la DGFIP est sécurisée et nécessite de communiquer l’adresse IP publique (ou la plage la plus réduite possible) par laquelle vos applications interrogent nos APIs. Toute modification de l’adresse IP publique nécessitera une mise à jour de la demande. | ||
| contact_technique_adresse: | ||
| hint: Nous insistons à cet égard sur le besoin d’une adresse postale professionnelle sans laquelle cette opération serait considérablement ralentie. Attention, merci de bien vouloir nous transmettre une adresse postale professionnelle, complète, exacte et à jour, afin de garantir le bon acheminement de nos correspondances et d’éviter toute erreur de destinataire. |
There was a problem hiding this comment.
On attend quoi exactement de ce champs ?
une adresse complète avec code postale et ville inclus ?
en un seul champs ou plusieurs champs ?
Je pose la question mais ce n'est pas clairement defini dans le ticket
Sinon même suggestion qu'au dessus :
rajouter un exemple d'adresse fictive différente de celle du message d'erreur.
(Point Accessibilite)
There was a problem hiding this comment.
J'ai rajouté un exemple aussi.
On attend... une adresse postale correcte en résumé. Ils voulaient un autocomplete, on n'a pas la bande passante donc on fait au plus simple 🤷
There was a problem hiding this comment.
Avec les exemples ça me va 👍🏻
Je me demande quand même si on veut un seul champs pour l'adresse complète ou plusieurs disctinct ? (par exemple : un champ adresse, un code postal, un autre ville)
Est ce que ce ne serait pas un moyen de préparer l'autocomplète par exemple ?
Les deux textes d'aide reprennent mot pour mot ceux fournis par la DGFiP, et aucun ne dit à quoi ressemble une valeur attendue. Un demandeur qui ne connaît pas les adresses IP n'avait, pour tout exemple, que le message d'erreur — donc après coup. Pour l'adresse IP, les exemples utilisent les plages réservées à la documentation par la RFC 5737, et volontairement d'autres que celles du message d'erreur. Les formats acceptés et le refus des adresses privées étaient implicites dans le validateur, ils sont désormais à l'écran. Pour l'adresse postale, la mention d'une seule ligne avec code postal et commune est une décision de notre côté : le ticket ne tranche pas entre un champ unique et plusieurs. À revoir si la DGFiP répond autrement. Le complément d'adresse n'avait aucun texte d'aide. Les textes de la DGFiP ne sont pas réécrits, les précisions viennent à leur suite.
Isalafont
left a comment
There was a problem hiding this comment.
Techniquement, il n'y a rien qui bloque.
J'ai juste une question sur le fait d'avoir un champs unique vs 3 par exemple mais en l'état si 1 seul champ est ok pour eux alors go

dpp-72-demo.mp4
Pourquoi
La DGFiP a besoin de deux informations qu'elle ne collecte pas aujourd'hui dans DataPass :
l'adresse IP publique par laquelle le téléservice interroge ses APIs — indispensable à
l'ouverture des accès sur leur APIM — et l'adresse postale professionnelle du contact
technique, pour leurs correspondances.
Retour DGFiP du 11/09, acté le 14/09 : les deux champs sont obligatoires, sur 5 APIs en priorité, les autres « au fil de
l'eau ». L'autocomplétion d'adresse reste hors sujet à ce stade — saisie libre, avec l'annotation qu'ils ont rédigée.
Périmètre
5 APIs, soit 12 classes (bac à sable + production) : SFiP, Impôt Particulier, RIAL,
INFINOE, FICOBA.
SFiP R2P est inclus en plus et reste à faire confirmer par la DGFiP : ils n'ont listé que
« API Courtier fonctionnel SFiP », mais SFiP R2P porte la même marque et récupère le flux des
demandes R2P dépréciées. Si la réponse est non, il suffit de retirer les deux
includedeAPISFiPR2PetAPISFiPR2PSandbox.Où atterrissent les champs
volumetrie_approximativeest rendu dans le blocbasic_infos, pas dans le blocvolumetrie.Or
basic_infosest une étape du formulaire bac à sable et unstatic_blocken production.« Juste après la volumétrie approximative » (maquette DGFiP) et « sur le BAS » (Natalia) désignent
donc le même endroit.
Ce que ça change pour le stock (annoncé à la DGFiP, vérifié en transaction annulée)
Validation de l'adresse IP
IPAddr(stdlib) accepte IPv4, IPv6 et les plages CIDR, et permet de refuser ce qui n'est paspublic :
10.x,172.16-31.x,192.168.x,fd00::/8, loopback, lien local, ainsi que0.0.0.0/0et::/0qui videraient le champ de son sens. Plusieurs adresses séparées parvirgule, point-virgule ou saut de ligne sont acceptées — plusieurs IP de sortie est un cas courant.
Comment tester
En local,
/local-sign-in?email=user@yopmail.compuis/formulaires/api-ficoba-sandbox/demande/nouveau:volumétrie approximative, avec le texte d'aide de la DGFiP.
required, le navigateur bloque avant l'envoi) ;192.168.1.10→ refusé côté serveur, message explicite ;185.24.184.0/24ou192.0.2.10→ accepté ;192.0.2.10, 198.51.100.4→ accepté aussi.séparateur « Contact supplémentaire », pas en dessous) : « Adresse du contact technique »
obligatoire avec l'annotation DGFiP, et « Complément adresse » facultatif.
champs ne sont pas redemandés et les valeurs sont reprises.
n'apparaît.
Points d'attention pour la relecture :
uniquement aux gardes
respond_to?et au fait que seules les 12 classes déclarent les attributs ;api_impot_particulieretapi_sfipsurchargent le bloc contacts, FICOBA / RIAL / INFINOE retombent sur la vue par défaut ;/api/v1/demandesexigera les nouveaux champs à la soumission pour ces 5 APIs : à signaler auxéditeurs concernés.
Captures