chore: أرشفة باك إند NestJS إلى backend-archive
قرار المالك 2026-07-27: الباك إند المعتمد صار باك إند سيرو PHP، ويُنقل إلى هذا المستودع كنسخة جديدة باسم «انطلق» على api.intaleqapp.com. backend/ → backend-archive/ (305 ملفاً، إعادة تسمية بلا تعديل محتوى) + README-ARCHIVE.md يوضّح سبب الأرشفة وسبب عدم الحذف: scripts/e2e-test.mjs هو أدق توثيق سلوكي لدورة الرحلة كاملة، ويبقى مرجعاً عند بناء الوحدات الناقصة في باك إند PHP (المحفظتان · الاستحقاقات · محرّك التسعير · الوحدات). مسارات backend/ في docs/*.md لم تُعدَّل عمداً — سجلّ تاريخي. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
75b80bd299
commit
fff76c949f
@@ -0,0 +1,50 @@
|
||||
import { Module, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { JobExecution } from './job-execution.entity';
|
||||
import { BullModule } from './bull.module';
|
||||
import { CronOrchestratorService } from './cron-orchestrator.service';
|
||||
import { CronWorkerService } from './cron-worker.service';
|
||||
import { CronAdminController } from './cron-admin.controller';
|
||||
import { TripsModule } from '../../modules/trips/trips.module';
|
||||
import { RewardsModule } from '../../modules/rewards/rewards.module';
|
||||
import { TariffModule } from '../../modules/tariff/tariff.module';
|
||||
import { MarketingModule } from '../../modules/marketing/marketing.module';
|
||||
import { BotModule } from '../../modules/bots/bot.module';
|
||||
|
||||
/**
|
||||
* وحدة المهام الدورية الموحّدة (O5).
|
||||
*
|
||||
* تسجّل كل مهمة دورية كـrepeatable job في BullMQ، وتعالجها في عملية واحدة
|
||||
* مع `concurrency: 1` لمنع التشغيل المزدوج. كل تنفيذ يُسجَّل في
|
||||
* `job_executions` — لا مهمة صامتة.
|
||||
*
|
||||
* لا تُستهلك في الـworker — الـworker يبقى مستقلاً لمفرّغ المواقع (5 ثوانٍ).
|
||||
*/
|
||||
@Module({
|
||||
imports: [
|
||||
TypeOrmModule.forFeature([JobExecution]),
|
||||
BullModule,
|
||||
TripsModule,
|
||||
RewardsModule,
|
||||
TariffModule,
|
||||
MarketingModule,
|
||||
BotModule,
|
||||
],
|
||||
controllers: [CronAdminController],
|
||||
providers: [CronOrchestratorService, CronWorkerService],
|
||||
exports: [CronOrchestratorService],
|
||||
})
|
||||
export class CronModule implements OnModuleInit, OnModuleDestroy {
|
||||
constructor(
|
||||
private readonly orchestrator: CronOrchestratorService,
|
||||
private readonly worker: CronWorkerService,
|
||||
) {}
|
||||
|
||||
onModuleInit(): void {
|
||||
this.worker.start();
|
||||
}
|
||||
|
||||
async onModuleDestroy(): Promise<void> {
|
||||
await this.worker.stop();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user