Какую проблему решит эта фича?
На данный момент в хедере библиотеки (LibraryView.axaml) выводится только базовая статичная информация: общее количество плейлистов/треков и их суммарная длительность в базе. Пользователи любят анализировать свои музыкальные привычки. Добавление «живой» статистики сделает экран медиатеки более интерактивным, а приложение — более персонализированным и интересным для ежедневного использования.
Описание предлагаемого решения (Рейтинг метрик)
Предлагается внедрить сбор аналитики и визуализировать её, разделив на 3 уровня по приоритету и месту отображения.
Уровень 1: Базовая активность (Интеграция в текущий хедер библиотеки)
Эти данные должны отображаться прямо на главном экране медиатеки:
- Всего времени прослушано: Реальное суммарное время воспроизведения музыки через плеер (счетчик активного проигрывания).
- Среднее время: Среднее время прослушивания музыки (например, за сессию или в день).
- Динамика медиатеки (за неделю): Компактный индикатор изменения количества треков в базе в формате
+5 / -14 (зеленым — добавленные, красным — удаленные).
Уровень 2: Временные привычки и Тех-эффективность (Детальное Модальное окно)
Эти данные слишком объемные для хедера, поэтому для них стоит сделать отдельное модальное окно (Modal Dialog), которое открывается по кнопке «Подробная статистика»:
- Время суток (Стиль слушателя): Определение привычек (например, бейдж «Ночная сова» при прослушивании с 00:00 до 06:00, или «Жаворонок»).
- Самый тяжелый день недели: В какой день юзер слушает музыку активнее всего (например, «Пятница: в ср. 4.5 часа»).
- Коэффициент "оффлайновости": Метрика, показывающая, сколько гигабайт трафика сэкономил умный кэш
AudioCacheManager (процент времени, когда музыка играла напрямую с диска).
Уровень 3: Инсайты по конкретным трекам (Интеграция в списки треков)
Микро-взаимодействия на уровне интерфейса конкретных элементов списка:
- Самый преданный трек: Трек, который живет в библиотеке дольше всего и регулярно слушается. В UI его можно выделять акцентным цветом и иконкой сердечка
[♥].
- Рейтинг скипов (Кандидаты на удаление): Треки, которые юзер переключает на первых секундах. В UI их можно делать более серыми (TextMutedBrush) и добавлять иконку мусорки
[🗑] как намек на удаление.
- Альтернативная идея бегущей строки / трендов: Простой текстовый информер сверху:
Тренды: + Nirvana (на репите) | - Монеточка (частые скипы).
Возможная техническая реализация
- Добавить в
TrackEntity поля TotalPlayTime, SkipCount и AddedAt.
- В
AudioEngine или PlaybackErrorOrchestrator добавить таймер, который периодически обновляет счетчик прослушивания текущего трека в SQLite.
- Статистику по дням и кэшу можно агрегировать в отдельной таблице логов
PlaySessions.
Какую проблему решит эта фича?
На данный момент в хедере библиотеки (
LibraryView.axaml) выводится только базовая статичная информация: общее количество плейлистов/треков и их суммарная длительность в базе. Пользователи любят анализировать свои музыкальные привычки. Добавление «живой» статистики сделает экран медиатеки более интерактивным, а приложение — более персонализированным и интересным для ежедневного использования.Описание предлагаемого решения (Рейтинг метрик)
Предлагается внедрить сбор аналитики и визуализировать её, разделив на 3 уровня по приоритету и месту отображения.
Уровень 1: Базовая активность (Интеграция в текущий хедер библиотеки)
Эти данные должны отображаться прямо на главном экране медиатеки:
+5 / -14(зеленым — добавленные, красным — удаленные).Уровень 2: Временные привычки и Тех-эффективность (Детальное Модальное окно)
Эти данные слишком объемные для хедера, поэтому для них стоит сделать отдельное модальное окно (Modal Dialog), которое открывается по кнопке «Подробная статистика»:
AudioCacheManager(процент времени, когда музыка играла напрямую с диска).Уровень 3: Инсайты по конкретным трекам (Интеграция в списки треков)
Микро-взаимодействия на уровне интерфейса конкретных элементов списка:
[♥].[🗑]как намек на удаление.Тренды: + Nirvana (на репите) | - Монеточка (частые скипы).Возможная техническая реализация
TrackEntityполяTotalPlayTime,SkipCountиAddedAt.AudioEngineилиPlaybackErrorOrchestratorдобавить таймер, который периодически обновляет счетчик прослушивания текущего трека в SQLite.PlaySessions.