Перейти к основному содержимому

Сбор данных с IDE

PanDev Metrics собирает данные о активности разработчиков в интегрированных средах разработки (IDE) через специальные плагины, обеспечивая точное отслеживание работы с корпоративными проектами.

⚠️ Безопасность и приватность

Собираются исключительно рабочие данные, без вторжения в личную жизнь программиста.

  • Никаких скриншотов - система не делает снимки экрана
  • Никакого вторжения в личную жизнь - отслеживается только рабочая активность
  • Никаких личных проектов - только корпоративные Git-репозитории
  • Только активность в IDE - никаких других приложений
  • Прозрачность - пользователь может видеть, какие данные собираются

Обзор плагинов

Подробная информация о каждом поддерживаемом плагине IDE доступна в разделе Плагины, где описаны:

  • IntelliJ IDEA Plugin - полная интеграция с Java/Kotlin проектами
  • VS Code Plugin - поддержка множества языков программирования
  • Другие IDE - расширяемая архитектура для новых инструментов

Структура данных IDE

Пример JSON события

[
{
"timestamp": 1742567259.3460,
"project": "pandev-metrics-partners-service",
"module": "merchant-service",
"language": "JAVA",
"gitPath": "pandev/metrics/services/pandev-metrics-partners-service",
"gitBranch": "hotfix/PDM-418",
"fileName": "CompanyRepository.java",
"ide": "IntelliJ IDEA 2024.1.3",
"lineCount": 189,
"lineNumber": 153,
"cursorPosition": 52
},
{
"timestamp": 1742567261.7030,
"project": "pandev-metrics-partners-service",
"module": "merchant-service",
"language": "JAVA",
"gitPath": "pandev/metrics/services/pandev-metrics-partners-service",
"gitBranch": "hotfix/PDM-418",
"fileName": "CompanyRepository.java",
"ide": "IntelliJ IDEA 2024.1.3",
"lineCount": 189,
"lineNumber": 139,
"cursorPosition": 56
}
]

Описание полей

ПолеТипОписание
timestampFloatТочное время события в Unix timestamp
projectStringНазвание корпоративного проекта
moduleStringМодуль в проекте (для мультимодульных проектов)
languageStringЯзык программирования (JAVA, PYTHON, JAVASCRIPT, etc.)
gitPathStringПолный путь в корпоративном Git репозитории
gitBranchStringТекущая ветка Git
fileNameStringИмя файла, с которым работает разработчик
ideStringВерсия используемой IDE
lineCountIntegerОбщее количество строк в файле
lineNumberIntegerНомер строки, где находится курсор
cursorPositionIntegerПозиция курсора в строке

Связь активности с задачами

Автоматический матчинг задач

Плагин IDE автоматически связывает активность разработчика с конкретными задачами в таск-трекере (например, Jira) через анализ названий Git-веток.

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

  1. Анализ названия ветки - плагин отслеживает текущую активную ветку Git
  2. Паттерн-матчинг - если ветка называется по определенному паттерну (например, TASK-23, feature/PDM-1052, bugfix/JIRA-456)
  3. Интеграция с таск-трекером - при включенной интеграции с Jira/GitLab система автоматически находит соответствующую задачу
  4. Автоматическое соотношение - вся активность в этой ветке автоматически привязывается к найденной задаче

Примеры матчинга:

Ветка: TASK-23

Задача в Jira: TASK-23 "Реализовать авторизацию пользователей"

Вся активность в этой ветке → привязывается к задаче TASK-23
Ветка: feature/PDM-1052

Задача в Jira: PDM-1052 "Добавить поддержку темной темы"

Вся активность в этой ветке → привязывается к задаче PDM-1052

Преимущества:

  • Автоматическая привязка - не нужно вручную указывать задачу
  • Точная аналитика - видно, сколько времени потрачено на конкретную задачу
  • Прозрачность - руководители видят прогресс по каждой задаче
  • Планирование - можно точнее оценивать время выполнения похожих задач

Офлайн-режим и надежность доставки

Гарантированная доставка данных

Плагины IDE работают в офлайн-режиме и обеспечивают почти 100% доставку данных на сервер PanDev Metrics.

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

Непрерывный сбор данных

  • Работа без интернета - плагины продолжают собирать данные даже при отсутствии подключения
  • Локальное хранение - все события сохраняются в локальном кэше на компьютере разработчика
  • Фоновый режим - сбор данных происходит незаметно для пользователя

Автоматическая синхронизация

  • Мониторинг соединения - плагин постоянно проверяет доступность сервера
  • Автоматическая отправка - при появлении интернета все накопленные данные автоматически отправляются на сервер
  • Пакетная передача - данные передаются эффективными пакетами для минимизации нагрузки

Надежность системы

  • Локальный кэш - данные хранятся локально до успешной отправки
  • Повторные попытки - при неудачной отправке система автоматически повторяет попытку
  • Проверка целостности - система проверяет, что все данные успешно доставлены
  • Уведомления - пользователь может видеть статус синхронизации данных

Пример работы:

День 1: Разработчик работает без интернета
├── 09:00 - Открыл файл UserService.java
├── 10:30 - Работал с веткой feature/auth
├── 12:00 - Сделал коммит
└── Все данные сохраняются локально

День 2: Интернет появился
├── 09:00 - Плагин обнаружил соединение
├── 09:01 - Автоматически отправил все данные за вчера
├── 09:02 - Подтвердил успешную доставку
└── Продолжает работу в обычном режиме

Преимущества:

  • Никаких потерь данных - вся активность фиксируется
  • Работа в любых условиях - не зависит от качества интернета
  • Прозрачность - пользователь может видеть статус синхронизации
  • Надежность - система гарантирует доставку всех данных