datakeen-session-react 1.1.181 → 1.1.182

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/.gitlab-ci.yml +115 -46
  2. package/dist/cjs/components/document-collection/DocumentCollection.js +3 -1
  3. package/dist/cjs/components/document-collection/DocumentCollection.js.map +1 -1
  4. package/dist/cjs/components/document-collection/DocumentError.js +1 -1
  5. package/dist/cjs/components/document-collection/DocumentError.js.map +1 -1
  6. package/dist/cjs/components/jdi/JDIError.js +1 -1
  7. package/dist/cjs/components/jdi/JDIError.js.map +1 -1
  8. package/dist/cjs/components/session/DocumentCheck.js +3 -1
  9. package/dist/cjs/components/session/DocumentCheck.js.map +1 -1
  10. package/dist/cjs/components/session/Selfie.js +3 -1
  11. package/dist/cjs/components/session/Selfie.js.map +1 -1
  12. package/dist/cjs/components/session/UserInputForm/LegalRepFields.js +5 -1
  13. package/dist/cjs/components/session/UserInputForm/LegalRepFields.js.map +1 -1
  14. package/dist/cjs/components/template/ExternalVerificationNodeHandler.js +74 -36
  15. package/dist/cjs/components/template/ExternalVerificationNodeHandler.js.map +1 -1
  16. package/dist/cjs/constants/userInputForm.js.map +1 -1
  17. package/dist/cjs/hooks/useUserInputForm.js +11 -1
  18. package/dist/cjs/hooks/useUserInputForm.js.map +1 -1
  19. package/dist/cjs/types/session.js.map +1 -1
  20. package/dist/esm/components/document-collection/DocumentCollection.js +3 -1
  21. package/dist/esm/components/document-collection/DocumentCollection.js.map +1 -1
  22. package/dist/esm/components/document-collection/DocumentError.js +1 -1
  23. package/dist/esm/components/document-collection/DocumentError.js.map +1 -1
  24. package/dist/esm/components/jdi/JDIError.js +1 -1
  25. package/dist/esm/components/jdi/JDIError.js.map +1 -1
  26. package/dist/esm/components/session/DocumentCheck.js +3 -1
  27. package/dist/esm/components/session/DocumentCheck.js.map +1 -1
  28. package/dist/esm/components/session/Selfie.js +3 -1
  29. package/dist/esm/components/session/Selfie.js.map +1 -1
  30. package/dist/esm/components/session/UserInputForm/LegalRepFields.js +5 -1
  31. package/dist/esm/components/session/UserInputForm/LegalRepFields.js.map +1 -1
  32. package/dist/esm/components/template/ExternalVerificationNodeHandler.js +75 -37
  33. package/dist/esm/components/template/ExternalVerificationNodeHandler.js.map +1 -1
  34. package/dist/esm/constants/userInputForm.js.map +1 -1
  35. package/dist/esm/hooks/useUserInputForm.js +11 -1
  36. package/dist/esm/hooks/useUserInputForm.js.map +1 -1
  37. package/dist/esm/types/session.js.map +1 -1
  38. package/package.json +1 -1
@@ -23,6 +23,13 @@ var STANDARD_FIELD_ALIASES = {
23
23
  prenom: ['firstName', 'first_name', 'prenom'],
24
24
  nom: ['lastName', 'last_name', 'surname', 'familyName', 'nom'],
25
25
  date_naissance: ['birthDate', 'birth_date', 'dateOfBirth', 'date_naissance'],
26
+ // Champs d'un nœud identity-legal-rep (RL) : la clé de config (builder) diffère
27
+ // de la clé réellement soumise par LegalRepFields — sans cet alias, la
28
+ // résolution échouait silencieusement dès qu'un nœud identity-legal-rep était
29
+ // choisi comme "Nœud source Nom/Prénom" (compareTargets ne trouvait jamais la
30
+ // valeur, causant un person_mismatch systématique).
31
+ legalRepresentativePrenom: ['legalRepresentativeFirstName', 'legalRepresentativePrenom'],
32
+ legalRepresentativeNom: ['legalRepresentativeLastName', 'legalRepresentativeNom'],
26
33
  };
