الانتقال إلى المحتوى الرئيسي

استكشاف الأخطاء وإصلاحها

ابدأ بأصغر مسار أولاً:
  1. صحة عملية السائق.
  2. إمكانية الوصول إلى برنامج التشغيل إلى الطابعة TCP.
  3. حالة قائمة الانتظار.
  4. تكوين الطابعة وحدة التحكم.
  5. HTTPS أو مشكلات الثقة في المتصفح.

السائق غير قابل للوصول

يفحص:
curl http://localhost:8080/health
إذا فشلت الصحة المحلية:
  • تأكد من تشغيل plato-printer.exe.
  • تأكد من أن config.json صالح JSON.
  • تأكد من عدم استخدام server.port بالفعل.
  • تحقق من سجلات بدء التشغيل بحثًا عن Port already in use.
إذا مرت الصحة المحلية ولكن لا يمكن لـ POS الوصول إليها:
  • افتح جدار حماية Windows لـ server.port.
  • استخدم عنوان شبكة السائق من شعار بدء التشغيل.
  • تأكد من أن جهاز POS موجود على نفس الشبكة أو أنه يسمح بشبكة VLAN.

الطابعة غير متصل

يتصل:
curl -X POST http://localhost:8080/status \
  -H "Content-Type: application/json" \
  -d '{"ip_address":"192.168.1.50","port":"9100","validate":true}'
الأسباب الشائعة:
الخطأ الأخيرمعنىيصلح
Connection Refusedيمكن الوصول إلى المضيف ولكن المنفذ مغلق.تحقق من منفذ الطابعة وإعدادات TCP الأولية.
Connection Timeoutلا يمكن الوصول إلى IP/منفذ الطابعة.تحقق من IP، والشبكة، وVLAN، وجدار الحماية، وطاقة الطابعة.
Printer open timed out after 2000msلم يكتمل اتصال TCP.تحقق من مسار شبكة الطابعة.
Printer write timed out after 6000msتم فتح المقبس ولكن لم يتم مسح الكتابة.أعد تشغيل الطابعة، وتحقق من المخزن المؤقت أو الشبكة أو البرامج الثابتة للطابعة.
TCP connection closedأغلقت الطابعة مأخذ التوصيل بشكل غير متوقع.أعد التحقق من المنفذ الأولي للطابعة وحجم حمولة المهمة.

وظائف عالقة

فحص قوائم الانتظار:
curl http://localhost:8080/queue-status
يقرأ:
  • waiting: وظائف جاهزة ولكنها غير نشطة.
  • active: تتم الطباعة حاليًا.
  • delayed: المهام المستقبلية المجدولة أو إعادة المحاولة المؤجلة.
  • failed: المهام الفاشلة التي احتفظ بها BullMQ.
  • totalPending: الانتظار والتأخير في جميع الطابعات.
  • isProcessing: توجد وظيفة نشطة واحدة على الأقل.
إذا كانت تتم إعادة محاولة المهام الفاشلة إلى الأبد، فقم بإصلاح اتصال الطابعة أولاً. سيتم استرداد قائمة الانتظار تلقائيًا بمجرد إمكانية الوصول إلى الطابعة.

تم قبول طلب الطباعة ولكن لم يتم طباعة أي شيء

إذا قامت /print بإرجاع { "ok": true, "queued": true }، فهذا يعني أن السائق قد قبل المهمة. الفحوصات التالية:
  1. GET /queue-status.
  2. POST /status مع validate: true.
  3. IP الطابعة والمنفذ في تكوين وحدة التحكم.
  4. يدعم طراز الطابعة خطوط ESC/POS النقطية عبر TCP.
  5. الطابعة بها ورق ولم يتم إيقافها مؤقتًا.

عنوان الطابعة مفقود

يتطلب برنامج التشغيل الحالي كلا من:
{
  "ip_address": "192.168.1.50",
  "port": "9100"
}
في وحدة التحكم، يعني هذا عادةً أن عنوان IP أو المنفذ الفعلي للطابعة مفقود. برنامج التشغيل URL ليس هو نفس عنوان IP الخاص بالطابعة.

فشل HTTPS

يفحص:
curl http://localhost:8080/ca.crt
curl https://plato-printer.local/health
الإصلاحات المحتملة:
  • قم بتثبيت شهادة CA على جهاز POS.
  • قم بإجراء حل plato-printer.local لجهاز التشغيل.
  • فتح المنفذ 443.
  • تأكيد وجود assets/certs.
  • تأكيد بدء العلبة في السجلات.

فشل الشبكة

يفحص:
curl http://localhost:8080/mesh-status
إذا تم تعطيل الشبكة، فاضبط:
{
  "features": {
    "meshEnabled": true
  }
}
في حالة استخدام HTTPS، تستخدم الشبكة:
wss://plato-printer.local/mesh

فشل Redis في البدء

يمكن أن يفشل بدء تشغيل Redis المضمن في حالة:
  • الإصدار الثنائي Redis الذي تم تكوينه مفقود أو تالف.
  • منفذ Redis الذي تم تكوينه قيد الاستخدام بالفعل.
  • يقوم Windows بحظر الملف الثنائي الذي تم تنزيله.
  • إصدار Redis الذي تم اكتشافه لا يتطابق مع redis.version.
الإصلاحات:
  • قم بتشغيل البرنامج النصي للحزمة لإعداد redis-binaries.
  • تغيير redis.port.
  • احذف مجلد redis-binaries/<version> التالف وأعد البناء.
  • استخدم redis.mode: "external" مع خادم Redis المعروف.

إعادة تعيين آمنة

لإعادة التعيين المحلي أثناء التطوير:
pnpm --filter @plato/pc-printer clean
يؤدي هذا إلى إزالة dist وoutput وlogs وplato-printer.zip وdump.rdb. في مرحلة الإنتاج، لا تقم بحذف dump.rdb إلا إذا كنت تريد عمدًا مسح قوائم الانتظار المستمرة وحالة تسجيل الطابعة المعروفة.