- Expédié
- 23 septembre 2026 à 02:17 UTC
- Auteur
- Kamo
- Commite
- 155e7de
buildPublicTreeIndex construit un petit indice structurel (parent/enfant, chemin de limace, ancêtres) à partir de chaque article public dans l'organisation, mais il chargeait des lignes KbO2 complète pour le faire inclus, mesuré à - 6,6 KB par ligne contre quelques centaines d'octets pour le reste d'une ligne combinée. L'indice de l'arbre et tout ce qui en est en aval (l'extrait sur chaque liste/noeud dearbre, chemin et résolution de l'ancêtre) ne lit jamais content-json; seulement un seul article lu le sérialise, et que Une ligne vient déjà de sa propre consultation séparée. Arbre/liste/simple d'une organisation d'un organisme de 300 articles la réponse était de tirer plus de 2 Mo de texte corporel de la base de données pour le rejeter immédiatement pour tous sauf une ligne. sélectionne tout ce que l'index lit effectivement par nom (a JPQL, pas une méthode de dépôt - KbArticleRepository vit dans la bibliothèque kmo-shared, dans le cadre de la portée ici) et construit des instances KbArticle réelles à partir des lignes via le constructeur de l'entité, n'a jamais persisté ou attaché à la session. Chaque lecteur existant de PublicTreeIndex continue de fonctionner inchangé; getContentJson() sur l'un d'entre eux est simplement nul, ce qui n'a d'importance que sérialise, et rien en dehors d'un article unique ne le fait. Séparément, /tree-par-parent-livre appelé les deux (qui chargeait la sienne copie de chaque article public pour reconstruire la même carte pour les enfants construitPublicTreeIndex déjà construit) et buildPublicTreeIndex - une demande, la liste complète d'articles à l'échelle générale chargée deux fois. Les premiers maintenant prend l'index que l'appelant a déjà construit comme paramètre au lieu de le reconstruire. En outre, translateRefs (suivi et liens "voir aussi" les liens, non-anglais) a résolu la traduction de chaque ref. en revoyant la guid de la ref jusqu'à un KbArticle puis en interrogeant sa traduction - deux requêtes par réf. Une référence porte déjà l'objet de l'article qu'il nomme maintenant (KbArticleRefDTO.uid, interne Seulement - JsonIgnore, jamais dans la réponse publique), donc - résout chaque ref dans une liste dans une requête IN groupée à la place. Tests: KbArticleServiceTreeIndexTest affirme que la projection porte chaque champ d'une charge d'entité complète aurait (contentJson excepté, déclaré nul) et que le calcul arbre/chemin/ancêtre construit à partir de lui est la même forme à trois niveaux qu'une charge de pleine entité aurait produit - le montage basé sur le montage. vieux-vs-new check. - Exercices /par limace fin en français et prouve que la recherche par lots remplace le guid aller-retour jamais appelé à une réf).
