This commit is contained in:
payacom
2026-09-03 16:06:02 +03:30
parent 3f416a7a60
commit 90c5f94b57
31 changed files with 3968 additions and 4283 deletions

View File

@@ -93,7 +93,7 @@ const advertisingSchema = new mongoose.Schema({
},
status: {
type: String,
default: "UnderReview",
default: 'UnderReview',
required: false
},
image: {
@@ -157,7 +157,7 @@ const advertisingSchema = new mongoose.Schema({
},
status: {
type: String,
enum: ['pre_payment', 'paid', 'temp_accept', 'accepted', 'rejected', 'expired'],
enum: ['pre_payment', 'paid', 'pending', 'temp_accept', 'accepted', 'rejected', 'expired'],
default: 'pre_payment'
},
payment_status: {

View File

@@ -200,7 +200,7 @@ const projectSchema = new mongoose.Schema({
// فیلد برای وضعیت پروژه
status: {
type: String,
enum: ['pre_payment', 'paid', 'temp_accept', 'accepted', 'rejected', 'done', 'cancled', 'ongoing'],
enum: ['pre_payment', 'paid', 'pending', 'temp_accept', 'accepted', 'rejected', 'done', 'cancled', 'ongoing'],
default: 'pre_payment'
},
public_status: {
@@ -289,6 +289,14 @@ const projectSchema = new mongoose.Schema({
})
// ایندکس‌های لازم برای کوئریِ لیستِ پروژه‌ها (getProjectController.js) — بدونشون
// روی هر درخواست یه COLLSCAN + sort-در-حافظه انجام می‌شد که با بزرگ‌ترشدنِ
// کالکشن کندتر می‌شد؛ همون فیلترها/مرتب‌سازی‌هایی که getProjects واقعاً استفاده می‌کنه
projectSchema.index({ status: 1, selected_user: 1, acceptedAt: -1, createdAt: -1 })
projectSchema.index({ status: 1, expertise: 1 })
projectSchema.index({ status: 1, offer_price: -1 })
projectSchema.index({ status: 1, requested_users: -1 })
projectSchema.plugin(timestamp)
// اضافه کردن پیجینیشن به مدل
projectSchema.plugin(mongoosePaginate)

View File

@@ -49,6 +49,10 @@ const requestSchema = new mongoose.Schema({
}
})
// پشتیبانِ کوئریِ enrichProjectsWithRequests (getProjectController.js) که با
// $in روی project سرچ می‌کنه — بدونش هر لیستِ پروژه یه COLLSCAN روی Request می‌زد
requestSchema.index({ project: 1 })
requestSchema.plugin(timestamp)
const RequestModel = mongoose.model('Request', requestSchema)

View File

@@ -412,6 +412,13 @@ const userSchema = new mongoose.Schema({
required: false,
default: null
},
// وقتی «ریست الگوریتم» زده می‌شه ست می‌شه — buildUserExploreSignals لایک/کامنت/آفر
// قبل از این تاریخ رو نادیده می‌گیره تا کاربر واقعاً مثل تازه‌وارد رفتار ببینه، نه
// فقط کش رتبه‌بندی پاک بشه درحالی‌که سیگنال‌های شخصی‌سازی قدیمی هنوز اثر دارن
algorithm_reset_at: {
type: Date,
default: null
},
rate: {
type: String,
trim: true,