27
34
  var normalizeReferenceField = function (field) {
28
35
  if (!field)
@@ -62,6 +69,9 @@ var ExternalVerificationNodeHandler = function (_a) {
62
69
  var nodeData = node;
63
70
  var apiType = String(nodeData.targetApi || 'INSEE');
64
71
  var isInpiRbe = apiType === 'INPI_RBE';
72
+ // Paramétrable depuis le journey builder (panneau "Configuration de la base
73
+ // externe"), par nœud. Absent/true = comportement actuel inchangé.
74
+ var allowContinueOnFailure = nodeData.allowContinueOnFailure !== false;
65
75
  var _o = React.useState('loading'), phase = _o[0], setPhase = _o[1];
66
76
  var _p = React.useState(null), errorScreenData = _p[0], setErrorScreenData = _p[1];
67
77
  var _q = React.useState(function () {
@@ -108,10 +118,10 @@ var ExternalVerificationNodeHandler = function (_a) {
108
118
  React.useEffect(function () {
109
119
  var abortController = new AbortController();
110
120
  var run = function () { return tslib_es6.__awaiter(void 0, void 0, void 0, function () {
111
- var result, referenceField, referenceValueMasked, resolvedReferenceValue, referenceNodeId, referenceVariable, submittedFirstName, submittedLastName, nodeInput, userInputFlat, lookupKeys, referenceValue, allCustomFields, _i, _a, _b, value, str, comparisonConfig, cfg, personNodeInput, flat, firstNameKeys, lastNameKeys, birthDateKeys, dateOfBirth, response, res, apiErr_1, apiResult, inpi, cfg;
112
- var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
113
- return tslib_es6.__generator(this, function (_s) {
114
- switch (_s.label) {
121
+ var result, referenceField, referenceValueMasked, resolvedReferenceValue, referenceNodeId, referenceVariable, submittedFirstName, submittedLastName, submittedSiren, nodeInput, userInputFlat, lookupKeys, referenceValue, allCustomFields, _i, _a, _b, value, str, comparisonConfig, cfg, personNodeInput, flat, isPersonneMorale, sirenKeys, firstNameKeys, lastNameKeys, birthDateKeys, dateOfBirth, response, res, apiErr_1, apiResult, inpi, cfg, isPersonneMorale_1;
122
+ var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
123
+ return tslib_es6.__generator(this, function (_v) {
124
+ switch (_v.label) {
115
125
  case 0:
116
126
  result = {
117
127
  isVerified: false,
@@ -124,9 +134,10 @@ var ExternalVerificationNodeHandler = function (_a) {
124
134
  referenceVariable = String(nodeData.referenceVariable || '');
125
135
  submittedFirstName = '';
126
136
  submittedLastName = '';
127
- _s.label = 1;
137
+ submittedSiren = '';
138
+ _v.label = 1;
128
139
  case 1:
129
- _s.trys.push([1, 9, , 10]);
140
+ _v.trys.push([1, 9, , 10]);
130
141
  if (!(session === null || session === void 0 ? void 0 : session.id))
131
142
  throw new Error('Session ID is missing');
132
143
  referenceField = normalizeReferenceField(String(nodeData.referenceField || referenceVariable || ''));
@@ -176,45 +187,62 @@ var ExternalVerificationNodeHandler = function (_a) {
176
187
  cfg = nodeData.comparisonConfig;
177
188
  personNodeInput = (_d = userInput[cfg.personReferenceNodeId]) !== null && _d !== void 0 ? _d : {};
178
189
  flat = userInput;
179
- firstNameKeys = expandFieldKey((_e = cfg.personFirstNameField) !== null && _e !== void 0 ? _e : '').filter(Boolean);
180
- lastNameKeys = expandFieldKey((_f = cfg.personLastNameField) !== null && _f !== void 0 ? _f : '').filter(Boolean);
181
- birthDateKeys = cfg.personBirthDateField
182
- ? expandFieldKey(cfg.personBirthDateField).filter(Boolean)
183
- : [];
184
- submittedFirstName = (_g = resolveFieldValue(personNodeInput, flat, firstNameKeys)) !== null && _g !== void 0 ? _g : '';
185
- submittedLastName = (_h = resolveFieldValue(personNodeInput, flat, lastNameKeys)) !== null && _h !== void 0 ? _h : '';
186
- dateOfBirth = cfg.compareBirthDate && birthDateKeys.length
187
- ? resolveFieldValue(personNodeInput, flat, birthDateKeys)
188
- : undefined;
189
- if (submittedFirstName && submittedLastName) {
190
- comparisonConfig = tslib_es6.__assign({ firstName: submittedFirstName, lastName: submittedLastName, compareTargets: (_j = cfg.compareTargets) !== null && _j !== void 0 ? _j : ['mandataires'] }, (dateOfBirth ? { dateOfBirth: dateOfBirth } : {}));
190
+ isPersonneMorale = cfg.personType === 'MORALE';
191
+ if (isPersonneMorale) {
192
+ sirenKeys = expandFieldKey((_e = cfg.personSirenField) !== null && _e !== void 0 ? _e : '').filter(Boolean);
193
+ submittedSiren = (_f = resolveFieldValue(personNodeInput, flat, sirenKeys)) !== null && _f !== void 0 ? _f : '';
194
+ if (submittedSiren) {
195
+ comparisonConfig = {
196
+ personType: 'MORALE',
197
+ siren: submittedSiren,
198
+ // Un RBE est toujours une personne physique en droit
199
+ // français : forcé à 'mandataires' quel que soit le
200
+ // contenu de cfg.compareTargets (défense en profondeur).
201
+ compareTargets: ['mandataires'],
202
+ };
203
+ }
204
+ }
205
+ else {
206
+ firstNameKeys = expandFieldKey((_g = cfg.personFirstNameField) !== null && _g !== void 0 ? _g : '').filter(Boolean);
207
+ lastNameKeys = expandFieldKey((_h = cfg.personLastNameField) !== null && _h !== void 0 ? _h : '').filter(Boolean);
208
+ birthDateKeys = cfg.personBirthDateField
209
+ ? expandFieldKey(cfg.personBirthDateField).filter(Boolean)
210
+ : [];
211
+ submittedFirstName = (_j = resolveFieldValue(personNodeInput, flat, firstNameKeys)) !== null && _j !== void 0 ? _j : '';
212
+ submittedLastName = (_k = resolveFieldValue(personNodeInput, flat, lastNameKeys)) !== null && _k !== void 0 ? _k : '';
213
+ dateOfBirth = cfg.compareBirthDate && birthDateKeys.length
214
+ ? resolveFieldValue(personNodeInput, flat, birthDateKeys)
215
+ : undefined;
216
+ if (submittedFirstName && submittedLastName) {
217
+ comparisonConfig = tslib_es6.__assign({ firstName: submittedFirstName, lastName: submittedLastName, compareTargets: (_l = cfg.compareTargets) !== null && _l !== void 0 ? _l : ['mandataires'] }, (dateOfBirth ? { dateOfBirth: dateOfBirth } : {}));
218
+ }
191
219
  }
192
220
  }
193
221
  if (isInpiRbe)
194
222
  advanceStep(1);
195
- _s.label = 4;
223
+ _v.label = 4;
196
224
  case 4:
197
- _s.trys.push([4, 7, , 8]);
225
+ _v.trys.push([4, 7, , 8]);
198
226
  return [4 /*yield*/, api.apiService.post("/session/sdk/".concat(session.id, "/verify-external/").concat(node.id), tslib_es6.__assign({ apiType: apiType, referenceValue: referenceValue, referenceField: referenceField, enableRnaFallback: isInpiRbe && nodeData.rnaFallbackEnabled === true }, (comparisonConfig ? { comparisonConfig: comparisonConfig } : {})), { signal: abortController.signal })];
199
227
  case 5:
200
- response = _s.sent();
228
+ response = _v.sent();
201
229
  if (isInpiRbe)
202
230
  advanceStep(2);
203
231
  return [4 /*yield*/, new Promise(function (r) { return setTimeout(r, 600); })];
204
232
  case 6:
205
- _s.sent();
206
- res = (_k = response.data) === null || _k === void 0 ? void 0 : _k.data;
233
+ _v.sent();
234
+ res = (_m = response.data) === null || _m === void 0 ? void 0 : _m.data;
207
235
  if (res && typeof res.isVerified === 'boolean') {
208
236
  result = res;
209
237
  }
210
238
  return [3 /*break*/, 8];
211
239
  case 7:
212
- apiErr_1 = _s.sent();
240
+ apiErr_1 = _v.sent();
213
241
  if (abortController.signal.aborted)
214
242
  return [2 /*return*/];
215
243
  if (isInpiRbe)
216
244
  advanceStep(2);
217
- apiResult = (_m = (_l = apiErr_1 === null || apiErr_1 === void 0 ? void 0 : apiErr_1.response) === null || _l === void 0 ? void 0 : _l.data) === null || _m === void 0 ? void 0 : _m.data;
245
+ apiResult = (_p = (_o = apiErr_1 === null || apiErr_1 === void 0 ? void 0 : apiErr_1.response) === null || _o === void 0 ? void 0 : _o.data) === null || _p === void 0 ? void 0 : _p.data;
218
246
  if (apiResult && typeof apiResult.isVerified === 'boolean') {
219
247
  result = apiResult;
220
248
  }
@@ -229,7 +257,7 @@ var ExternalVerificationNodeHandler = function (_a) {
229
257
  return [3 /*break*/, 8];
230
258
  case 8: return [3 /*break*/, 10];
231
259
  case 9:
232
- _s.sent();
260
+ _v.sent();
233
261
  result = {
234
262
  isVerified: false,
235
263
  status: 'external_error',
@@ -259,13 +287,21 @@ var ExternalVerificationNodeHandler = function (_a) {
259
287
  if (result.status === 'person_mismatch') {
260
288
  inpi = result.inpiData;
261
289
  cfg = nodeData.comparisonConfig;
290
+ isPersonneMorale_1 = (cfg === null || cfg === void 0 ? void 0 : cfg.personType) === 'MORALE';
262
291
  setErrorScreenData({
263
292
  submittedLastName: submittedLastName,
264
293
  submittedFirstName: submittedFirstName,
265
- mandataires: ((_o = inpi === null || inpi === void 0 ? void 0 : inpi.mandataires) !== null && _o !== void 0 ? _o : []).filter(function (m) { return m.type === 'individu'; }),
266
- beneficiairesEffectifs: (_p = inpi === null || inpi === void 0 ? void 0 : inpi.beneficiairesEffectifs) !== null && _p !== void 0 ? _p : [],
267
- compareTargets: (_q = cfg === null || cfg === void 0 ? void 0 : cfg.compareTargets) !== null && _q !== void 0 ? _q : ['mandataires'],
268
- personNodeId: (_r = cfg === null || cfg === void 0 ? void 0 : cfg.personReferenceNodeId) !== null && _r !== void 0 ? _r : '',
294
+ submittedSiren: isPersonneMorale_1 ? submittedSiren : undefined,
295
+ // En mode personne morale, seuls les mandataires personne morale ont
296
+ // un sens (un RBE est toujours une personne physique) ; en mode
297
+ // physique, comportement inchangé (mandataires individus uniquement).
298
+ mandataires: ((_q = inpi === null || inpi === void 0 ? void 0 : inpi.mandataires) !== null && _q !== void 0 ? _q : []).filter(function (m) {
299
+ return isPersonneMorale_1 ? m.type === 'personne_morale' : m.type === 'individu';
300
+ }),
301
+ beneficiairesEffectifs: (_r = inpi === null || inpi === void 0 ? void 0 : inpi.beneficiairesEffectifs) !== null && _r !== void 0 ? _r : [],
302
+ compareTargets: isPersonneMorale_1 ? ['mandataires'] : ((_s = cfg === null || cfg === void 0 ? void 0 : cfg.compareTargets) !== null && _s !== void 0 ? _s : ['mandataires']),
303
+ personNodeId: (_t = cfg === null || cfg === void 0 ? void 0 : cfg.personReferenceNodeId) !== null && _t !== void 0 ? _t : '',
304
+ targetDenomination: (_u = inpi === null || inpi === void 0 ? void 0 : inpi.identite) === null || _u === void 0 ? void 0 : _u.denomination,
269
305
  siren: resolvedReferenceValue,
270
306
  sirenNodeId: referenceNodeId,
271
307
  source: inpi === null || inpi === void 0 ? void 0 : inpi.source,
@@ -340,20 +376,22 @@ var ExternalVerificationNodeHandler = function (_a) {
340
376
  : ((_l = d === null || d === void 0 ? void 0 : d.compareTargets) === null || _l === void 0 ? void 0 : _l.includes('mandataires')) && !((_m = d === null || d === void 0 ? void 0 : d.compareTargets) === null || _m === void 0 ? void 0 : _m.includes('beneficiairesEffectifs'))
341
377
  ? t('inpi_verification.mandataires_label', 'Mandataires renseignés au RNE')
342
378
  : t('inpi_verification.persons_label', 'Personnes renseignées au RNE');
343
- return (jsxRuntime.jsxs("div", { className: "flex flex-col justify-between h-full w-full", children: [jsxRuntime.jsx("div", { className: "flex-1 px-4 py-6 pt-11 md:px-8 md:py-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto space-y-6", children: [jsxRuntime.jsx("div", { className: "text-center", children: jsxRuntime.jsx("div", { className: "mx-auto w-16 h-16 bg-red-100 rounded-full flex items-center justify-center mb-4", children: jsxRuntime.jsx("div", { className: "w-8 h-8 bg-red-500 rounded-full flex items-center justify-center", children: jsxRuntime.jsx("span", { className: "text-white text-lg", children: "\u2715" }) }) }) }), jsxRuntime.jsxs("div", { className: "text-center space-y-4", children: [jsxRuntime.jsx(Title.default, { className: "text-xl md:text-2xl lg:text-3xl text-red-600", children: t('inpi_verification.mismatch_title', 'Identité non confirmée') }), jsxRuntime.jsx(Subtitle.default, { className: "text-sm text-gray-600 leading-relaxed", children: t('inpi_verification.mismatch_desc', "Les informations saisies ne correspondent à aucune personne déclarée à l'INPI pour cette société.") })] }), d && (d.submittedLastName || d.submittedFirstName) && (jsxRuntime.jsxs("div", { className: "bg-red-50 border border-red-200 rounded-lg p-4", children: [jsxRuntime.jsx("h3", { className: "font-medium text-red-900 mb-2", children: t('errors.problems_detected', 'Problèmes détectés') }), jsxRuntime.jsxs("div", { className: "text-sm text-red-800 space-y-1", children: [d.submittedLastName && (jsxRuntime.jsxs("p", { children: [t('inpi_verification.submitted_last_name', 'Nom saisi'), ' : ', jsxRuntime.jsx("strong", { children: d.submittedLastName })] })), d.submittedFirstName && (jsxRuntime.jsxs("p", { children: [t('inpi_verification.submitted_first_name', 'Prénom saisi'), ' : ', jsxRuntime.jsx("strong", { children: d.submittedFirstName })] }))] })] })), (showMandataires || showBeneficiaires) && (jsxRuntime.jsxs("div", { className: "bg-blue-50 border border-blue-200 rounded-lg p-4", children: [jsxRuntime.jsx("h3", { className: "font-medium text-blue-900 mb-2", children: personListLabel }), jsxRuntime.jsxs("div", { className: "text-sm text-blue-800 space-y-1", children: [showMandataires && d.mandataires.map(function (m, i) {
344
- var _a, _b;
345
- return (jsxRuntime.jsxs("p", { children: [jsxRuntime.jsx("strong", { children: (_a = m.nom) !== null && _a !== void 0 ? _a : '' }), ((_b = m.prenoms) !== null && _b !== void 0 ? _b : []).length > 0 && " ".concat(m.prenoms.join(' '))] }, "m-".concat(i)));
379
+ return (jsxRuntime.jsxs("div", { className: "flex flex-col justify-between h-full w-full", children: [jsxRuntime.jsx("div", { className: "flex-1 px-4 py-6 pt-11 md:px-8 md:py-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto space-y-6", children: [jsxRuntime.jsx("div", { className: "text-center", children: jsxRuntime.jsx("div", { className: "mx-auto w-16 h-16 bg-red-100 rounded-full flex items-center justify-center mb-4", children: jsxRuntime.jsx("div", { className: "w-8 h-8 bg-red-500 rounded-full flex items-center justify-center", children: jsxRuntime.jsx("span", { className: "text-white text-lg", children: "\u2715" }) }) }) }), jsxRuntime.jsxs("div", { className: "text-center space-y-4", children: [jsxRuntime.jsx(Title.default, { className: "text-xl md:text-2xl lg:text-3xl text-red-600", children: t('inpi_verification.mismatch_title', 'Identité non confirmée') }), jsxRuntime.jsx(Subtitle.default, { className: "text-sm text-gray-600 leading-relaxed", children: (d === null || d === void 0 ? void 0 : d.targetDenomination)
380
+ ? t('inpi_verification.mismatch_desc_denomination', "Le responsable l\u00E9gal saisi ne fait pas partie des responsables l\u00E9gaux ou b\u00E9n\u00E9ficiaires effectifs de la soci\u00E9t\u00E9 ".concat(d.targetDenomination))
381
+ : t('inpi_verification.mismatch_desc', "Les informations saisies ne correspondent à aucune personne déclarée à l'INPI pour cette société.") })] }), d && (d.submittedLastName || d.submittedFirstName || d.submittedSiren) && (jsxRuntime.jsxs("div", { className: "bg-red-50 border border-red-200 rounded-lg p-4", children: [jsxRuntime.jsx("h3", { className: "font-medium text-red-900 mb-2", children: t('errors.problems_detected', 'Problèmes détectés') }), jsxRuntime.jsxs("div", { className: "text-sm text-red-800 space-y-1", children: [d.submittedSiren && (jsxRuntime.jsxs("p", { children: [t('inpi_verification.submitted_siren', 'SIREN saisi'), ' : ', jsxRuntime.jsx("strong", { children: d.submittedSiren })] })), d.submittedLastName && (jsxRuntime.jsxs("p", { children: [t('inpi_verification.submitted_last_name', 'Nom saisi'), ' : ', jsxRuntime.jsx("strong", { children: d.submittedLastName })] })), d.submittedFirstName && (jsxRuntime.jsxs("p", { children: [t('inpi_verification.submitted_first_name', 'Prénom saisi'), ' : ', jsxRuntime.jsx("strong", { children: d.submittedFirstName })] }))] })] })), (showMandataires || showBeneficiaires) && (jsxRuntime.jsxs("div", { className: "bg-blue-50 border border-blue-200 rounded-lg p-4", children: [jsxRuntime.jsx("h3", { className: "font-medium text-blue-900 mb-2", children: personListLabel }), jsxRuntime.jsxs("div", { className: "text-sm text-blue-800 space-y-1", children: [showMandataires && d.mandataires.map(function (m, i) {
382
+ var _a, _b, _c;
383
+ return (jsxRuntime.jsx("p", { children: m.type === 'personne_morale' ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("strong", { children: (_a = m.denominationSociale) !== null && _a !== void 0 ? _a : '—' }), m.siren && " (SIREN ".concat(m.siren, ")")] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("strong", { children: (_b = m.nom) !== null && _b !== void 0 ? _b : '—' }), ((_c = m.prenoms) !== null && _c !== void 0 ? _c : []).length > 0 && " ".concat(m.prenoms.join(' '))] })) }, "m-".concat(i)));
346
384
  }), showBeneficiaires && d.beneficiairesEffectifs.map(function (b, i) {
347
385
  var _a, _b;
348
386
  return (jsxRuntime.jsxs("p", { children: [jsxRuntime.jsx("strong", { children: (_a = b.nom) !== null && _a !== void 0 ? _a : '—' }), ((_b = b.prenoms) !== null && _b !== void 0 ? _b : []).length > 0 && " ".concat(b.prenoms.join(' '))] }, "b-".concat(i)));
349
- })] })] }))] }) }), jsxRuntime.jsx("div", { className: "sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto", children: [jsxRuntime.jsxs("div", { className: "flex flex-col space-y-3 md:hidden", children: [jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: handleCorrect, "data-cy": "inpi-mismatch-go-back", children: t('inpi_verification.mismatch_correct', 'Corriger ma saisie') }), jsxRuntime.jsx(Button.default, { onClick: onNext, "data-cy": "inpi-mismatch-continue", children: t('inpi_verification.mismatch_continue', 'Continuer quand même') })] }), jsxRuntime.jsxs("div", { className: "hidden md:flex justify-center space-x-3", children: [jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: handleCorrect, "data-cy": "inpi-mismatch-go-back", children: t('inpi_verification.mismatch_correct', 'Corriger ma saisie') }), jsxRuntime.jsx(Button.default, { onClick: onNext, "data-cy": "inpi-mismatch-continue", children: t('inpi_verification.mismatch_continue', 'Continuer quand même') })] })] }) })] }));
387
+ })] })] }))] }) }), jsxRuntime.jsx("div", { className: "sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto", children: [jsxRuntime.jsxs("div", { className: "flex flex-col space-y-3 md:hidden", children: [jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: handleCorrect, "data-cy": "inpi-mismatch-go-back", children: t('inpi_verification.mismatch_correct', 'Corriger ma saisie') }), allowContinueOnFailure && (jsxRuntime.jsx(Button.default, { onClick: onNext, "data-cy": "inpi-mismatch-continue", children: t('inpi_verification.mismatch_continue', 'Continuer quand même') }))] }), jsxRuntime.jsxs("div", { className: "hidden md:flex justify-center space-x-3", children: [jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: handleCorrect, "data-cy": "inpi-mismatch-go-back", children: t('inpi_verification.mismatch_correct', 'Corriger ma saisie') }), allowContinueOnFailure && (jsxRuntime.jsx(Button.default, { onClick: onNext, "data-cy": "inpi-mismatch-continue", children: t('inpi_verification.mismatch_continue', 'Continuer quand même') }))] })] }) })] }));
350
388
  }
351
389
  // ─── Not found phase ───────────────────────────────────────────────────────
352
390
  if (phase === 'not_found') {
353
391
  var d = errorScreenData;
354
- return (jsxRuntime.jsxs("div", { className: "flex flex-col justify-between h-full w-full", children: [jsxRuntime.jsx("div", { className: "flex-1 px-4 py-6 pt-11 md:px-8 md:py-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto space-y-6", children: [jsxRuntime.jsx("div", { className: "text-center", children: jsxRuntime.jsx("div", { className: "mx-auto w-16 h-16 bg-orange-100 rounded-full flex items-center justify-center mb-4", children: jsxRuntime.jsx("div", { className: "w-8 h-8 bg-orange-500 rounded-full flex items-center justify-center", children: jsxRuntime.jsx("span", { className: "text-white text-lg font-bold", children: "!" }) }) }) }), jsxRuntime.jsxs("div", { className: "text-center space-y-4", children: [jsxRuntime.jsx(Title.default, { className: "text-xl md:text-2xl lg:text-3xl text-orange-600", children: t('inpi_verification.not_found_title', 'Société introuvable') }), jsxRuntime.jsx(Subtitle.default, { className: "text-sm text-gray-600 leading-relaxed", children: t('inpi_verification.not_found_desc', "Le numéro saisi ne correspond à aucune société enregistrée dans le Registre National des Entreprises.") })] }), jsxRuntime.jsxs("div", { className: "bg-orange-50 border border-orange-200 rounded-lg p-4", children: [jsxRuntime.jsx("h3", { className: "font-medium text-orange-900 mb-2", children: t('errors.problems_detected', 'Problèmes détectés') }), jsxRuntime.jsxs("div", { className: "text-sm text-orange-800 space-y-1", children: [(d === null || d === void 0 ? void 0 : d.siren) && (jsxRuntime.jsxs("p", { children: [t('inpi_verification.siren_label', 'SIREN'), ' : ', jsxRuntime.jsx("strong", { children: d.siren })] })), jsxRuntime.jsx("p", { children: (d === null || d === void 0 ? void 0 : d.isDoubleNotFound)
392
+ return (jsxRuntime.jsxs("div", { className: "flex flex-col justify-between h-full w-full", children: [jsxRuntime.jsx("div", { className: "flex-1 px-4 py-6 pt-11 md:px-8 md:py-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto space-y-6", children: [jsxRuntime.jsx("div", { className: "text-center", children: jsxRuntime.jsx("div", { className: "mx-auto w-16 h-16 bg-orange-100 rounded-full flex items-center justify-center mb-4", children: jsxRuntime.jsx("div", { className: "w-8 h-8 bg-orange-500 rounded-full flex items-center justify-center", children: jsxRuntime.jsx("span", { className: "text-white text-lg font-bold", children: "!" }) }) }) }), jsxRuntime.jsxs("div", { className: "text-center space-y-4", children: [jsxRuntime.jsx(Title.default, { className: "text-xl md:text-2xl lg:text-3xl text-orange-600", children: t('inpi_verification.not_found_title', 'Société introuvable') }), jsxRuntime.jsx(Subtitle.default, { className: "text-sm text-gray-600 leading-relaxed", children: t('inpi_verification.not_found_desc', "Le numéro saisi ne correspond à aucune société enregistrée dans le Registre National des Entreprises.") }), jsxRuntime.jsx("span", { className: "inline-block rounded-full bg-red-100 px-3 py-1 text-xs font-semibold text-red-700", children: t('inpi_verification.not_found_rejected_label', 'Dossier rejeté') })] }), jsxRuntime.jsxs("div", { className: "bg-orange-50 border border-orange-200 rounded-lg p-4", children: [jsxRuntime.jsx("h3", { className: "font-medium text-orange-900 mb-2", children: t('errors.problems_detected', 'Problèmes détectés') }), jsxRuntime.jsxs("div", { className: "text-sm text-orange-800 space-y-1", children: [(d === null || d === void 0 ? void 0 : d.siren) && (jsxRuntime.jsxs("p", { children: [t('inpi_verification.siren_label', 'SIREN'), ' : ', jsxRuntime.jsx("strong", { children: d.siren })] })), jsxRuntime.jsx("p", { children: (d === null || d === void 0 ? void 0 : d.isDoubleNotFound)
355
393
  ? t('inpi_verification.not_found_detail_rne_rna', "Aucune société ni association trouvée, ni dans le Registre National des Entreprises (RNE), ni dans le Répertoire National des Associations (RNA).")
356
- : t('inpi_verification.not_found_detail', 'Aucune société trouvée dans le Registre National des Entreprises.') })] })] })] }) }), jsxRuntime.jsx("div", { className: "sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto", children: [jsxRuntime.jsxs("div", { className: "flex flex-col space-y-3 md:hidden", children: [jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: handleCorrect, "data-cy": "inpi-not-found-go-back", children: t('inpi_verification.mismatch_correct', 'Corriger ma saisie') }), jsxRuntime.jsx(Button.default, { onClick: onNext, "data-cy": "inpi-not-found-continue", children: t('inpi_verification.mismatch_continue', 'Continuer quand même') })] }), jsxRuntime.jsxs("div", { className: "hidden md:flex justify-center space-x-3", children: [jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: handleCorrect, "data-cy": "inpi-not-found-go-back", children: t('inpi_verification.mismatch_correct', 'Corriger ma saisie') }), jsxRuntime.jsx(Button.default, { onClick: onNext, "data-cy": "inpi-not-found-continue", children: t('inpi_verification.mismatch_continue', 'Continuer quand même') })] })] }) })] }));
394
+ : t('inpi_verification.not_found_detail', 'Aucune société trouvée dans le Registre National des Entreprises.') })] })] })] }) }), jsxRuntime.jsx("div", { className: "sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto", children: [jsxRuntime.jsxs("div", { className: "flex flex-col space-y-3 md:hidden", children: [jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: handleCorrect, "data-cy": "inpi-not-found-go-back", children: t('inpi_verification.mismatch_correct', 'Corriger ma saisie') }), allowContinueOnFailure && (jsxRuntime.jsx(Button.default, { onClick: onNext, "data-cy": "inpi-not-found-continue", children: t('inpi_verification.mismatch_continue', 'Continuer quand même') }))] }), jsxRuntime.jsxs("div", { className: "hidden md:flex justify-center space-x-3", children: [jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: handleCorrect, "data-cy": "inpi-not-found-go-back", children: t('inpi_verification.mismatch_correct', 'Corriger ma saisie') }), allowContinueOnFailure && (jsxRuntime.jsx(Button.default, { onClick: onNext, "data-cy": "inpi-not-found-continue", children: t('inpi_verification.mismatch_continue', 'Continuer quand même') }))] })] }) })] }));
357
395
  }
