قرار المالك 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>
31 lines
994 B
TypeScript
31 lines
994 B
TypeScript
import { Injectable, Logger } from '@nestjs/common';
|
|
import { NabehService } from '../../nabeh/nabeh.service';
|
|
import { OtpProvider, OtpSendContext } from '../otp-provider.interface';
|
|
|
|
/**
|
|
* مزوّد Nabeh (واتساب) — سوريا والأردن (docs/17 — D5).
|
|
* غلاف رقيق حول `NabehService` القائم يحوّل الرمي إلى `false` ليعمل ضمن سلسلة
|
|
* الـfailover.
|
|
*/
|
|
@Injectable()
|
|
export class NabehOtpProvider implements OtpProvider {
|
|
readonly name = 'nabeh';
|
|
private readonly logger = new Logger('NabehOtp');
|
|
|
|
constructor(private readonly nabeh: NabehService) {}
|
|
|
|
supports(countryPack: string): boolean {
|
|
return countryPack === 'jo' || countryPack === 'sy';
|
|
}
|
|
|
|
async send(phone: string, code: string, _ctx: OtpSendContext): Promise<boolean> {
|
|
try {
|
|
await this.nabeh.sendOtp(phone, code);
|
|
return true;
|
|
} catch (e: any) {
|
|
this.logger.warn(`send failed: ${e?.message}`);
|
|
return false;
|
|
}
|
|
}
|
|
}
|