Оптимизация списков (#12)
Tests / frontend-test (push) Successful in 1m18s

Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/12
This commit was merged in pull request #12.
This commit is contained in:
2026-08-21 10:01:33 +00:00
parent ebb361ab9f
commit 131e302f67
14 changed files with 9519 additions and 294 deletions
@@ -7,6 +7,13 @@ import '@pnp/sp/site-users/web';
import { BrowserFetchWithRetry } from '@pnp/queryable';
import { WebPartContext } from '@microsoft/sp-webpart-base';
import { DATA_SITE_URL } from '../config';
import { PerfObserver } from '../perfTrace';
// PerfObserver подключён к ОБОИМ клиентам ниже: это единственное место, через
// которое проходит любой SharePoint-запрос портала, поэтому отладочный замер
// (window.rpPerf, см. shared/perfTrace.ts) покрывает сразу все разделы — и
// списки заявок, и формы, и панель заявки, — а не только те, где расставлены
// метки этапов вручную. Выключенный замер не делает ничего дороже чтения флага.
// Мягкая ретрай-политика вместо стандартной PnPjs (retries: 3, interval: 200).
// Дефолт слишком напорист: при отказе (429 «слишком много запросов», 503) он
@@ -25,7 +32,7 @@ let _sp: SPFI | undefined;
* списки живут там, где бы ни стоял сам web part. Авторизация берётся из context.
*/
export function initSP(context: WebPartContext): void {
_sp = spfi(DATA_SITE_URL).using(SPFx(context), BrowserFetchWithRetry(RETRY));
_sp = spfi(DATA_SITE_URL).using(SPFx(context), BrowserFetchWithRetry(RETRY), PerfObserver());
}
/**
@@ -36,7 +43,7 @@ export function initSP(context: WebPartContext): void {
* отправки (у behavior replace: true по умолчанию).
*/
export function spForSite(siteUrl: string, context: WebPartContext): SPFI {
return spfi(siteUrl).using(SPFx(context), BrowserFetchWithRetry(RETRY));
return spfi(siteUrl).using(SPFx(context), BrowserFetchWithRetry(RETRY), PerfObserver());
}
/** Получить инициализированный клиент. Бросает, если initSP не был вызван. */