تخطَّ إلى المحتوى
Washy washy

اختصارات لوحة المفاتيح

j
التمرير لأسفل
k
التمرير لأعلى
g g
الانتقال إلى الأعلى
G
الانتقال إلى الأسفل
/
التركيز على حقل البحث في الصفحة
?
تبديل عرض هذه المساعدة
Esc
إغلاق هذه المساعدة

ملفا المخطط والجهاز

يصف كائن JSON واحد كل شيء: غسالتك ومكواتك تحت machine، وإدخال واحد لكل كومة غسيل تحت chart. تقبل كل من CLI ووظيفة الرفع في تطبيق الويب هذا الشكل بالضبط — وهو ما تتحقق منه دالة parseConfig الخاصة بـ@washy-washy/core.

{
"machine": { "washer": { "..." }, "iron": { "..." } },
"chart": [{ "clothing_type": "..." }]
}

كل إدخال تحت chart يمثّل كومة واحدة:

الحقل ما يوضع فيه
clothing_type الاسم الذي تُطلقه على الكومة — وهو عنوان البطاقة
detergent أي منظّف تستخدمه وبأي كمية
fabric_softener yes أو no
temperature درجة حرارة تتيحها غسالتك
spin سرعة عصر تتيحها غسالتك
duration تقريبًا مدة تشغيل البرنامج، بصيغة ~H:MM
program وضع على القرص، مكتوب بالضبط كما هو على اللوحة الأمامية
options أزرار خيارات، مفصولة بخط عمودي؛ تُترك فارغة إن لم توجد
ironing yes أو no — هل تكويها أصلاً أم لا
ironing_notes نص حر: كيف تكويها، أو لماذا لا تفعل. غالبًا ما يكون فارغًا
iron_setting وضع على منظم الحرارة. يُترك فارغًا حين تكون ironing هي no
drying نص حر: كيف تجفّفها
colour_group white أو colour أو dark أو sport أو any
mix_tags مفصولة بخط عمودي: lint-shedder، lint-magnet، dye-bleeder، solo
notes أي شيء آخر يستحق الذكر

يُتحقّق من كل قيمة تخصّ الجهاز — program وtemperature وspin وoptions وiron_setting — مقابل ما يتيحه machine الخاص بك، بحيث يفشل أي خطأ إملائي مع تحديد الصف والعمود بدقة، بدلاً من إنتاج بطاقة تطلب منك تدوير القرص إلى وضع غير موجود أصلاً.

يسرد machine.washer تسميات القرص بترتيبها الفعلي، إضافةً إلى درجات الحرارة وسرعات العصر وأزرار الخيارات التي تعرضها الشاشة. ويسرد machine.iron أوضاع منظم الحرارة، من الأبرد إلى الأسخن. انسخ كل تسمية تمامًا كما هي مطبوعة أمامك، بأي لغة كانت — فلا شيء هنا يترجم تسمية موجودة على اللوحة الأمامية أبدًا، لأن مخططًا تضطر لترجمته مجددًا وأنت واقف أمام الجهاز أسوأ من عدم وجود مخطط أصلاً.

ترتيب washer.programs أساسي وحاسم: الإدخال الأول هو وضع الإيقاف، ويُرسم عند الساعة الثانية عشرة، وزاوية كل علامة أخرى تُشتق من موضعها في القائمة. إغفال إدخال واحد لا يكتفي بحذفه — بل يُزيح كل علامة تليه.

محرر /config/machine الخاص بتطبيق الويب يكتب هذا الشكل نفسه — وإعادة ترتيب قائمة البرامج هناك تفعل بالضبط ما تفعله إعادة ترتيب مصفوفة JSON:

جدول سرعات العصر والأزرار وإعدادات المكواة في محرر الجهاز جدول سرعات العصر والأزرار وإعدادات المكواة في محرر الجهاز
{
"washer": {
"name": "Generic front loader",
"capacity": "1–8 kg",
"programs": ["Off", "Cottons", "Delicates / Silk", "Wool"],
"temperatures": ["cold", "20", "30", "40", "60", "90"],
"spins": ["0", "400", "600", "800", "1200", "1400"],
"options": ["Speed", "Eco", "Easy Iron", "Extra Rinse"]
},
"iron": {
"name": "Generic steam iron",
"settings": [
{
"key": "min",
"dots": "",
"label": "MIN",
"detail": "no heat",
"steam": false
},
{
"key": "3",
"dots": "•••",
"label": "•••",
"detail": "cotton, linen · 200 °C",
"steam": true
}
]
}
}

لا يمكن لكومتين أن تشتركا في حوض واحد إلا حين تتحقق كل هذه الشروط، بالترتيب التالي — وأول شرط يفشل هو السبب الذي كانت ستُظهره مصفوفة التوافق:

  1. لا تحمل أي منهما وسم solo.
  2. إذا كانت إحداهما lint-shedder، يجب أن تكون الأخرى كذلك أيضًا.
  3. تتطابق قيمة colour_group لديهما (any تطابق كل شيء).
  4. تتطابق program وtemperature وspin ومجموعة options تمامًا.

تندمج الكوَم في بطاقة واحدة، تشترك في رسم واحد للقرص، حين يتفق كل ما تضبطه فعليًا: البرنامج، ودرجة الحرارة، والعصر، والخيارات، وما إذا كان المنعّم يُضاف، وموضع منظم حرارة المكواة. أما الحقول النصية (detergent وdrying وnotes) فهي مستبعدة عمدًا من هذا التحقق — يمكن لكومتين أن تحتاجا منظّفًا مختلفًا وتظلا مع ذلك على بطاقة واحدة، وتُدرج البطاقة السطرين معًا مقابل الكومة التي يخصّ كل منهما.