# Исправление ошибки в Code1: mapDialogHistory ## Проблема **Ошибка:** ``` Cannot read properties of null (reading 'map') [line 69] ``` **Причина:** Функция `mapDialogHistory` получает `null` вместо массива, когда `src.dialog_history` равен `null`. ## Исправление ### Текущий код (строка 69): ```javascript function mapDialogHistory(h = []) { return h.map(m => ({ id: toNullish(m.id), role: toNullish(m.role), message: toNullish(m.message), message_type: toNullish(m.message_type), tg_message_id: toNullish(m.tg_message_id), created_at: toNullish(m.created_at), })); } ``` ### Исправленный код: ```javascript function mapDialogHistory(h = []) { // Проверяем, что h не null и является массивом if (!h || !Array.isArray(h)) return []; return h.map(m => ({ id: toNullish(m.id), role: toNullish(m.role), message: toNullish(m.message), message_type: toNullish(m.message_type), tg_message_id: toNullish(m.tg_message_id), created_at: toNullish(m.created_at), })); } ``` ## Альтернативное решение Можно также исправить в месте вызова: ```javascript // В функции normalizeOne, строка ~172 dialog_history: mapDialogHistory(src.dialog_history || []), ``` Но лучше исправить саму функцию, чтобы она была более устойчивой. ## Полный исправленный код функции mapDialogHistory ```javascript function mapDialogHistory(h = []) { // Проверяем, что h не null и является массивом if (!h || !Array.isArray(h)) return []; return h.map(m => ({ id: toNullish(m.id), role: toNullish(m.role), message: toNullish(m.message), message_type: toNullish(m.message_type), tg_message_id: toNullish(m.tg_message_id), created_at: toNullish(m.created_at), })); } ``` ## Почему это происходит Когда SQL запрос в ноде `give_data1` возвращает `null` для `dialog_history` (если нет записей в `clpr_dialog_history_tg`), функция `mapDialogHistory` получает `null` вместо массива. PostgreSQL `jsonb_agg` возвращает `null`, если нет строк для агрегации, а не пустой массив `[]`. ## Дополнительные проверки Можно также добавить проверки для других функций, которые работают с массивами: ```javascript function mapDocuments(docs = []) { if (!docs || !Array.isArray(docs)) return []; return docs.map(d => ({...})); } function mapVisionDocs(vds = []) { if (!vds || !Array.isArray(vds)) return []; return vds.map(v => ({...})); } function mapCombinedDocs(cds = []) { if (!cds || !Array.isArray(cds)) return []; return cds.map(c => ({...})); } ``` Но для `mapDialogHistory` это критично, т.к. она вызывается первой и падает.