Spaces:
Sleeping
Sleeping
| const mongoose = require('mongoose'); | |
| const adminAlertSchema = new mongoose.Schema( | |
| { | |
| type: { | |
| type: String, | |
| required: true, | |
| enum: ['stuck_order', 'failed_payment', 'low_stock', 'unassigned_consultation', 'custom'], | |
| }, | |
| severity: { | |
| type: String, | |
| required: true, | |
| enum: ['critical', 'warning', 'info'], | |
| }, | |
| title: { type: String, required: true }, | |
| message: { type: String }, | |
| market: { type: mongoose.Schema.Types.ObjectId, ref: 'Market' }, | |
| // Reference to source entity | |
| referenceType: { type: String }, | |
| referenceId: { type: mongoose.Schema.Types.ObjectId }, | |
| // Lifecycle | |
| status: { | |
| type: String, | |
| enum: ['active', 'dismissed', 'auto_resolved'], | |
| default: 'active', | |
| }, | |
| dismissedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'Admin' }, | |
| dismissedAt: { type: Date }, | |
| isAutoGenerated: { type: Boolean, default: true }, | |
| }, | |
| { timestamps: true } | |
| ); | |
| adminAlertSchema.index({ status: 1, severity: 1 }); | |
| adminAlertSchema.index({ type: 1, status: 1 }); | |
| module.exports = mongoose.model('AdminAlert', adminAlertSchema); | |