Redmine Tracker
Описание:
Скрипт для автоматического перенесения всех активностей с Clockify в Redmine. Сначала получаем все активности через Clockify API, затем заносим их через Redmine API.
Переменные
| Clockify | Redmine | Пример/Уточнение |
|---|---|---|
| Описание задачи (Description) | Комментарий | Уточнение у аналитика |
| Теги (Tags) | <Номер задачи> - <Название задачи> | 28882 - Прочие активности по Ветро |
| Задача (Task) | Название ДО | (Проект ветро): Страховые направления |
| Проект (Project) | Проект ветро | Ветро: (Задача/Название ДО) |
| Трекать/Не трекать (Billable/Non-billable) | <Занесена в Redmine или нет> | Если выбрано, то активность будет перенесена |
Тег обязательно должен содержать номер задачи (5 цифр) в начале.
28882 - Прочие активности
28882
28882 Прочие активности

Запуск:
Склонируйте репозиторий командой из раздела «Code»/«Клонировать» на странице проекта, затем перейдите в его каталог:
cd redmine_tracker
Создайте виртуальное окружение и активируйте его
python -m venv venv
Windows
venv/Scripts/activate
Linux/Ubuntu/MacOS
source venv/bin/activate
Обновите pip:
python -m pip install --upgrade pip
Установите зависимости:
pip install -r requirements.txt
И установите локальную команду запуска:
pip install -e .
Создайте файл .env и добавьте в него переменные:
nano .env
*REDMINE_TOKEN=<api_ключ_redmine>
*CLOCKIFY_TOKEN=<api_ключ_clockify>
?USER_ID=<user_id_clockify>
?WORKSPACE_ID=<workspace_id_clockify>
?TRIAL_END_DATE=<дата_середины_испытательного_срока>
* - Обязательные.
? - Опциональные. Могут быть пустыми, но не должны отсутствовать вовсе.
Получение USER_ID и WORKSPACE_ID
- Простой способ: запустить скрипт с пустыми полями
USER_IDиWORKSPACE_IDв файле.env
и они автоматически подгрузятся и сохранятся локально в файле.
Этот способ может помочь в том случае, если у вас всего одно рабочее пространство и один пользователь в Clockify.
В других случаях рекомендую использовать второй способ. - Чуть сложнее: Сделать GET-запроc по эндпоинту
https://app.clockify.me/api/v1/userи указать ваш токен в заголовках запроса. {"X-API-KEY": "ВАШ_ТОКЕН"}
В теле ответа вы получите нужные переменные:
id - этоUSER_ID
activeWorkspace - этоWORKSPACE_ID
TRIAL_END_DATE
Это дата, после которой ваши трудочасы должны заноситься в Redmine в полном количестве. Данная переменная больше актуальна для новичков, которым нужно делить трудочасы пополам.
До указанной даты трудочасы будут заноситься в Redmine наполовину. После этой даты - целиком.
Запуск.
redmine-tracker
Аргументы запуска
| Аргумент | Описание | Пример использования |
|---|---|---|
-h [--help] |
Показать справку | redmine-tracker --help |
-s [--start] |
Дата начала парсинга активностей в формате гггг-мм-дд | redmine-tracker --start 2025-05-19 |
-e [--end] |
Дата окончания парсинга активностей в формате гггг-мм-дд | redmine-tracker -e 2025-05-19 |
-p [--page-size] |
Количество задач для вывода. Выведет последние n записей | redmine-tracker --page-size 15 |
-d [--debug] |
Режим отладки. Не загружает трудочасы в Redmine | redmine-tracker -d |
--dry-run |
Предпросмотр без сохранения активностей и отправки трудочасов | redmine-tracker --dry-run |
-i [--init-db] |
Выполняет миграции и обновляет справочники без отправки трудочасов в Redmine | redmine-tracker --init-db |
При запуске с --init-db файлы из каталога migrations выполняются по имени.
Успешно применённые миграции повторно не запускаются: их имя и время выполнения
сохраняются в таблице migration.
Также можно запускать напрямую из корня проекта:
python main.py