mirror of
https://github.com/serty2005/rmser.git
synced 2026-02-04 19:02:33 -06:00
пересчет поправил редактирование с перепроведением галка автопроведения работает рекомендации починил
45 lines
2.0 KiB
Go
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)
|
|
}
|