Giter Club home page Giter Club logo

ggis-panopticon's Introduction

ГГИС Паноптикум

Скрипты для упрощения жизни при работе с Kaiten, Gitlab и пр.

Cодержание

Установка зависимостей

Python3 предуставновлен на Ubuntu, но если что

sudo apt-get update
sudo apt-get install python3.6 python3-pip

Необходимо поставить расширение для стандатрного модуля по работе с датой и временем:

pip3 install python-dateutil

Также стоит поставить питону модуль requests, shutil:

sudo apt -y install python3-pip
pip3 install requests
pip3 install shutil

Для использования skird_cmp.py и task_manager.py:

pip3 install argparse
pip3 install click

Использование skird.py

Скрипт создает и оформляет карточки по корпоративному стандарту

  1. Поместить номера сторей в текстовый файл data/tasks.txt (или поменяйте путь в скрипте). На каждой новой строчке - через Tab описание того, что вы нужно сделать
42.0
   Страдать фигней
   Рефакторинг
   Связь с front-end
  1. Добавить файл env/env.json
{
 "kaiten_host": "https://kaiten.iccdev.ru", 
 "kaiten_token": "ваш-токен"
}
  1. Запустить скрипт:
python3 skird.py
  1. ??????
  2. Profit. Ваши задачи конвертируются в задачи delivery в бэклоге спринта с нужными:
    • названием (включает id карточки as well)
    • меткой "ГГИС"
    • типом
    • пользователем(вы) в роли "ответственного"
    • Ролью C++

Использование skird_cmd.py

Новый skird_cmd.py аналогичен skird.py, но имеет интерфейс командной строки и подразумеваеет использование без правки исходного кода. Результат вызова skird_cmd.py без аргументов аналогичен вызову skird.py. Для получения справки вызовите:

./skird_cmd.py -h

Помимо этого skird_cmd.py может работать со списком задач в виде json-документа (формат определяется автоматически при расширении файла *.json):

./skird_cmd.py -p "data/tasks.json"

Формат входного json-файла следующий (для понимания поля "config" изучите соответствующее примечание):

{
  "BUG": {
    "81.23465": [
      {
        "config": "delivery", //можно опустить, используется "delivery" по-умолчанию
        "name": "Починить всё это",
        "size": 16 //(время в часах) можно опустить, используется занчение из выбранной конфигурации
      }
    ]
  },
  "US-EN": {
    "49.9": [
      {
        "config": "delivery",
        "name": "Что-то там интересное делать",
      }
    ],
    "94.3": [
      {
        "config": "discovery",
        "name": "Декомпозиция задач по адаптации алгоритмов буфера обмена и сессий",
        "size": 4
      },
      {
        "config": "delivery",
        "name": "Реализация всего этого",
        "size": 16
      }
    ]
  }
}

Использование task_manager.py

Скрипт task_manager.py призван помочь создать список задач в виде json-формата в автоматическом режиме. Выполните и следуйте вопросам из консоли:

./task_manager.py

Результом исполнения скрипта можно считать файл data/tasks.json, который позже можно поправить вручную или же перед непосредственным ответом на вопрос скрипта "Запустить скрипт создания новых карточек с Вашей конфигурацией?".

Изменение конфигурации

Поскольку теперь нам нужно заводить карточки разных типов, были добавлены конфигурационные файлы следующей структуры:

{
    "board_id": 192,
    "column_id": 776,
    "lane_id": 1275,
    "size_text": "16 ч",
    "type_id": 6,
    
    "properties": { 
        "id_19": "1"
    }
}

board_id - ID доски, на которой нужно создать карточку
column_id - ID колонки
lane_id - Даже не спрашивайте - не помню
size_text - Длительность с единицами измерения
type_id - Тип карточки, очередное магическое число. 11 - Delivery, 6 - Discovery.
properties.id_19 - Роль. "1" - С++. Остальные не знаю, реверсите через запросы сами.

Файл с конфигурацией должен находиться в env/skird_config/.
Чтобы поменять конфиг, замените значение переменной в skird.py на имя вашей конфигурации:

   config_name = 'delivery'

Использование time_management.py

Скрипт автоматически списывает одинаковое время в административную карточку в течение указанного времени

  1. Заполнить под свою карточку файл с настройками env/auto_time_log.json
{
    "start_date": "2024-04-01",
    "days_count": 3,
    "time_spent": 20,
    "role_id": 3,
    "card_id": 24411
}

start_date - Дата начала списаний YYYY-MM-DD
days_count - Количество дней в течение которых списывать, включая выходные. В сами выходные время списано не будет, просто оффсет по дням так работает
time_spent - Время списаний в минутах
role_id - Идентификатор роли, 3 - разработчик, остальные потом пронумерую
card_id - ID карточки, в которую списать время. В данном случае - это дейлики

  1. Запустить скрипт:
