Задача Разобраться почему через n8n не корректно выполняется запрос
Разобраться почему через n8n не корректно выполняется запрос
Ситуация по своей сути довольно классическая, но от этого не становится автоматически очень простой, потому что это это из серии не технических ошибок, а логически.
Симптомы следующие: напрямую через GraphQL API запрос отрабатывает корректно и приходят данные, а из n8n нет. И это очень странно, потому что по задумке API не должно зависеть от того, откуда выполняется запрос. А тут нет никакиъ ошибок, но ответ приходит - пустой массив. То есть это не ошибка, это просто отсутствие данных. И вот это категорически нарушает закладываемые принципы.
Ворклоги
Прописал сразу два запроса в одном
query timers {
me {
id
}
timers(orderBy: { createdAt: desc }, take: 10) {
id
startedAt
stoppedAt
Task {
id
title
content
projectId
WorkLogs {
id
content
}
}
}
}
Результат:
[
{
"data": {
"me": {
"id": "cmkpoyglm0000qm0ope3f11"
},
"timers": []
}
}
]
Вот это и есть странно. То есть данные пользователя получает, а таймеры нет. Предполагаю, что ИИ-агент где-то завайбкодил какое-то ненужное условие.
Так и есть. Вот она красота:
if (currentUser && !currentUser.sudo) {
result.createdById = currentUser.id
}
Вот чем ИИ думал, когда программировал такое? От этого и магия возникла: агент выполняет запрос таймеров, и ему пустой массив в ответ. Я выполняю этот же запрос, и мне есть данные. Убираю токен авторизации, то есть выполняю этот запрос анонимно - данные тоже есть, то есть каких-то политик безопасности специальных не настроено (а они и не должны были быть, потому что это публичные данные). И тут он вшивает условие, что если ты не акторизован, то на тебе вообще все, а если авторизован и не судо, то тогда тебе только твои данные. То есть один и тот же запрос с одними и теми же данными возвращает разный набор данных в зависимости От. Если бы у этого ИИ были бы руки, я бы их поотшибал.