Files
SERTY 88620f3fb6 0202-финиш перед десктопом
пересчет поправил
редактирование с перепроведением
галка автопроведения работает
рекомендации починил
2026-02-02 13:53:38 +03:00

45 lines
2.0 KiB
Go

package recommendations
import (
"time"
"github.com/google/uuid"
)
// Типы проблем
const (
TypeUnused = "UNUSED_IN_RECIPES" // Товар не используется в техкартах
TypeNoIncoming = "NO_INCOMING" // Ингредиент (GOODS) в техкарте, но нет приходов
TypeStale = "STALE_GOODS" // Есть приходы, но нет продаж
TypeDishInRecipe = "DISH_IN_RECIPE" // Блюдо (DISH) в составе другого блюда
TypePurchasedButUnused = "PURCHASED_BUT_UNUSED" // Активно закупается, но нет в техкартах
TypeUsageNoIncoming = "USAGE_NO_INCOMING" // Есть расходы, но нет приходов
)
// Recommendation - Результат анализа
type Recommendation struct {
ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()"`
RMSServerID uuid.UUID `gorm:"type:uuid;not null;index"`
Type string `gorm:"type:varchar(50);index"`
ProductID uuid.UUID `gorm:"type:uuid;index"`
ProductName string `gorm:"type:varchar(255)"`
Reason string `gorm:"type:text"`
CreatedAt time.Time
}
// Repository отвечает за аналитические выборки и хранение результатов
type Repository interface {
// Методы анализа — добавить serverID
FindUnusedGoods(serverID uuid.UUID) ([]Recommendation, error)
FindNoIncomingIngredients(serverID uuid.UUID, days int) ([]Recommendation, error)
FindStaleGoods(serverID uuid.UUID, days int) ([]Recommendation, error)
FindDishesInRecipes(serverID uuid.UUID) ([]Recommendation, error)
FindPurchasedButUnused(serverID uuid.UUID, days int) ([]Recommendation, error)
FindUsageWithoutPurchase(serverID uuid.UUID, days int) ([]Recommendation, error)
// Методы хранения — добавить serverID
SaveAll(serverID uuid.UUID, items []Recommendation) error
GetAll(serverID uuid.UUID) ([]Recommendation, error)
}