const mongoose = require('mongoose'); const reportSchema = new mongoose.Schema({ // Кто подает жалобу reporter: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true }, // На кого подается жалоба reportedUser: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true }, // Причина жалобы reason: { type: String, required: true, enum: [ 'inappropriate_content', 'fake_profile', 'harassment', 'spam', 'offensive_behavior', 'underage', 'other' ] }, // Дополнительное описание description: { type: String, maxlength: 500 }, // Статус жалобы status: { type: String, enum: ['pending', 'reviewed', 'resolved', 'dismissed'], default: 'pending' }, // Администратор, который рассмотрел жалобу reviewedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, // Дата рассмотрения reviewedAt: { type: Date }, // Комментарий администратора adminComment: { type: String, maxlength: 500 }, // Действие, предпринятое администратором actionTaken: { type: String, enum: ['none', 'warning', 'temporary_ban', 'permanent_ban', 'profile_removal'] } }, { timestamps: true }); // Индексы для оптимизации запросов reportSchema.index({ reporter: 1, reportedUser: 1 }); reportSchema.index({ reportedUser: 1, status: 1 }); reportSchema.index({ status: 1, createdAt: -1 }); // Предотвращаем дублирование жалоб от одного пользователя на другого reportSchema.index({ reporter: 1, reportedUser: 1 }, { unique: true }); module.exports = mongoose.model('Report', reportSchema);