feat: Add wizard_answers to propertyName conversion mapping
Problem: - Data comes from DB in wizard_answers format (answers to wizard questions) - Form confirmation expects propertyName format (structured data: applicant, case, contract_or_service) - transformDraftToClaimPlanFormat tried to extract propertyName data from DB, but it doesn't exist there - Form shows empty because propertyName structure is empty Solution: 1. Added wizard_answers parsing from multiple sources: - body.answers, payload.answers - body.wizard_answers, payload.wizard_answers 2. Added basic field mapping from wizard_answers to propertyName: - answersParsed.item → contract_or_service.subject - answersParsed.price → contract_or_service.amount_paid - answersParsed.place_date → contract_or_service.agreement_date - answersParsed.steps_taken → claim.description 3. Added logging to debug data flow: - Logs what data exists in DB - Logs wizard_answers parsing - Logs conversion process Note: This is a basic mapping. Full conversion requires complete field mapping from wizard_answers to propertyName structure. Files: - frontend/src/pages/ClaimForm.tsx: Added wizard_answers conversion
This commit is contained in:
@@ -290,6 +290,15 @@ export default function ClaimForm() {
|
||||
claimKeys: Object.keys(claim),
|
||||
});
|
||||
|
||||
console.log('🔄 Данные из БД:', {
|
||||
hasApplicantData: !!(body.applicant || payload.applicant),
|
||||
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),
|
||||
payloadKeys: Object.keys(payload),
|
||||
bodyKeys: Object.keys(body),
|
||||
});
|
||||
|
||||
// Извлекаем данные из body (telegram) или напрямую из payload (web_form)
|
||||
const applicantData = body.applicant || payload.applicant || {};
|
||||
const caseData = body.case || payload.case || {};
|
||||
@@ -300,7 +309,7 @@ export default function ClaimForm() {
|
||||
const documentsMeta = body.documents_meta || payload.documents_meta || [];
|
||||
|
||||
// Извлекаем ответы на вопросы из wizard_answers
|
||||
const wizardAnswers = body.answers || payload.answers || {};
|
||||
const wizardAnswers = body.answers || payload.answers || body.wizard_answers || payload.wizard_answers || {};
|
||||
let answersParsed = wizardAnswers;
|
||||
if (typeof wizardAnswers === 'string') {
|
||||
try {
|
||||
@@ -311,6 +320,37 @@ export default function ClaimForm() {
|
||||
}
|
||||
}
|
||||
|
||||
console.log('🔄 wizard_answers parsed:', answersParsed);
|
||||
|
||||
// Преобразуем wizard_answers в формат propertyName, если данных нет в propertyName формате
|
||||
// Маппинг полей из wizard_answers в propertyName структуру
|
||||
const hasPropertyNameData = !!(applicantData.first_name || applicantData.last_name || caseData.category || contractData.subject);
|
||||
|
||||
if (!hasPropertyNameData && answersParsed && Object.keys(answersParsed).length > 0) {
|
||||
console.log('🔄 Преобразуем wizard_answers в propertyName формат');
|
||||
|
||||
// Маппинг полей из wizard_answers
|
||||
// Например: answersParsed.item → contract_or_service.subject
|
||||
// answersParsed.price → contract_or_service.amount_paid
|
||||
// и т.д.
|
||||
|
||||
// Если есть данные в wizard_answers, используем их для заполнения propertyName
|
||||
if (answersParsed.item && !contractData.subject) {
|
||||
contractData.subject = answersParsed.item;
|
||||
}
|
||||
if (answersParsed.price && !contractData.amount_paid) {
|
||||
contractData.amount_paid = answersParsed.price;
|
||||
contractData.amount_paid_fmt = answersParsed.price;
|
||||
}
|
||||
if (answersParsed.place_date && !contractData.agreement_date) {
|
||||
// Можно попытаться распарсить дату из place_date
|
||||
contractData.agreement_date = answersParsed.place_date;
|
||||
}
|
||||
if (answersParsed.steps_taken && !claimData.description) {
|
||||
claimData.description = answersParsed.steps_taken;
|
||||
}
|
||||
}
|
||||
|
||||
// Формируем attachments_names из documents_meta
|
||||
const attachmentsNames = documentsMeta.map((doc: any) => {
|
||||
return doc.original_file_name || doc.file_name || doc.field_name || 'Документ';
|
||||
|
||||
Reference in New Issue
Block a user