# Структура documents_meta в SQL запросах ## Текущая структура после OCR объединения После обработки файлов OCR возвращает объединённые документы со следующей структурой: ```json { "documents_meta": [ { "field_name": "uploads[0][0]", "field_label": "Договор или заказ", "file_id": "clientright/0/1764167196926.pdf", "file_name": "1764167196926.pdf", "original_file_name": "1764167196926.pdf", "uploaded_at": "2025-11-26T14:44:51.430Z", "files_count": 2, // ✅ Новое поле: сколько файлов было объединено "pages": 4 // ✅ Новое поле: сколько страниц в объединённом PDF } ] } ``` ## Как SQL обрабатывает эту структуру ### 1. Сохранение в `clpr_claim_documents` SQL использует `jsonb_to_recordset` для извлечения только нужных полей: ```sql CROSS JOIN LATERAL jsonb_to_recordset( COALESCE(partial.p->'documents_meta', '[]'::jsonb) ) AS doc( field_name text, file_id text, file_name text, original_file_name text, uploaded_at text ) ``` **Важно:** `field_label`, `files_count`, `pages` не извлекаются, но это нормально - они не нужны в таблице `clpr_claim_documents`. ### 2. Сохранение в `payload->'documents_meta'` Полный JSON сохраняется в `payload` через `jsonb_build_object`: ```sql jsonb_build_object( 'claim_id', partial.claim_id_str, 'documents_meta', COALESCE(partial.p->'documents_meta', '[]'::jsonb), ... ) ``` **Результат:** Все поля (`field_label`, `files_count`, `pages`) сохраняются в `payload->'documents_meta'` в полном объёме. ## Проверка сохранения После выполнения SQL запроса можно проверить: ```sql SELECT payload->'documents_meta'->0->>'field_label' AS field_label, payload->'documents_meta'->0->>'files_count' AS files_count, payload->'documents_meta'->0->>'pages' AS pages FROM clpr_claims WHERE payload->>'claim_id' = 'bddb6815-8e17-4d54-a721-5e94382942c7'; ``` Должны вернуться: - `field_label`: "Договор или заказ" - `files_count`: "2" - `pages`: "4" ## Вывод ✅ **SQL запрос работает правильно** - дополнительные поля сохраняются в `payload->'documents_meta'` и доступны для использования в дальнейших операциях. ❌ **Не нужно менять SQL** - текущая структура достаточна для работы.