Skip to content

Глобальная аналитика и инсайты прослушивания (Listening Stats) #37

@Scream034

Description

@Scream034

Какую проблему решит эта фича?

На данный момент в хедере библиотеки (LibraryView.axaml) выводится только базовая статичная информация: общее количество плейлистов/треков и их суммарная длительность в базе. Пользователи любят анализировать свои музыкальные привычки. Добавление «живой» статистики сделает экран медиатеки более интерактивным, а приложение — более персонализированным и интересным для ежедневного использования.

Описание предлагаемого решения (Рейтинг метрик)

Предлагается внедрить сбор аналитики и визуализировать её, разделив на 3 уровня по приоритету и месту отображения.

Уровень 1: Базовая активность (Интеграция в текущий хедер библиотеки)

Эти данные должны отображаться прямо на главном экране медиатеки:

  1. Всего времени прослушано: Реальное суммарное время воспроизведения музыки через плеер (счетчик активного проигрывания).
  2. Среднее время: Среднее время прослушивания музыки (например, за сессию или в день).
  3. Динамика медиатеки (за неделю): Компактный индикатор изменения количества треков в базе в формате +5 / -14 (зеленым — добавленные, красным — удаленные).

Уровень 2: Временные привычки и Тех-эффективность (Детальное Модальное окно)

Эти данные слишком объемные для хедера, поэтому для них стоит сделать отдельное модальное окно (Modal Dialog), которое открывается по кнопке «Подробная статистика»:

  1. Время суток (Стиль слушателя): Определение привычек (например, бейдж «Ночная сова» при прослушивании с 00:00 до 06:00, или «Жаворонок»).
  2. Самый тяжелый день недели: В какой день юзер слушает музыку активнее всего (например, «Пятница: в ср. 4.5 часа»).
  3. Коэффициент "оффлайновости": Метрика, показывающая, сколько гигабайт трафика сэкономил умный кэш AudioCacheManager (процент времени, когда музыка играла напрямую с диска).

Уровень 3: Инсайты по конкретным трекам (Интеграция в списки треков)

Микро-взаимодействия на уровне интерфейса конкретных элементов списка:

  1. Самый преданный трек: Трек, который живет в библиотеке дольше всего и регулярно слушается. В UI его можно выделять акцентным цветом и иконкой сердечка [♥].
  2. Рейтинг скипов (Кандидаты на удаление): Треки, которые юзер переключает на первых секундах. В UI их можно делать более серыми (TextMutedBrush) и добавлять иконку мусорки [🗑] как намек на удаление.
  3. Альтернативная идея бегущей строки / трендов: Простой текстовый информер сверху: Тренды: + Nirvana (на репите) | - Монеточка (частые скипы).

Возможная техническая реализация

  • Добавить в TrackEntity поля TotalPlayTime, SkipCount и AddedAt.
  • В AudioEngine или PlaybackErrorOrchestrator добавить таймер, который периодически обновляет счетчик прослушивания текущего трека в SQLite.
  • Статистику по дням и кэшу можно агрегировать в отдельной таблице логов PlaySessions.

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions