- Исправлена потеря документов при обновлении черновика (SQL объединяет вместо перезаписи) - Исправлено определение типа документа (приоритет field_label над field_name) - Исправлены дубликаты в documents_meta и documents_uploaded - Добавлена передача group_index с фронтенда для правильного field_name - Исправлены все документы в таблице clpr_claim_documents с правильными field_name - Обновлены SQL запросы: claimsave и claimsave_final для нового флоу - Добавлена поддержка multi-file upload для одного документа - Исправлены дубликаты в списке загруженных документов на фронтенде Файлы: - SQL: SQL_CLAIMSAVE_FIXED_NEW_FLOW.sql, SQL_CLAIMSAVE_FINAL_FIXED_NEW_FLOW_WITH_UPLOADED.sql - n8n: N8N_CODE_PROCESS_UPLOADED_FILES_FIXED.js (поддержка group_index) - Backend: documents.py (передача group_index в n8n) - Frontend: StepWizardPlan.tsx (передача group_index, исправление дубликатов) - Скрипты: fix_claim_documents_field_names.py, fix_documents_meta_duplicates.py Результат: документы больше не теряются, имеют правильные типы и field_name
80 lines
3.1 KiB
SQL
80 lines
3.1 KiB
SQL
-- ============================================================================
|
||
-- SQL для исправления черновика bddb6815-8e17-4d54-a721-5e94382942c7
|
||
-- ============================================================================
|
||
-- Проблема: У черновика нет documents_required и неправильный статус
|
||
-- Решение: Добавляем documents_required и устанавливаем правильный статус
|
||
-- ============================================================================
|
||
|
||
UPDATE clpr_claims
|
||
SET
|
||
status_code = CASE
|
||
-- Если документы уже загружены - ставим draft_docs_progress или draft_docs_complete
|
||
WHEN jsonb_array_length(COALESCE(payload->'documents_uploaded', '[]'::jsonb)) > 0
|
||
THEN CASE
|
||
WHEN jsonb_array_length(COALESCE(payload->'documents_uploaded', '[]'::jsonb)) >= 4
|
||
THEN 'draft_docs_complete'
|
||
ELSE 'draft_docs_progress'
|
||
END
|
||
-- Если документов нет - ставим draft_new
|
||
ELSE 'draft_new'
|
||
END,
|
||
|
||
-- Добавляем documents_required в payload
|
||
payload = jsonb_set(
|
||
COALESCE(payload, '{}'::jsonb),
|
||
'{documents_required}',
|
||
'[
|
||
{
|
||
"id": "contract",
|
||
"name": "Договор или заказ",
|
||
"hints": "Фото или скан подписанного договора или квитанции",
|
||
"accept": ["pdf", "jpg", "png"],
|
||
"priority": 1,
|
||
"required": true
|
||
},
|
||
{
|
||
"id": "payment",
|
||
"name": "Чек или подтверждение оплаты",
|
||
"hints": "Копия кассового чека, онлайн-платежа или квитанции",
|
||
"accept": ["pdf", "jpg", "png"],
|
||
"priority": 1,
|
||
"required": true
|
||
},
|
||
{
|
||
"id": "correspondence",
|
||
"name": "Переписка",
|
||
"hints": "Скриншоты сообщений, писем, жалоб",
|
||
"accept": ["pdf", "jpg", "png"],
|
||
"priority": 2,
|
||
"required": false
|
||
},
|
||
{
|
||
"id": "evidence_photo",
|
||
"name": "Фото доказательства",
|
||
"hints": "Фото дефектов товара, видео процесса ремонта или передачи",
|
||
"accept": ["jpg", "png", "pdf"],
|
||
"priority": 2,
|
||
"required": false
|
||
}
|
||
]'::jsonb,
|
||
true
|
||
),
|
||
|
||
updated_at = now()
|
||
|
||
WHERE id::text = 'bddb6815-8e17-4d54-a721-5e94382942c7'
|
||
OR payload->>'claim_id' = 'bddb6815-8e17-4d54-a721-5e94382942c7';
|
||
|
||
-- Проверяем результат
|
||
SELECT
|
||
id::text,
|
||
status_code,
|
||
payload->>'claim_id' as claim_id,
|
||
jsonb_array_length(COALESCE(payload->'documents_required', '[]'::jsonb)) as docs_required_count,
|
||
jsonb_array_length(COALESCE(payload->'documents_uploaded', '[]'::jsonb)) as docs_uploaded_count,
|
||
payload->'documents_required'->0->>'name' as first_doc_name
|
||
FROM clpr_claims
|
||
WHERE id::text = 'bddb6815-8e17-4d54-a721-5e94382942c7'
|
||
OR payload->>'claim_id' = 'bddb6815-8e17-4d54-a721-5e94382942c7';
|
||
|