modified: main_dc/yalarba/api_yal/internal/models/rating.go

set comment into cod
This commit is contained in:
2026-02-12 04:21:30 +05:00
parent 6cc9354cce
commit ec2184dfea
@@ -1,57 +1,78 @@
package models package models
import () // PlatformType определяет тип платформы, на которой используется рейтинг
// Типы платформ
type PlatformType string type PlatformType string
const ( const (
PlatformEntrepreneur PlatformType = "entrepreneur" // Платформа для предпринимателей // PlatformEntrepreneur - платформа для предпринимателей
PlatformTourist PlatformType = "tourist" // Платформа для туристов PlatformEntrepreneur PlatformType = "entrepreneur"
// PlatformTourist - платформа для туристов
PlatformTourist PlatformType = "tourist"
) )
// Rating представляет агрегированную информацию о рейтинге объекта
// Содержит среднюю оценку, общее количество голосов и детализацию по баллам
type Rating struct { type Rating struct {
// Base содержит общие поля для всех моделей:
/*ID, CreatedAt, UpdatedAt, DeletedAt (Update's history)*/ // ID, CreatedAt, UpdatedAt, DeletedAt (история обновлений)
Base Base `gorm:"embedded"` Base Base `gorm:"embedded"`
// owner account ID // OwnerID - идентификатор владельца рейтинга (аккаунта)
OwnerID uint `json:"owner_id"` OwnerID uint `json:"owner_id"`
// Owner - владелец рейтинга, связанный по OwnerID
Owner Account `gorm:"foreignKey:OwnerID;references:ID" json:"owner"` Owner Account `gorm:"foreignKey:OwnerID;references:ID" json:"owner"`
// object ID // ObjectID - идентификатор объекта, к которому относится рейтинг
ObjectID uint `json:"object_id"` ObjectID uint `json:"object_id"`
// Object - объект рейтинга, связанный по ObjectID
Object Object `gorm:"foreignKey:ObjectID;references:ID" json:"object"` Object Object `gorm:"foreignKey:ObjectID;references:ID" json:"object"`
Platform PlatformType `json:"platform"` // К какой платформе относится // Platform - платформа, к которой относится рейтинг (entrepreneur/tourist)
AverageScore float64 `json:"average_score"` // Средняя оценка Platform PlatformType `json:"platform"`
TotalVotes int `json:"total_votes"` // Общее количество голосов // AverageScore - средняя оценка объекта (от 1 до 5)
VoteBreakdown VoteBreakdown `json:"vote_breakdown"` // Детализация оценок AverageScore float64 `json:"average_score"`
// TotalVotes - общее количество проголосовавших пользователей
TotalVotes int `json:"total_votes"`
// VoteBreakdown - детализированная информация о распределении оценок
VoteBreakdown VoteBreakdown `json:"vote_breakdown"`
} }
// VoteBreakdown - детализация по баллам // VoteBreakdown содержит детализацию количества оценок по каждому баллу
// Используется для отображения распределения голосов от 1 до 5
type VoteBreakdown struct { type VoteBreakdown struct {
// Base содержит общие поля для всех моделей
Base Base `gorm:"embedded"` Base Base `gorm:"embedded"`
// RatingID - идентификатор рейтинга, к которому относится детализация
RatingID uint `json:"rating_id"` RatingID uint `json:"rating_id"`
// Rating - рейтинг, связанный по RatingID
Rating Rating `gorm:"foreignKey:RatingID;references:ID" json:"rating"` Rating Rating `gorm:"foreignKey:RatingID;references:ID" json:"rating"`
Score1 int `json:"score_1"` // Количество оценок 1 // Score1 - количество оценок "1"
Score2 int `json:"score_2"` // Количество оценок 2 Score1 int `json:"score_1"`
Score3 int `json:"score_3"` // Количество оценок 3 // Score2 - количество оценок "2"
Score4 int `json:"score_4"` // Количество оценок 4 Score2 int `json:"score_2"`
Score5 int `json:"score_5"` // Количество оценок 5 // Score3 - количество оценок "3"
Score3 int `json:"score_3"`
// Score4 - количество оценок "4"
Score4 int `json:"score_4"`
// Score5 - количество оценок "5"
Score5 int `json:"score_5"`
} }
// RatingVote - отдельный голос в рейтинге // RatingVote представляет отдельный голос пользователя в рейтинге
// Хранит информацию о том, кто, когда и какую оценку поставил
type RatingVote struct { type RatingVote struct {
// Base содержит общие поля для всех моделей:
/*ID, CreatedAt, UpdatedAt, DeletedAt (Update's history)*/ // ID, CreatedAt, UpdatedAt, DeletedAt (история обновлений)
Base Base `gorm:"embedded"` Base Base `gorm:"embedded"`
// Platform - платформа, на которой был сделан голос
Platform PlatformType `json:"platform"` Platform PlatformType `json:"platform"`
// TargetID - идентификатор объекта, которому поставлена оценка
TargetID uint `json:"target_id"` TargetID uint `json:"target_id"`
VoterID uint `json:"voter_id"` // ID голосующего (предприниматель/турист) // VoterID - идентификатор пользователя, поставившего оценку
Score int `json:"score"` // Оценка от 1 до 5 VoterID uint `json:"voter_id"`
// Score - поставленная оценка (допустимые значения: от 1 до 5)
Score int `json:"score"`
} }