python3 time_management.py
  1. Принять всю ответственность на себя и ввести любой бред, начинающийся на y или Y.

  2. ????????

  3. Profit

Пожелания и предложения

Оформляйте пожелания в Issues, отправляйте предложения через Pull requests

ggis-panopticon's People

Contributors

greggot avatar algorithm0 avatar moneypoolator avatar

Stargazers

 avatar  avatar Andrey avatar  avatar Blackseam avatar kawaiilodon avatar

Watchers

 avatar  avatar

ggis-panopticon's Issues

Добавить роли

Запрос на добавление роли а-ля C++, React
Поместить настройку в env.json или куда-то рядом

Рефактор

Роман Кукушкин предложил поправить

  • Четырехэтажные циклы
  • Итераторы вместо списков
  • Хелперы для поиска сторей, энейблеров...

От себя добавлю

  • Оформить константы
  • Избавиться от модуля Kaiten - он бесполезен

Реализовать возможность указания типа карточки

У нас теперь стало довольно актуально стало создание карточек исследования.
Есть и другие вопросы, которые классно было бы передавать карточкам.
Предлагаю всё же сменить tasks.txt на tasks.json

{
  "US-EN": {
    "0.148": [
      {
        "name": "Сделать дичь",
        "type": "TD", //Может отсутствовать (TS по умолчанию)
        "size": 8 //Может отсутствовать (16 по умолчанию)
      },
      {
        "name": "Исследовать дичь",
        "type": "TS"
      }
    ],
    "97.7": [
      {
        "name": "Сделать еще дичь"
      }
    ]
  },
  "BUG": []
}

Могу помочь в реализации, если автор меня проконсультирует

Связь статистики по списанным часам с дискордом/телегой

Связать фоновую проверку списания часов с сообщениями в личку в какой-либо мессенджер или на почту. Мб какой-нибудь конфиг с тем, как форматируется сообщение, по какому поводу и как часто писать, в принципе включать ли эту штуку

Перейти на Json, добавить параметры к карточкам

У нас теперь стало довольно актуально стало создание карточек исследования.
Есть и другие вопросы, которые классно было бы передавать карточкам.
Предлагаю всё же сменить tasks.txt на tasks.json

{
  "US-EN": {
    "0.148": [
      {
        "name": "Сделать дичь",
        "type": "TD", //Может отсутствовать (TS по умолчанию)
        "size": 8 //Может отсутствовать (16 по умолчанию)
      },
      {
        "name": "Исследовать дичь",
        "type": "TS"
      }
    ],
    "97.7": [
      {
        "name": "Сделать еще дичь"
      }
    ]
  },
  "BUG": []
}

Могу помочь в реализации, если автор меня проконсультирует

Формат текстового файла, стандратные настройки

Я обычно разбиваю стори на крупные таски по (день - на въехать-начать-пилить, день - на доделать), поэтому скрипт по дефолту ставит 16 часов. Также зашита одна метка "ГГИС" и роль С++. Ну и тип карточки, борда и прочее.

Было бы здорово помечать особенности карточки в файле (например, поставить ей 8 часов и мб описание какое)
А для шаблна создания сделать конфигурационный файл JSON или что-то вроде

{
  "deadline": "31-12-2023",
  "role": "C++",
  "size": 8,
  "tags": [ "ГГИС", "..." ]
}

Дата окончания в карточку

Добавить дату окончания - конец идущего спринта
Решили, что дата будет браться из родительской карточки

Обрабатывать префиксы EN. и US. родительской таски

сейчас поиск идет по всем US и по всем EN. Можно улучшить ситуацию - обрабатывать префиксы EN. и US. родительской таски и искать только по US либо только по EN, заодно страхуясь от случаев когда суффиксы случайно или намеренно оказались одинаковыми

Списание часов

Фоновый процесс, который либо

  • следит за комментами от гитлаба. Звучит как костыль, пушто зависит от другой бабуйни, оставляющей такие комменты

  • следит за коммитами через API самого гитлаба, что более надежно + не требует МР для списания часов (то бишь, подходит и для тех, кто в конце спринта выкатывает коммит на 4к строк)

  • диагностика списанных часов

    • списал 0 часов или больше 8 за один день
    • списал часы по тому, что не соответствует коммитам за день
  • опциональное автоматическое списание

Автосписание времени на административные таски

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

Сбор статистики по всем разрабам

Чтобы не присылать каждый день номера карточек или не проговаривать их на дейлике, организовать сбор статистики в каком-либо виде по указанным разрабам

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.