Skip to content

features data export

Sergey Bogorad edited this page Jul 29, 2026 · 4 revisions

Экспорт данных

Пользователи могут скачать свои когнитивные тренировочные данные в privacy-safe, LLM-friendly JSON-формате. Это позволяет загрузить результаты в любую большую языковую модель для персонального анализа, поиска трендов и оптимизации тренировок.


Как это работает

  1. Пользователь открывает страницу Cognitive Profile (CognitiveProfile.tsx) и нажимает кнопку «Экспорт» (в UI подписана как «Экспорт»).
  2. Кнопка отправляет GET запрос на /api/analytics/export с Bearer JWT токеном в заголовке Authorization.
  3. Серверный эндпоинт в src/server/routes/analytics.ts (строка 288) запрашивает завершённые GameSession пользователя, отсортированные по убыванию даты.
  4. Функция createPrivacySafeAnalyticsExport() в том же файле обрабатывает сессии в агрегированный, анонимизированный формат.
  5. Сервер возвращает JSON-файл, который браузер скачивает как kognitika_export_YYYY-MM-DD.json.

Privacy-контракт

Экспорт-эндпоинт верифицирован тестом src/tests/analytics-export-privacy.test.ts. Тест подтверждает:

  • Нет сырого Brain ID в ответе (ни в каком месте, включая вложенные метаданные)
  • Нет email-адресов, токенов или хэшей паролей
  • Нет сырой session database ID (UUID)
  • Нет точных таймстемпов активности
  • Объект privacy в ответе подтверждает:
    • personal_identifiers_included: false
    • raw_session_data_included: false
    • exact_activity_timestamps_included: false
    • safe_for_external_llm: true

Серверный middleware privacyGuard в src/server/middleware/privacy.ts работает на всех API-ответах как дополнительный слой защиты.


Формат экспорта

JSON-ответ имеет следующую структуру:

{
  "format": "Kognitika Privacy-Safe Cognitive Analytics",
  "version": "2.0",
  "privacy": {
    "personal_identifiers_included": false,
    "raw_session_data_included": false,
    "exact_activity_timestamps_included": false,
    "safe_for_external_llm": true
  },
  "dataset": {
    "completed_sessions_analyzed": 150,
    "modules_with_data": 12,
    "history_truncated": false,
    "maximum_sessions_analyzed": 1000
  },
  "modules": [
    {
      "moduleId": "schulte",
      "displayName": "Таблицы Шульте",
      "sessions": 25,
      "bestTimeMs": 18400,
      "medianTimeMs": 24100,
      "accuracy": 98.5,
      "trend": "improving",
      "normative": {
        "targetMs": 15000,
        "source": "Literature: Schulte tables normative data"
      }
    },
    { "...": "другие модули" }
  ],
  "aggregate": {
    "totalSessions": 150,
    "totalTimeMs": 3600000,
    "overallAccuracy": 94.2,
    "strongestModules": ["schulte", "nback"],
    "weakestModules": ["stroop-alphabet", "dispatcher"]
  }
}

Ключевые константы

Константа Значение Где определена
MAX_EXPORT_SESSIONS 1000 src/server/routes/analytics.ts

Экспорт обрезает историю до последних 1000 завершённых сессий (флаг history_truncated в ответе указывает, было ли обрезание).


Использование с LLM

Файл kognitika_export_YYYY-MM-DD.json можно загрузить в любой LLM (ChatGPT, Claude, локальные модели) с промптом:

«Проанализируй мои когнитивные тренировочные данные. Найди тренды, сильные и слабые стороны, предложи план тренировок на следующий месяц».

LLM получит:

  • Агрегированные метрики по каждому модулю
  • Тренды (improving / stable / declining)
  • Нормативные сравнения
  • Рекомендации по слабым зонам

Никаких идентифицирующих данных в экспорте нет — полная приватность.

Clone this wiki locally