debug: gigachat won't create questions
All checks were successful
Deploy / CreateImage (push) Successful in 2m23s
Deploy / DeployService (push) Successful in 29s

This commit is contained in:
skeris 2025-06-03 01:16:09 +03:00
parent ae22c06c3a
commit 525d54645c
10 changed files with 20 additions and 49 deletions

@ -1,24 +0,0 @@
name: Deploy
run-name: ${{ gitea.actor }} build image and push to container registry
on:
push:
branches:
- 'main'
- 'staging'
jobs:
CreateImage:
runs-on: [squizstaging]
uses: http://gitea.pena/PenaDevops/actions.git/.gitea/workflows/build-image.yml@v1.1.6-p
with:
runner: squizstaging
secrets:
REGISTRY_USER: ${{ secrets.REGISTRY_USER }}
REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
DeployService:
runs-on: [squizstaging]
needs: CreateImage
uses: http://gitea.pena/PenaDevops/actions.git/.gitea/workflows/deploy.yml@v1.1.7
with:
runner: squizstaging

@ -8,19 +8,19 @@ on:
jobs: jobs:
CreateImage: CreateImage:
runs-on: [hubstaging] runs-on: [squizstaging]
uses: http://gitea.pena/PenaDevops/actions.git/.gitea/workflows/build-image.yml@v1.1.6-p uses: http://gitea.pena/PenaDevops/actions.git/.gitea/workflows/build-image.yml@v1.1.6-p
with: with:
runner: hubstaging runner: squizstaging
secrets: secrets:
REGISTRY_USER: ${{ secrets.REGISTRY_USER }} REGISTRY_USER: ${{ secrets.REGISTRY_USER }}
REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
DeployService: DeployService:
runs-on: [hubstaging] runs-on: [squizstaging]
needs: CreateImage needs: CreateImage
uses: http://gitea.pena/PenaDevops/actions.git/.gitea/workflows/deploy.yml@v1.1.4-p7 uses: http://gitea.pena/PenaDevops/actions.git/.gitea/workflows/deploy.yml@v1.1.4-p7
with: with:
runner: hubstaging runner: squizstaging
actionid: ${{ gitea.run_id }} actionid: ${{ gitea.run_id }}

@ -1,4 +1,4 @@
FROM gitea.pena/penadevops/container-images/golang:main as build FROM gitea.pena/penadevops/container-images/golang:1.23.8-alpine as build
WORKDIR /app WORKDIR /app
COPY . . COPY . .
RUN go mod download RUN go mod download

@ -8,7 +8,7 @@ services:
IS_PROD_LOG: 'false' IS_PROD_LOG: 'false'
IS_PROD: 'false' IS_PROD: 'false'
POSTGRES_URL: 'host=10.7.0.10 port=5432 user=squiz password=Redalert2 dbname=squiz sslmode=disable' POSTGRES_URL: 'host=10.7.0.10 port=5432 user=squiz password=Redalert2 dbname=squiz sslmode=disable'
KAFKA_BROKER: '10.7.0.6:9092' KAFKA_BROKERS: '10.7.0.6:9092'
KAFKA_TOPIC: 'tariffs' KAFKA_TOPIC: 'tariffs'
QUIZ_ID: quizCnt QUIZ_ID: quizCnt
AMOUNT: 10 AMOUNT: 10
@ -23,6 +23,6 @@ services:
S3_ACCESS_KEY: 5CV77KVDUU9H0II9R24M S3_ACCESS_KEY: 5CV77KVDUU9H0II9R24M
S3_SECRET_KEY: 0W0m8DyvdAKRJnsAy6mB5zndQ7RouJBLhqhtThcu S3_SECRET_KEY: 0W0m8DyvdAKRJnsAy6mB5zndQ7RouJBLhqhtThcu
KAFKA_TOPIC_GIGA_CHAT: gigachat KAFKA_TOPIC_GIGA_CHAT: gigachat
KAFKA_GROUP_GIGA_CHAT: gigachat KAFKA_GROUP_GIGA_CHAT: ""
GIGA_CHAT_API_AUTH_KEY: Y2MzZWUxZDMtZGE5MC00ZTFjLWI5YzItM2ViMTZmMDM0YTkwOmY1NTlkOGM3LWUyNmQtNGUwMC1hODE0LTJlYjQ5NDA5ODdjMQ== GIGA_CHAT_API_AUTH_KEY: Y2MzZWUxZDMtZGE5MC00ZTFjLWI5YzItM2ViMTZmMDM0YTkwOmY1NTlkOGM3LWUyNmQtNGUwMC1hODE0LTJlYjQ5NDA5ODdjMQ==
GIGA_CHAT_API_BASE_URL: "https://gigachat.devices.sberbank.ru/" GIGA_CHAT_API_BASE_URL: "https://gigachat.devices.sberbank.ru/api/v1"

