sync_trackers
Общее описание
Проект "Sync Trackers" – это система для синхронизации данных между различными трекерами задач внутри IT-компании. Основная цель – автоматизация процесса переноса временных затрат и другой информации между разными системами учёта, такими как Redmine и Jira.
Описание модулей проекта
- Модуль администрирования (admin.py): Предоставляет интерфейс для управления синхронизациями, включая н астройку источника и назначения трекеров.
- Модуль конфигурации (apps.py): Отвечает за конфигурацию приложения в проекте.
- Пользовательский интерфейс (dashboard.py, templates): Предоставляет веб-страницы для управления процессами копирования временных затрат.
- Обработка данных (processing.py): Содержит логику обработки и синхронизации данных между трекерами.
- Модель данных (models.py): Определяет структуру данных для синхронизации трекеров.
Общая логика работы системы
Система работает на основе Django и предполагает выбор пользователем трекеров для синхронизации. Пользователь через административный интерфейс настраивает пары трекеров для синхронизации временных затрат. После настройки система автоматически обрабатывает данные и переносит информацию из одного трекера в другой в заданный период.
Интеграции с внешними системами
Система интегрирована с внешними системами учета времени, такими как Redmine и Jira. Интеграция позволяет автоматически обрабатывать и переносить данные между этими системами, обеспечивая актуальность информации в разных трекерах. Эта функциональность осуществляется через специализированные API, предоставляемые этими платформами.
Действия в системе
На основе анализа кода проекта были выявлены следующие действия, которые возможно осуществить в системе:
- Создание конфигурации синхронизации - определение пары трекеров задач для последующей синхронизации.
- Запуск процесса синхронизации - инициирование процесса переноса данных между выбранными трекерами.
- Просмотр текущего статуса синхронизации - отслеживание состояния и прогресса текущих операций синхронизации.
- Обновление параметров синхронизации - изменение настроек для уже созданных конфигураций синхронизации.
- Удаление конфигурации синхронизации - отмена ранее настроенных параметров синхронизации.
Сценарий использования
В качестве примера реального использования проекта "Sync Trackers" можно привести следующую ситуацию:
В IT-компании используются разные системы для учета времени и задач - например, Jira и Redmine. Каждый отдел предпочитает работать в своей системе, но для руководства важно иметь общую картину по всем проектам. С помощью "Sync Trackers" можно настроить автоматическую синхронизацию временных затрат и статусов задач между этими системами. Это позволит менеджерам проектов получать актуальные данные без необходимости вручную переносить информацию из одной системы в другую, значительно упрощ ая управление проектами и повышая эффективность работы.
Модель данных
В проекте "Sync Trackers" определены следующие сущности и их поля:
-
SyncTrackers - основная сущность для синхронизации трекеров.
- trackerFrom (ForeignKey на TrackerUser): указывает на пользователя источника трекера задач, откуда будут копироваться данные.
- trackerTo (ForeignKey на TrackerUser): определяет пользователя целевого трекера задач, куда будут копироваться данные.
- process (BooleanField): флаг, указывающий на необходимость обработки синхронизации.
-
TrackerUser (не показана в коде, но предполагается на основе ForeignKey):
- Предположительно содержит информацию о пользователях различных систем трекинга, таких как идентификатор пользователя, API-ключи и другие настройки, специфичные для каждой системы учета времени.
Диаграмма состояний
В проекте "Sync Trackers" можно выделить следующие основные состояния и возможные действия:
Каждое состояние отражает стадию работы системы синхронизации, начиная от создания конфигурации и заканчивая её удалением после завершения работы или в случае возникновения ошибки.
Анализ кода проекта
-
Использование Глобальных Переменных: В
processing.py, используются глобальные переменные, например,ONE_WEEK. Лучше передавать такие константы в качестве параметров функции или определять внутри класса/модуля для лучшей модульности и тестируемости. -
Сложность функций: В
processing.py, функцияuser_processingслишком длинная и обрабатывает множество исключений, что затрудняет понимание и поддержку кода. Рекомендуется разделить её на более мелкие, специализированные функции. -
Магические Числа и Строки: В том же
processing.pyиспользуются магические числа и строки, например, в условиях и исключениях. Это снижает читабельность кода. Лучше использовать именованные константы. -
Дублирование кода: В
dashboard.pyиforms.pyесть повторяющиеся блоки кода, особенно в функциях инициализации. Рекомендуется их вынести в отдельные функции или классы. -
Обработка исключений: В
processing.py, обработка исключений делается через общий блокexcept, что может скрывать непредвиденные ошибки. Лучше использовать более специфичные блоки обработки исключений.
Оценка времени на разработку и оценка кода:
- Время на разработку: Оценка времени зависит от многих факторов, включая уровень опыта команды, инструменты, и методологии разработки. Для опытной команды проект средней сложности, ка к этот, может занять от 1 до 3 недель.
- Оценка кода: 6/10. Код функционален, но есть пространство для улучшения читабельности, структуры и обработки исключений.