From 29a9fe753288c69353423e9410c0c7e7ce4fe896 Mon Sep 17 00:00:00 2001 From: AI Assistant Date: Mon, 24 Nov 2025 16:42:16 +0300 Subject: [PATCH] fix: Use payload.send_to_form_approve.draft data directly instead of converting Problem: - Data already exists in DB in propertyName format at payload.send_to_form_approve.draft - We were trying to convert from wizard_answers instead of using existing data - Form was empty because we ignored the correct data structure Solution: 1. Added priority check for payload.send_to_form_approve.draft: - If exists, use it directly (PRIORITY 1) - If not, fall back to conversion from wizard_answers (PRIORITY 2) 2. Direct usage of send_to_form_approve.draft: - Extract propertyName structure directly from draft - Preserve all fields: applicant, case, contract_or_service, offenders, claim, meta, attachments - Use unified_id from draft.meta or fallback to claim/formData 3. Enhanced logging: - Logs if send_to_form_approve.draft found - Logs draft data structure - Logs result structure Files: - frontend/src/pages/ClaimForm.tsx: Use send_to_form_approve.draft directly --- frontend/src/pages/ClaimForm.tsx | 49 ++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/frontend/src/pages/ClaimForm.tsx b/frontend/src/pages/ClaimForm.tsx index d37d974..94349e6 100644 --- a/frontend/src/pages/ClaimForm.tsx +++ b/frontend/src/pages/ClaimForm.tsx @@ -295,10 +295,59 @@ export default function ClaimForm() { hasCaseData: !!(body.case || payload.case), hasContractData: !!(body.contract_or_service || payload.contract_or_service), hasWizardAnswers: !!(body.answers || payload.answers || body.wizard_answers || payload.wizard_answers), + hasSendToFormApprove: !!(payload.send_to_form_approve && payload.send_to_form_approve.draft), payloadKeys: Object.keys(payload), bodyKeys: Object.keys(body), }); + // ✅ ПРИОРИТЕТ 1: Если есть данные в payload.send_to_form_approve.draft - используем их напрямую! + const sendToFormApproveDraft = payload.send_to_form_approve?.draft; + if (sendToFormApproveDraft) { + console.log('✅ Найдены данные в payload.send_to_form_approve.draft, используем их напрямую!'); + console.log('✅ send_to_form_approve.draft:', sendToFormApproveDraft); + + // Используем данные из send_to_form_approve.draft напрямую + const draftData = sendToFormApproveDraft; + + // Формируем propertyName из draft данных + const propertyName = { + applicant: draftData.applicant || {}, + case: draftData.case || {}, + contract_or_service: draftData.contract_or_service || {}, + offenders: draftData.offenders || [], + claim: draftData.claim || {}, + meta: { + ...(draftData.meta || {}), + claim_id: finalClaimId, + unified_id: draftData.meta?.unified_id || claim.unified_id || currentFormData.unified_id || null, + }, + attachments: draftData.attachments || [], + attachments_count: draftData.attachments_count || 0, + attachments_names: draftData.attachments_names || [], + }; + + // Возвращаем данные в формате объекта (для компонента StepClaimConfirmation) + const result = { + propertyName: propertyName, + session_token: actualSessionId, + prefix: '', + telegram_id: null, + claim_id: finalClaimId, + unified_id: propertyName.meta.unified_id, + user_id: propertyName.meta.user_id || null, + }; + + console.log('🔄 transformDraftToClaimPlanFormat: результат из send_to_form_approve:', { + claim_id: result.claim_id, + unified_id: result.unified_id, + hasPropertyName: !!result.propertyName, + hasMeta: !!result.propertyName?.meta, + }); + + return result; + } + + // ✅ ПРИОРИТЕТ 2: Если данных нет в send_to_form_approve, извлекаем из body/payload // Извлекаем данные из body (telegram) или напрямую из payload (web_form) const applicantData = body.applicant || payload.applicant || {}; const caseData = body.case || payload.case || {};