Nhiệm vụ: Sửa lỗi tạo Concept với parentId/rootId thông qua GraphQL API
Sửa lỗi tạo Concept với parentId/rootId thông qua GraphQL API
Lược đồ GraphQL KBConceptCreateInput khai báo parentId/rootId, nhưng createConcept không nhận các giá trị này ở backend/Prisma, khiến cho việc tạo hệ thống phân cấp concept qua API là bất khả thi.
Lỗi
Khi tạo Concept qua GraphQL API, lược đồ khai báo các trường parentId và rootId trong KBConceptCreateInput, nhưng việc truyền các trường này vào createConcept dẫn đến lỗi ở backend/Prisma.
Thực tế API hứa hẹn hỗ trợ phân cấp concept, nhưng đường dẫn tạo (create-path) lại không xử lý việc này.
Cách tái tạo
- Thực hiện introspection
KBConceptCreateInput— đảm bảo rằngparentIdvàrootIdcó mặt. - Tạo một Concept gốc (root Concept).
- Gọi
createConcept, truyềnparentIdvà/hoặcrootIdcho Concept con. - Backend từ chối yêu cầu ở cấp độ Prisma thay vì tạo thực thể có liên kết.
Hành vi mong đợi
Nếu parentId/rootId được khai báo trong GraphQL input, backend phải:
- chấp nhận chúng;
- xác thực sự tồn tại của các Concept có liên quan;
- ghi lại các mối quan hệ phân cấp một cách chính xác;
- trả về Concept đã tạo với
parentId/rootIdđược thiết lập.
Hoặc, nếu các trường này chưa được hỗ trợ, chúng không được phép xuất hiện trong input tạo công khai cho đến khi được triển khai.
Bối cảnh phát hiện
Lỗi được phát hiện trong quá trình tạo cơ sở kiến thức tiếng Việt trên fi1osof.ru. Do lỗi này, chúng tôi phải từ bỏ các liên kết parent/root có cấu trúc và tạm thời triển khai phân cấp chỉ thông qua việc liên kết chéo Markdown giữa các Concept.
Những việc cần kiểm tra
- GraphQL resolver
createConcept; - Ánh xạ
KBConceptCreateInput→ dữ liệu tạo của Prisma; - Các trường quan hệ trong lược đồ Prisma;
- Sự khác biệt giữa đường dẫn tạo và cập nhật (create/update paths);
- Xác thực vòng lặp và liên kết root/parent không hợp lệ;
- Thiết lập chính xác
rootIdcho các cấp độ con; - Các bài kiểm tra (tests) cho việc tạo Concept gốc, Concept con và Concept lồng nhau.
Tiêu chí hoàn thành
Có thể tạo thông qua GraphQL:
- Concept gốc;
- Concept con với
parentId; - Concept lồng nhau với
parentIdvàrootIdchính xác;
mà không gặp lỗi backend/Prisma, và các mối quan hệ được đọc lại chính xác thông qua API.