perf(tasks): лимиты/пагинация /api/tasks и дельта-синк в SQL

Шаги 0.10 и 0.9 плана production-готовности:
- дефолт limit 50, кап 200; списковые ответы без description
- курсорная пагинация (updated_at, id) + nextCursor
- since-фильтр дельта-синка перенесён в SQL (updated_at >= since)
- embedding pre-count через COUNT(*) вместо выгрузки миллиона строк
- 11 новых юнит-тестов (56/56 зелёные)

Инвариант поиска сохранён: search-ветка /api/tasks?search= не изменена
This commit is contained in:
2026-09-07 22:01:25 +03:00
parent 0a60c6abf1
commit a27766a38b
11 changed files with 275 additions and 40 deletions

View File

@@ -652,16 +652,10 @@ export async function reindexOrganization(
let totalAttempted = 0;
let totalFailed = 0;
// ── 1. Pre-count: fetch minimal task list to know total for progress ─────────
// ── 1. Pre-count: точный COUNT(*) без выгрузки строк (список теперь капнут на 200) ──
let taskCount = 0;
if (entityTypes.includes("task") || entityTypes.includes("task_message")) {
const minimalTasks = await stor.getTasksByOrganization(organizationId, {
sortBy: "createdAt",
order: "asc",
minimal: true,
limit: 1_000_000,
});
taskCount = minimalTasks.length;
taskCount = await stor.getTasksCountByOrganization(organizationId);
}
const formCount = entityTypes.includes("form")