80 lines
3.1 KiB
MySQL
80 lines
3.1 KiB
MySQL
|
|
-- ============================================================================
|
|||
|
|
-- 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';
|
|||
|
|
|