feat(apps): الدراور على نمط سيرو — المكافآت والدعوات والمساعدة
جُرد دراور سيرو: 14 مدخلاً للراكب (map_menu_widget) و23 للسائق (drawer_captain). بُني ما له نقطة فعلية على NestJS، والباقي مذكور صراحةً. ## مبنيّ - **المكافآت** (features/rewards): GET /rewards/referrals و /rewards/coupons — كلاهما مُتحقَّق حيّاً. كود الدعوة يُنسخ ويُشارك، وعدّادات دعوتَهم/قيد التأكيد/مدفوعة. يقابل Promos + Invite Driver في سيرو - **شارك التطبيق · قيّم التطبيق · سياسة الخصوصية · تطبيق الطرف الآخر** — أفعال محليّة بلا نقطة خادم (share_plus + url_launcher) - **المساعدة** وُسّعت: أسئلة شائعة قابلة للطيّ · واتساب الدعم · **فحص توافق الجهاز** (نمط سيرو) يفحص ما يُعطّل التطبيق فعلاً: خدمة الموقع وإذنها وإذن الإشعارات — أسباب حقيقية لشكوى «التطبيق لا يعمل» - روابط المتجر والخصوصية والدعم صارت قيم بناء لكل مستأجر في BuildConfig ## غير مبنيّ — ولا نقطة خادم له الشكاوى (R3 في الباكلوج) · الإحصاءات · التحدّيات ولوحة المتصدّرين · مركز الصيانة · جدولي · التأمين الصحي (مؤجَّل بقرار المالك) · الطعام والمواصلات (خارج النطاق، docs/39 §1). بناء واجهة بلا خادم يعني شاشة تكذب على المستخدم. ## سجلّ الإشعارات سيرو يعرض قائمة إشعارات؛ الخادم يوفّر POST /notifications/token فقط بلا نقطة سرد. لم تُبنَ شاشة قائمة على فراغ. flutter analyze نظيف في التطبيقين. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
6a33cc7241
commit
ca766a2d4e
@@ -209,6 +209,41 @@
|
||||
"walletCopy": "نسخ",
|
||||
"walletCopied": "نُسخ",
|
||||
"walletNoTarget": "لم يُضبط حساب استلام لهذه القناة بعد — راجع المشغّل",
|
||||
"rewardsTitle": "مكافآتي",
|
||||
"rewardsInviteTitle": "ادعُ سائقاً",
|
||||
"rewardsInviteLead": "شارك كودك — تربح عن كل سائق ينضم",
|
||||
"rewardsCode": "كود الدعوة",
|
||||
"rewardsInvited": "دعوتَهم",
|
||||
"rewardsPending": "قيد التأكيد",
|
||||
"rewardsPaid": "مكافآت مدفوعة",
|
||||
"rewardsCoupons": "كوبوناتي",
|
||||
"rewardsCouponsEmpty": "لا كوبونات صالحة الآن",
|
||||
"menuRewards": "مكافآتي",
|
||||
"menuInvite": "ادعُ سائقاً",
|
||||
"menuShare": "شارك التطبيق",
|
||||
"menuNotifications": "الإشعارات",
|
||||
"menuPrivacy": "سياسة الخصوصية",
|
||||
"menuRateApp": "قيّم التطبيق",
|
||||
"shareMessage": "انضم لـTripz كسائق — استعمل كودي {code}",
|
||||
"menuDriverApp": "تطبيق الراكب",
|
||||
"@shareMessage": {
|
||||
"placeholders": {
|
||||
"code": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"supportFaqQ1": "كيف أطلب رحلة؟",
|
||||
"supportFaqA1": "حدّد وجهتك من البحث أو من الخريطة، اختر نوع الرحلة، ثم اضغط «اطلب الرحلة».",
|
||||
"supportFaqQ2": "كيف أشحن رصيدي؟",
|
||||
"supportFaqA2": "من المحفظة اختر المبلغ وطريقة الدفع. ستظهر لك تعليمات التحويل ورقم مرجع — يُضاف الرصيد بعد تأكيد التحويل.",
|
||||
"supportFaqQ3": "لماذا لا يظهر سائق؟",
|
||||
"supportFaqA3": "قد لا يوجد سائقون قريبون في هذا الوقت. جرّب بعد قليل أو غيّر نوع الرحلة.",
|
||||
"supportFaqQ4": "كيف ألغي رحلة؟",
|
||||
"supportFaqA4": "من بطاقة الرحلة اضغط «إلغاء الرحلة». الإلغاء بعد وصول السائق قد يترتّب عليه رسم.",
|
||||
"supportDeviceCheck": "فحص توافق الجهاز",
|
||||
"supportDeviceOk": "جهازك متوافق",
|
||||
"supportDeviceIssues": "مشاكل قد تؤثّر على عمل التطبيق",
|
||||
"obApplyTitle": "سجّل كسائق",
|
||||
"obApplyLead": "خطوات قصيرة ثم تبدأ العمل",
|
||||
"obVehicleMake": "شركة السيارة",
|
||||
|
||||
@@ -209,6 +209,41 @@
|
||||
"walletCopy": "Copy",
|
||||
"walletCopied": "Copied",
|
||||
"walletNoTarget": "No receiving account is configured for this channel yet — contact the operator",
|
||||
"rewardsTitle": "My rewards",
|
||||
"rewardsInviteTitle": "Invite a driver",
|
||||
"rewardsInviteLead": "Share your code — earn for every driver who joins",
|
||||
"rewardsCode": "Invite code",
|
||||
"rewardsInvited": "Invited",
|
||||
"rewardsPending": "Pending",
|
||||
"rewardsPaid": "Rewards paid",
|
||||
"rewardsCoupons": "My coupons",
|
||||
"rewardsCouponsEmpty": "No valid coupons right now",
|
||||
"menuRewards": "My rewards",
|
||||
"menuInvite": "Invite a driver",
|
||||
"menuShare": "Share the app",
|
||||
"menuNotifications": "Notifications",
|
||||
"menuPrivacy": "Privacy policy",
|
||||
"menuRateApp": "Rate the app",
|
||||
"shareMessage": "Join Tripz as a driver — use my code {code}",
|
||||
"menuDriverApp": "Rider app",
|
||||
"@shareMessage": {
|
||||
"placeholders": {
|
||||
"code": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"supportFaqQ1": "How do I request a ride?",
|
||||
"supportFaqA1": "Pick your destination from search or the map, choose a ride type, then tap “Request ride”.",
|
||||
"supportFaqQ2": "How do I top up?",
|
||||
"supportFaqA2": "In the wallet, choose an amount and a payment method. You'll get transfer instructions and a reference — your balance updates once the transfer is confirmed.",
|
||||
"supportFaqQ3": "Why is no driver showing up?",
|
||||
"supportFaqA3": "There may be no drivers nearby right now. Try again shortly or change the ride type.",
|
||||
"supportFaqQ4": "How do I cancel?",
|
||||
"supportFaqA4": "Tap “Cancel ride” on the trip card. Cancelling after the driver arrives may incur a fee.",
|
||||
"supportDeviceCheck": "Check device compatibility",
|
||||
"supportDeviceOk": "Your device is compatible",
|
||||
"supportDeviceIssues": "Issues that may affect the app",
|
||||
"obApplyTitle": "Register as a driver",
|
||||
"obApplyLead": "A few short steps, then you're working",
|
||||
"obVehicleMake": "Car make",
|
||||
|
||||
Reference in New Issue
Block a user