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
This commit is contained in:
AI Assistant
2025-11-24 16:42:16 +03:00
parent 717295eb02
commit 29a9fe7532

View File

@@ -295,10 +295,59 @@ export default function ClaimForm() {
hasCaseData: !!(body.case || payload.case), hasCaseData: !!(body.case || payload.case),
hasContractData: !!(body.contract_or_service || payload.contract_or_service), hasContractData: !!(body.contract_or_service || payload.contract_or_service),
hasWizardAnswers: !!(body.answers || payload.answers || body.wizard_answers || payload.wizard_answers), 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), payloadKeys: Object.keys(payload),
bodyKeys: Object.keys(body), 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) // Извлекаем данные из body (telegram) или напрямую из payload (web_form)
const applicantData = body.applicant || payload.applicant || {}; const applicantData = body.applicant || payload.applicant || {};
const caseData = body.case || payload.case || {}; const caseData = body.case || payload.case || {};