2021-06-03 01:59:32 +03:00
|
|
|
|
package utils
|
2021-06-02 16:07:53 +03:00
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"log"
|
|
|
|
|
"math/rand"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
settings "git/ecom/jira-bot/pkg/config"
|
|
|
|
|
|
|
|
|
|
"github.com/andygrunwald/go-jira"
|
|
|
|
|
)
|
|
|
|
|
|
2021-06-03 01:59:32 +03:00
|
|
|
|
func Hack() {
|
2021-06-06 03:46:11 +03:00
|
|
|
|
cfg, _ := settings.GetConfig("settings")
|
2021-06-02 16:07:53 +03:00
|
|
|
|
tp := jira.BasicAuthTransport{
|
|
|
|
|
Username: cfg.Jira.Auth.Username,
|
|
|
|
|
Password: cfg.Jira.Auth.Password,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
jiraClient, _ := jira.NewClient(tp.Client(), cfg.Jira.Url)
|
2021-06-06 03:46:11 +03:00
|
|
|
|
|
2021-06-02 16:07:53 +03:00
|
|
|
|
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)
|
|
|
|
|
// }
|
|
|
|
|
}
|