убрал лишние серчи и ресты

This commit is contained in:
gorbenko.pavel
2026-08-05 15:05:46 +05:00
parent 295d9b7914
commit 68638c765e
3 changed files with 122 additions and 145 deletions
@@ -7,6 +7,7 @@ import {
getPendingApproval,
getPendingApprovalIndex,
hydratePendingAuthors,
searchOwnRequests,
} from './myRequests.service';
import { IMyRequest } from './models/IMyRequest';
import { REQUEST_STATUS, IRequestType } from '../../shared/approval';
@@ -116,12 +117,19 @@ const Table: React.FC<{
// Раздел с таблицей заявок: поиск по всем полям + вывод постранично.
//
// 'own' — Search сразу с пагинацией (RowLimit/StartRow): автор = текущий
// пользователь + текст запроса по всем полям.
// Движок выбирается по наличию текста в поиске, а не по разделу: БЕЗ запроса —
// всегда обычный REST (мгновенно свежий, без задержки индексации), С запросом —
// всегда Search (полнотекстовый, но переиндексируется с задержкой). Раньше
// поиск подмешивал REST для «свежих» строк поверх Search — из-за этого
// результат мог быть неустойчивым (заявка то находилась, то нет, в зависимости
// от того, попала ли она в окно подстраховки); эту гибридную логику убрали.
//
// 'approvals' без поиска — обычный REST, отфильтрованный по ApproverId(+Status),
// страница нарезается на СЕРВЕРЕ (getPendingApproval сам берёт нужный срез
// индекса и дочитывает автора только для него).
// 'own' без поиска — getOwnRequests (REST по AuthorId, страница режется в
// памяти). 'own' с поиском — searchOwnRequests (Search, RowLimit/StartRow).
//
// 'approvals' без поиска — getPendingApproval, REST по ApproverId(+Status),
// страница нарезается на СЕРВЕРЕ (сам берёт нужный срез индекса и дочитывает
// автора только для него).
// 'approvals' с поиском — область расширяется до «где пользователь вообще есть
// в маршруте» (getPendingApprovalIndex, ПОЛНЫЙ список без автора — постранично
// его тут не взять, т.к. фильтрация текстом идёт уже после), затем текстовый
@@ -168,7 +176,10 @@ export const RequestsTableView: React.FC<IRequestsTableViewProps> = ({
const load = async (): Promise<void> => {
try {
if (kind === 'own') {
const r = await getOwnRequests(context, types, query, page);
const hasOwnQuery = query.trim().length > 0;
const r = hasOwnQuery
? await searchOwnRequests(context, types, query, page)
: await getOwnRequests(context, types, page);
if (cancelled) return;
setRows(r.rows);
setTotalRows(r.totalRows);