- Spegnimento
- 23 settembre 2026 alle ore 02:17 UTC
- Autore
- Kamo
- Impegno
- 155e7de
buildPublicTreeIndex costruisce un piccolo indice strutturale (parent/child, slug path, antenati) da ogni articolo pubblico nel org, ma stava caricando pieno KbArticolo righe per farlo — content json incluso, misurato a ~6.6 KB per fila contro poche centinaia di byte per il resto di fila combinato. L'indice dell'albero e tutto a valle di esso (l'estratto su ogni nodo list/tree, percorso e risoluzione antestor) non legge mai content json; solo un singolo articolo legge serializza, e che una riga viene già dalla sua ricerca separata. Albero/list/singolo di un'organizzazione di 300 articoli risposta è stato tirando ~2 MB di testo corporeo fuori dal database per scartarlo immediatamente per tutti, ma una fila. ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** JPQL proiezione query, non un metodo di repository — KbArticoloRepository vive in kamo-shared-library, fuori campo qui) e costruisce reali istanze KbArticolo dalle righe tramite il proprio costruttore dell'entità, mai perseverato o attaccato alla sessione. Ogni lettore esistente di PublicTreeIndex continua a lavorare immutato; getContentJson() su uno di questi è semplicemente nullo, che conta solo per codificare che serializza, e niente al di fuori di un singolo articolo letto lo fa. Separatamente, /tree-by-parent-slug ha chiamato entrambi... (che ha caricato il proprio copia di ogni articolo pubblico per ricostruire la stessa mappa dei bambini costruirePublicTreeIndex già costruisce) e costruirePublicTreeIndex — una richiesta, la lista completa org-wide articolo caricato due volte. Il primo ora prende l'indice il chiamante già costruito come parametro invece di ricostruirlo. Inoltre, tradurreRefs (breadcrumbs e "vedere anche" collegamenti, non-Inglese) risolto ogni ref traduzione riguardando la guida del ref fino a un KbArticolo e poi interrogando la sua traduzione — due query per ref. Una ref porta già l'aiuto dell'articolo che chiama ora (KbArticoloRefDTO.uid, interno solo — @JsonIgnore, mai in risposta pubblica), quindi ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************ risolve ogni ref in un elenco in una query in batch. Test: KbArticoloServiceTreeIndexTest afferma che la proiezione trasporta ogni campo un carico di entità piena avrebbe (contentJson escluso, asserito nullo) e che il calcolo albero/path/ancestor costruito da esso è la stessa forma a tre livelli un carico full-entity avrebbe prodotto — l'apparecchio basato Nuovo assegno. Non e' vero. esercizi /by-slug fine alla fine in francese e dimostra che la ricerca in lotto sostituisce la pista di guida... mai chiamato per una ref).
