0202-финиш перед десктопом

пересчет поправил
редактирование с перепроведением
галка автопроведения работает
рекомендации починил
This commit is contained in:
2026-02-02 13:53:38 +03:00
parent 10882f55c8
commit 88620f3fb6
37 changed files with 1905 additions and 11162 deletions

View File

@@ -4,29 +4,56 @@ import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
"go.uber.org/zap"
"rmser/internal/domain/account"
"rmser/internal/services/recommend"
"rmser/pkg/logger"
)
type RecommendationsHandler struct {
service *recommend.Service
service *recommend.Service
accountRepo account.Repository
}
func NewRecommendationsHandler(service *recommend.Service) *RecommendationsHandler {
return &RecommendationsHandler{service: service}
func NewRecommendationsHandler(service *recommend.Service, accountRepo account.Repository) *RecommendationsHandler {
return &RecommendationsHandler{
service: service,
accountRepo: accountRepo,
}
}
// GetRecommendations godoc
// @Summary Получить список рекомендаций
// @Description Возвращает сгенерированные рекомендации (проблемные зоны учета)
// @Description Возвращает сгенерированные рекомендации (проблемные зоны учета) для активного сервера
// @Tags recommendations
// @Produce json
// @Success 200 {array} recommendations.Recommendation
// @Failure 500 {object} map[string]string
func (h *RecommendationsHandler) GetRecommendations(c *gin.Context) {
recs, err := h.service.GetRecommendations()
userID := c.MustGet("userID").(uuid.UUID)
// Получаем активный сервер пользователя
server, err := h.accountRepo.GetActiveServer(userID)
if err != nil {
logger.Log.Error("Ошибка получения активного сервера", zap.Error(err))
c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to get active server"})
return
}
if server == nil {
c.JSON(http.StatusNotFound, gin.H{"error": "no active server"})
return
}
// Сначала обновляем рекомендации
if err := h.service.RefreshRecommendations(server.ID); err != nil {
logger.Log.Error("Ошибка обновления рекомендаций", zap.Error(err))
// Не прерываем выполнение, продолжаем с текущими данными
}
// Затем получаем рекомендации
recs, err := h.service.GetRecommendations(server.ID)
if err != nil {
logger.Log.Error("Ошибка получения рекомендаций", zap.Error(err))
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})