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:
@@ -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
|
||||
|
||||
@@ -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 (прямой)');
|
||||
|
||||
Reference in New Issue
Block a user