Задача: Исправить создание Concept с parentId/rootId через GraphQL API
Исправить создание Concept с parentId/rootId через GraphQL API
GraphQL-схема KBConceptCreateInput объявляет parentId/rootId, но createConcept не принимает их на backend/Prisma, из-за чего нельзя создавать иерархию концептов через API.
Баг
При создании Concept через GraphQL API схема декларирует поля parentId и rootId в KBConceptCreateInput, но передача этих полей в createConcept приводит к ошибке на backend/Prisma.
Фактически API обещает поддержку иерархии концептов, но create-path её не обрабатывает.
Как воспроизвести
- Выполнить introspection
KBConceptCreateInput— убедиться, чтоparentIdиrootIdприсутствуют. - Создать корневой Concept.
- Вызвать
createConcept, передав дочернему ConceptparentIdи/илиrootId. - Backend отклоняет запрос на уровне Prisma вместо создания связанной сущности.
Ожидаемое поведение
Если parentId/rootId объявлены в GraphQL input, backend должен:
- принимать их;
- валидировать существование связанных Concept;
- корректно записывать иерархические связи;
- возвращать созданный Concept с установленными
parentId/rootId.
Либо, если эти поля пока не поддерживаются, их нельзя объявлять в публичном create input до реализации.
Контекст обнаружения
Баг обнаружен при создании базы знаний по вьетнамскому языку на fi1osof.ru. Из-за него пришлось отказаться от структурных parent/root-связей и временно реализовать иерархию только через Markdown-перелинковку между Concept.
Что проверить
- GraphQL resolver
createConcept; - mapping
KBConceptCreateInput→ Prisma create data; - Prisma schema relation fields;
- отличие create/update путей;
- валидацию циклов и некорректных root/parent связей;
- корректную установку
rootIdдля дочерних уровней; - тесты создания корневого, дочернего и вложенного Concept.
Критерий готовности
Можно создать через GraphQL:
- корневой Concept;
- дочерний Concept с
parentId; - вложенный Concept с корректными
parentIdиrootId;
без backend/Prisma-ошибки, и связи корректно читаются обратно через API.