مستخدمون وصلاحيات
مدير وموظفون، وكل مستخدم يجب أن يرى فقط البيانات التي تسمح له بها الصلاحيات المطبقة على السيرفر.
مش هنطلب من الذكاء الاصطناعي يعمل لنا شاشة شكلها حلو وخلاص. هنبدأ من متطلبات المنتج، ونبني قاعدة البيانات والـ API والحماية، ثم نجهّز المشروع للنشر على الاستضافة ونختبره كمستخدم حقيقي.
مدير وموظفون، وكل مستخدم يجب أن يرى فقط البيانات التي تسمح له بها الصلاحيات المطبقة على السيرفر.
عملاء وصفقات وملاحظات ومهام. لذلك الخطأ هنا ليس مجرد Bug بصري؛ قد يؤدي إلى كشف بيانات أو فقدانها.
المشروع يجب أن ينتقل من Local إلى استضافة حقيقية مع إعدادات مختلفة وقاعدة بيانات وHTTPS ونسخ احتياطية.
واجهة عربية RTL تعمل من المتصفح على الكمبيوتر والموبايل، وتشمل تسجيل الدخول، العملاء، الصفقات، المهام، الأنشطة، التقارير المبسطة وقاعدة المعرفة.
نفس تطبيق الويب يمكن تثبيته على الشاشة الرئيسية عندما تتوفر متطلبات PWA. التثبيت لا يعني تلقائيًا أن التطبيق يعمل Offline أو يرسل Push Notifications.
يرى جميع العملاء والصفقات والتقارير، ويدير المستخدمين، وينشر ويعدّل مقالات قاعدة المعرفة.
يصل إلى السجلات التي يملك صلاحية الوصول إليها، ويضيف المتابعات والأنشطة، ويقرأ قاعدة المعرفة.
لا يمتلك حسابًا في النسخة الأولى. النظام داخلي لفريق الشركة وليس بوابة عملاء.
قاعدة مهمة: إخفاء زر في الواجهة ليس Authorization. الصلاحية الحقيقية يجب أن تُفحص في السيرفر.
سياسات، إجراءات، أسئلة متكررة، نماذج رسائل، تعليمات داخلية ونصوص معتمدة.
أقسام، وسوم، مؤلف، حالة Draft / Published، وتاريخ إنشاء وتحديث.
المدير ينشر ويعدل، والموظف يقرأ المحتوى المنشور فقط. المسودات لا تظهر للموظفين.
قاعدة المعرفة ليست ChatGPT. هي النسخة الداخلية المعتمدة من معرفة المؤسسة، ويمكن لاحقًا استخدامها كمصدر لـ RAG إذا احتجنا ذلك.
نضع هدفًا واقعيًا لزمن التحميل ونقيسه في البيئة الفعلية، بدل اعتبار "أقل من 3 ثوانٍ" ضمانًا ثابتًا لكل الأجهزة والشبكات.
RTL صحيح، رسائل خطأ مفهومة، أزرار مناسبة للموبايل وتجربة لا تعتمد على اللغة الإنجليزية.
HTTPS، Authorization على السيرفر، Password Hashing، CSRF، Validation، Prepared Statements وعدم كشف الأسرار.
نسخ احتياطية منفصلة، مع اختبار استعادة النسخة بدل افتراض أن وجود ملف Backup يعني إمكانية استعادته.
لا نضع بيانات MySQL أو كلمة مرور قاعدة البيانات داخل JavaScript الذي يصل إلى المتصفح.
والـ API لا يفترض أن المستخدم مخوّل لمجرد أنه وصل إلى endpoint؛ كل عملية حساسة يجب أن تمر عبر Authentication وAuthorization وValidation.
الأمن ليس Feature نضيفها في النهاية؛ هو جزء من Architecture منذ أول Prompt.
| الجدول | الغرض | حقول مهمة |
|---|---|---|
| users | المستخدمون | id, name, email, password_hash, role, active, created_at |
| clients | العملاء | id, owner_id, name, phone_normalized, source, status, created_at |
| deals | الصفقات | id, client_id, title, stage, value, currency, close_date |
| tasks | المهام | id, client_id, deal_id, assigned_to, title, due_at, completed_at |
| activities | سجل الأنشطة | id, client_id, user_id, type, body, occurred_at, created_at |
| kb_categories | أقسام المعرفة | id, title, sort_order |
| kb_articles | مقالات المعرفة | id, category_id, title, body, status, author_id, updated_at |
أداة الـ AI تساعدنا في التنفيذ، لكنها لا تختار وحدها بيئة Production. نحن نتحقق أولًا من متطلبات الاستضافة الفعلية.
المستخدمون، المشكلة، النطاق، الـ MVP ومعايير النجاح.
تحديد Frontend وAPI وAuthentication وDatabase قبل الكود.
الجداول والعلاقات والـ endpoints المطلوبة قبل بناء الواجهات.
Auth → Clients → Deals → Tasks → Knowledge Base → PWA.
كل وحدة تعمل قبل الانتقال إلى الوحدة التالية.
الهدف ليس أن تجعل الـ AI يكتب أكثر كود ممكن؛ الهدف أن تجعله يكتب أقل كود صحيح يمكن اختباره والمحافظة عليه.
Web Push Notifications ليست جزءًا تلقائيًا من PWA؛ إذا أردناها نضيف Permission + Push Subscription + Service Worker + Backend للإرسال كمرحلة مستقلة.
استخدم أدوات قواعد البيانات المتاحة في حساب Hostinger الحالي لإنشاء قاعدة MySQL.
استخدم بيانات اتصال قوية واربط المستخدم بالقاعدة المطلوبة وفق الصلاحيات المناسبة.
استورد schema.sql عبر أداة الإدارة المتاحة مثل phpMyAdmin عندما تكون متاحة.
استخدم seed-dev.sql للبيانات التجريبية محليًا، ولا ترفع حسابات تجريبية معروفة إلى Production.
لا نفترض أن DB_HOST دائمًا localhost. نستخدم قيمة الاتصال التي توفرها بيئة الاستضافة الحالية.
تفاصيل hPanel والخطط قد تتغير؛ لذلك نتعامل مع إعدادات Hostinger الحالية باعتبارها مصدر الحقيقة وقت التنفيذ.
استخدم الطريقة المناسبة حسب مكان إدارة DNS: Nameservers أو السجلات المطلوبة مثل A / CNAME.
انتظر انتشار التغييرات ولا تعتبر عدم الوصول الفوري دليلًا على فشل المشروع.
فعّل شهادة TLS/SSL المتاحة، ثم اختبر HTTPS وإعادة التوجيه وتوحيد النطاق المستخدم.
مدير + موظف + عميل + صفقة + مهمة + مقال + اختبار صلاحيات.
نسخة من الملفات والقاعدة، ثم اختبار استعادة النسخة وفق الإمكانية المتاحة، وبعدها إطلاق الرابط.
أنت تعمل كمهندس برمجيات مسؤول عن بناء CRM عربي RTL قابل للنشر. قبل كتابة أي كود: حلّل المتطلبات، اقترح Architecture واضحة، صمّم Schema لقاعدة MySQL، وحدد API Contract وقواعد Authentication وAuthorization وSecurity. بعد ذلك أنشئ خطة تنفيذ Modules ولا تنفذ المشروع كله دفعة واحدة.
الاستاك الأساسي: HTML/CSS/JavaScript + PHP 8.2 + MySQL. الوحدات: Users, Clients, Deals, Tasks, Activities, Knowledge Base, PWA.
الموظف لا يصل إلا إلى السجلات المسموح بها له، وجميع الصلاحيات يجب أن تُفحص على السيرفر. استخدم Prepared Statements وServer-side Validation وCSRF Protection وPassword Hashing وSecure Session Handling.
أنشئ: schema.sql، seed-dev.sql، .env.example، وAGENTS.md. لا تضع أي Production password أو API key داخل الكود أو Git أو Prompt.
بعد كل Module: اشرح ما تم بناؤه، طريقة اختباره، الحالات الحدّية، والمخاطر الأمنية المحتملة قبل الانتقال إلى الوحدة التالية.
رابط حقيقي يعمل عبر HTTPS ويمكن الوصول إليه من جهاز وشبكة مختلفة.
المدير والموظف لا يتجاوزان صلاحياتهما، ولا توجد أسرار مكشوفة أو بيانات يمكن الوصول إليها دون Authorization.
يمكن إضافة عميل، تحريك صفقة، إنشاء مهمة، ونشر والبحث عن مقال في قاعدة المعرفة.
الهدف من Vibe Coding ليس أن يكتب الذكاء الاصطناعي المشروع بدلًا منك؛ الهدف أن تتعلم كيف تقود AI لبناء نظام يمكن اختباره وتشغيله وصيانته.
© 2026 جميع الحقوق محفوظة