Обзор аналитики
Поисковая аналитика в AACSearch — что меряется, где живут данные и как использовать их для улучшения relevance, контента и конверсии.
AACSearch пишет каждый поиск, каждый клик, каждую конверсию и каждое операционное событие, касающееся ваших индексов. Данные доступны в трёх местах — страница Analytics в дашборде, oRPC-процедуры аналитики и CSV / JSON export — чтобы вы могли и диагностировать конкретные запросы, и закрывать петлю, возвращая инсайты в relevance, наполнение контента и анализ выручки.
Эта секция — клиент-facing справочник по этим данным. Страница дашборда покрывает UI; эта секция — концепции, схемы и воркфлоу, превращающие телеметрию в улучшения.
Что меряется
| Поверхность | Что пишется | Куда падает |
|---|---|---|
| Search | Каждый вызов /api/search и /api/search/multi — запрос, фильтры, кол-во результатов, латентность. | SearchUsageEvent |
| Click | Каждый клик по результату с position, productId, queryId. | SearchUsageEvent |
| No-result | Поиски с 0 хитов (выделены отдельной панелью). | SearchUsageEvent + Zero Queries |
| Filter / sort | События filter_used с filter-выражением. | SearchUsageEvent |
| Widget open | Первый показ виджета. | SearchUsageEvent |
| Conversion | Покупка / signup / кастомное событие, привязанное к поиску. | SearchUsageEvent (type=conversion) |
| AI answer | Каждый /api/search/ai/answer с searchTimeMs и totalTimeMs. | SearchUsageEvent (type=ai_answer) |
| Knowledge ask | Каждый knowledge.ask / askStream с расходом токенов. | SearchUsageEvent (type=knowledge_ask) |
| Admin activity | Создание индекса, ротация ключа, reindex started/finished, sync job completed, quota warning. | SearchActivityEvent |
| Rate limit | 429-ответы (debug only). | SearchRateLimitBucket |
Tenant scope: у каждой строки есть organizationId. Cross-org чтений нет (Инвариант 5).
Схема событий (клиентская)
Публичный сбор событий — POST /events/track (см. packages/api/modules/search/events-public.ts). Принимаемая форма намеренно узкая — без email, без полного IP, UA в 256 символов — её безопасно ставить на любой storefront:
{
type: "search_query" | "zero_results" | "result_click" | "widget_open"
| "filter_used" | "conversion" | "visit" | "click";
sessionId?: string;
anonymousUserId?: string;
query?: string;
productId?: string;
position?: number;
filters?: Record<string, unknown>;
sort?: string;
locale?: string;
referrer?: string;
queryId?: string; // связывает клики с поиском, который их породил
conversionType?: string; // "purchase", "signup", "add_to_cart", …
metadata?: Record<string, unknown>;
}Можно слать пачкой до 50 событий ({ events: [...] }) и использовать sendBeacon на unload — оба пути first-class в виджете.
Точные имена (search_query, result_click, …) совпадают с тем, что появляется в таблицах аналитики и тем, что эмиттит SDK / виджет. Держите согласованными; не выдумывайте свои типы на клиенте.
Откуда читать
Дашборд
Analytics дашборд — KPI-плитки, временные ряды, Top Queries, Failed Queries, Activity. UI для всех; селектор периода управляет всеми табами. Ретеншн зависит от плана (24 ч на всех; 30 дней на платных).
oRPC-процедуры
Для программного доступа — protected-процедуры в packages/api/modules/search/router.ts:
| Процедура | Что возвращает |
|---|---|
search.usageSummary | Итоги по периоду: searches, clicks, CTR, p50/p95 латентность. |
search.topQueries | Топ запросов с searches, clicks, CTR, флагом zero-results. |
search.analytics | Временные ряды и агрегаты по типу события. |
search.recentActivity | Фид активности из SearchActivityEvent. |
search.ctrAnalytics | Дневной тренд CTR. |
search.analyticsEvents | Сырые события (paginated, filtered). |
knowledge.usageMetrics | Расход токенов и количество запросов модуля Knowledge. |
Каждая принимает organizationId + period (24h, 7d, 30d) и возвращает Prisma-строки для любого UI.
Export
CSV и JSON — Export.
Замкнутая петля
Аналитика сама по себе — просто дашборд. Смысл — превратить каждую метрику в действие:
| Что вы видите | Куда вести |
|---|---|
| Запросы с большим объёмом и низким CTR | Relevance tuning — синонимы, веса queryBy, curations. |
| Запросы с нулевыми результатами | No-results loop — gap контента или synonym/curation. |
| Запросы с объёмом и без конверсий | Conversions — funnel; возможно, AI answer или merchandising. |
| Скачок failed queries (4xx / 5xx) | Operations / errors — rate limit, scoped-token проблема. |
| Рост no-result rate | Каденс re-ingest — Ingest и reindex. |
| Падение CTR при стабильном объёме | Curation drift или шум синонимов — аудит Relevance панели. |
| Widget-open без последующего поиска | UX виджета — Widget overview. |
E-commerce-петля типична: zero-results → видим missing brand → синоним → меряем восстановление в CTR того же запроса в следующем периоде. SaaS / knowledge-base: низкий-CTR-запрос → переписать title статьи → re-ingest → меряем рост CTR.
Ретеншн и privacy
- Ретеншн. Все строки событий хранятся в окне плана — обычно 90 дней. Агрегаты в
SearchActivityEventхранятся дольше. - PII. Публичный events-эндпоинт сознательно не принимает полный IP / email. UA обрезается.
metadata— opaque, но не больше 4 КБ JSON. - GDPR / DPA. Scope персональных данных AACSearch — Security & Compliance. Путь аналитики виджета — в стандартном DPA.
- Right-to-be-forgotten. Удаление по
anonymousUserId— см. Data privacy по процедуре редактирования.
Примеры
E-commerce
Смотрим: top queries, conversion rate per query, no-result rate, использование фасета brand.
Что читать вместе:
topQueriesза неделю +ctrAnalyticsдневной тренд.analyticsEventsс фильтромtype=conversionдля атрибуции выручки.noResultsпанель + brand-additions от контент-команды.
SaaS / knowledge-base
Смотрим: zero-result rate, click-to-article rate, refusal rate у AI ответа.
Что читать вместе:
- Топ zero-result-запросов → gap-ы в help-center.
knowledge.usageMetricsрасход токенов + всплески refusal-rate → регрессии качества после обновления документов.
Связанные страницы
- Queries — popular, low-CTR, reformulations
- Conversions — search-to-click, search-to-conversion
- No-results — петля восстановления
- Relevance quality — возврат аналитики в ранжирование
- Export — CSV / JSON, ретеншн, BI
- Analytics дашборд — UI продукта
- Widget analytics events — что эмиттит виджет