fix: Fix claim_id and unified_id display in confirmation form

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
This commit is contained in:
AI Assistant
2025-11-24 15:16:46 +03:00
parent 1789dafce2
commit aed2a86ba8
2 changed files with 37 additions and 7 deletions

View File

@@ -22,8 +22,19 @@ export default function StepClaimConfirmation({
return; 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 форма // Формат должен соответствовать тому, что ожидает 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 = { const formData = {
case: { case: {
user: claimPlanData?.propertyName?.applicant || {}, user: claimPlanData?.propertyName?.applicant || {},
@@ -35,8 +46,8 @@ export default function StepClaimConfirmation({
session_token: claimPlanData?.session_token || '', session_token: claimPlanData?.session_token || '',
prefix: claimPlanData?.prefix || '', prefix: claimPlanData?.prefix || '',
telegram_id: claimPlanData?.telegram_id || '', telegram_id: claimPlanData?.telegram_id || '',
claim_id: claimPlanData?.claim_id || claimPlanData?.propertyName?.meta?.claim_id || '', claim_id: claimId,
unified_id: claimPlanData?.unified_id || claimPlanData?.propertyName?.meta?.unified_id || '', unified_id: unifiedId,
user_id: claimPlanData?.user_id || claimPlanData?.propertyName?.meta?.user_id || '', user_id: claimPlanData?.user_id || claimPlanData?.propertyName?.meta?.user_id || '',
}, },
}, },
@@ -47,11 +58,13 @@ export default function StepClaimConfirmation({
session_token: claimPlanData?.session_token || '', session_token: claimPlanData?.session_token || '',
prefix: claimPlanData?.prefix || '', prefix: claimPlanData?.prefix || '',
telegram_id: claimPlanData?.telegram_id || '', telegram_id: claimPlanData?.telegram_id || '',
claim_id: claimPlanData?.claim_id || claimPlanData?.propertyName?.meta?.claim_id || '', claim_id: claimId,
unified_id: claimPlanData?.unified_id || claimPlanData?.propertyName?.meta?.unified_id || '', unified_id: unifiedId,
user_id: claimPlanData?.user_id || claimPlanData?.propertyName?.meta?.user_id || '', user_id: claimPlanData?.user_id || claimPlanData?.propertyName?.meta?.user_id || '',
}, },
}; };
console.log('📋 Сформированные formData.meta:', formData.case.meta);
// Здесь нужно будет получить HTML форму от n8n или использовать готовый шаблон // Здесь нужно будет получить HTML форму от n8n или использовать готовый шаблон
// Пока используем заглушку - в реальности нужно будет вызывать n8n workflow для генерации HTML // Пока используем заглушку - в реальности нужно будет вызывать n8n workflow для генерации HTML

View File

@@ -283,6 +283,13 @@ export default function ClaimForm() {
}) => { }) => {
const { claim, payload, body, finalClaimId, actualSessionId, currentFormData } = data; 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) // Извлекаем данные из 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 || {};
@@ -370,8 +377,8 @@ export default function ClaimForm() {
attachments_names: attachmentsNames, attachments_names: attachmentsNames,
}; };
// Возвращаем данные в формате массива (как ожидает форма подтверждения) // Возвращаем данные в формате объекта (для компонента StepClaimConfirmation)
return [{ const result = {
propertyName: propertyName, propertyName: propertyName,
session_token: actualSessionId, session_token: actualSessionId,
prefix: '', prefix: '',
@@ -379,7 +386,16 @@ export default function ClaimForm() {
claim_id: finalClaimId, claim_id: finalClaimId,
unified_id: claim.unified_id || currentFormData.unified_id || null, unified_id: claim.unified_id || currentFormData.unified_id || null,
user_id: metaData.user_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);
console.log('🔍 claim.claim_id:', claim.claim_id); console.log('🔍 claim.claim_id:', claim.claim_id);
console.log('🔍 claim.id:', claim.id); console.log('🔍 claim.id:', claim.id);
console.log('🔍 claim.unified_id:', claim.unified_id);
console.log('🔍 Payload черновика:', payload); console.log('🔍 Payload черновика:', payload);
console.log('🔍 payload.body:', body); console.log('🔍 payload.body:', body);
console.log('🔍 Формат:', isTelegramFormat ? 'telegram (body)' : 'web_form (прямой)'); console.log('🔍 Формат:', isTelegramFormat ? 'telegram (body)' : 'web_form (прямой)');