Введение
Веб-приложения для учёта рабочего времени широко распространены, однако имеют системные недостатки. Промежуток между остановкой и повторным запуском таймера нигде не фиксируется, поле названия задачи остаётся необязательным, а интеграция с внешними сервисами управления задачами реализована через наложение элементов управления на их интерфейс, что вынуждает пользователя переключаться между вкладками. Цель работы — разработка ВП УРВ, устраняющего перечисленные недостатки. Задачи: анализ предметной области, сравнение аналогов, разработка концептуальной модели, выбор технологий и среды разработки, проектирование архитектуры и интерфейса, программная реализация.
Анализ существующих решений
Проведён сравнительный анализ четырёх веб-приложений с бесплатным тарифом: Toggl Track [2], Clockify [3], TrackingTime [4] и ClockDiary [5]. Результаты сведены в таблице 1. Ни одно веб-приложение не обеспечивает явного учёта перерывов, не требует обязательного названия задачи и не реализует интеграцию через импорт.
Таблица 1
Сравнение аналогов ВП УРВ
|
Критерий |
Toggl Track |
Clockify |
Tracking-Time |
ClockDiary |
ВП УРВ |
|
Учёт перерывов |
Нет |
Нет |
Нет |
Нет |
Да |
|
Обязательное название задачи |
Нет |
Только проект |
Нет |
Нет |
Да |
|
Способ интеграции с сервисами |
Наложение |
Наложение |
Наложение |
Наложение |
Импорт |
|
Среднее время запуска задачи, с |
6,98 |
6,09 |
9,62 |
7,30 |
3,41 |
|
Горячая клавиша запуска |
Нет |
Нет |
Нет |
Нет |
Да |
Концептуальная модель
Модель описана UML-диаграммами вариантов использования, сущностей и последовательности. Центральная сущность — запись о времени (TimeEntry) — хранит обязательное название, временны́е метки, накопленное время простоя (idle_duration_sec) и субъективную оценку сложности задачи (complexity, 1–3). С каждой записью сопоставляется запись о перерыве (Break) с его фактической длительностью [1]. Задачи и проекты создаются вручную либо импортируются из внешнего сервиса. Диаграмма сущностей представлена на рисунке 1.
Рис. 1. Диаграмма сущностей ВП УРВ
Выбор технологий и среды разработки
Выполнен сравнительный анализ пяти языков программирования, приведённый в таблице 2. Для серверной части выбран C# [6] — статически типизированный компилируемый язык с зрелым фреймворком ASP.NET Core [12] и наибольшим личным опытом (3 года). Для клиентской части и расширения выбран TypeScript [17] с Vue.js [14].
Таблица 2
Сравнительный анализ языков программирования
|
Критерий |
Ruby [9] |
Java [7] |
Python [8] |
C++ [10] |
C# |
|
Статическая типизация |
Нет |
Да |
Нет |
Да |
Да |
|
Серверная веб-разработка |
Нет |
Да |
Да |
Нет |
Да |
|
Русскояз. документация |
Нет |
Нет |
Да |
Нет |
Да |
|
Компилируемый язык |
Нет |
Да |
Нет |
Да |
Да |
|
Опыт работы, лет |
0 |
1 |
1 |
2 |
3 |
Средой разработки выбран JetBrains Rider [11] — кросс-платформенная IDE с поддержкой C# и TypeScript, встроенным отладчиком и анализатором кода на базе ReSharper без дополнительных плагинов.
Архитектура ВП УРВ
ВП УРВ включает три независимых компонента. Серверная часть (TimeTrackingAPI) реализована на ASP.NET Core 8 по трёхслойной архитектуре: Controllers, Services и слой доступа к данным через Entity Framework Core [13] и SQL Server [21]. Аутентификация — JWT; импорт — Todoist REST API v1 [19] и Jira Cloud REST API v3 [20]. Клиентская часть (TimeTrackingClient) построена на Vue 3, TypeScript, Pinia [7] и Axios [8]. Браузерное расширение (TimeTrackingExtension) разработано на WXT [9]: фоновый скрипт ежеминутно опрашивает browser.idle API, накапливает время простоя и при превышении порога отправляет его на сервер и формирует уведомление; контент-скрипт передаёт JWT-токен фоновому скрипту, обходя изоляцию расширений Firefox.
Пользовательский интерфейс
Интерфейс выполнен в минималистичной нейтральной гамме. Главный экран, показанный на рисунке 2, содержит блок таймера с автодополнением, кнопку и горячую клавишу «N». После остановки в обязательном порядке запрашивается название; для сессий более 10 минут — оценка сложности и диалог рекомендации перерыва. Раздел «Проекты» поддерживает импорт из Todoist и Jira. Раздел «История» отображает перерывы между записями и обеспечивает экспорт отчётов в PDF и Excel.
Рис. 2. Главный экран ВП УРВ
Заключение
Разработанное ВП УРВ устраняет системные недостатки аналогов: реализованы явная фиксация перерывов с расчётом рекомендуемой длительности, обязательное название задачи, интеграция через импорт, горячие клавиши и фоновый мониторинг активности. Трёхкомпонентная архитектура на ASP.NET Core 8, Vue 3 и WXT обеспечивает разделение ответственности и удобство сопровождения.
Литература:
- ГОСТ 19.701–90 (ИСО 5807–85). ЕСПД. Схемы алгоритмов, программ, данных и систем. Введ. 01.01.1992. М.: Стандартинформ, 2010. 24 с.
- Toggl Track. — Текст: электронный // Toggl: [сайт]. — URL: https://toggl.com/track/ (дата обращения: 12.02.2026).
- Clockify. — Текст: электронный // Clockify: [сайт]. — URL: https://clockify.me/ (дата обращения: 12.02.2026).
- TrackingTime. — Текст: электронный // TrackingTime: [сайт]. — URL: https://trackingtime.co/ (дата обращения: 13.02.2026).
- ClockDiary. — Текст: электронный // ClockDiary: [сайт]. — URL: https://clockdiary.com/ (дата обращения: 13.02.2026).
- Документация по языку C#. — Текст: электронный // Microsoft: [сайт]. — URL: https://learn.microsoft.com/ru-ru/dotnet/csharp/ (дата обращения: 07.02.2026).
- Документация по языку Java. — Текст: электронный // Oracle: [сайт]. — URL: https://docs.oracle.com/en/java/ (дата обращения: 07.02.2026).
- Документация по языку Python. — Текст: электронный // Python Software Foundation: [сайт]. — URL: https://docs.python.org/3/ (дата обращения: 08.02.2026).
- Документация по языку Ruby. — Текст: электронный // Ruby-lang: [сайт]. — URL: https://www.ruby-lang.org/ru/documentation/ (дата обращения: 08.02.2026).
- Документация по языку C++. — Текст: электронный // Microsoft: [сайт]. — URL: https://learn.microsoft.com/ru-ru/cpp/cpp/ (дата обращения: 09.02.2026).
- Документация JetBrains Rider. — Текст: электронный // JetBrains: [сайт]. — URL: https://www.jetbrains.com/help/rider/Getting_Started.html (дата обращения: 10.02.2026).
- Документация ASP.NET Core. — Текст: электронный // Microsoft: [сайт]. — URL: https://learn.microsoft.com/ru-ru/aspnet/core/ (дата обращения: 12.02.2026).
- Документация Entity Framework Core. — Текст: электронный // Microsoft: [сайт]. — URL: https://learn.microsoft.com/ru-ru/ef/core/ (дата обращения: 13.02.2026).
- Документация Vue.js. — Текст: электронный // Vue.js: [сайт]. — URL: https://ru.vuejs.org/guide/introduction (дата обращения: 14.02.2026).
- Документация Pinia. — Текст: электронный // Pinia: [сайт]. — URL: https://pinia.vuejs.org/ (дата обращения: 15.02.2026).
- Документация Axios. — Текст: электронный // Axios: [сайт]. — URL: https://axios-http.com/ru/docs/intro (дата обращения: 17.02.2026).
- Документация TypeScript. — Текст: электронный // Microsoft: [сайт]. — URL: https://www.typescriptlang.org/docs/ (дата обращения: 18.02.2026).
- Документация WXT. — Текст: электронный // WXT: [сайт]. — URL: https://wxt.dev/guide/introduction.html (дата обращения: 20.02.2026).
- Todoist REST API. Документация. — Текст: электронный // Todoist: [сайт]. — URL: https://developer.todoist.com/rest/v2/ (дата обращения: 25.02.2026).
- Jira Cloud REST API. Документация. — Текст: электронный // Atlassian: [сайт]. — URL: https://developer.atlassian.com/cloud/jira/platform/rest/v3/ (дата обращения: 26.02.2026).
- Документация SQL Server. — Текст: электронный // Microsoft: [сайт]. — URL: https://learn.microsoft.com/ru-ru/sql/sql-server/ (дата обращения: 05.03.2026).