@ -104,11 +104,9 @@ func (w *SendToClient) processPendingAnswer(ctx context.Context) {
return return
} }
fmt.Println("ANS")
for _, key := range pendingAnswers { for _, key := range pendingAnswers {
func() { func() {
fmt.Println("ANS1", key)
answerJSON, err := w.redis.GetDel(ctx, key).Result() answerJSON, err := w.redis.GetDel(ctx, key).Result()
if err == redis.Nil { if err == redis.Nil {
return return
@ -120,28 +118,24 @@ func (w *SendToClient) processPendingAnswer(ctx context.Context) {
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
w.reportError(nil, fmt.Sprintf("recovering from panic or error setting redis value %v", r)) w.reportError(nil, fmt.Sprintf("recovering from panic or error setting redis value %v", r))
fmt.Println("ANS1ERRR", r)
_ = w.redis.Set(ctx, key, answerJSON, 0).Err() _ = w.redis.Set(ctx, key, answerJSON, 0).Err()
} }
}() }()
var answer model.Answer var answer model.Answer
err = json.Unmarshal([]byte(answerJSON), &answer) err = json.Unmarshal([]byte(answerJSON), &answer)
fmt.Println("ANS2", err)
if err != nil { if err != nil {
w.reportError(err, "Error unmarshal answer") w.reportError(err, "Error unmarshal answer")
return return
} }
answerContent, err := wctools.ProcessAnswer(answer.Content) answerContent, err := wctools.ProcessAnswer(answer.Content)
fmt.Println("ANS3", err)
if err != nil { if err != nil {
w.reportError(err, "Error unmarshal answer content") w.reportError(err, "Error unmarshal answer content")
return return
} }
allAnswersDirty, err := w.dal.WorkerAnsRepo.GetAllAnswersByQuizID(ctx, answer.Session) allAnswersDirty, err := w.dal.WorkerAnsRepo.GetAllAnswersByQuizID(ctx, answer.Session)
fmt.Println("ANS4", err)
if err != nil { if err != nil {
w.reportError(err, "Error getting all answers by quizID") w.reportError(err, "Error getting all answers by quizID")
return return
@ -149,7 +143,6 @@ func (w *SendToClient) processPendingAnswer(ctx context.Context) {
allAnswers := wctools.CleanNullContent(allAnswersDirty) allAnswers := wctools.CleanNullContent(allAnswersDirty)
questionsMap, sortedallAnswers, err := w.dal.QuestionRepo.GetMapQuestions(ctx, allAnswers) questionsMap, sortedallAnswers, err := w.dal.QuestionRepo.GetMapQuestions(ctx, allAnswers)
fmt.Println("ANS5", err)
if err != nil { if err != nil {
w.reportError(err, "Error getting questionsMap") w.reportError(err, "Error getting questionsMap")
return return
@ -160,14 +153,12 @@ func (w *SendToClient) processPendingAnswer(ctx context.Context) {
} }
quizConfig, accountId, err := w.dal.QuizRepo.GetQuizConfig(ctx, answer.QuizId) quizConfig, accountId, err := w.dal.QuizRepo.GetQuizConfig(ctx, answer.QuizId)
fmt.Println("ANS6", err)
if err != nil { if err != nil {
w.reportError(err, "Error getting quiz config") w.reportError(err, "Error getting quiz config")
return return
} }
quiz, err := w.dal.QuizRepo.GetQuizById(ctx, accountId, answer.QuizId) quiz, err := w.dal.QuizRepo.GetQuizById(ctx, accountId, answer.QuizId)
fmt.Println("ANS60", err, accountId, answer.QuizId)
if err != nil { if err != nil {
w.reportError(err, "Error getting quiz") w.reportError(err, "Error getting quiz")
return return
@ -180,7 +171,6 @@ func (w *SendToClient) processPendingAnswer(ctx context.Context) {
} }
account, privileges, err := w.dal.AccountRepo.GetAccAndPrivilegeByEmail(ctx, accountId) account, privileges, err := w.dal.AccountRepo.GetAccAndPrivilegeByEmail(ctx, accountId)
fmt.Println("ANS7", err)
if err != nil { if err != nil {
w.reportError(err, "Error getting account and privileges by email") w.reportError(err, "Error getting account and privileges by email")
return return
@ -196,7 +186,6 @@ func (w *SendToClient) processPendingAnswer(ctx context.Context) {
answerContent: answerContent, answerContent: answerContent,
answerTime: answer.CreatedAt, answerTime: answer.CreatedAt,
}) })
fmt.Println("ANS8", err, result, privileges)
if err != nil { if err != nil {
w.reportError(err, "Error process answer with privileges") w.reportError(err, "Error process answer with privileges")
return return
@ -226,7 +215,6 @@ type ProcessAnsWithPriv struct {
func (w *SendToClient) processAnswerWithPrivileges(ctx context.Context, data ProcessAnsWithPriv) (bool, error) { func (w *SendToClient) processAnswerWithPrivileges(ctx context.Context, data ProcessAnsWithPriv) (bool, error) {
err := w.notificationCustomer(ctx, data.account, data.privileges) err := w.notificationCustomer(ctx, data.account, data.privileges)
fmt.Println("ANS81", err)
if err != nil { if err != nil {
return false, err return false, err
} }

@ -18,6 +18,7 @@ import (
"github.com/go-resty/resty/v2" "github.com/go-resty/resty/v2"
"go.uber.org/zap" "go.uber.org/zap"
"time" "time"
"fmt"
) )
var zapOptions = []zap.Option{ var zapOptions = []zap.Option{
@ -153,6 +154,7 @@ func New(ctx context.Context, cfg initialize.Config, build Build) error {
// метод для обновления токенов гигачата // метод для обновления токенов гигачата
go gigaChatClient.TokenResearch(ctx) go gigaChatClient.TokenResearch(ctx)
fmt.Println("INIT GGC WORKER", cfg.KafkaTopicGigaChat)
gigaChatWorker, err := gigachatwc.NewGigaChatTaskScheduler(gigachatwc.Deps{ gigaChatWorker, err := gigachatwc.NewGigaChatTaskScheduler(gigachatwc.Deps{
KafkaBrokers: cfg.KafkaBrokers, KafkaBrokers: cfg.KafkaBrokers,
KafkaTopic: cfg.KafkaTopicGigaChat, KafkaTopic: cfg.KafkaTopicGigaChat,

@ -10,6 +10,7 @@ import (
"github.com/twmb/franz-go/pkg/kgo" "github.com/twmb/franz-go/pkg/kgo"
"go.uber.org/zap" "go.uber.org/zap"
"time" "time"
"fmt"
) )
type GigaChatTaskScheduler struct { type GigaChatTaskScheduler struct {
@ -29,13 +30,15 @@ type Deps struct {
} }
func NewGigaChatTaskScheduler(deps Deps) (*GigaChatTaskScheduler, error) { func NewGigaChatTaskScheduler(deps Deps) (*GigaChatTaskScheduler, error) {
fmt.Println("GGC NEW", deps.KafkaBrokers, deps.KafkaTopic)
client, err := kgo.NewClient( client, err := kgo.NewClient(
kgo.SeedBrokers(deps.KafkaBrokers), kgo.SeedBrokers(deps.KafkaBrokers),
kgo.ConsumerGroup(deps.KafkaGroup),
kgo.ConsumeTopics(deps.KafkaTopic), kgo.ConsumeTopics(deps.KafkaTopic),
kgo.ConsumerGroup("gigachat1"),
kgo.ConsumeResetOffset(kgo.NewOffset().AfterMilli(time.Now().UnixMilli())), kgo.ConsumeResetOffset(kgo.NewOffset().AfterMilli(time.Now().UnixMilli())),
) )
if err != nil { if err != nil {
fmt.Println("GCCER", err)
return nil, err return nil, err
} }
@ -66,8 +69,10 @@ func (r *GigaChatTaskScheduler) Start(ctx context.Context) {
for { for {
select { select {
case <-ticker.C: case <-ticker.C:
fmt.Println("FETCHED GGC")
r.fetchMessages(ctx) r.fetchMessages(ctx)
case <-ctx.Done(): case <-ctx.Done():
fmt.Println("GCC DONE")
return return
} }
} }
@ -75,6 +80,8 @@ func (r *GigaChatTaskScheduler) Start(ctx context.Context) {
func (r *GigaChatTaskScheduler) fetchMessages(ctx context.Context) { func (r *GigaChatTaskScheduler) fetchMessages(ctx context.Context) {
fetches := r.kafkaClient.PollFetches(ctx) fetches := r.kafkaClient.PollFetches(ctx)
fmt.Println("GGC CONS", fetches)
iter := fetches.RecordIter() iter := fetches.RecordIter()
for !iter.Done() { for !iter.Done() {
@ -85,6 +92,7 @@ func (r *GigaChatTaskScheduler) fetchMessages(ctx context.Context) {
r.logger.Error("failed to unmarshal kafka message", zap.ByteString("value", record.Value), zap.Error(err)) r.logger.Error("failed to unmarshal kafka message", zap.ByteString("value", record.Value), zap.Error(err))
continue continue
} }
fmt.Println("GGC MES", msg)
r.handleMessage(ctx, msg) r.handleMessage(ctx, msg)
} }
@ -113,6 +121,7 @@ func (r *GigaChatTaskScheduler) handleMessage(ctx context.Context, msg MessageGi
// можем ли мы скипать вопросы с которыми у нас произошла ошибка // можем ли мы скипать вопросы с которыми у нас произошла ошибка
for i := 0; i < 10; i++ { for i := 0; i < 10; i++ {
updJson, err = r.gigaChatClient.SendMsg(ctx, audience, question) updJson, err = r.gigaChatClient.SendMsg(ctx, audience, question)
fmt.Println("GGC ANS", updJson, err)
if err == nil { if err == nil {
if err = json.Unmarshal([]byte(updJson), &resp); err == nil { if err = json.Unmarshal([]byte(updJson), &resp); err == nil {
question.Title = resp.Title question.Title = resp.Title

@ -44,7 +44,6 @@ func (w *CheckWorker) Start(ctx context.Context) {
for { for {
select { select {
case <-ticker.C: case <-ticker.C:
fmt.Println("CHECK")
w.deleteExpired(ctx) w.deleteExpired(ctx)
case <-ctx.Done(): case <-ctx.Done():
fmt.Println("Check worker terminated") fmt.Println("Check worker terminated")

@ -3,7 +3,6 @@ package shortstat
import ( import (
"context" "context"
"database/sql" "database/sql"
"fmt"
"gitea.pena/SQuiz/common/dal" "gitea.pena/SQuiz/common/dal"
"gitea.pena/SQuiz/worker/internal/workers" "gitea.pena/SQuiz/worker/internal/workers"
"time" "time"
@ -26,9 +25,7 @@ func New(d *dal.DAL, p time.Duration) *ShortStat {
// Start method for starting worker with long polling from postgres // Start method for starting worker with long polling from postgres
func (t *ShortStat) Start(ctx context.Context) { func (t *ShortStat) Start(ctx context.Context) {
t.w.Start(ctx, func(ctx context.Context) error { t.w.Start(ctx, func(ctx context.Context) error {
fmt.Println("SHORTSTAT1")
if err := t.d.WorkerRepo.WorkerStatProcess(ctx); err != nil { if err := t.d.WorkerRepo.WorkerStatProcess(ctx); err != nil {
fmt.Println("SHORTSTAT2", err)
if err != sql.ErrNoRows { if err != sql.ErrNoRows {
return err return err
} }

BIN
main

Binary file not shown.