Transitioned from Plan to Build mode
Replit-Commit-Author: Agent Replit-Commit-Session-Id: 77cfe984-2c65-4152-bb7a-0df28274fe66 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: 2ca1a6d7-3aae-4de6-b02f-bcf6a2301173 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c3c252e4-c83d-40ca-9fff-99a3ea60701e/77cfe984-2c65-4152-bb7a-0df28274fe66/G3ZvHke Replit-Helium-Checkpoint-Created: true
This commit is contained in:
@@ -0,0 +1,226 @@
|
||||
المطلوب تعديل نظام Note ليصبح فيه إرسال ومشاركة بين المستخدمين.
|
||||
|
||||
الفكرة:
|
||||
المستخدم ينشئ Note جديدة، ثم يختار شخص أو أكثر لإرسالها لهم.
|
||||
عند الإرسال تظهر النوت عند المتلقي داخل النظام في قسم خاص مثل:
|
||||
- Received Notes
|
||||
أو:
|
||||
- Notes Inbox
|
||||
|
||||
كل Note مستلمة يجب أن تعرض:
|
||||
- عنوان النوت
|
||||
- محتوى النوت
|
||||
- لون النوت
|
||||
- اسم الشخص المرسل
|
||||
- تاريخ الإرسال
|
||||
- حالة القراءة Read / Unread
|
||||
- إمكانية الرد داخل نفس النوت
|
||||
|
||||
--------------------------------------------------
|
||||
1) تعديل مفهوم المشاركة
|
||||
--------------------------------------------------
|
||||
|
||||
بدلاً من مشاركة صامتة فقط، أريد نظام إرسال واضح:
|
||||
|
||||
المرسل:
|
||||
- ينشئ Note
|
||||
- يختار اللون
|
||||
- يكتب المحتوى
|
||||
- يختار المستلمين
|
||||
- يضغط Send
|
||||
|
||||
المتلقي:
|
||||
- تظهر له النوت في Notes Inbox
|
||||
- يشوف اسم المرسل
|
||||
- يشوف اللون والمحتوى
|
||||
- يستطيع الرد داخل نفس النوت
|
||||
- تبقى نسخة محفوظة عنده حتى يراجعها لاحقاً
|
||||
|
||||
--------------------------------------------------
|
||||
2) الجداول المطلوبة
|
||||
--------------------------------------------------
|
||||
|
||||
جدول notes:
|
||||
- id
|
||||
- title
|
||||
- content
|
||||
- type (note | list)
|
||||
- color
|
||||
- ownerUserId
|
||||
- createdAt
|
||||
- updatedAt
|
||||
|
||||
جدول note_recipients:
|
||||
- id
|
||||
- noteId
|
||||
- senderUserId
|
||||
- recipientUserId
|
||||
- status (unread | read | replied | archived)
|
||||
- sentAt
|
||||
- readAt
|
||||
- archivedAt
|
||||
|
||||
جدول note_replies:
|
||||
- id
|
||||
- noteId
|
||||
- senderUserId
|
||||
- recipientUserId
|
||||
- content
|
||||
- createdAt
|
||||
|
||||
مهم:
|
||||
- الردود تكون داخل نفس النوت
|
||||
- كل رد يظهر باسم كاتبه وتاريخه
|
||||
- المرسل والمتلقي فقط يشوفون المحادثة الخاصة بهم
|
||||
|
||||
--------------------------------------------------
|
||||
3) واجهة المستخدم
|
||||
--------------------------------------------------
|
||||
|
||||
داخل صفحة Note أضف تبويبات:
|
||||
|
||||
- My Notes
|
||||
- Sent Notes
|
||||
- Received Notes
|
||||
- Archived
|
||||
|
||||
في My Notes:
|
||||
- المستخدم يشوف النوتات التي أنشأها
|
||||
|
||||
في Sent Notes:
|
||||
- المستخدم يشوف النوتات التي أرسلها للآخرين
|
||||
- يظهر لكل نوت:
|
||||
- المستلمين
|
||||
- حالة كل مستلم: unread / read / replied
|
||||
|
||||
في Received Notes:
|
||||
- المستخدم يشوف النوتات التي وصلته
|
||||
- يظهر:
|
||||
- اسم المرسل
|
||||
- صورة/Avatar المرسل إن وجدت
|
||||
- عنوان النوت
|
||||
- اللون
|
||||
- مختصر المحتوى
|
||||
- حالة القراءة
|
||||
|
||||
--------------------------------------------------
|
||||
4) فتح النوت المستلمة
|
||||
--------------------------------------------------
|
||||
|
||||
عند فتح النوت المستلمة:
|
||||
- تعرض النوت الأصلية في الأعلى
|
||||
- يظهر اسم المرسل:
|
||||
"From: [User Name]"
|
||||
- يظهر اللون الذي اختاره المرسل
|
||||
- يظهر تاريخ الإرسال
|
||||
- أسفلها قسم Replies
|
||||
|
||||
المتلقي يستطيع:
|
||||
- كتابة رد
|
||||
- إرسال الرد
|
||||
- أرشفة النوت
|
||||
- تمييزها كمقروءة
|
||||
|
||||
بعد الرد:
|
||||
- تتغير حالة النوت عند المرسل إلى replied
|
||||
- يظهر الرد عند المرسل داخل Sent Notes أو داخل تفاصيل النوت
|
||||
|
||||
--------------------------------------------------
|
||||
5) النسخ والحفظ
|
||||
--------------------------------------------------
|
||||
|
||||
مهم جداً:
|
||||
- النوت الأصلية تبقى محفوظة عند المرسل
|
||||
- نسخة مستلمة تبقى محفوظة عند المتلقي في Received Notes
|
||||
- إذا حذف المرسل النوت من عنده، لا تختفي النسخة من عند المتلقي
|
||||
- إذا أرشف المتلقي النوت، لا تتأثر نسخة المرسل
|
||||
- الحذف والأرشفة تكون لكل مستخدم بشكل مستقل
|
||||
|
||||
--------------------------------------------------
|
||||
6) الصلاحيات
|
||||
--------------------------------------------------
|
||||
|
||||
- لا يستطيع أي مستخدم فتح Note لم تُرسل له أو لم ينشئها
|
||||
- المرسل يرى النوت التي أنشأها والردود الخاصة بها
|
||||
- المتلقي يرى فقط النوتات المرسلة له
|
||||
- الرد مسموح فقط للمرسل والمتلقي
|
||||
- Super Admin يمكنه رؤية كل شيء عند الحاجة من لوحة الإدارة
|
||||
|
||||
يجب تطبيق الصلاحيات في Backend وليس Frontend فقط.
|
||||
|
||||
--------------------------------------------------
|
||||
7) API المطلوبة
|
||||
--------------------------------------------------
|
||||
|
||||
POST /api/notes
|
||||
GET /api/notes/my
|
||||
GET /api/notes/sent
|
||||
GET /api/notes/received
|
||||
GET /api/notes/:id
|
||||
|
||||
POST /api/notes/:id/send
|
||||
Body:
|
||||
{
|
||||
"recipientUserIds": ["userId1", "userId2"]
|
||||
}
|
||||
|
||||
POST /api/notes/:id/reply
|
||||
Body:
|
||||
{
|
||||
"content": "reply text"
|
||||
}
|
||||
|
||||
POST /api/notes/:id/read
|
||||
POST /api/notes/:id/archive
|
||||
|
||||
--------------------------------------------------
|
||||
8) الإشعارات داخل النظام
|
||||
--------------------------------------------------
|
||||
|
||||
عند وصول Note جديدة:
|
||||
- يظهر Badge على قائمة Note
|
||||
- يظهر Toast notification
|
||||
- في Received Notes تظهر كـ Unread
|
||||
|
||||
عند وصول رد:
|
||||
- يظهر تنبيه للمرسل
|
||||
- يتم تحديث حالة النوت إلى replied
|
||||
|
||||
--------------------------------------------------
|
||||
9) تجربة المستخدم
|
||||
--------------------------------------------------
|
||||
|
||||
- زر واضح باسم Send Note
|
||||
- اختيار المستلمين من قائمة المستخدمين
|
||||
- بحث عن المستخدم بالاسم
|
||||
- عرض Chips للمستلمين المختارين
|
||||
- Confirm قبل الإرسال
|
||||
- Toast بعد الإرسال:
|
||||
"Note sent successfully"
|
||||
|
||||
--------------------------------------------------
|
||||
10) دعم العربية والإنجليزية
|
||||
--------------------------------------------------
|
||||
|
||||
كل النصوص يجب أن تكون ضمن i18n:
|
||||
- العربية RTL
|
||||
- الإنجليزية LTR
|
||||
|
||||
--------------------------------------------------
|
||||
11) المطلوب النهائي
|
||||
--------------------------------------------------
|
||||
|
||||
نفّذ الميزة بشكل حقيقي:
|
||||
- Database schema
|
||||
- Backend routes
|
||||
- Frontend UI
|
||||
- Authorization
|
||||
- Notifications badges
|
||||
- Responsive design
|
||||
- Clean code
|
||||
- Production-ready
|
||||
|
||||
مهم:
|
||||
لا تجعلها مجرد مشاركة عادية.
|
||||
أريدها كأنها "مراسلة Note داخل النظام":
|
||||
يرسل المستخدم Note، تظهر عند المتلقي، يستطيع الرد عليها، وتبقى نسخة محفوظة عند الطرفين.
|
||||
Reference in New Issue
Block a user