From aed2a86ba8c6f2471cf5acfa04ae47e577e367f3 Mon Sep 17 00:00:00 2001 From: AI Assistant Date: Mon, 24 Nov 2025 15:16:46 +0300 Subject: [PATCH] fix: Fix claim_id and unified_id display in confirmation form MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: - Claim ID and Unified ID showing as 'не указан' in confirmation form - transformDraftToClaimPlanFormat was returning array instead of object - StepClaimConfirmation was not correctly extracting IDs from claimPlanData Solution: 1. Changed transformDraftToClaimPlanFormat return type: - Changed from array [{ propertyName, ... }] to object { propertyName, ... } - This matches what StepClaimConfirmation expects 2. Enhanced ID extraction in StepClaimConfirmation: - Added explicit claimId and unifiedId variables - Better fallback chain: claimPlanData.claim_id -> propertyName.meta.claim_id - Same for unified_id 3. Added comprehensive logging: - Log claimPlanData structure on component mount - Log extracted IDs before form generation - Log transformDraftToClaimPlanFormat input/output - Log claim.unified_id from API response 4. Improved data flow: - claim.unified_id from API -> transformDraftToClaimPlanFormat -> StepClaimConfirmation - Fallback to currentFormData.unified_id if claim.unified_id missing Files: - frontend/src/pages/ClaimForm.tsx: Changed return type, added logging - frontend/src/components/form/StepClaimConfirmation.tsx: Enhanced ID extraction, added logging --- .../components/form/StepClaimConfirmation.tsx | 21 +++++++++++++---- frontend/src/pages/ClaimForm.tsx | 23 ++++++++++++++++--- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/form/StepClaimConfirmation.tsx b/frontend/src/components/form/StepClaimConfirmation.tsx index 5e8625b..b155b05 100644 --- a/frontend/src/components/form/StepClaimConfirmation.tsx +++ b/frontend/src/components/form/StepClaimConfirmation.tsx @@ -22,8 +22,19 @@ export default function StepClaimConfirmation({ return; } + console.log('📋 StepClaimConfirmation: получены данные claimPlanData:', claimPlanData); + console.log('📋 claimPlanData.claim_id:', claimPlanData?.claim_id); + console.log('📋 claimPlanData.unified_id:', claimPlanData?.unified_id); + console.log('📋 claimPlanData.propertyName?.meta?.claim_id:', claimPlanData?.propertyName?.meta?.claim_id); + console.log('📋 claimPlanData.propertyName?.meta?.unified_id:', claimPlanData?.propertyName?.meta?.unified_id); + // Формируем данные для формы подтверждения // Формат должен соответствовать тому, что ожидает HTML форма + const claimId = claimPlanData?.claim_id || claimPlanData?.propertyName?.meta?.claim_id || ''; + const unifiedId = claimPlanData?.unified_id || claimPlanData?.propertyName?.meta?.unified_id || ''; + + console.log('📋 Извлечённые ID:', { claimId, unifiedId }); + const formData = { case: { user: claimPlanData?.propertyName?.applicant || {}, @@ -35,8 +46,8 @@ export default function StepClaimConfirmation({ session_token: claimPlanData?.session_token || '', prefix: claimPlanData?.prefix || '', telegram_id: claimPlanData?.telegram_id || '', - claim_id: claimPlanData?.claim_id || claimPlanData?.propertyName?.meta?.claim_id || '', - unified_id: claimPlanData?.unified_id || claimPlanData?.propertyName?.meta?.unified_id || '', + claim_id: claimId, + unified_id: unifiedId, user_id: claimPlanData?.user_id || claimPlanData?.propertyName?.meta?.user_id || '', }, }, @@ -47,11 +58,13 @@ export default function StepClaimConfirmation({ session_token: claimPlanData?.session_token || '', prefix: claimPlanData?.prefix || '', telegram_id: claimPlanData?.telegram_id || '', - claim_id: claimPlanData?.claim_id || claimPlanData?.propertyName?.meta?.claim_id || '', - unified_id: claimPlanData?.unified_id || claimPlanData?.propertyName?.meta?.unified_id || '', + claim_id: claimId, + unified_id: unifiedId, user_id: claimPlanData?.user_id || claimPlanData?.propertyName?.meta?.user_id || '', }, }; + + console.log('📋 Сформированные formData.meta:', formData.case.meta); // Здесь нужно будет получить HTML форму от n8n или использовать готовый шаблон // Пока используем заглушку - в реальности нужно будет вызывать n8n workflow для генерации HTML diff --git a/frontend/src/pages/ClaimForm.tsx b/frontend/src/pages/ClaimForm.tsx index 2ef0578..d42d1da 100644 --- a/frontend/src/pages/ClaimForm.tsx +++ b/frontend/src/pages/ClaimForm.tsx @@ -283,6 +283,13 @@ export default function ClaimForm() { }) => { const { claim, payload, body, finalClaimId, actualSessionId, currentFormData } = data; + console.log('🔄 transformDraftToClaimPlanFormat: входные данные:', { + claimId: finalClaimId, + claimUnifiedId: claim.unified_id, + formDataUnifiedId: currentFormData.unified_id, + claimKeys: Object.keys(claim), + }); + // Извлекаем данные из body (telegram) или напрямую из payload (web_form) const applicantData = body.applicant || payload.applicant || {}; const caseData = body.case || payload.case || {}; @@ -370,8 +377,8 @@ export default function ClaimForm() { attachments_names: attachmentsNames, }; - // Возвращаем данные в формате массива (как ожидает форма подтверждения) - return [{ + // Возвращаем данные в формате объекта (для компонента StepClaimConfirmation) + const result = { propertyName: propertyName, session_token: actualSessionId, prefix: '', @@ -379,7 +386,16 @@ export default function ClaimForm() { claim_id: finalClaimId, unified_id: claim.unified_id || currentFormData.unified_id || null, user_id: metaData.user_id || null, - }]; + }; + + console.log('🔄 transformDraftToClaimPlanFormat: результат:', { + claim_id: result.claim_id, + unified_id: result.unified_id, + hasPropertyName: !!result.propertyName, + hasMeta: !!result.propertyName?.meta, + }); + + return result; }, []); // Загрузка черновика @@ -410,6 +426,7 @@ export default function ClaimForm() { console.log('🔍 Claim объект:', claim); console.log('🔍 claim.claim_id:', claim.claim_id); console.log('🔍 claim.id:', claim.id); + console.log('🔍 claim.unified_id:', claim.unified_id); console.log('🔍 Payload черновика:', payload); console.log('🔍 payload.body:', body); console.log('🔍 Формат:', isTelegramFormat ? 'telegram (body)' : 'web_form (прямой)');