358
396
  // ─── Error / fallback ─────────────────────────────────────────────────────
359
397
  return (jsxRuntime.jsx(LoadingState.default, { message: t('verification_node.verifying_title', 'Vérification en cours…'), subtitle: t('verification_node.verifying_desc', 'Vérification en cours…') }));
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalVerificationNodeHandler.js","sources":["../../../../../src/components/template/ExternalVerificationNodeHandler.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport sdkI18n from '../../i18n';\nimport { apiService } from '../../services/api';\nimport checkIcon from '../../assets/check.svg';\nimport LoadingState from '../states/LoadingState';\nimport Title from '../ui/Title';\nimport Subtitle from '../ui/Subtitle';\nimport Button from '../ui/Button';\nimport type { SessionData, SessionTemplateNode } from '../../types/session';\nimport type { UserInput } from '../../types/userInput';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype VerificationStatus =\n | 'ok'\n | 'not_found'\n | 'invalid_input'\n | 'config_error'\n | 'external_error'\n | 'person_mismatch';\n\ninterface InpiMandataire {\n type: 'individu' | 'personne_morale';\n nom?: string;\n prenoms?: string[];\n dateDeNaissance?: string;\n denominationSociale?: string;\n siren?: string;\n}\n\ninterface InpiVerificationData {\n identite?: { denomination?: string; siren?: string; dateImmat?: string };\n mandataires?: InpiMandataire[];\n beneficiairesEffectifs?: Array<{ nom?: string; prenoms?: string[]; dateDeNaissance?: string }>;\n comparison?: { matched: boolean; matchedPersonType?: string; targets: string[] };\n /** Real registry the data was resolved from — RNE directly, or the RNA fallback for associations. */\n source?: 'RNE' | 'RNA';\n}\n\ninterface VerificationResponsePayload {\n isVerified: boolean;\n status: VerificationStatus;\n message?: string;\n errorCode?: string;\n inpiData?: InpiVerificationData;\n}\n\n// Data needed to render the error screens after API response\ninterface ErrorScreenData {\n // person_mismatch\n submittedLastName: string;\n submittedFirstName: string;\n mandataires: InpiMandataire[];\n beneficiairesEffectifs: Array<{ nom?: string; prenoms?: string[] }>;\n compareTargets: string[];\n personNodeId: string; // for \"Corriger ma saisie\" navigation\n // not_found / invalid_input\n siren: string;\n sirenNodeId: string; // for \"Corriger ma saisie\" navigation\n // Real registry the data came from — undefined when neither RNE nor RNA found anything.\n source?: 'RNE' | 'RNA';\n // True when both RNE and RNA were tried and neither found the entity.\n isDoubleNotFound?: boolean;\n}\n\ninterface ExternalVerificationNodeHandlerProps {\n node: SessionTemplateNode;\n session: SessionData;\n userInput: UserInput;\n setUserInput: React.Dispatch<React.SetStateAction<UserInput>>;\n onNext: () => void;\n onPrevious: () => void;\n /** Navigate to a specific journey node by ID (used for \"Corriger ma saisie\") */\n onNavigateToNode?: (nodeId: string) => void;\n}\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\nconst FIELD_ALIASES: Record<'siren' | 'siret', string[]> = {\n siren: ['siren', 'siren_number', 'company_siren', 'legal_siren', 'num_siren'],\n siret: ['siret', 'siret_number', 'company_siret', 'legal_siret', 'num_siret'],\n};\n\nconst STANDARD_FIELD_ALIASES: Record<string, string[]> = {\n prenom: ['firstName', 'first_name', 'prenom'],\n nom: ['lastName', 'last_name', 'surname', 'familyName', 'nom'],\n date_naissance: ['birthDate', 'birth_date', 'dateOfBirth', 'date_naissance'],\n};\n\nconst normalizeReferenceField = (field?: string): 'siren' | 'siret' | undefined => {\n if (!field) return undefined;\n const n = field.toLowerCase().replace(/[\\s_.-]/g, '');\n if (n.includes('siret')) return 'siret';\n if (n.includes('siren')) return 'siren';\n return undefined;\n};\n\nconst maskReferenceValue = (value: string): string => {\n const clean = value.replace(/\\s+/g, '');\n if (!clean) return '';\n if (clean.length <= 4) return '****';\n return `${'*'.repeat(clean.length - 4)}${clean.slice(-4)}`;\n};\n\nconst resolveFieldValue = (nodeInput: any, userInputFlat: any, keys: string[]): string | undefined => {\n for (const key of keys) {\n const candidate =\n nodeInput?.[key] ??\n nodeInput?.customFormData?.[key] ??\n userInputFlat?.customFormData?.[key] ??\n userInputFlat?.[key];\n if (candidate !== undefined && candidate !== null && `${candidate}`.trim() !== '') {\n return String(candidate);\n }\n }\n return undefined;\n};\n\nconst expandFieldKey = (key: string): string[] => [key, ...(STANDARD_FIELD_ALIASES[key] ?? [])];\n\n// ─── Loader step type ─────────────────────────────────────────────────────────\n\ntype LoaderStep = { title: string; subtitle: string; status: 'pending' | 'active' | 'done' };\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nconst ExternalVerificationNodeHandler: React.FC<ExternalVerificationNodeHandlerProps> = ({\n node,\n session,\n userInput,\n setUserInput,\n onNext,\n onPrevious,\n onNavigateToNode,\n}) => {\n const { t } = useTranslation('translation', { i18n: sdkI18n });\n\n const nodeData = node as any;\n const apiType = String(nodeData.targetApi || 'INSEE');\n const isInpiRbe = apiType === 'INPI_RBE';\n\n const [phase, setPhase] = useState<'loading' | 'success' | 'mismatch' | 'not_found' | 'error'>('loading');\n const [errorScreenData, setErrorScreenData] = useState<ErrorScreenData | null>(null);\n\n const [steps, setSteps] = useState<LoaderStep[]>(() => {\n if (isInpiRbe) {\n return [\n {\n // Générique : le backend interroge le RNE puis, si besoin, le RNA en\n // fallback (associations) via un seul appel — la source réelle n'est\n // connue qu'à la réponse finale (cf. inpiData.source).\n title: t('inpi_verification.step1', 'Vérification du SIREN auprès des registres officiels'),\n subtitle: t('inpi_verification.step1_sub', 'Connexion aux registres RNE et RNA'),\n status: 'active',\n },\n {\n title: t('inpi_verification.step2', \"Récupération des données d'identité\"),\n subtitle: t('inpi_verification.step2_sub', 'Lecture des informations légales et des responsables'),\n status: 'pending',\n },\n {\n title: t('inpi_verification.step3', 'Comparaison avec les données saisies'),\n subtitle: t('inpi_verification.step3_sub', 'Vérification de la concordance des informations'),\n status: 'pending',\n },\n ];\n }\n return [{\n title: t('verification_node.verifying_title', 'Vérification en cours…'),\n subtitle: t('verification_node.verifying_desc', 'Connexion au service externe'),\n status: 'active',\n }];\n });\n\n const advanceStep = (index: number) => {\n setSteps(prev =>\n prev.map((s, i) => {\n if (i < index) return { ...s, status: 'done' };\n if (i === index) return { ...s, status: 'active' };\n return s;\n }),\n );\n };\n\n const completeSteps = () => setSteps(prev => prev.map(s => ({ ...s, status: 'done' })));\n\n useEffect(() => {\n const abortController = new AbortController();\n\n const run = async () => {\n let result: VerificationResponsePayload = {\n isVerified: false,\n status: 'external_error',\n message: 'Verification did not run.',\n };\n let referenceField: 'siren' | 'siret' | undefined;\n let referenceValueMasked = '';\n let resolvedReferenceValue = '';\n const referenceNodeId = String(nodeData.referenceNodeId || '');\n const referenceVariable = String(nodeData.referenceVariable || '');\n let submittedFirstName = '';\n let submittedLastName = '';\n\n try {\n if (!session?.id) throw new Error('Session ID is missing');\n\n referenceField = normalizeReferenceField(\n String(nodeData.referenceField || referenceVariable || ''),\n );\n\n if (!referenceNodeId || !referenceField) {\n result = {\n isVerified: false,\n status: 'config_error',\n message: 'External verification node is missing reference configuration.',\n errorCode: 'MISSING_REFERENCE_CONFIG',\n };\n } else {\n const nodeInput = (userInput as any)[referenceNodeId];\n const userInputFlat = userInput as any;\n const lookupKeys = Array.from(\n new Set([referenceVariable, referenceField, ...FIELD_ALIASES[referenceField]].filter(Boolean)),\n );\n\n let referenceValue = resolveFieldValue(nodeInput, userInputFlat, lookupKeys);\n\n if (!referenceValue) {\n const allCustomFields = {\n ...(userInputFlat?.customFormData || {}),\n ...(nodeInput?.customFormData || {}),\n ...(nodeInput || {}),\n };\n for (const [, value] of Object.entries(allCustomFields)) {\n if (typeof value !== 'string' && typeof value !== 'number') continue;\n const str = String(value).replace(/\\s+/g, '');\n if (referenceField === 'siren' && /^\\d{9}$/.test(str)) { referenceValue = str; break; }\n if (referenceField === 'siret' && /^\\d{14}$/.test(str)) { referenceValue = str; break; }\n }\n }\n\n if (!referenceValue) {\n result = {\n isVerified: false,\n status: 'invalid_input',\n message: 'No SIREN/SIRET value found in source node data.',\n errorCode: 'REFERENCE_VALUE_NOT_FOUND',\n };\n } else {\n resolvedReferenceValue = referenceValue;\n referenceValueMasked = maskReferenceValue(referenceValue);\n\n let comparisonConfig: Record<string, unknown> | undefined;\n if (isInpiRbe && nodeData.comparisonConfig?.personReferenceNodeId) {\n const cfg = nodeData.comparisonConfig;\n const personNodeInput = (userInput as any)[cfg.personReferenceNodeId] ?? {};\n const flat = userInput as any;\n\n const firstNameKeys = expandFieldKey(cfg.personFirstNameField ?? '').filter(Boolean);\n const lastNameKeys = expandFieldKey(cfg.personLastNameField ?? '').filter(Boolean);\n const birthDateKeys = cfg.personBirthDateField\n ? expandFieldKey(cfg.personBirthDateField).filter(Boolean)\n : [];\n\n submittedFirstName = resolveFieldValue(personNodeInput, flat, firstNameKeys) ?? '';\n submittedLastName = resolveFieldValue(personNodeInput, flat, lastNameKeys) ?? '';\n const dateOfBirth = cfg.compareBirthDate && birthDateKeys.length\n ? resolveFieldValue(personNodeInput, flat, birthDateKeys)\n : undefined;\n\n if (submittedFirstName && submittedLastName) {\n comparisonConfig = {\n firstName: submittedFirstName,\n lastName: submittedLastName,\n compareTargets: cfg.compareTargets ?? ['mandataires'],\n ...(dateOfBirth ? { dateOfBirth } : {}),\n };\n }\n }\n\n if (isInpiRbe) advanceStep(1);\n\n try {\n const response = await apiService.post(\n `/session/sdk/${session.id}/verify-external/${node.id}`,\n {\n apiType,\n referenceValue,\n referenceField,\n enableRnaFallback: isInpiRbe && nodeData.rnaFallbackEnabled === true,\n ...(comparisonConfig ? { comparisonConfig } : {}),\n },\n { signal: abortController.signal },\n );\n\n if (isInpiRbe) advanceStep(2);\n await new Promise(r => setTimeout(r, 600));\n\n const res = response.data?.data as VerificationResponsePayload | undefined;\n if (res && typeof res.isVerified === 'boolean') {\n result = res;\n }\n } catch (apiErr: any) {\n if (abortController.signal.aborted) return;\n if (isInpiRbe) advanceStep(2);\n const apiResult = apiErr?.response?.data?.data as VerificationResponsePayload | undefined;\n if (apiResult && typeof apiResult.isVerified === 'boolean') {\n result = apiResult;\n } else {\n result = {\n isVerified: false,\n status: 'external_error',\n message: 'External verification request failed.',\n errorCode: 'REQUEST_FAILED',\n };\n }\n }\n }\n }\n } catch (err) {\n result = {\n isVerified: false,\n status: 'external_error',\n message: 'Unexpected error during verification.',\n errorCode: 'UNEXPECTED_ERROR',\n };\n }\n\n if (abortController.signal.aborted) return;\n\n completeSteps();\n\n setUserInput(prev => ({\n ...prev,\n [node.id]: {\n isVerified: result.isVerified,\n apiType,\n referenceField,\n referenceValueMasked,\n verifiedAt: new Date().toISOString(),\n status: result.status,\n errorCode: result.errorCode,\n message: result.message,\n inpiData: result.inpiData,\n hasError: result.status !== 'ok' && result.status !== 'not_found' && result.status !== 'person_mismatch',\n },\n } as any));\n\n if (result.status === 'person_mismatch') {\n const inpi = result.inpiData;\n const cfg = nodeData.comparisonConfig;\n setErrorScreenData({\n submittedLastName,\n submittedFirstName,\n mandataires: (inpi?.mandataires ?? []).filter(m => m.type === 'individu'),\n beneficiairesEffectifs: inpi?.beneficiairesEffectifs ?? [],\n compareTargets: cfg?.compareTargets ?? ['mandataires'],\n personNodeId: cfg?.personReferenceNodeId ?? '',\n siren: resolvedReferenceValue,\n sirenNodeId: referenceNodeId,\n source: inpi?.source,\n });\n setPhase('mismatch');\n\n } else if (result.status === 'not_found' || result.status === 'invalid_input') {\n setErrorScreenData({\n submittedLastName: '',\n submittedFirstName: '',\n mandataires: [],\n beneficiairesEffectifs: [],\n compareTargets: [],\n personNodeId: '',\n siren: resolvedReferenceValue,\n sirenNodeId: referenceNodeId,\n isDoubleNotFound: result.errorCode === 'NOT_FOUND_RNE_RNA',\n });\n setPhase('not_found');\n\n } else if (result.isVerified || result.status === 'ok') {\n setPhase('success');\n setTimeout(onNext, 1200);\n\n } else if (result.status === 'config_error') {\n setPhase('success');\n setTimeout(onNext, 800);\n\n } else {\n setPhase('error');\n setTimeout(onNext, 1500);\n }\n };\n\n run();\n return () => abortController.abort();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // ─── Navigation helper ────────────────────────────────────────────────────\n\n const handleCorrect = () => {\n if (phase === 'mismatch' && errorScreenData?.personNodeId && onNavigateToNode) {\n onNavigateToNode(errorScreenData.personNodeId);\n } else if (phase === 'not_found' && errorScreenData?.sirenNodeId && onNavigateToNode) {\n onNavigateToNode(errorScreenData.sirenNodeId);\n } else {\n onPrevious();\n }\n };\n\n // ─── Loading phase ─────────────────────────────────────────────────────────\n\n if (phase === 'loading') {\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n <div className=\"flex-1 px-4 py-6 pt-11 md:px-8 md:py-8\">\n <div className=\"w-full max-w-md mx-auto space-y-6\">\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">\n {t('verification_node.verifying_title', 'Vérification en cours…')}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {t('verification_node.verifying_desc', 'Nous vérifions vos informations. Cela peut prendre quelques instants.')}\n </Subtitle>\n </div>\n <div className=\"w-full flex justify-center\">\n <div className=\"space-y-5\">\n {steps.map((step, index) => (\n <div key={index} className=\"flex items-start\">\n <div className=\"mr-4 mt-1 flex-shrink-0\">\n {step.status === 'done' ? (\n <div className=\"flex items-center justify-center w-6 h-6 rounded-full bg-[#11E5C5] text-white text-xs\">✓</div>\n ) : step.status === 'active' ? (\n <div className=\"w-6 h-6 rounded-full border-2 border-t-[#11E5C5] border-r-[#11E5C5] border-b-[#11E5C5] border-l-transparent animate-spin\" />\n ) : (\n <div className=\"w-6 h-6 rounded-full border-2 border-gray-300\" />\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-medium text-[#3C3C40] text-sm\">{step.title}</p>\n <p className=\"text-xs text-gray-500 mt-1\">{step.subtitle}</p>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // ─── Success phase ─────────────────────────────────────────────────────────\n\n if (phase === 'success') {\n return (\n <div className=\"flex flex-col items-center justify-center h-full px-6 py-8 text-center space-y-4\">\n <img src={checkIcon} alt=\"success\" className=\"w-24 h-24\" />\n <h3 className=\"text-[#3C3C40] font-poppins text-xl font-bold\">\n {t('inpi_verification.success_title', 'Vérification réussie')}\n </h3>\n <p className=\"text-gray-500 text-sm\">\n {t('inpi_verification.success_desc', \"Passage à l'étape suivante…\")}\n </p>\n </div>\n );\n }\n\n // ─── Mismatch phase ────────────────────────────────────────────────────────\n\n if (phase === 'mismatch') {\n const d = errorScreenData;\n const showBeneficiaires =\n d?.compareTargets?.includes('beneficiairesEffectifs') && (d?.beneficiairesEffectifs?.length ?? 0) > 0;\n const showMandataires =\n (!d?.compareTargets?.length || d?.compareTargets?.includes('mandataires')) &&\n (d?.mandataires?.length ?? 0) > 0;\n const isRna = d?.source === 'RNA';\n const personListLabel = isRna\n ? t('inpi_verification.dirigeants_label', 'Dirigeants renseignés au RNA')\n : d?.compareTargets?.includes('beneficiairesEffectifs') && !d?.compareTargets?.includes('mandataires')\n ? t('inpi_verification.beneficiaires_label', 'Bénéficiaires effectifs renseignés au RNE')\n : d?.compareTargets?.includes('mandataires') && !d?.compareTargets?.includes('beneficiairesEffectifs')\n ? t('inpi_verification.mandataires_label', 'Mandataires renseignés au RNE')\n : t('inpi_verification.persons_label', 'Personnes renseignées au RNE');\n\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n <div className=\"flex-1 px-4 py-6 pt-11 md:px-8 md:py-8\">\n <div className=\"w-full max-w-md mx-auto space-y-6\">\n\n {/* Icon */}\n <div className=\"text-center\">\n <div className=\"mx-auto w-16 h-16 bg-red-100 rounded-full flex items-center justify-center mb-4\">\n <div className=\"w-8 h-8 bg-red-500 rounded-full flex items-center justify-center\">\n <span className=\"text-white text-lg\">✕</span>\n </div>\n </div>\n </div>\n\n {/* Header */}\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl text-red-600\">\n {t('inpi_verification.mismatch_title', 'Identité non confirmée')}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {t(\n 'inpi_verification.mismatch_desc',\n \"Les informations saisies ne correspondent à aucune personne déclarée à l'INPI pour cette société.\",\n )}\n </Subtitle>\n </div>\n\n {/* Submitted identity card */}\n {d && (d.submittedLastName || d.submittedFirstName) && (\n <div className=\"bg-red-50 border border-red-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-red-900 mb-2\">\n {t('errors.problems_detected', 'Problèmes détectés')}\n </h3>\n <div className=\"text-sm text-red-800 space-y-1\">\n {d.submittedLastName && (\n <p>\n {t('inpi_verification.submitted_last_name', 'Nom saisi')}\n {' : '}\n <strong>{d.submittedLastName}</strong>\n </p>\n )}\n {d.submittedFirstName && (\n <p>\n {t('inpi_verification.submitted_first_name', 'Prénom saisi')}\n {' : '}\n <strong>{d.submittedFirstName}</strong>\n </p>\n )}\n </div>\n </div>\n )}\n\n {/* INPI persons card */}\n {(showMandataires || showBeneficiaires) && (\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-blue-900 mb-2\">{personListLabel}</h3>\n <div className=\"text-sm text-blue-800 space-y-1\">\n {showMandataires && d!.mandataires.map((m, i) => (\n <p key={`m-${i}`}>\n <strong>{m.nom ?? '—'}</strong>\n {(m.prenoms ?? []).length > 0 && ` ${m.prenoms!.join(' ')}`}\n </p>\n ))}\n {showBeneficiaires && d!.beneficiairesEffectifs.map((b, i) => (\n <p key={`b-${i}`}>\n <strong>{b.nom ?? '—'}</strong>\n {(b.prenoms ?? []).length > 0 && ` ${b.prenoms!.join(' ')}`}\n </p>\n ))}\n </div>\n </div>\n )}\n\n </div>\n </div>\n\n {/* Footer */}\n <div className=\"sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8\">\n <div className=\"w-full max-w-md mx-auto\">\n <div className=\"flex flex-col space-y-3 md:hidden\">\n <Button variant=\"secondary\" onClick={handleCorrect} data-cy=\"inpi-mismatch-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n <Button onClick={onNext} data-cy=\"inpi-mismatch-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n </div>\n <div className=\"hidden md:flex justify-center space-x-3\">\n <Button variant=\"secondary\" onClick={handleCorrect} data-cy=\"inpi-mismatch-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n <Button onClick={onNext} data-cy=\"inpi-mismatch-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // ─── Not found phase ───────────────────────────────────────────────────────\n\n if (phase === 'not_found') {\n const d = errorScreenData;\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n <div className=\"flex-1 px-4 py-6 pt-11 md:px-8 md:py-8\">\n <div className=\"w-full max-w-md mx-auto space-y-6\">\n\n {/* Icon */}\n <div className=\"text-center\">\n <div className=\"mx-auto w-16 h-16 bg-orange-100 rounded-full flex items-center justify-center mb-4\">\n <div className=\"w-8 h-8 bg-orange-500 rounded-full flex items-center justify-center\">\n <span className=\"text-white text-lg font-bold\">!</span>\n </div>\n </div>\n </div>\n\n {/* Header */}\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl text-orange-600\">\n {t('inpi_verification.not_found_title', 'Société introuvable')}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {t(\n 'inpi_verification.not_found_desc',\n \"Le numéro saisi ne correspond à aucune société enregistrée dans le Registre National des Entreprises.\",\n )}\n </Subtitle>\n </div>\n\n {/* Details card */}\n <div className=\"bg-orange-50 border border-orange-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-orange-900 mb-2\">\n {t('errors.problems_detected', 'Problèmes détectés')}\n </h3>\n <div className=\"text-sm text-orange-800 space-y-1\">\n {d?.siren && (\n <p>\n {t('inpi_verification.siren_label', 'SIREN')}\n {' : '}\n <strong>{d.siren}</strong>\n </p>\n )}\n <p>\n {d?.isDoubleNotFound\n ? t(\n 'inpi_verification.not_found_detail_rne_rna',\n \"Aucune société ni association trouvée, ni dans le Registre National des Entreprises (RNE), ni dans le Répertoire National des Associations (RNA).\",\n )\n : t('inpi_verification.not_found_detail', 'Aucune société trouvée dans le Registre National des Entreprises.')}\n </p>\n </div>\n </div>\n\n </div>\n </div>\n\n {/* Footer */}\n <div className=\"sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8\">\n <div className=\"w-full max-w-md mx-auto\">\n <div className=\"flex flex-col space-y-3 md:hidden\">\n <Button variant=\"secondary\" onClick={handleCorrect} data-cy=\"inpi-not-found-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n <Button onClick={onNext} data-cy=\"inpi-not-found-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n </div>\n <div className=\"hidden md:flex justify-center space-x-3\">\n <Button variant=\"secondary\" onClick={handleCorrect} data-cy=\"inpi-not-found-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n <Button onClick={onNext} data-cy=\"inpi-not-found-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // ─── Error / fallback ─────────────────────────────────────────────────────\n\n return (\n <LoadingState\n message={t('verification_node.verifying_title', 'Vérification en cours…')}\n subtitle={t('verification_node.verifying_desc', 'Vérification en cours…')}\n />\n );\n};\n\nexport default ExternalVerificationNodeHandler;\n"],"names":["__spreadArray","useTranslation","sdkI18n","useState","__assign","useEffect","__awaiter","apiService","_jsx","_jsxs","Title","Subtitle","checkIcon","Button","LoadingState"],"mappings":"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"}
1
+ {"version":3,"file":"ExternalVerificationNodeHandler.js","sources":["../../../../../src/components/template/ExternalVerificationNodeHandler.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport sdkI18n from '../../i18n';\nimport { apiService } from '../../services/api';\nimport checkIcon from '../../assets/check.svg';\nimport LoadingState from '../states/LoadingState';\nimport Title from '../ui/Title';\nimport Subtitle from '../ui/Subtitle';\nimport Button from '../ui/Button';\nimport type { SessionData, SessionTemplateNode } from '../../types/session';\nimport type { UserInput } from '../../types/userInput';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype VerificationStatus =\n | 'ok'\n | 'not_found'\n | 'invalid_input'\n | 'config_error'\n | 'external_error'\n | 'person_mismatch';\n\ninterface InpiMandataire {\n type: 'individu' | 'personne_morale';\n nom?: string;\n prenoms?: string[];\n dateDeNaissance?: string;\n denominationSociale?: string;\n siren?: string;\n}\n\ninterface InpiVerificationData {\n identite?: { denomination?: string; siren?: string; dateImmat?: string };\n mandataires?: InpiMandataire[];\n beneficiairesEffectifs?: Array<{ nom?: string; prenoms?: string[]; dateDeNaissance?: string }>;\n comparison?: { matched: boolean; matchedPersonType?: string; targets: string[] };\n /** Real registry the data was resolved from — RNE directly, or the RNA fallback for associations. */\n source?: 'RNE' | 'RNA';\n}\n\n/** RL personne morale (délégation de pouvoir) : configuré par le concepteur du\n * parcours sur le nœud external-verification — jamais choisi par l'utilisateur\n * final. Absent/'PHYSIQUE' = comportement actuel inchangé (Nom/Prénom). */\ninterface InpiComparisonConfigSdk {\n personType?: 'PHYSIQUE' | 'MORALE';\n personReferenceNodeId?: string;\n personFirstNameField?: string;\n personLastNameField?: string;\n /** Mode MORALE uniquement : champ (du même nœud source) contenant le SIREN saisi. */\n personSirenField?: string;\n compareTargets?: Array<'beneficiairesEffectifs' | 'mandataires'>;\n compareBirthDate?: boolean;\n personBirthDateField?: string;\n}\n\ninterface VerificationResponsePayload {\n isVerified: boolean;\n status: VerificationStatus;\n message?: string;\n errorCode?: string;\n inpiData?: InpiVerificationData;\n}\n\n// Data needed to render the error screens after API response\ninterface ErrorScreenData {\n // person_mismatch\n submittedLastName: string;\n submittedFirstName: string;\n /** RL personne morale (personType: MORALE) : SIREN saisi par le délégataire. */\n submittedSiren?: string;\n mandataires: InpiMandataire[];\n beneficiairesEffectifs: Array<{ nom?: string; prenoms?: string[] }>;\n compareTargets: string[];\n personNodeId: string; // for \"Corriger ma saisie\" navigation\n // Dénomination sociale de la société cible (message de rejet, ticket codes INPI)\n targetDenomination?: string;\n // not_found / invalid_input\n siren: string;\n sirenNodeId: string; // for \"Corriger ma saisie\" navigation\n // Real registry the data came from — undefined when neither RNE nor RNA found anything.\n source?: 'RNE' | 'RNA';\n // True when both RNE and RNA were tried and neither found the entity.\n isDoubleNotFound?: boolean;\n}\n\ninterface ExternalVerificationNodeHandlerProps {\n node: SessionTemplateNode;\n session: SessionData;\n userInput: UserInput;\n setUserInput: React.Dispatch<React.SetStateAction<UserInput>>;\n onNext: () => void;\n onPrevious: () => void;\n /** Navigate to a specific journey node by ID (used for \"Corriger ma saisie\") */\n onNavigateToNode?: (nodeId: string) => void;\n}\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\nconst FIELD_ALIASES: Record<'siren' | 'siret', string[]> = {\n siren: ['siren', 'siren_number', 'company_siren', 'legal_siren', 'num_siren'],\n siret: ['siret', 'siret_number', 'company_siret', 'legal_siret', 'num_siret'],\n};\n\nconst STANDARD_FIELD_ALIASES: Record<string, string[]> = {\n prenom: ['firstName', 'first_name', 'prenom'],\n nom: ['lastName', 'last_name', 'surname', 'familyName', 'nom'],\n date_naissance: ['birthDate', 'birth_date', 'dateOfBirth', 'date_naissance'],\n // Champs d'un nœud identity-legal-rep (RL) : la clé de config (builder) diffère\n // de la clé réellement soumise par LegalRepFields — sans cet alias, la\n // résolution échouait silencieusement dès qu'un nœud identity-legal-rep était\n // choisi comme \"Nœud source Nom/Prénom\" (compareTargets ne trouvait jamais la\n // valeur, causant un person_mismatch systématique).\n legalRepresentativePrenom: ['legalRepresentativeFirstName', 'legalRepresentativePrenom'],\n legalRepresentativeNom: ['legalRepresentativeLastName', 'legalRepresentativeNom'],\n};\n\nconst normalizeReferenceField = (field?: string): 'siren' | 'siret' | undefined => {\n if (!field) return undefined;\n const n = field.toLowerCase().replace(/[\\s_.-]/g, '');\n if (n.includes('siret')) return 'siret';\n if (n.includes('siren')) return 'siren';\n return undefined;\n};\n\nconst maskReferenceValue = (value: string): string => {\n const clean = value.replace(/\\s+/g, '');\n if (!clean) return '';\n if (clean.length <= 4) return '****';\n return `${'*'.repeat(clean.length - 4)}${clean.slice(-4)}`;\n};\n\nconst resolveFieldValue = (nodeInput: any, userInputFlat: any, keys: string[]): string | undefined => {\n for (const key of keys) {\n const candidate =\n nodeInput?.[key] ??\n nodeInput?.customFormData?.[key] ??\n userInputFlat?.customFormData?.[key] ??\n userInputFlat?.[key];\n if (candidate !== undefined && candidate !== null && `${candidate}`.trim() !== '') {\n return String(candidate);\n }\n }\n return undefined;\n};\n\nconst expandFieldKey = (key: string): string[] => [key, ...(STANDARD_FIELD_ALIASES[key] ?? [])];\n\n// ─── Loader step type ─────────────────────────────────────────────────────────\n\ntype LoaderStep = { title: string; subtitle: string; status: 'pending' | 'active' | 'done' };\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nconst ExternalVerificationNodeHandler: React.FC<ExternalVerificationNodeHandlerProps> = ({\n node,\n session,\n userInput,\n setUserInput,\n onNext,\n onPrevious,\n onNavigateToNode,\n}) => {\n const { t } = useTranslation('translation', { i18n: sdkI18n });\n\n const nodeData = node as any;\n const apiType = String(nodeData.targetApi || 'INSEE');\n const isInpiRbe = apiType === 'INPI_RBE';\n // Paramétrable depuis le journey builder (panneau \"Configuration de la base\n // externe\"), par nœud. Absent/true = comportement actuel inchangé.\n const allowContinueOnFailure = nodeData.allowContinueOnFailure !== false;\n\n const [phase, setPhase] = useState<'loading' | 'success' | 'mismatch' | 'not_found' | 'error'>('loading');\n const [errorScreenData, setErrorScreenData] = useState<ErrorScreenData | null>(null);\n\n const [steps, setSteps] = useState<LoaderStep[]>(() => {\n if (isInpiRbe) {\n return [\n {\n // Générique : le backend interroge le RNE puis, si besoin, le RNA en\n // fallback (associations) via un seul appel — la source réelle n'est\n // connue qu'à la réponse finale (cf. inpiData.source).\n title: t('inpi_verification.step1', 'Vérification du SIREN auprès des registres officiels'),\n subtitle: t('inpi_verification.step1_sub', 'Connexion aux registres RNE et RNA'),\n status: 'active',\n },\n {\n title: t('inpi_verification.step2', \"Récupération des données d'identité\"),\n subtitle: t('inpi_verification.step2_sub', 'Lecture des informations légales et des responsables'),\n status: 'pending',\n },\n {\n title: t('inpi_verification.step3', 'Comparaison avec les données saisies'),\n subtitle: t('inpi_verification.step3_sub', 'Vérification de la concordance des informations'),\n status: 'pending',\n },\n ];\n }\n return [{\n title: t('verification_node.verifying_title', 'Vérification en cours…'),\n subtitle: t('verification_node.verifying_desc', 'Connexion au service externe'),\n status: 'active',\n }];\n });\n\n const advanceStep = (index: number) => {\n setSteps(prev =>\n prev.map((s, i) => {\n if (i < index) return { ...s, status: 'done' };\n if (i === index) return { ...s, status: 'active' };\n return s;\n }),\n );\n };\n\n const completeSteps = () => setSteps(prev => prev.map(s => ({ ...s, status: 'done' })));\n\n useEffect(() => {\n const abortController = new AbortController();\n\n const run = async () => {\n let result: VerificationResponsePayload = {\n isVerified: false,\n status: 'external_error',\n message: 'Verification did not run.',\n };\n let referenceField: 'siren' | 'siret' | undefined;\n let referenceValueMasked = '';\n let resolvedReferenceValue = '';\n const referenceNodeId = String(nodeData.referenceNodeId || '');\n const referenceVariable = String(nodeData.referenceVariable || '');\n let submittedFirstName = '';\n let submittedLastName = '';\n let submittedSiren = '';\n\n try {\n if (!session?.id) throw new Error('Session ID is missing');\n\n referenceField = normalizeReferenceField(\n String(nodeData.referenceField || referenceVariable || ''),\n );\n\n if (!referenceNodeId || !referenceField) {\n result = {\n isVerified: false,\n status: 'config_error',\n message: 'External verification node is missing reference configuration.',\n errorCode: 'MISSING_REFERENCE_CONFIG',\n };\n } else {\n const nodeInput = (userInput as any)[referenceNodeId];\n const userInputFlat = userInput as any;\n const lookupKeys = Array.from(\n new Set([referenceVariable, referenceField, ...FIELD_ALIASES[referenceField]].filter(Boolean)),\n );\n\n let referenceValue = resolveFieldValue(nodeInput, userInputFlat, lookupKeys);\n\n if (!referenceValue) {\n const allCustomFields = {\n ...(userInputFlat?.customFormData || {}),\n ...(nodeInput?.customFormData || {}),\n ...(nodeInput || {}),\n };\n for (const [, value] of Object.entries(allCustomFields)) {\n if (typeof value !== 'string' && typeof value !== 'number') continue;\n const str = String(value).replace(/\\s+/g, '');\n if (referenceField === 'siren' && /^\\d{9}$/.test(str)) { referenceValue = str; break; }\n if (referenceField === 'siret' && /^\\d{14}$/.test(str)) { referenceValue = str; break; }\n }\n }\n\n if (!referenceValue) {\n result = {\n isVerified: false,\n status: 'invalid_input',\n message: 'No SIREN/SIRET value found in source node data.',\n errorCode: 'REFERENCE_VALUE_NOT_FOUND',\n };\n } else {\n resolvedReferenceValue = referenceValue;\n referenceValueMasked = maskReferenceValue(referenceValue);\n\n let comparisonConfig: Record<string, unknown> | undefined;\n if (isInpiRbe && nodeData.comparisonConfig?.personReferenceNodeId) {\n const cfg = nodeData.comparisonConfig as InpiComparisonConfigSdk;\n const personNodeInput = (userInput as any)[cfg.personReferenceNodeId!] ?? {};\n const flat = userInput as any;\n const isPersonneMorale = cfg.personType === 'MORALE';\n\n if (isPersonneMorale) {\n // RL personne morale (délégation de pouvoir) : le SIREN saisi\n // remplace Nom/Prénom — jamais les deux en même temps.\n const sirenKeys = expandFieldKey(cfg.personSirenField ?? '').filter(Boolean);\n submittedSiren = resolveFieldValue(personNodeInput, flat, sirenKeys) ?? '';\n\n if (submittedSiren) {\n comparisonConfig = {\n personType: 'MORALE',\n siren: submittedSiren,\n // Un RBE est toujours une personne physique en droit\n // français : forcé à 'mandataires' quel que soit le\n // contenu de cfg.compareTargets (défense en profondeur).\n compareTargets: ['mandataires'],\n };\n }\n } else {\n const firstNameKeys = expandFieldKey(cfg.personFirstNameField ?? '').filter(Boolean);\n const lastNameKeys = expandFieldKey(cfg.personLastNameField ?? '').filter(Boolean);\n const birthDateKeys = cfg.personBirthDateField\n ? expandFieldKey(cfg.personBirthDateField).filter(Boolean)\n : [];\n\n submittedFirstName = resolveFieldValue(personNodeInput, flat, firstNameKeys) ?? '';\n submittedLastName = resolveFieldValue(personNodeInput, flat, lastNameKeys) ?? '';\n const dateOfBirth = cfg.compareBirthDate && birthDateKeys.length\n ? resolveFieldValue(personNodeInput, flat, birthDateKeys)\n : undefined;\n\n if (submittedFirstName && submittedLastName) {\n comparisonConfig = {\n firstName: submittedFirstName,\n lastName: submittedLastName,\n compareTargets: cfg.compareTargets ?? ['mandataires'],\n ...(dateOfBirth ? { dateOfBirth } : {}),\n };\n }\n }\n }\n\n if (isInpiRbe) advanceStep(1);\n\n try {\n const response = await apiService.post(\n `/session/sdk/${session.id}/verify-external/${node.id}`,\n {\n apiType,\n referenceValue,\n referenceField,\n enableRnaFallback: isInpiRbe && nodeData.rnaFallbackEnabled === true,\n ...(comparisonConfig ? { comparisonConfig } : {}),\n },\n { signal: abortController.signal },\n );\n\n if (isInpiRbe) advanceStep(2);\n await new Promise(r => setTimeout(r, 600));\n\n const res = response.data?.data as VerificationResponsePayload | undefined;\n if (res && typeof res.isVerified === 'boolean') {\n result = res;\n }\n } catch (apiErr: any) {\n if (abortController.signal.aborted) return;\n if (isInpiRbe) advanceStep(2);\n const apiResult = apiErr?.response?.data?.data as VerificationResponsePayload | undefined;\n if (apiResult && typeof apiResult.isVerified === 'boolean') {\n result = apiResult;\n } else {\n result = {\n isVerified: false,\n status: 'external_error',\n message: 'External verification request failed.',\n errorCode: 'REQUEST_FAILED',\n };\n }\n }\n }\n }\n } catch (err) {\n result = {\n isVerified: false,\n status: 'external_error',\n message: 'Unexpected error during verification.',\n errorCode: 'UNEXPECTED_ERROR',\n };\n }\n\n if (abortController.signal.aborted) return;\n\n completeSteps();\n\n setUserInput(prev => ({\n ...prev,\n [node.id]: {\n isVerified: result.isVerified,\n apiType,\n referenceField,\n referenceValueMasked,\n verifiedAt: new Date().toISOString(),\n status: result.status,\n errorCode: result.errorCode,\n message: result.message,\n inpiData: result.inpiData,\n hasError: result.status !== 'ok' && result.status !== 'not_found' && result.status !== 'person_mismatch',\n },\n } as any));\n\n if (result.status === 'person_mismatch') {\n const inpi = result.inpiData;\n const cfg = nodeData.comparisonConfig as InpiComparisonConfigSdk | undefined;\n const isPersonneMorale = cfg?.personType === 'MORALE';\n setErrorScreenData({\n submittedLastName,\n submittedFirstName,\n submittedSiren: isPersonneMorale ? submittedSiren : undefined,\n // En mode personne morale, seuls les mandataires personne morale ont\n // un sens (un RBE est toujours une personne physique) ; en mode\n // physique, comportement inchangé (mandataires individus uniquement).\n mandataires: (inpi?.mandataires ?? []).filter(m =>\n isPersonneMorale ? m.type === 'personne_morale' : m.type === 'individu',\n ),\n beneficiairesEffectifs: inpi?.beneficiairesEffectifs ?? [],\n compareTargets: isPersonneMorale ? ['mandataires'] : (cfg?.compareTargets ?? ['mandataires']),\n personNodeId: cfg?.personReferenceNodeId ?? '',\n targetDenomination: inpi?.identite?.denomination,\n siren: resolvedReferenceValue,\n sirenNodeId: referenceNodeId,\n source: inpi?.source,\n });\n setPhase('mismatch');\n\n } else if (result.status === 'not_found' || result.status === 'invalid_input') {\n setErrorScreenData({\n submittedLastName: '',\n submittedFirstName: '',\n mandataires: [],\n beneficiairesEffectifs: [],\n compareTargets: [],\n personNodeId: '',\n siren: resolvedReferenceValue,\n sirenNodeId: referenceNodeId,\n isDoubleNotFound: result.errorCode === 'NOT_FOUND_RNE_RNA',\n });\n setPhase('not_found');\n\n } else if (result.isVerified || result.status === 'ok') {\n setPhase('success');\n setTimeout(onNext, 1200);\n\n } else if (result.status === 'config_error') {\n setPhase('success');\n setTimeout(onNext, 800);\n\n } else {\n setPhase('error');\n setTimeout(onNext, 1500);\n }\n };\n\n run();\n return () => abortController.abort();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // ─── Navigation helper ────────────────────────────────────────────────────\n\n const handleCorrect = () => {\n if (phase === 'mismatch' && errorScreenData?.personNodeId && onNavigateToNode) {\n onNavigateToNode(errorScreenData.personNodeId);\n } else if (phase === 'not_found' && errorScreenData?.sirenNodeId && onNavigateToNode) {\n onNavigateToNode(errorScreenData.sirenNodeId);\n } else {\n onPrevious();\n }\n };\n\n // ─── Loading phase ─────────────────────────────────────────────────────────\n\n if (phase === 'loading') {\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n <div className=\"flex-1 px-4 py-6 pt-11 md:px-8 md:py-8\">\n <div className=\"w-full max-w-md mx-auto space-y-6\">\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">\n {t('verification_node.verifying_title', 'Vérification en cours…')}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {t('verification_node.verifying_desc', 'Nous vérifions vos informations. Cela peut prendre quelques instants.')}\n </Subtitle>\n </div>\n <div className=\"w-full flex justify-center\">\n <div className=\"space-y-5\">\n {steps.map((step, index) => (\n <div key={index} className=\"flex items-start\">\n <div className=\"mr-4 mt-1 flex-shrink-0\">\n {step.status === 'done' ? (\n <div className=\"flex items-center justify-center w-6 h-6 rounded-full bg-[#11E5C5] text-white text-xs\">✓</div>\n ) : step.status === 'active' ? (\n <div className=\"w-6 h-6 rounded-full border-2 border-t-[#11E5C5] border-r-[#11E5C5] border-b-[#11E5C5] border-l-transparent animate-spin\" />\n ) : (\n <div className=\"w-6 h-6 rounded-full border-2 border-gray-300\" />\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-medium text-[#3C3C40] text-sm\">{step.title}</p>\n <p className=\"text-xs text-gray-500 mt-1\">{step.subtitle}</p>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // ─── Success phase ─────────────────────────────────────────────────────────\n\n if (phase === 'success') {\n return (\n <div className=\"flex flex-col items-center justify-center h-full px-6 py-8 text-center space-y-4\">\n <img src={checkIcon} alt=\"success\" className=\"w-24 h-24\" />\n <h3 className=\"text-[#3C3C40] font-poppins text-xl font-bold\">\n {t('inpi_verification.success_title', 'Vérification réussie')}\n </h3>\n <p className=\"text-gray-500 text-sm\">\n {t('inpi_verification.success_desc', \"Passage à l'étape suivante…\")}\n </p>\n </div>\n );\n }\n\n // ─── Mismatch phase ────────────────────────────────────────────────────────\n\n if (phase === 'mismatch') {\n const d = errorScreenData;\n const showBeneficiaires =\n d?.compareTargets?.includes('beneficiairesEffectifs') && (d?.beneficiairesEffectifs?.length ?? 0) > 0;\n const showMandataires =\n (!d?.compareTargets?.length || d?.compareTargets?.includes('mandataires')) &&\n (d?.mandataires?.length ?? 0) > 0;\n const isRna = d?.source === 'RNA';\n const personListLabel = isRna\n ? t('inpi_verification.dirigeants_label', 'Dirigeants renseignés au RNA')\n : d?.compareTargets?.includes('beneficiairesEffectifs') && !d?.compareTargets?.includes('mandataires')\n ? t('inpi_verification.beneficiaires_label', 'Bénéficiaires effectifs renseignés au RNE')\n : d?.compareTargets?.includes('mandataires') && !d?.compareTargets?.includes('beneficiairesEffectifs')\n ? t('inpi_verification.mandataires_label', 'Mandataires renseignés au RNE')\n : t('inpi_verification.persons_label', 'Personnes renseignées au RNE');\n\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n <div className=\"flex-1 px-4 py-6 pt-11 md:px-8 md:py-8\">\n <div className=\"w-full max-w-md mx-auto space-y-6\">\n\n {/* Icon */}\n <div className=\"text-center\">\n <div className=\"mx-auto w-16 h-16 bg-red-100 rounded-full flex items-center justify-center mb-4\">\n <div className=\"w-8 h-8 bg-red-500 rounded-full flex items-center justify-center\">\n <span className=\"text-white text-lg\">✕</span>\n </div>\n </div>\n </div>\n\n {/* Header */}\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl text-red-600\">\n {t('inpi_verification.mismatch_title', 'Identité non confirmée')}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {d?.targetDenomination\n ? t(\n 'inpi_verification.mismatch_desc_denomination',\n `Le responsable légal saisi ne fait pas partie des responsables légaux ou bénéficiaires effectifs de la société ${d.targetDenomination}`,\n )\n : t(\n 'inpi_verification.mismatch_desc',\n \"Les informations saisies ne correspondent à aucune personne déclarée à l'INPI pour cette société.\",\n )}\n </Subtitle>\n </div>\n\n {/* Submitted identity card */}\n {d && (d.submittedLastName || d.submittedFirstName || d.submittedSiren) && (\n <div className=\"bg-red-50 border border-red-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-red-900 mb-2\">\n {t('errors.problems_detected', 'Problèmes détectés')}\n </h3>\n <div className=\"text-sm text-red-800 space-y-1\">\n {d.submittedSiren && (\n <p>\n {t('inpi_verification.submitted_siren', 'SIREN saisi')}\n {' : '}\n <strong>{d.submittedSiren}</strong>\n </p>\n )}\n {d.submittedLastName && (\n <p>\n {t('inpi_verification.submitted_last_name', 'Nom saisi')}\n {' : '}\n <strong>{d.submittedLastName}</strong>\n </p>\n )}\n {d.submittedFirstName && (\n <p>\n {t('inpi_verification.submitted_first_name', 'Prénom saisi')}\n {' : '}\n <strong>{d.submittedFirstName}</strong>\n </p>\n )}\n </div>\n </div>\n )}\n\n {/* INPI persons card */}\n {(showMandataires || showBeneficiaires) && (\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-blue-900 mb-2\">{personListLabel}</h3>\n <div className=\"text-sm text-blue-800 space-y-1\">\n {showMandataires && d!.mandataires.map((m, i) => (\n <p key={`m-${i}`}>\n {m.type === 'personne_morale' ? (\n <>\n <strong>{m.denominationSociale ?? '—'}</strong>\n {m.siren && ` (SIREN ${m.siren})`}\n </>\n ) : (\n <>\n <strong>{m.nom ?? '—'}</strong>\n {(m.prenoms ?? []).length > 0 && ` ${m.prenoms!.join(' ')}`}\n </>\n )}\n </p>\n ))}\n {showBeneficiaires && d!.beneficiairesEffectifs.map((b, i) => (\n <p key={`b-${i}`}>\n <strong>{b.nom ?? '—'}</strong>\n {(b.prenoms ?? []).length > 0 && ` ${b.prenoms!.join(' ')}`}\n </p>\n ))}\n </div>\n </div>\n )}\n\n </div>\n </div>\n\n {/* Footer */}\n <div className=\"sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8\">\n <div className=\"w-full max-w-md mx-auto\">\n <div className=\"flex flex-col space-y-3 md:hidden\">\n <Button variant=\"secondary\" onClick={handleCorrect} data-cy=\"inpi-mismatch-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n {allowContinueOnFailure && (\n <Button onClick={onNext} data-cy=\"inpi-mismatch-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n )}\n </div>\n <div className=\"hidden md:flex justify-center space-x-3\">\n <Button variant=\"secondary\" onClick={handleCorrect} data-cy=\"inpi-mismatch-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n {allowContinueOnFailure && (\n <Button onClick={onNext} data-cy=\"inpi-mismatch-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // ─── Not found phase ───────────────────────────────────────────────────────\n\n if (phase === 'not_found') {\n const d = errorScreenData;\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n <div className=\"flex-1 px-4 py-6 pt-11 md:px-8 md:py-8\">\n <div className=\"w-full max-w-md mx-auto space-y-6\">\n\n {/* Icon */}\n <div className=\"text-center\">\n <div className=\"mx-auto w-16 h-16 bg-orange-100 rounded-full flex items-center justify-center mb-4\">\n <div className=\"w-8 h-8 bg-orange-500 rounded-full flex items-center justify-center\">\n <span className=\"text-white text-lg font-bold\">!</span>\n </div>\n </div>\n </div>\n\n {/* Header */}\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl text-orange-600\">\n {t('inpi_verification.not_found_title', 'Société introuvable')}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {t(\n 'inpi_verification.not_found_desc',\n \"Le numéro saisi ne correspond à aucune société enregistrée dans le Registre National des Entreprises.\",\n )}\n </Subtitle>\n {/* Signal de rejet explicite — une société introuvable n'est plus\n traitée comme un succès silencieux (code 2.6). */}\n <span className=\"inline-block rounded-full bg-red-100 px-3 py-1 text-xs font-semibold text-red-700\">\n {t('inpi_verification.not_found_rejected_label', 'Dossier rejeté')}\n </span>\n </div>\n\n {/* Details card */}\n <div className=\"bg-orange-50 border border-orange-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-orange-900 mb-2\">\n {t('errors.problems_detected', 'Problèmes détectés')}\n </h3>\n <div className=\"text-sm text-orange-800 space-y-1\">\n {d?.siren && (\n <p>\n {t('inpi_verification.siren_label', 'SIREN')}\n {' : '}\n <strong>{d.siren}</strong>\n </p>\n )}\n <p>\n {d?.isDoubleNotFound\n ? t(\n 'inpi_verification.not_found_detail_rne_rna',\n \"Aucune société ni association trouvée, ni dans le Registre National des Entreprises (RNE), ni dans le Répertoire National des Associations (RNA).\",\n )\n : t('inpi_verification.not_found_detail', 'Aucune société trouvée dans le Registre National des Entreprises.')}\n </p>\n </div>\n </div>\n\n </div>\n </div>\n\n {/* Footer */}\n <div className=\"sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8\">\n <div className=\"w-full max-w-md mx-auto\">\n <div className=\"flex flex-col space-y-3 md:hidden\">\n <Button variant=\"secondary\" onClick={handleCorrect} data-cy=\"inpi-not-found-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n {allowContinueOnFailure && (\n <Button onClick={onNext} data-cy=\"inpi-not-found-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n )}\n </div>\n <div className=\"hidden md:flex justify-center space-x-3\">\n <Button variant=\"secondary\" onClick={handleCorrect} data-cy=\"inpi-not-found-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n {allowContinueOnFailure && (\n <Button onClick={onNext} data-cy=\"inpi-not-found-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // ─── Error / fallback ─────────────────────────────────────────────────────\n\n return (\n <LoadingState\n message={t('verification_node.verifying_title', 'Vérification en cours…')}\n subtitle={t('verification_node.verifying_desc', 'Vérification en cours…')}\n />\n );\n};\n\nexport default ExternalVerificationNodeHandler;\n"],"names":["__spreadArray","useTranslation","sdkI18n","useState","__assign","useEffect","__awaiter","apiService","_jsx","_jsxs","Title","Subtitle","checkIcon","_Fragment","Button","LoadingState"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"userInputForm.js","sources":["../../../../src/constants/userInputForm.ts"],"sourcesContent":["import type {\n AddressSuggestion,\n InformationType,\n RequestedFieldKey,\n SelectOption,\n} from \"../types/userInputForm\";\n\nconst days = Array.from({ length: 31 }, (_, index) => index + 1);\nconst currentYear = new Date().getFullYear();\nconst years = Array.from({ length: 120 }, (_, index) => currentYear - index);\n\nconst monthLabels = [\n \"Janvier\",\n \"Février\",\n \"Mars\",\n \"Avril\",\n \"Mai\",\n \"Juin\",\n \"Juillet\",\n \"Août\",\n \"Septembre\",\n \"Octobre\",\n \"Novembre\",\n \"Décembre\",\n];\n\nexport const DAY_OPTIONS: SelectOption[] = days.map((value) => ({\n value: String(value).padStart(2, \"0\"),\n label: String(value).padStart(2, \"0\"),\n}));\n\nexport const MONTH_OPTIONS: SelectOption[] = monthLabels.map(\n (label, index) => ({\n value: String(index + 1).padStart(2, \"0\"),\n label,\n })\n);\n\nexport const YEAR_OPTIONS: SelectOption[] = years.map((value) => ({\n value: String(value),\n label: String(value),\n}));\n\n\nexport const ADDRESS_SUGGESTIONS: string[] = [\n \"10 Rue de Rivoli, 75001 Paris, France\",\n \"221B Baker Street, NW1 6XE Londres, Royaume-Uni\",\n \"1600 Amphitheatre Parkway, 94043 Mountain View, États-Unis\",\n \"55 Rue du Faubourg Saint-Honoré, 75008 Paris, France\",\n \"1 Place du Commerce, 44000 Nantes, France\",\n \"Piazza del Colosseo 1, 00184 Rome, Italie\",\n \"Av. Paulista 1578, 01310-200 São Paulo, Brésil\",\n];\n\nexport const DEFAULT_FIELDS: Record<InformationType, RequestedFieldKey[]> = {\n identity: [\"nom\", \"prenom\", \"date_naissance\"],\n \"identity-legal\": [\"nom\", \"registrationNumber\", \"siret\", \"tva\", \"adresse\"],\n \"identity-legal-rep\": [\"legalRepresentativeNom\", \"legalRepresentativePrenom\"],\n contact: [\"email\", \"sms\"],\n address: [\"adresse\"],\n nationality: [\"nationalite\"],\n custom: [], // Custom forms use customFields instead\n};\n\nexport const FIELD_LABELS: Record<RequestedFieldKey, string> = {\n nom: \"user_input_form.fields.last_name\",\n prenom: \"user_input_form.fields.first_name\",\n date_naissance: \"user_input_form.fields.birth_date\",\n email: \"user_input_form.fields.email\",\n sms: \"user_input_form.fields.phone\",\n adresse: \"user_input_form.fields.address_line1\",\n nationalite: \"user_input_form.fields.nationality\",\n company: \"user_input_form.fields.company_name\",\n siret: \"user_input_form.fields.siret\",\n tva: \"user_input_form.fields.vat_number\",\n registrationNumber: \"user_input_form.fields.registration_number\",\n legalRepresentativeNom:\n \"user_input_form.fields.legal_representative_last_name\",\n legalRepresentativePrenom:\n \"user_input_form.fields.legal_representative_first_name\",\n};\n\n// Backend endpoint pour l'autocomplétion d'adresses (sécurisé)\nexport const GEOCODING_AUTOCOMPLETE_ENDPOINT = \"/geocoding/autocomplete\";\n\nexport const FALLBACK_ADDRESS_SUGGESTIONS: AddressSuggestion[] =\n ADDRESS_SUGGESTIONS.map((label, index) => ({\n id: `fallback-${index}`,\n label,\n addressLine1: label,\n postalCode: \"\",\n city: \"\",\n country: \"\",\n }));\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"userInputForm.js","sources":["../../../../src/constants/userInputForm.ts"],"sourcesContent":["import type {\n AddressSuggestion,\n InformationType,\n RequestedFieldKey,\n SelectOption,\n} from \"../types/userInputForm\";\n\nconst days = Array.from({ length: 31 }, (_, index) => index + 1);\nconst currentYear = new Date().getFullYear();\nconst years = Array.from({ length: 120 }, (_, index) => currentYear - index);\n\nconst monthLabels = [\n \"Janvier\",\n \"Février\",\n \"Mars\",\n \"Avril\",\n \"Mai\",\n \"Juin\",\n \"Juillet\",\n \"Août\",\n \"Septembre\",\n \"Octobre\",\n \"Novembre\",\n \"Décembre\",\n];\n\nexport const DAY_OPTIONS: SelectOption[] = days.map((value) => ({\n value: String(value).padStart(2, \"0\"),\n label: String(value).padStart(2, \"0\"),\n}));\n\nexport const MONTH_OPTIONS: SelectOption[] = monthLabels.map(\n (label, index) => ({\n value: String(index + 1).padStart(2, \"0\"),\n label,\n })\n);\n\nexport const YEAR_OPTIONS: SelectOption[] = years.map((value) => ({\n value: String(value),\n label: String(value),\n}));\n\n\nexport const ADDRESS_SUGGESTIONS: string[] = [\n \"10 Rue de Rivoli, 75001 Paris, France\",\n \"221B Baker Street, NW1 6XE Londres, Royaume-Uni\",\n \"1600 Amphitheatre Parkway, 94043 Mountain View, États-Unis\",\n \"55 Rue du Faubourg Saint-Honoré, 75008 Paris, France\",\n \"1 Place du Commerce, 44000 Nantes, France\",\n \"Piazza del Colosseo 1, 00184 Rome, Italie\",\n \"Av. Paulista 1578, 01310-200 São Paulo, Brésil\",\n];\n\nexport const DEFAULT_FIELDS: Record<InformationType, RequestedFieldKey[]> = {\n identity: [\"nom\", \"prenom\", \"date_naissance\"],\n \"identity-legal\": [\"nom\", \"registrationNumber\", \"siret\", \"tva\", \"adresse\"],\n \"identity-legal-rep\": [\"legalRepresentativeNom\", \"legalRepresentativePrenom\"],\n contact: [\"email\", \"sms\"],\n address: [\"adresse\"],\n nationality: [\"nationalite\"],\n custom: [], // Custom forms use customFields instead\n};\n\nexport const FIELD_LABELS: Record<RequestedFieldKey, string> = {\n nom: \"user_input_form.fields.last_name\",\n prenom: \"user_input_form.fields.first_name\",\n date_naissance: \"user_input_form.fields.birth_date\",\n email: \"user_input_form.fields.email\",\n sms: \"user_input_form.fields.phone\",\n adresse: \"user_input_form.fields.address_line1\",\n nationalite: \"user_input_form.fields.nationality\",\n company: \"user_input_form.fields.company_name\",\n siret: \"user_input_form.fields.siret\",\n tva: \"user_input_form.fields.vat_number\",\n registrationNumber: \"user_input_form.fields.registration_number\",\n legalRepresentativeNom:\n \"user_input_form.fields.legal_representative_last_name\",\n legalRepresentativePrenom:\n \"user_input_form.fields.legal_representative_first_name\",\n legalRepresentativeSiren:\n \"user_input_form.fields.legal_representative_siren\",\n};\n\n// Backend endpoint pour l'autocomplétion d'adresses (sécurisé)\nexport const GEOCODING_AUTOCOMPLETE_ENDPOINT = \"/geocoding/autocomplete\";\n\nexport const FALLBACK_ADDRESS_SUGGESTIONS: AddressSuggestion[] =\n ADDRESS_SUGGESTIONS.map((label, index) => ({\n id: `fallback-${index}`,\n label,\n addressLine1: label,\n postalCode: \"\",\n city: \"\",\n country: \"\",\n }));\n"],"names":[],"mappings":"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"}