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:
riyadhafraa
2026-05-05 14:31:00 +00:00
parent da6025ba5f
commit c0d9e30b91
@@ -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، تظهر عند المتلقي، يستطيع الرد عليها، وتبقى نسخة محفوظة عند الطرفين.