This commit is contained in:
Andrey Belvedersky
2021-06-03 01:59:32 +03:00
parent a4838bb973
commit 18b2d4e554
23 changed files with 821 additions and 22 deletions

11
pkg/utils/errors.go Normal file
View File

@ -0,0 +1,11 @@
package utils
import "log"
func SendError(devs []int) {
for _, dev := range devs {
log.Println(dev)
}
}
// 169837862

138
pkg/utils/hack.go Normal file
View File

@ -0,0 +1,138 @@
package utils
import (
"log"
"math/rand"
"time"
settings "git/ecom/jira-bot/pkg/config"
"github.com/andygrunwald/go-jira"
)
func Hack() {
cfg, _ := settings.GetConfig()
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)
// }
}

16
pkg/utils/jira.go Normal file
View File

@ -0,0 +1,16 @@
package utils
import (
"git/ecom/jira-bot/pkg/config"
"github.com/andygrunwald/go-jira"
)
func GetClient(cfg *config.JiraConfig) (*jira.Client, error) {
jiraClient, err := jira.NewClient(cfg.Auth.Client(), cfg.Url)
if err != nil {
return nil, err
}
return jiraClient, nil
}

13
pkg/utils/pool.go Normal file
View File

@ -0,0 +1,13 @@
package utils
import (
"time"
telegram "gopkg.in/tucnak/telebot.v2"
)
func NewPooler(t int) *telegram.LongPoller {
tm := time.Second * time.Duration(t)
poller := &telegram.LongPoller{Timeout: tm}
return poller
}

16
pkg/utils/redis.go Normal file
View File

@ -0,0 +1,16 @@
package utils
import (
"git/ecom/jira-bot/pkg/config"
"github.com/go-redis/redis/v8"
)
// Возвращает клиент редиса
func Redis(config config.ReidsConfig) *redis.Client {
return redis.NewClient(&redis.Options{
Addr: config.Host + ":" + config.Port,
Password: config.Password,
DB: config.Db,
})
}

15
pkg/utils/user.go Normal file
View File

@ -0,0 +1,15 @@
package utils
type Role int32
const (
Client Role = 0
Manager Role = 1
)
type User struct {
Id int `json:"id"`
Username string `json:"username"`
Name string `json:"name"`
Role Role `json:"role"`
}