/DotProject

Programms for work with jobsystem DotProject

Primary LanguagePython

Программы для работы с ДотПроджект

ДотПроджект - система учета обращения (для сопровождения) и заданий (для программистов). Это инициативный проект, который позволяет упростить использование данной системы учета, он состоит из нескольких программ, каждая из которых может работать самостоятельно. Запуск выполняется из коммандной строки или через менеджер типа cron. Программы ведут лог в общем файле dot_project.log.

Конфигурация

Вся конфигурационная информация хранится в файле config.ini кроме токена авторизации для интеграции со slack, который должен быть помещен в файл token.txt (по понятным причинам его в составе репозитария нет).

За чтение и проверку конфигурации отвечают функции из файла config.ini, они используются в другим модулях.

Лидеры ДотПроджект

Это небольшой игровой момент, который бодрит. Программа leaders.py определяет следующие показатели:
  1. Сколько обращений было за период и каких (консультации, исправление ошибок, доработки) у каждого, за период.
  2. Сколько обращений у 5 лидеров и входит ли пользователь в их число.

Направляет пользователю в slack сообщение. Т.к. это не всем интересно, то работает только с пользователями, у кого в конфигурационном файле установлен stat=1. Период задается как параметр при запуске программы и может быть одним из day, week, month. Программа запускается из консоли командой python3 leader.py -p week. Предлагается добавить его в cron на ежедневное, еженедельное и ежемесячное использование.

Пример задание в cron:

# Запуск статистики обращений по ДПР ежедневной
01 09 * * 2-6 cd /home/robokot/dotProject; python3 leaders.py -p day>/dev/null 2>&1
# Запуск статистики еженедельной
02 09 * * 1 cd /home/robokot/dotProject; python3 leaders.py -p week>/dev/null 2>&1
# Запуск статистики ежемесячной
03 09 1 * * cd /home/robokot/dotProject; python3 leaders.py -p month>/dev/null 2>&1

Перфекционист

Программа perfectionist.py помогает аккуратно вести ДопПроджек, находит очевидные ошибки и может их исправлять. Отчет о найденных (и исправленных) отправляет в slack или jabber. Может находить следующие ситуации:
  1. Если у пользователя стоит Рассматривается = 1, то находит обращения, по которым уже идет работа, а они висят в статусе новое или принято. Меняет им статус на Рассматривается.
  2. Ищет все обращения пользователя со статусом задания выданы, у которых все задания закрыты выполенны или отменены и предалгает их закрыть.
  3. Находит все обращения по которым пользователи не отвечают больше 5 дней.
  4. Находит все обращения в статусе новые.
  5. Находит все обращения висящие в статусе принято более 5 дней.

Предназначена для запуска через cron ежедневно, пример задания:

# Запуск по рабочим дням, чтобы не беспокоить в выходные.
00 09 * * 1-5 cd /home/robokot/dotProject; python3 main.py>/dev/null 2>&1

Анализ тестов

Программа testView.py предназначена для анализа использования автоматических тестов. По идее у нас должно было увеличиваться кол-во тестов и вместе с ним уменьшаться кол-во ошибок. Но интерес к теме несколько потерян, поэтому программу больше не использую и подробное описание к ней не составил.

Дублирование сообщений почты в Дотпроджект

В Дотпроджект не было интеграции с почтой, это попытка ее прикрутить. Идея заключается в следующем:
  1. Выделить специальный почтовый ящик, на который будет дублироваться вся почта (входящие и исходящие сообщения). Анализировать темы сообщения и если там найдено DPR:XXXXX (XXXXX - номер обращения) то по номеру добавлять в базу данных.
  2. п.1 просто в реализации, но не работает, если письмо пришло впервые. У нас принята система ручного распределения почты по папкам пользователей, поэтому будем анализировать входящие в папке каждого и если найдет новое сообщение, то добавляет его.

Анализ каталогов пользователя для добавления нового обращения

Программа imap2DPR.py должна запускаться по расписанию (cron), не реже раза в день, желательно каждые 15 мин.
  1. После запуска соединяется с IMAP сервером, скачивает заголовки всех писем из папки пользователя за последние 3 дня (т.к. могут подложить старые).
  2. Если в заголовке нет номера обращения в ДПР, то программа выполняет: добавляет в ДПР обращение за текущую дату; к созданному обращению добавляет комментарий (тело письма); в тему письма (на IMAP сервере) добавляет номер обращения.

Действия программы логируются в папке logs. В рабочем режиме желательно логирование переключить в уровень ERROR.

Если у Вас возникнут трудности с установкой ODBC драйвера для Linux - http://tulalinux.ru/ODBC_install.html

Добавление заданий в ДотПроджект из CSV файла

Я планирование выполняю в taskJuggler поэтому есть необходимость задания перенести с ДПР. Для этого формирую CSV файл вот такого форматв "BSI";"Name";"Resources";"Start";"End";"Note".

  1. BSI - номер задачи в taskJuggler - не используется.
  2. Name - наименование задачи - будет названием задачи.
  3. Resources - исполнитель. Исполнителя будем искать в таблице Users.name по полному совпаданию ФИО и UserTypeId == 1 (т.к. задания только для социтовцев), будет записано как Tasks.UserDevelopId. Поэтому важно правильно настроить его в файле ресурсов taskJuggler. Если не найдет выдаст предупреждение.
  4. Star - дата начала задачи Tasks.dateStart.
  5. End - дата окончания Tasks.dateStart.
  6. Note - комментарий к задаче.
  7. Completion - процент выполнения

Важно CSV файлу дать правильное название проекта и рядом с ним подолжить ini файл с информацией по проекту. Формат файла с информацией:

[PROJECT]
# ИД проекта в ДПР
project_id = 193
# ИД региона из RegionType
reg_id = 23

Его нужно создать один раз и так и оставить в папке project_files.

При обработке файла проверяется:

  1. Есть ли уже такая задача. Если нет, то она создается, но если в csv файле указан для нее процент выполнения 100%, то проверяет выполнена задача в ДПР или нет. Если не выполнена, то устанавливает ей статус "Выполнено", дату тестирования и выполнения - текущую.
  2. Если есть, то пока выдает предупреждение и ничего не делает. Потом будет обновлять информацию о задаче.