عند كل صاحب محل في العراق الدفتر نفسه: صفحة للبضاعة، وصفحة للديون، وحساب في آخر اليوم لا يطابق الصندوق. والبرامج الجاهزة إمّا غالية، أو إنجليزية، أو مبنية لسوق آخر لا يعرف البيع بالآجل ولا الدينار.
في هذا الدليل نبني بديلاً: نظام مبيعات ومخزون عربي كامل — المنتجات، والكميات، وشاشة بيع، وفاتورة تُطبع، وتقرير يومي بالأرباح، وحسابات للموظفين — ونشغّله على سيرفر خاص بك. لن نكتب سطر كود واحد بأيدينا: سنصف ما نريد لوكيل ذكاء اصطناعي، ونراجع ما ينتجه خطوة بخطوة.
كل الصور في هذا المقال من النظام وهو يعمل على سيرفر حقيقي، والبيانات فيها من عمليات بيع نفّذناها بأنفسنا داخله. النتيجة التي ستحصل عليها ستشبه هذه وإن اختلفت التفاصيل — الوكيل لا يكرّر نفسه حرفياً، وهذا في صالحك: أنت من يوجّهه نحو ما يناسب محلّك.
قبل أن تبدأ
هذا المقال يفترض أن عندك سيرفراً جاهزاً وأداة ذكاء اصطناعي مفعّلة عليه. إن لم يكن، فابدأ من الدليل الأساس أولاً — فيه شراء السيرفر، وتنصيب Claude Code وCodex، وطريقة التفعيل بالصور:
👈 شغّل Claude Code و Codex على سيرفرك: الدليل المصوّر للتنصيب والتفعيل
ما بنينا عليه هذا النظام: باقة S-VPS 4 بأربعة أنوية و8 غيغابايت ذاكرة، بنظام أوبنتو 24.04. والوقت الكلّي من الطلب الأول إلى نظام يعمل: أقل من ساعتين، أكثرها قضيناه في التجربة والتصحيح لا في الانتظار.
كيف تطلب السيرفر؟ خمس دقائق
لا تحتاج معرفة تقنية لطلب السيرفر — الخطوات أقرب إلى شراء اشتراك إنترنت منها إلى أي شيء تقني:
- افتح صفحة باقات VPS واختر الباقة المناسبة (الجدول أدناه يساعدك).
- في صفحة الإعداد اختر نظام التشغيل — اختر
Ubuntu-24، فهو ما تعمل عليه الأدوات بأقل مشاكل. - اختر دورة الفوترة: شهري، أو سنوي بخصم يقارب السُّبع.
- أضف إلى السلة، وادفع بالدينار العراقي عبر زين كاش أو بطاقة فيزا وماستركارد.
- خلال دقائق تصلك رسالة فيها عنوان الجهاز واسم المستخدم وكلمة المرور — ومنفذ الدخول
2026.
أي باقة تختار؟
| الباقة | الموارد | الشهري | هل تصلح للعمل مع الوكيل؟ |
|---|---|---|---|
| S-VPS 2 | نواة · 2 غيغابايت | 8 دولارات | لا للبناء. تصلح لاستضافة البرنامج بعد أن يكتمل ويخفّ. |
| S-VPS 3 | نواتان · 4 غيغابايت | 17 دولاراً | الحد الأدنى العملي. يعمل، مع بطء محسوس في المهام الطويلة. |
| S-VPS 4 | 4 أنوية · 8 غيغابايت | 29 دولاراً | المريح — وهو ما بنينا عليه كل مقالات هذه السلسلة. |
لماذا لا تكفي أرخص باقة؟ لأن الوكيل لا يكتب سطراً وينتظر: يقرأ عشرات الملفات، ويشغّل التنصيب، ويرفع الخادم، ويختبر — في اللحظة نفسها. بنواة واحدة وغيغابايت واحد ستختنق الجلسة قبل أن تُنهي الطلب الثالث، وستظن أن الأداة ضعيفة بينما المشكلة في الجهاز.
كيف تستخدم الأداة وأنت لست مبرمجاً؟
هذا هو السؤال الذي يوقف أكثر الناس. والجواب أبسط ممّا تظن: أنت لا تقرأ الكود، بل تقرأ الوصف وتجرّب النتيجة. الوكيل يشرح ما سيفعله بلغة بسيطة قبل أن يفعله، ويطلب إذنك، وينفّذ، ثم يخبرك بما جرى.
كيف تجري الجلسة عملياً؟
تدخل إلى سيرفرك، وتنتقل إلى مجلد المشروع، وتكتب اسم الأداة — فتفتح شاشة تكتب فيها طلبك بالعربية. ثم تتكرّر أربع خطوات:
- تكتب الطلب وتضغط Enter.
- يعرض عليك خطة قبل التنفيذ في المهام غير البديهية — اقرأها. إن رأيت فيها ما لم تطلبه، قل «لا تفعل كذا» قبل أن يبدأ.
- يطلب إذنك عند كل عملية حسّاسة: إنشاء ملف، تعديل ملف، تشغيل أمر. هذه لحظتك — الموافقة ليست شكلية.
- تفتح الصفحة في متصفحك وتجرّب. ما لم تجرّبه بنفسك لا تعتبره منجزاً، مهما قال لك إنه انتهى.
الأوامر التي تحتاجها فعلاً
الأدوات فيها عشرات الخيارات، لكن ما ستستعمله يومياً لا يتجاوز هذه:
أهمّها --continue وresume: الجلسة تحتفظ بذاكرتها، فتستطيع أن تغلق حاسبتك وتعود غداً وتكمل من حيث توقّفت — والوكيل يتذكّر المشروع كله.
أربع قواعد تغنيك عن تعلّم البرمجة
| القاعدة | التطبيق |
|---|---|
| اطلب مهمة واحدة | شاشة واحدة أو ميزة واحدة في كل طلب — لا «ابنِ لي النظام» |
| جرّب بعد كل خطوة | افتح الصفحة واضغط الأزرار. خمس دقائق تجربة توفّر ساعة تصحيح |
| صف العطل لا الحل | «أضغط حفظ فتختفي الفاتورة» أفضل بكثير من «غيّر الدالة الفلانية» |
| خذ نسخة قبل الطلبات الكبيرة | نسخة من مجلد المشروع، أو git init مرة واحدة — فتكون تكلفة أي خطأ صفراً |
وإن تعطّل شيء ولم تفهم السبب؟ انسخ رسالة الخطأ كما هي والصقها في الجلسة واكتب: «هذا ما ظهر لي، ما المشكلة وكيف نصلحها؟». الوكيل يقرأ الأخطاء أفضل ممّا يقرأها كثير من المبرمجين — ورسالة الخطأ هي نصف الحل.
الخطوة 1 اكتب قواعد المشروع قبل أي طلب
قبل أن تطلب أي شيء، أنشئ مجلداً للمشروع وضع فيه ملف القواعد الذي يقرؤه الوكيل تلقائياً في كل جلسة — CLAUDE.md لـClaude Code، أو AGENTS.md لـCodex:
mkdir ~/pos && cd ~/pos
nano AGENTS.md
واكتب فيه القواعد الثابتة التي لا تريد تكرارها في كل طلب:
# قواعد مشروع نظام المبيعات - الواجهة عربية بالكامل ومن اليمين إلى اليسار. - العملة دينار عراقي بلا كسور، وتُكتب بفاصلة الآلاف. - التاريخ ميلادي. - استعمل Node.js وقاعدة بيانات SQLite في ملف واحد — لا خادم قاعدة بيانات منفصل. - لا تضف أي مكتبة خارجية قبل أن تسألني. - بعد كل تعديل، شغّل البرنامج وتأكّد أنه يعمل قبل أن تقول إنك انتهيت.
هذه الأسطر الستّة توفّر عليك عشرات التصحيحات لاحقاً. السطر الأخير تحديداً هو الذي يحوّل الوكيل من «كاتب كود» إلى «من يسلّمك شيئاً يعمل».
لماذا SQLite وليس قاعدة بيانات كبيرة؟ لأن قاعدة البيانات كلها ملف واحد تنسخه كما تنسخ أي ملف. لمحل واحد أو محلّين هذا أبسط وأأمن وأسرع. وإن كبر مشروعك لاحقاً يستطيع الوكيل نقله إلى MySQL بطلب واحد.
الخطوة 2 الطلب الأول: المنتجات والمخزون
القاعدة التي شرحناها في الدليل الأساس: مهمة واحدة في كل طلب. لا تطلب «نظام مبيعات»، بل اطلب أول شاشة فيه:
أنشئ في هذا المجلد تطبيق ويب بـ Node.js يعمل على المنفذ 80. الشاشة الأولى: «المنتجات والمخزون» — جدول يعرض لكل مادة: الاسم، الباركود، سعر الشراء، سعر البيع، الربح للوحدة (محسوباً)، والكمية. فوق الجدول نموذج لإضافة مادة جديدة بنفس هذه الحقول. لوّن الكمية بالأحمر إذا كانت 25 أو أقل. أدخل ثماني مواد تجريبية من سوق عراقي (رز، شاي، زيت، سكر...) بأسعار واقعية بالدينار. بعد أن تنتهي، شغّل الخادم وأخبرني بالعنوان الذي أفتحه.
لاحظ أن الطلب يحوي الأجزاء الخمسة: أين نحن، وما المطلوب، والقيود، ومعيار النجاح («شغّل الخادم»)، وصيغة الإخراج («أخبرني بالعنوان»). النتيجة:
افتح العنوان في متصفحك وجرّب: أضف مادة، وتأكّد أنها ظهرت. لا تنتقل إلى الطلب التالي قبل أن تجرّب بنفسك.
الخطوة 3 شاشة البيع
أضف شاشة ثانية اسمها «شاشة البيع». فيها قائمة منسدلة بالمواد المتوفّرة (مع سعرها وكميّتها)، وحقل للكمية، وزر «أضف إلى الفاتورة». المواد المضافة تظهر في جدول أسفل الشاشة مع مجموع كل سطر، وفي الأسفل المجموع الكلّي بخط كبير. وتحت الجدول: حقل اسم الزبون (اختياري)، واختيار «نقد» أو «آجل»، وزر «حفظ الفاتورة»، وزر «إلغاء». لا تحفظ شيئاً في قاعدة البيانات بعد — هذه الشاشة فقط.
الجملة الأخيرة في الطلب هي الأهم فيه. الوكيل متحمّس بطبعه، وإن لم تحدّه سيبني الحفظ والفواتير والتقارير دفعة واحدة — وعندها إن ظهر خطأ لن تعرف في أي طبقة هو.
الخطوة 4 حفظ الفاتورة وخصم المخزون
الآن نربط الشاشتين. وهنا يظهر أول شرط محاسبي حقيقي:
عند الضغط على «حفظ الفاتورة»: 1. احفظ الفاتورة برقم متسلسل، مع التاريخ والوقت واسم الزبون ونوع الدفع والمبلغ الكلّي. 2. احفظ أسطر الفاتورة (المادة والكمية والسعر). 3. اخصم الكميات المباعة من المخزون. 4. احسب ربح الفاتورة = (سعر البيع − سعر الشراء) × الكمية، واحفظه معها. مهم: نفّذ الأربعة معاً — إن فشلت واحدة فلا تُحفظ أي منها، حتى لا تنقص كمية بلا فاتورة. بعد الحفظ، اعرض الفاتورة في صفحة مرتّبة للطباعة فيها اسم المحل والرقم والتاريخ والأسطر والمجموع، وزر «طباعة».
الفقرة التي تبدأ بـ«مهم» هي أثمن ما في هذا المقال. ما طلبته هناك يسمّيه المبرمجون «معاملة» (transaction): إمّا أن تنجح الخطوات كلها أو لا تحدث أصلاً. بدونها، انقطاع كهرباء في لحظة الحفظ قد يخصم البضاعة من المخزون بلا فاتورة تقابلها — ويوم الجرد لن تفهم أين ذهبت. لست مضطرّاً لتعرف الاسم التقني؛ يكفي أن تصف الشرط بلغتك: «إن فشلت واحدة فلا تُحفظ أي منها».
الخطوة 5 الفواتير وتقرير اليوم
أضف شاشتين: «الفواتير»: قائمة بآخر الفواتير — الرقم والتاريخ والزبون ونوع الدفع والمبلغ، ورابط لعرض كل فاتورة. «تقرير اليوم»: يختار فيه المستخدم تاريخاً، فيعرض أربعة أرقام: إجمالي المبيعات، وصافي الربح، والمقبوض نقداً، والمتبقّي آجلاً. وتحتها جدول بأكثر المواد مبيعاً في ذلك اليوم (المادة، الكمية المباعة، قيمة المبيعات).
فصل «الآجل» عن «النقد» في التقرير ليس تفصيلاً جمالياً. هو الفرق بين «بعت بثلاثمئة ألف» و«قبضت مئتين وتسعين ألفاً» — والثاني هو ما في الصندوق فعلاً.
الخطوة 6 الدخول والصلاحيات
أضف تسجيل دخول للنظام. مستخدمان: «مدير المحل» يرى كل شيء، و«موظف الكاشير» يرى شاشة البيع والفواتير فقط ولا يرى الأرباح ولا أسعار الشراء. أي صفحة تُفتح بلا تسجيل دخول تحوّل إلى صفحة الدخول.
الخطوة 7 اجعله يعمل دائماً
حتى الآن البرنامج يعمل ما دامت جلستك مفتوحة. لجعله يبدأ مع السيرفر ويعيد تشغيل نفسه إن توقّف، اطلب:
اجعل البرنامج خدمة نظام تعمل تلقائياً عند إقلاع السيرفر، وتعيد تشغيل نفسها إذا توقّفت.
سينشئ ملف خدمة systemd قريباً من هذا:
[Unit]
Description=POS
After=network.target
[Service]
Type=simple
User=maram
WorkingDirectory=/home/maram/pos
ExecStart=/usr/bin/node /home/maram/pos/server.js
Restart=always
[Install]
WantedBy=multi-user.target
وتتحقّق بأمر واحد أن الخدمة شغّالة:
systemctl is-active pos
النسخ الاحتياطي — لا تؤجّله
قاعدة بياناتك ملف واحد. انسخه يومياً بسطر واحد في المجدول:
0 23 * * * cp ~/pos/pos.db ~/backups/pos-$(date +\%F).db
وانسخ ملفات النسخ إلى جهازك أو إلى تخزين خارجي مرة في الأسبوع. البرنامج يمكن إعادة بنائه في ساعتين؛ بيانات سنة كاملة لا يمكن.
الدومين وشهادة الأمان
لتفتحه باسم بدل رقم، وجّه نطاقك إلى عنوان السيرفر ثم اطلب:
اربط النظام بالنطاق pos.example.com عبر Caddy، واحصل على شهادة HTTPS مجانية تلقائياً.
ماذا تعلّمنا من هذه التجربة؟
| الدرس | لماذا يهمّ |
|---|---|
| شاشة واحدة في كل طلب | الخطأ يظهر مباشرة وتعرف مصدره، بدل أن تبحث عنه في عشرين ملفاً |
| «لا تفعل كذا بعد» | تمنع الوكيل من بناء طبقات لم تجرّب ما تحتها |
| وصف الشروط بلغتك | «إن فشلت واحدة فلا تُحفظ أي منها» أنتجت كوداً محاسبياً سليماً بلا مصطلح واحد |
| جرّب بعد كل خطوة | خمس دقائق تجربة توفّر ساعة تصحيح |
| القواعد في ملف لا في الطلبات | العملة والاتجاه والتاريخ تُكتب مرة واحدة |
لماذا لا تكفي أصغر باقة؟
وكيل الذكاء الاصطناعي لا يكتب سطراً وينتظر. هو يقرأ عشرات الملفات، ويشغّل التنصيب، ويرفع الخادم، ويختبر — في اللحظة نفسها. باقة بنواة واحدة وغيغابايت واحد ستختنق قبل أن تُنهي الطلب الثالث.
وهناك اعتبار ثانٍ يخصّ البرنامج نفسه بعد أن يعمل: زمن الشبكة بين العراق وسيرفر خارجي يقع عادةً بين 70 و150 ملّي ثانية، بينما زمن توليد الصفحة داخل السيرفر يتراوح بين 150 ملّي ثانية وأكثر من ثانيتين حسب العتاد. يعني: المسافة تكلّفك عشرات الملّي ثانية، والعتاد الضعيف يكلّفك آلافاً. الكاشير الذي ينتظر ثانيتين بعد كل ضغطة سيكرهك — والسبب لن يكون المسافة.
لذلك اسأل قبل الشراء عن المعالج وعدد الأنوية والذاكرة ونوع التخزين، لا عن المدينة وحدها.
ماذا بعد؟
ما بنيناه هنا نواة صالحة للعمل فعلاً في محل صغير. وتوسيعها يجري بالمنطق نفسه — طلب واحد لكل إضافة: الموردون والمشتريات، وديون الزبائن وتسديدها، وقراءة الباركود بالماسح، وشاشة جرد، ونسخة تعمل على الهاتف.
وقد نُشر المقال التالي في السلسلة: نظام حسابات وفواتير لشركتك — وفيه العملاء والموردون وكشف الحساب والتقرير الذي يفصل الربح عن النقد. ويتبعه: نظام إدارة عيادة، ونظام مدرسة، ومتجر إلكتروني بالدفع عند الاستلام.
وإن أردت أن تبدأ الآن: اختر باقة VPS مناسبة، ثم ابدأ من دليل التنصيب والتفعيل — والباقي طلبات مكتوبة بالعربية.