jira-bot/pkg/utils/hack.go
Andrey Belvedersky f3175b8ce9 add config
2021-06-06 03:46:11 +03:00

139 lines
4.4 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package utils
import (
"log"
"math/rand"
"time"
settings "git/ecom/jira-bot/pkg/config"
"github.com/andygrunwald/go-jira"
)
func Hack() {
cfg, _ := settings.GetConfig("settings")
tp := jira.BasicAuthTransport{
Username: cfg.Jira.Auth.Username,
Password: cfg.Jira.Auth.Password,
}
jiraClient, _ := jira.NewClient(tp.Client(), cfg.Jira.Url)
me, _, _ := jiraClient.User.GetSelf()
timeNeed := 165 // Количество часов
tm := time.Hour * time.Duration(timeNeed)
log.Println("Необходимо поставить время:", tm)
issue := map[string][]string{ // Задачи
"SA-3000": {
"Конфигрурация nginx",
"Загрузка данных в elastic search",
"Проксирование запросов grpc_pass",
"Работа с вм msk-api601",
},
"ECOM-251": {
"Конфигрурация nginx",
"Проксирование запросов c микросервисов",
"Проксирование galamart.ru/api/v1",
"Настройка вебхуков",
"Авторизация и закрытие некоторых роутов",
},
"ECOM-252": {
"Работа с каталогом",
"Запросы в mysql за характеристиками",
"bulk импорт по городам из yml",
"Добавление изображений из папки /images/1000",
"Добавление комментариев",
},
"ECOM-253": {
"Разработка njs скрипта",
"Конфигрурация nginx",
},
"ECOM-254": {
"Создание 5млн карт",
"Загрузка карт в mindbox",
"Настройка вебхука на выдачу карт",
"Формирование сообщения в шину с картой",
},
"ECOM-255": {
"Добавление кронера для загрузки в mindbox",
"Сохранение и сравненение chk c сdp сообщением",
"Формирование csv",
"Создание бд и структуры храненения чеков",
},
}
// Дней
md := 31
// День с какого числа необходимо заполнить жиру
startDay := time.Date(2021, 05, 0, 9, 0, 0, 0, time.FixedZone(me.TimeZone, 0))
// Мап дней с часами работы
mr := make(map[time.Time]time.Duration)
// Тут должна быть проверка на правздники и выходные дни
for i := 0; i < md; i++ {
day := startDay.AddDate(0, 0, i)
if day.Weekday() != time.Saturday && day.Weekday() != time.Sunday && day.Day() != 9 && day.Day() != 1 && day.Day() != 2 {
mr[day] = 0
}
}
// Кол-во часов в день (сделать рандомно)
hoursDay := tm / time.Duration(len(mr))
for d := range mr {
mr[d] = hoursDay
}
// Задачи и сколько время на них потратить (сделать рандомно от приоритета)
type IssueToWork struct {
WorkTime time.Duration
Issue *jira.Issue
}
issues := []IssueToWork{}
timeToIssue := tm / time.Duration(len(issue))
for i := range issue {
isWork := IssueToWork{}
issue, _, _ := jiraClient.Issue.Get(i, nil)
isWork.Issue = issue
isWork.WorkTime = timeToIssue
issues = append(issues, isWork)
}
all := time.Hour * 0
// Сделать что бы комменты были тоже рандомнее
//usedComments := make(map[string]int)
for d, v := range mr {
randomIs := issues[rand.Intn(len(issues))]
// если в задаче осталось время то
if randomIs.WorkTime > time.Hour {
t := jira.Time(d)
work := jira.WorklogRecord{
TimeSpentSeconds: int(v.Seconds()),
Comment: issue[randomIs.Issue.Key][rand.Intn(len(issue[randomIs.Issue.Key]))],
Started: &t,
IssueID: randomIs.Issue.Key,
}
// Добавление отметки в задачу
if !cfg.Debug {
_, _, err := jiraClient.Issue.AddWorklogRecord(randomIs.Issue.Key, &work)
if err != nil {
log.Fatal(err)
}
}
log.Println("Отметил время на задаче:", work.IssueID)
log.Println("Осталось: ", tm-all)
//usedComments[randomComment] =+ 1
randomIs.WorkTime -= v
all += v
}
}
log.Println("Поставлено ", all.String(), "часов")
// for cm, v := range usedComments {
// log.Println(cm, v)
// }
}