Docs
وصف التفاعلات نظام الدخول:
sequenceDiagram
participant User as المستخدم
participant Frontend as الواجهة الأمامية
participant Backend as النظام الخلفي (Backend)
participant SMSService as خدمة الرسائل القصيرة
User->>+Frontend: فتح صفحة الدخول
Frontend->>+User: عرض نموذج تسجيل الدخول
User->>+Frontend: إرسال رقم الهاتف
Frontend->>+Backend: POST /auth/login مع رقم الهاتف
Backend->>+SMSService: طلب إرسال كود التحقق
SMSService-->>-Backend: تأكيد إرسال الرسالة القصيرة
SMSService-->>+User: كود التحقق
User->>+Frontend: إرسال كود التحقق
Frontend->>+Backend: POST /auth/verify مع رقم الهاتف وكود التحقق
Backend->>+Backend: التحقق من الكود
alt التحقق ناجح
Backend-->>-Frontend: الرد (تم التحقق من المستخدم مع رمز)
Frontend-->>-User: تسجيل الدخول ناجح، الانتقال إلى اللوحة الرئيسية
else فشل التحقق
Backend-->>-Frontend: رد الخطأ (كود غير صحيح)
Frontend-->>-User: عرض الخطأ، طلب إعادة المحاولة
end
- فتح صفحة الدخول: يقوم المستخدم بفتح صفحة تسجيل الدخول.
- عرض نموذج تسجيل الدخول: تعرض الواجهة الأمامية نموذج تسجيل الدخول للمستخدم.
- إرسال رقم الهاتف: يقوم المستخدم بإدخال رقم هاتفه وإرساله إلى الواجهة الأمامية.
- طلب إرسال كود التحقق: ترسل الواجهة الأمامية طلباً إلى النظام الخلفي لإرسال كود التحقق عبر خدمة الرسائل القصيرة.
- تأكيد إرسال الرسالة القصيرة واستلام كود التحقق: تؤكد خدمة الرسائل القصيرة للنظام الخلفي أن الرسالة قد أُرسلت، ويتلقى المستخدم كود التحقق.
- إرسال كود التحقق: يدخل المستخدم كود التحقق ويرسله إلى الواجهة الأمامية.
- التحقق من الكود: ترسل الواجهة الأمامية الكود إلى النظام الخلفي للتحقق من صحته.
- الرد على نتيجة التحقق:
- التحقق ناجح: إذا كان الكود صحيحًا، يرسل النظام الخلفي تأكيدًا إلى الواجهة الأمامية بأن المستخدم تم التحقق منه بنجاح، ومن ثم تقوم الواجه
ة الأمامية بتوجيه المستخدم إلى اللوحة الرئيسية. - فشل التحقق: إذا كان الكود غير صحيح، يرسل النظام الخلفي رد فعل بالخطأ إلى الواجهة الأمامية، التي بدورها تعرض رسالة خطأ للمستخدم وتطلب منه إعادة المحاولة.
Here's the API documentation for the Authentication endpoints translated into Arabic:
1. نقطة نهاية تسجيل الدخول
POST /auth/login
الملخص: تبدأ عملية تسجيل دخول المستخدم من خلال طلب رقم الهاتف لإرسال رمز التحقق.
الوصف: تقبل هذه النقطة النهائية رقم هاتف وتطلق خدمة الرسائل القصيرة لإرسال رمز التحقق إلى الرقم المقدم.
جسم الطلب:
{
"phone_number": "string"
}
الاستجابات: - 200 OK - الوصف: تم إرسال رمز التحقق بنجاح. - المحتوى:
{
"message": "تم إرسال رمز التحقق إلى {phone_number}"
}
{
"detail": [
{
"loc": ["string"],
"msg": "string",
"type": "string"
}
]
}
2. نقطة نهاية التحقق
POST /auth/verify
الملخص: يتحقق من المستخدم من خلال التحقق من صحة رمز التحقق المقدم مقابل الرمز المتوقع.
الوصف: تتلقى هذه النقطة النهاية رمز التحقق الذي تم إرساله إلى هاتف المستخدم وتتحقق منه لإكمال عملية التحقق.
جسم الطلب:
{
"phone_number": "string",
"verification_code": "string"
}
الاستجابات: - 200 OK - الوصف: تم التحقق من المستخدم بنجاح. - المحتوى:
{
"message": "تم التحقق من المستخدم",
"token": "fake-jwt-token"
}
{
"detail": [
{
"loc": ["string"],
"msg": "string",
"type": "string"
}
]
}
توفر هذه الوثائق وصفاً واضحاً ومختصراً لما تفعله كل نقطة نهاية، والمدخلات المطلوبة، والاستجابات المتوقعة، مما يساعد المطورين على فهم كيفية التفاعل مع واجهة برمجة التطبيقات للمصادقة.
{
"phone_number": "string"
}
{
"message": "Verification code sent to {phone_number}"
}
{
"detail": [
{
"loc": ["string"],
"msg": "string",
"type": "string"
}
]
}
{
"phone_number": "string",
"verification_code": "string"
}
{
"message": "User verified",
"token": "fake-jwt-token"
}
{
"detail": [
{
"loc": ["string"],
"msg": "string",
"type": "string"
}
]
}
sequenceDiagram
participant Admin as الإداري
participant Backend as النظام الخلفي
participant App as التطبيق
participant User as المستخدم
loop إرسال الإشعارات
Admin->>+Backend: إرسال بيانات الإشعار
Backend-->>-Admin: تأكيد استلام الإشعار
end
User->>+App: فتح الصفحة الرئيسية
App->>+Backend: GET /main-page
Backend->>+Backend: حساب عدد الإشعارات الجديدة
Backend-->>-App: إرجاع بيانات الصفحة الرئيسية (عدد الإشعارات الجديدة)
App-->>-User: عرض الصفحة الرئيسية مع عدد الإشعارات
User->>+App: الدخول إلى صفحة الإشعارات
App->>+Backend: GET /notifications/notification-titles
Backend->>+Backend: استرجاع عناوين الإشعارات وحالاتها
loop تحديث الحالة إلى "تم الإرسال"
Backend->>Backend: تحديث حالة الإشعار إلى SENT
end
Backend-->>-App: إرجاع عناوين الإشعارات وحالاتها
App-->>-User: عرض عناوين الإشعارات وحالاتها
User->>+App: الدخول إلى إشعار محدد
App->>+Backend: GET /notifications/notification-details/{notification_id}
Backend->>+Backend: استرجاع تفاصيل الإشعار المحدد
Backend->>Backend: تحديث حالة الإشعار إلى "تم القراءة" (OPENED)
Backend-->>-App: إرجاع تفاصيل الإشعار المحدد
App-->>-User: عرض تفاصيل الإشعار
sequenceDiagram
participant User as المستخدم
participant App as التطبيق
participant Backend as النظام الخلفي
participant PaymentGateway as بوابة الدفع
participant Admin as الإداري
User->>+App: إنشاء حدث
App->>+User: تأكيد إنشاء الحدث
loop التحقق من توفر التاريخ
User->>+App: اختيار تاريخ
App->>+Backend: استرجاع الأحداث في التاريخ المحدد
Backend-->>-App: إرجاع الأحداث
App-->>-User: عرض الأحداث للمستخدم
end
User->>+App: اختيار التاريخ والباقات
App->>+Backend: إرسال الحدث
Backend->>+Backend: حفظ الحدث وتغيير حالته إلى "بانتظار الدفع"
Backend-->>-App: إرجاع رقم الحدث ورابط الدفع
User->>+PaymentGateway: إجراء الدفع
PaymentGateway->>+Backend: إخطار النظام الخلفي بالدفع
Backend->>Backend: تغيير حالة الحدث إلى "قيد المراجعة"
Backend->>+Admin: إرسال الحدث للإداري للموافقة
Admin-->>-Backend: موافقة/رفض الحدث
Backend-->>-User: تحديث حالة الحدث للمستخدم
classDiagram
class Status {
<<enumeration>>
waitingForPayment
waitingForReview
APPROVED
REJECTED
}
class Event {
+Optional[str] id
+str name
+int date
+int views
+Status status
+List[Package] packages
+Payment payment
+str CreatedBy
+List[str] Tags
}
class Package {
+Optional[str] id
+str name
+Status status
+Payment payment
+float price
+Dict[str, str] details
}
class Payment {
+str payment_id
+str payment_status
+float payment_amount
+str payment_method
+int payment_date
}
class NotificationStatus {
<<enumeration>>
SENT
OPENED
NOT_SENT
}
class Notification {
+str user_id
+str title
+str body
+str method
+bool seen
+NotificationStatus status
}
Event "1" *-- "0..*" Status : has
Event "1" *-- "0..*" Package : contains
Package "1" o-- "1" Payment : uses
Event "1" o-- "1" Payment : uses
Notification "1" o-- "1" NotificationStatus : has