Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tickwork

Настольное приложение (Delphi 10.3, VCL, Win32) для учёта рабочего времени разработчика/тимлида с фиксацией отработанного времени в Jira Server/Data Center.

Application logo.

Возможности

  • Задачи: название, тип (разработка / анализ / административная / созвон / собеседование), опциональный номер Jira (формат PROJ-123), опция «начать сразу» (по умолчанию включена).
  • Переключение: незавершённых задач может быть несколько, активна максимум одна — старт другой автоматически ставит текущую на паузу.
  • Трей: пауза/продолжить, подменю быстрого переключения между задачами, двойной клик — открыть окно. Кнопка «X» сворачивает в трей, выход — только через меню трея. Иконка меняет цвет: зелёная — идёт учёт, серая — пауза.
  • Автопауза при блокировке компьютера (Win+L) и автовозобновление при разблокировке; отключается в настройках.
  • Автозапуск при старте Windows (HKCU\Software\Microsoft\Windows\CurrentVersion\Run, параметр /autostart — запуск свёрнутым в трей); включается в настройках.
  • Jira: при завершении задачи с номером время отправляется в worklog (POST /rest/api/2/issue/<key>/worklog, авторизация Bearer PAT). Время округляется вверх до минуты (минимум 1 минута), started — реальное начало работы над задачей, комментарий — название задачи. Отправка в фоновом потоке, интерфейс не блокируется.
  • Отказоустойчивость синхронизации: при ошибке (сеть, неверный номер, протухший токен) задача завершается локально, текст ошибки сохраняется; повторная отправка — кнопкой «Отправить в Jira» либо автоматически при следующем запуске приложения.
  • Отчёты за период (пресеты «сегодня / неделя / месяц»): детализация по задачам, итоги по типам, общий итог; интервалы обрезаются по границам периода. Экспорт в HTML — открывается в браузере, оттуда печать.
  • Устойчивость к сбоям: время хранится интервалами работы; у открытого интервала раз в минуту обновляется heartbeat. После крэша или выключения ПК незакрытый интервал закрывается по последней отметке, задача переводится на паузу, показывается уведомление.

Хранение данных

Что Где
База (SQLite, WAL) %APPDATA%\Tickwork\tracker.db — создаётся автоматически
Токен Jira в базе, зашифрован DPAPI под учётной записью пользователя
Автозапуск HKCU\Software\Microsoft\Windows\CurrentVersion\Run, значение Tickwork

При первом запуске выполняется миграция со старого имени проекта: каталог %APPDATA%\JiraTimeTracker переносится в %APPDATA%\Tickwork, значение автозапуска JiraTimeTracker заменяется на Tickwork.

Сборка

RAD Studio / Delphi 10.3 (BDS 20.0), платформа Win32:

call "C:\Program Files (x86)\Embarcadero\Studio\20.0\bin\rsvars.bat"
msbuild Tickwork.dproj /t:Build /p:Config=Release /p:Platform=Win32

Результат: Win32\Release\Tickwork.exe. Зависимостей нет — SQLite-драйвер FireDAC статически линкуется, HTTP через системный WinHTTP/SChannel.

Правила для исходников:

  • .pas — UTF-8 с BOM (в строках кириллица; без BOM dcc32 портит текст);
  • .dfm — только ASCII: все русские подписи назначаются в коде (ApplyCaptions в FormCreate).

Настройка

Кнопка «Настройки»: адрес Jira (например https://jira.company.ru), Personal Access Token, «Проверить соединение» (GET /rest/api/2/myself — покажет имя пользователя), автозапуск, автопауза.

HTTPS-сертификат сервера Jira должен быть доверенным в Windows (корпоративный CA в хранилище сертификатов).

Структура проекта

Модуль Назначение
Tickwork.dpr точка входа: mutex единственного экземпляра, режим /autostart
uTypes.pas типы задач/статусов, форматирование времени, валидация ключа Jira
uDM.pas SQLite/FireDAC: схема, задачи, интервалы, отчёты, настройки, восстановление
uAppSettings.pas настройки, DPAPI-шифрование токена, автозапуск в реестре
uJiraClient.pas REST-клиент Jira: проверка соединения, отправка worklog
uMain.pas главная форма, трей, автопауза по блокировке сессии, синхронизация
uTaskEditForm.pas диалог редактирования задачи
uSettingsForm.pas форма настроек
uReportForm.pas отчёты и HTML-экспорт

Схема БД

tasks(id, title, task_type, jira_key, status,          -- 0 пауза, 1 активна, 2 завершена
      created_at, completed_at,
      synced, synced_at, jira_worklog_id, sync_error)  -- состояние передачи в Jira

work_intervals(id, task_id, started_at, stopped_at,    -- stopped_at IS NULL = учёт идёт
               heartbeat_at)                           -- для восстановления после сбоя

settings(key, value)                                   -- jira_url, jira_token (DPAPI), ...

Время задачи = сумма её интервалов; отчёты считаются по интервалам, попадающим в период.

About

Простое приложение для учёта времени над задачами

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages