مراجعة Claude Opus 5: هل يستحق الطراز الجديد من Anthropic الشراء؟
أوليفيا كارتر
آخر تحديث: 29 يوليو 2026
مراجعة Claude Opus 5: هل يستحق الطراز الجديد من Anthropic الشراء؟
تم التحقق من صحة المعلومات في 28 يوليو 2026.
الحكم السريع: تُظهر مراجعة نموذج Claude Opus 5 هذا أنه نموذج متميز ومثير للاهتمام مخصص لوكلاء البرمجة، وسير العمل التجاري المعقد، والمشترين الذين يرغبون في الحصول على أداء يقترب من الحدود القصوى دون الحاجة إلى دفع تكاليف نموذج Fable 5 دائمًا. يتقاضى نموذج Anthropic رسومًا قدرها $5 لكل مليون رمز إدخال و$25 لكل مليون رمز إخراج، بينما يدعم النموذج نافذة سياق سعة مليون رمز وما يصل إلى 128,000 رمز إخراج في واجهة برمجة تطبيقات الرسائل المتزامنة (Messages API). ولا يُعد هذا النموذج الخيار الأمثل تلقائيًا للدردشات البسيطة أو الملخصات القصيرة أو الطلبات ذات الحجم الكبير والقيمة المنخفضة.
الحجة الأقوى هي حجة عملية وليست مجرد عرض مسرحي: يجمع «أوبوس 5» بين قدرة استيعابية كبيرة للتفكير المنطقي وتكلفة تشغيلية أسهل في الإدارة مقارنةً بفئة «Anthropic» الرائدة. في اختبار تصحيح الأخطاء الوحيد الذي أجريناه، اكتشف النموذج الخطأ المطابق للبادئة بدقة، واقترح أصغر تصحيح ممكن، وأضاف اختبار تراجع مركّزًا، وقدم أمر تحقق نجح محليًّا. وهذا دليل مفيد لهذه المهمة — وليس دليلاً على أن النموذج سيفوز في كل مهمة برمجة.
الأفضل لـ عوامل الترميز، وتحليل السياق الطويل، وأتمتة الأعمال، والفرق التي تبرر إخفاقاتها المكلفة اعتماد نموذج الاشتراك المميز. تجاهلها في الحالات التالية: السرعة وتكلفة الوحدة أكثر أهمية من الجانب الأخير المتعلق بجودة الاستدلال.
يُعد طراز Claude Opus 5 الطراز اليومي المتميز من سلسلة Anthropic، والمصمم للترميز الفعال المعقد والأعمال المؤسسية. أعلنت شركة Anthropic عن ذلك في 24 يوليو 2026, ، واصفًا إياه بأنه مدروس ومبادر وأكثر كفاءة من النماذج الأخرى. وقد حل محل النموذج Claude Opus 4.8، وأصبح النموذج الافتراضي في جهاز Claude Max، كما أصبح أقوى نموذج متوفر في جهاز Claude Pro.
أعلنت شركة Anthropic عن طرح منتج Claude Opus 5 في 24 يوليو 2026، وأفادت بأنه أصبح متاحًا في ذلك اليوم.
يُعد عرض هذا المنتج غير معتاد بالنسبة لإصدارات Opus: فهو لا يُصوَّر فقط على أنه نموذج ذو ذكاء فائق. تهدف Anthropic إلى استخدامه يوميًا، مع جهد قابل للتعديل وخصائص زمن انتقال معتدلة. وهذا يجعل من السهل تبرير استخدامه في الوكلاء الذين يعملون لفترات طويلة والمهام الإنتاجية الصعبة، في حين يمكن توجيه أحمال العمل الأبسط إلى نموذج أسرع وأرخص.
يعتمد الوصول على الطريقة المتبعة. يمكن للمستخدمين العاديين الوصول إلى Opus 5 من خلال باقات Claude المؤهلة؛ أما المطورون فيمكنهم الوصول إليه عبر واجهة برمجة تطبيقات Claude والمنصات السحابية المدعومة. كما تتوفر لـ GlobalGPT صفحة منتج مخصصة. يمكن للقراء الذين يقارنون مستويات الاشتراك في Anthropic استخدام مقارنة بين باقات Claude المجانية و«Pro» و«Max» قبل اختيار طريقة الدفع.
Claude Opus 5: السعر وواجهة برمجة التطبيقات (API) والمواصفات الرئيسية
الرسمي سعر Claude وفقًا لواجهة برمجة التطبيقات (API) هو $5 لكل مليون توكن مدخَل و $25 لكل مليون توكن مُصدر. هذه هي الأسعار الأساسية لواجهة برمجة التطبيقات (API)، وليست سعر اشتراك المستهلك بنظام Claude أو خطة منصة طرف ثالث. وتخضع التخزين المؤقت الفوري والمعالجة الدفعية لأسعار منفصلة، لذا قم بمقارنة نمط الطلب الكامل بدلاً من ضرب السعر الإجمالي المدخل فقط.
الميدان
Claude Opus 5
ماذا يعني ذلك
معرّف واجهة برمجة التطبيقات Claude
كلود - الأوبوس رقم 5
استخدم قيمة الطراز هذه بالضبط في طلبات واجهة برمجة التطبيقات (API) الرسمية لـ Claude.
سعر الدخل الأساسي
$5 / MTok
معدل الرموز القياسي للمدخلات قبل تطبيق خصومات التخزين المؤقت أو الخصومات الدفعية.
سعر البيع الأساسي
$25 / MTok
قد تصبح العوامل التي تتطلب إنتاجًا مكثفًا باهظة التكلفة بسرعة.
نافذة السياق
1 مليون توكن
مناسب للمستودعات الكبيرة ومجموعات الوثائق، رهناً بجودة الطلب واستراتيجية الاسترجاع.
القدرة القصوى
128 ألف توكينز
ينطبق هذا على واجهة برمجة تطبيقات الرسائل المتزامنة؛ أما ميزة «دُفعات الرسائل» (Message Batches) فلديها مسار تجريبي منفصل يصل سعته إلى 300 ألف.
حد المعرفة الموثوقة
مايو 2026
يُعتبر هذا أحدث ما توصلت إليه المعايير الحالية، لكنه لا يُعد بديلاً عن الاسترجاع المباشر.
زمن الاستجابة المقارن
معتدل
ليس هذا أسرع طراز من طرازات Anthropic؛ ولا يزال زمن الاستجابة يتفاوت حسب الجهد المبذول والأدوات المستخدمة وحجم العمل.
تحدد منصة Claude «claude-opus-5» باعتباره معرّف واجهة برمجة التطبيقات (API) الحالي لـ Opus 5 واسمه المستعار.تُدرج منصة Claude مؤشر Opus 5 عند $5/$25 لكل مليون توكن إدخال/إخراج، مع نافذة سياق تبلغ 1 مليون توكن، وحد أقصى للإخراج يبلغ 128 ألف توكن، وموعد نهائي في مايو 2026.تُدرج منصة Claude نافذة سياق بحجم 1M، وحد أقصى للإخراج يبلغ 128k، ومواعيد نهائية في مايو 2026.
بالنسبة للوصول من جانب المستهلكين،, Anthropic تُدرج Claude Pro بمعدل $20 شهريًّا أو $17 شهريًّا عندما يتم احتساب تكلفة $200 سنويًّا؛ ويبدأ Claude Max بمعدل $100 شهريًّا. تشير Anthropic إلى أن Opus 5 هو النموذج الأقوى في إصدار Pro والإعداد الافتراضي في إصدار Max، لكن حصص الباقات وميزات المنتج منفصلة عن الاستخدام المقيس لواجهة برمجة التطبيقات (API).
إذا كنت بحاجة إلى تفصيل أوسع للتكاليف، فإن خطط Claude AI ودليل أسعار واجهة برمجة التطبيقات (API) يفصل بين اشتراكات المستخدمين، وفوترة واجهة برمجة التطبيقات (API)، وحدود الاستخدام. وهذا التمييز مهم: فعبارة “مشمول في الباقة” لا تعني مكالمات غير محدودة عبر واجهة برمجة التطبيقات (API)، كما أن سعر واجهة برمجة التطبيقات (API) لا يحدد حجم الوصول إلى الدردشة المتاح للمستخدمين.
Claude Opus 5 نتائج الاختبارات المعيارية
حد هام: الأرقام الواردة أدناه هي المعايير المرجعية التي نشرتها Anthropic, ، وليست قياسات مستقلة أُجريت خصيصًا لهذه المراجعة. وهي مفيدة لفهم المكانة المستهدفة لـ Anthropic من حيث الأداء والتكلفة، لكنها لا تضمن الحصول على النتيجة نفسها عند استخدام أوامرك أو أدواتك أو مستودعك أو في حدود ميزانية زمن الاستجابة المتاحة لديك.
التقييم
الادعاء الذي نشرته شركة Anthropic
كيفية قراءته
Frontier-Bench الإصدار 0.1
يضاعف «أوبوس 5» أداء «Opus 4.8» بأكثر من الضعف بتكلفة أقل لكل مهمة.
إشارة عامة إلى أداء الوكلاء، وليست تحسناً عاماً بمقدار الضعف.
CursorBench 3.2
عند بذل أقصى جهد، يقترب «أوبوس 5» بفارق 0.5% من أعلى نتيجة حققها «Fable 5»، وذلك بنصف تكلفة المهمة الواحدة.
نتائج اقتصادية قوية لعوامل الترميز في إطار إعداد الجهد المُختبر في نموذج Anthropic.
Zapier AutomationBench
حوالي 1.5 ضعف معدل النجاح الذي يليه في الترتيب، بنفس التكلفة لكل مهمة.
يُعد هذا الأمر واعداً لأتمتة الأعمال من البداية إلى النهاية؛ لكن تصميم سير العمل لا يزال أمراً مهماً.
OSWorld 2.0
يتفوق على أفضل نتيجة حققتها Fable 5 بتكلفة لا تتجاوز ثلث تلك التكلفة بقليل.
يشير هذا الاختبار القياسي إلى كفاءة جذابة في استخدام الكمبيوتر.
تشير Anthropic إلى أن Opus 5 يقترب بفارق 0.5% من أعلى نتيجة سجلها Fable 5 في اختبار CursorBench 3.2، وذلك بنصف تكلفة المهمة الواحدة.تشير تقارير Anthropic إلى تفوق بنسبة 1.5 ضعف في معدل النجاح على منصة Zapier AutomationBench، وإلى ميزة من حيث التكلفة على منصة OSWorld 2.0.
الجهد جزء من النتيجة. تشير Anthropic إلى أن Opus 5 يستخدم إعداد «الجهد العالي» بشكل افتراضي في واجهة برمجة التطبيقات (API) Claude ورمز Claude، في حين تستخدم مقارناتها أيضًا إعدادات «عالي» أو «xعالي» أو «أقصى». يمكن أن يؤدي الجهد الأعلى إلى تحسين نجاح المهام الصعبة مع زيادة عدد الرموز أو زمن الاستجابة أو كليهما. ولذلك، فإن تكلفة المعيار القياسي لكل مهمة تُعد أكثر إفادة من السعر لكل رمز بمفرده — لكن لا يُحل أي من هذين المقياسين محل إجراء تجربة تجريبية على حمل العمل الخاص بك.
كيف قمنا باختبار Claude Opus 5
أجرينا مهمة تصحيح أخطاء مركزة واحدة لتحديد السبب الجذري على نموذج اختبار CommonJS مكون من ثلاثة ملفات. وتطلبت المهمة من النموذج تحديد السبب الجذري قبل إجراء التعديل، واقتراح أصغر تصحيح ممكن، وإضافة اختبار تراجع مركّز، وتجنب التغييرات غير ذات الصلة، وتقديم أمر التحقق الدقيق.
ثم قمنا بالتحقق من التصحيح بشكل مستقل، بدلاً من اعتبار الإجابة صحيحة لمجرد أنها بدت واثقة. وكان الأمر المحلي هو node --test test/account-summary.test.cjs. قبل إجراء التصحيح، أسفرت مجموعة الاختبارات عن نجاح واحد وفشل واحد. وبعد تطبيق تصحيح المساواة الدقيقة، أسفرت عن نجاحين وبدون أي فشل.
تقدم لنا هذه الطريقة معلومات مفيدة حول أحد مسارات عمل تصحيح الأخطاء: التشخيص، والالتزام بمعايير التصحيح، وجودة اختبارات التراجع، وقابلية التحقق. وهي لا تقيس القيادة الشاملة في مجال البرمجة، أو موثوقية الوكلاء على المدى الطويل، أو السرعة، أو الأداء عبر اللغات المختلفة.
مراجعة عملية لجهاز Claude Opus 5
تصحيح الأخطاء من جذورها: صحيح، ومحدود، وقابل للتحقق
في الاختبار الذي أجريناه، تمكن جهاز Claude Opus 5 من تحديد موقع العطل بدقة في normalizedQuery.startsWith(account.id.toLowerCase()). باستخدام الاستعلام ACCT-10, ، وقد تطابقت عملية التحقق من البادئة acct-1 أولاً، إذن Array.prototype.find أرجعت الحساب الخاطئ قبل الوصول إلى المعرّف الصحيح.
أدى الإصلاح المقترح إلى تغيير مطابقة البادئة إلى مطابقة تامة، كما أضاف حالة انحراف واحدة للكلمة المُكمَّلة التي تحتوي على أحرف كبيرة وصغيرة ACCT-10 الإدخال. ولم تقم بإعادة كتابة أي كود غير ذي صلة. ويُعد هذا التقييد أمراً مهماً في مستودعات البرمجة الفعلية، حيث يمكن أن يؤدي “التنظيف” المفرط إلى زيادة عبء المراجعة أكثر من الخلل الأصلي نفسه.
كان الجزء الأقوى هو الدورة الكاملة: تحديد السبب الجذري، وشرح سبب إغفال الاختبار الحالي له، وإجراء التغيير الأصغر، وإضافة اختبار التراجع المناسب، وبيان الأمر اللازم للتحقق منه. تتوافق النتيجة مع التوجه الذي تتبناه Opus 5 كـ’وكيل برمجة»، لكنها تظل مجرد أداة اختبار واحدة. للاطلاع على دليل تمهيدي أوسع نطاقًا حول سير العمل، انظر كيفية استخدام كلود الذكاء الاصطناعي في البرمجة.
نصوص الأسئلة الكاملة من T1 إلى T4، والإجابات، والكود القابل للنسخ
T1: تصحيح الأخطاء من جذورها
تمت الموافقة — تم اكتشاف الخلل المتعلق بمطابقة البادئة، واقتُرح أصغر تصحيح ممكن، وأُضيف اختبار انحدار مركّز.
تم تحديد «مطابقة البادئة» باعتبارها الخلل؛ وشرح سبب عدم اكتشافه في الاختبار القديم؛ واقترح إجراء اختبار انحدار يعتمد على «المساواة التامة زائد واحد».
عرض السؤال والإجابة الكاملين في T1
النص الكامل للموجه
أنت تقوم بتصحيح أخطاء برنامج اختبار CommonJS صغير الحجم عن قصد. اعمل فقط انطلاقًا من الملفات الثلاثة أدناه وعملية إعادة إنتاج الخطأ الموضحة.
المتطلبات:
1. حدد السبب الجذري قبل اقتراح أي تعديل.
2. اقترح أصغر تصحيح ممكن لإصلاح الخلل.
3. أضف اختبار تراجع واحد مركّز يفشل قبل الإصلاح وينجح بعده.
4. اذكر الأمر الدقيق للتحقق الذي يجب تشغيله من جذر البرنامج المساعد.
5. لا تقم بإعادة كتابة كود غير ذي صلة. لا تقم بإعادة تسمية الملفات، أو إضافة تبعيات، أو تغيير واجهة برمجة التطبيقات العامة (API).
6. أعد هذه الأقسام بالترتيب التالي بالضبط: `ROOT CAUSE`، `PATCH`، `VERIFICATION`، `LIMITATIONS`.
7. في قسم `PATCH`، قدم فرقًا موحدًا واحدًا في كتلة `diff` محددة. في قسم `VERIFICATION`، قدم أمرًا واحدًا في كتلة `text` محددة.
إعادة التوليد: يجب أن تُرجع الدالة `summarizeAccount(accounts, 'ACCT-10')` القيمة `{ id: 'acct-10', name: 'Nimbus', seats: 24 }`، لكنها تُرجع الحساب `acct-1`.
الملف: `src/find-account.cjs`
```js
function findAccount(accounts, query) {
const normalizedQuery = query.trim().toLowerCase();
return accounts.find((account) =>
normalizedQuery.startsWith(account.id.toLowerCase()),
);
}
module.exports = { findAccount };
```
الملف: `src/account-summary.cjs`
```js
const { findAccount } = require('./find-account.cjs');
function summarizeAccount(accounts, requestedId) {
const account = findAccount(accounts, requestedId);
if (!account) return null;
return { id: account.id, name: account.name, seats: account.seats };
}
module.exports = { summarizeAccount };
```
الملف: `test/account-summary.test.cjs`
```js
const test = require('node:test');
const assert = require('node:assert/strict');
const { summarizeAccount } = require('../src/account-summary.cjs');
const accounts = [
{ id: 'acct-1', name: 'Atlas', seats: 5 },
{ id: 'acct-10', name: 'Nimbus', seats: 24 },
];
test('يلخص معرّف الحساب بالضبط', () => {
assert.deepEqual(summarizeAccount(accounts, 'acct-1'), {
id: 'acct-1',
name: 'Atlas',
seats: 5,
});
});
```
Claude Opus 5
السبب الجذري
تقوم وظيفة `findAccount` بمطابقة البادئات، وليس بالمساواة:
تُرجع الدالة `Array.prototype.find` العنصر الأول الذي يستوفي الشرط. بالنسبة إلى ‘ACCT-10‘، فإن الاستعلام المعياري هو ‘acct-10’، ومعرّف الحساب الأول ‘acct-1’ هو بادئة له، لذا فإن قيمة startsWith تكون «true»، ويقوم «acct-1» بإنهاء عملية البحث قبل أن يتم اختبار «acct-10» على الإطلاق. عملية التوحيد باستخدام trim().toLowerCase() صحيحة — فالمسافات البيضاء وحالة الأحرف ليست هي المشكلة. ووظيفة summarizeAccount هي مجرد وسيلة تمرير للبيانات وليست هي السبب في المشكلة. لا يمكن للاختبار الحالي اكتشاف هذا: ‘acct-1’ هي بادئة لنفسها وهي العنصر الأول، لذا لا يمكن التمييز بين مطابقة البادئة والمطابقة التامة في حالة هذا الإدخال.
تصحيح
diff
1--- a/src/find-account.cjs2+++ b/src/find-account.cjs3@@ -1,8 +1,8 @@4 function findAccount(accounts, query) {5 const normalizedQuery = query.trim().toLowerCase();6- return accounts.find((account) =>7- normalizedQuery.startsWith(account.id.toLowerCase()),8- );9+ return accounts.find(10+ (account) => account.id.toLowerCase() === normalizedQuery,11+ );12 }1314 module.exports = { findAccount };15--- a/test/account-summary.test.cjs16+++ b/test/account-summary.test.cjs17@@ -14,3 +14,11 @@18 test('summarizes an exact account ID', () => {19 seats: 5,20 });21 });22+23+test('matches the full ID rather than a prefix, with padding and mixed case', () => {24+ assert.deepEqual(summarizeAccount(accounts, ' ACCT-10 '), {25+ id: 'acct-10',26+ name: 'Nimbus',27+ seats: 24,28+ });29+});
قبل إجراء التصحيح، كان الاختبار الجديد يفشل عند الكائن acct-1 / Atlas / 5؛ أما بعد إجراء التصحيح، فقد نجح الاختبار.
التحقق
نص
1node --test test/account-summary.test.cjs
node --test test/account-summary.test.cjs
القيود
• النطاق: تم تغيير عامل واحد. لم تحدث أي عمليات إعادة تسمية، ولا توجد تبعيات جديدة، كما أن توقيعات الدالتين findAccount وsummarizeAccount وأشكال القيم المرجعة لم تتغير. • سلوك موجود مسبقًا لم يتم التعامل معه (خارج نطاق هذا الخطأ): • لا يزال استخدام قيمة requestedId غير النصية (قيمة فارغة، أو رقم) يؤدي إلى حدوث استثناء عند استدعاء الدالة .trim(). • لا يتم اقتطاع معرّفات الحسابات نفسها، لذا فإن القيمة المخزنة ‘acct-10’ لن تتطابق مع ذلك — حيث يتم توحيد الاستعلام فقط. • تستخدم دالة toLowerCase() العادية في تحويل الأحرف الكبيرة إلى صغيرة؛ دون تطبيع يونيكود أو طي الأحرف وفقًا للإعدادات الإقليمية. • لا تزال المعرّفات المكررة تُحلّ إلى أول تطابق، ويظل البحث في مستوى O(n). • تغطية الاختبار: يستهدف اختبار الانحدار الفردي بالضبط الحالة المبلغ عنها. أما المسار غير الموجود (الفارغ) والمدخلات غير الصحيحة، فلا يزالان دون اختبار.
ROOT CAUSE
findAccount matches by prefix, not by equality:
```js
normalizedQuery.startsWith(account.id.toLowerCase())
```
Array.prototype.find returns the first element satisfying the predicate. For ' ACCT-10 ' the normalized query is 'acct-10', and the first account's ID 'acct-1' is a prefix of it, so startsWith is true and acct-1 short-circuits the search before acct-10 is ever tested.
The trim().toLowerCase() normalization is correct — whitespace and casing are not the problem. summarizeAccount is a pass-through and is not at fault.
The existing test cannot catch this: 'acct-1' is a prefix of itself and is the first element, so prefix matching and exact matching are indistinguishable for that input.
PATCH
```diff
--- a/src/find-account.cjs
+++ b/src/find-account.cjs
@@ -1,8 +1,8 @@
function findAccount(accounts, query) {
const normalizedQuery = query.trim().toLowerCase();
- return accounts.find((account) =>
- normalizedQuery.startsWith(account.id.toLowerCase()),
- );
+ return accounts.find(
+ (account) => account.id.toLowerCase() === normalizedQuery,
+ );
}
module.exports = { findAccount };
--- a/test/account-summary.test.cjs
+++ b/test/account-summary.test.cjs
@@ -14,3 +14,11 @@
test('summarizes an exact account ID', () => {
seats: 5,
});
});
+
+test('matches the full ID rather than a prefix, with padding and mixed case', () => {
+ assert.deepEqual(summarizeAccount(accounts, ' ACCT-10 '), {
+ id: 'acct-10',
+ name: 'Nimbus',
+ seats: 24,
+ });
+});
```
Before the fix the new test fails with the acct-1 / Atlas / 5 object; after the fix it passes.
VERIFICATION
```text
node --test test/account-summary.test.cjs
```
LIMITATIONS
• Scope: one operator changed. No renames, no new dependencies, and findAccount / summarizeAccount signatures and return shapes are unchanged.
• Pre-existing behavior left alone (out of scope for this bug):
• A non-string requestedId (null, a number) still throws on .trim().
• Account IDs themselves are not trimmed, so a stored ' acct-10' still will not match — only the query is normalized.
• Casing uses plain toLowerCase(); no Unicode normalization or locale-aware folding.
• Duplicate IDs still resolve to the first match, and lookup remains O(n).
• Test coverage: the single regression test targets exactly the reported reproduction. The not-found (null) path and malformed input remain untested.
T2: تحليل حالة الحساب
جزئي — تم حساب المقاييس الأساسية وتحديد أولويات الإجراءات، لكن الإجابة المسجلة انتهت دون علامة «إعادة التحقق» المطلوبة.
تم حساب معدل العائد على المخاطر (MRR) للعمليات المعرضة للخطر بـ $34,800 (94.31%)؛ وتم تصعيد الحالة E-505 وتحديد أولويات إجراءات المتابعة؛ وانتهت الإجابة دون وجود علامة «إعادة الفحص» المطلوبة.
عرض السؤال والإجابة الكاملين في T2
النص الكامل للموجه
قم بتحليل ملف `account-health.csv` المرفق باعتباره مجموعة بيانات مغلقة. لا تستخدم حقائق خارجية ولا تختلق قيمًا مفقودة.
قواعد المخاطر (قم بتقييم كل منها على حدة):
- `inactivity`: `days_since_login >= 30`
- `payment`: `failed_payments >= 2`
- `low_utilization`: `seats_used / seats_purchased = 80» في حين أن الحساب معرض للمخاطر.
- `weak_health_without_risk`: `health_score = 9` و`open_tickets >= 3`.
المتطلبات:
1. احسب علامات المخاطر وعلامات التناقض التي تم تشغيلها لكل حساب.
2. أبلغ عن إجماليات مجموعة البيانات الخاصة بالحسابات، و MRR، والحسابات المعرضة للخطر، و MRR المعرضة للخطر، والحسابات التي يجب تصعيدها، وخطوط التناقض، والمقاعد المشتراة، والمقاعد المستخدمة.
3. إنشاء جدول إجراءات مكون من خمسة أعمدة بالضبط: `الحساب | مؤشرات المخاطر | التناقضات | الأولوية | الإجراء الموصى به`.
4. وضع القيم المحسوبة مباشرةً تحت عنوان `حقائق مقاسة`، ووضع القرارات التقديرية تحت عنوان `استنتاج`.
5. تحت عنوان «إعادة الفحص»، اعرض حسابات كافية لإعادة فحص كل إجمالي وكل حد أقصى أو أدنى بشكل مستقل، بما في ذلك حالة المساواة عند 0.50.
6. لا تقم بإصلاح القواعد أو إعادة تفسيرها دون إشعار. إذا بدت إحدى الإشارات غير بديهية، فسجلها على أنها تناقض بدلاً من تغيير تصنيفها.
`account-health.csv`:
```csv
account_id,account_name,plan,mrr_usd,days_since_login,failed_payments,seats_purchased,seats_used,health_score,nps,open_tickets
A-101,Aster,Enterprise,12000,45,0,100,82,92,9,1
B-202,Beacon,Pro,4200,4,2,20,18,70,7,0
C-303، سيندر، برو، 3600، 12، 0، 20، 8، 65، 10، 4
D-404، داليا، ستارتر، 900، 5، 0، 5، 4، 42، 6، 0
E-505، Ember، Enterprise، 15000، 65، 3، 200، 70، 35، 3، 6
F-606، Fjord، Starter، 1200، 29، 1، 4، 2، 85، 9، 3
```
Claude Opus 5
حقائق موثقة
المصدر: account-health.csv، 6 صفوف، تم اعتبارها مغلقة. لم يتم استكمال أي قيم.
تقييم القواعد لكل حساب على حدة
الحساب عدد الأيام ≥ 30 فشل ≥ 2 util <0.50 عدد المخاطر الحالة A-101 أستر ✅ 45 ❌ 0 ❌ 0.82 1 معرضة للخطر B-202 منارة ❌ 4 ✅ 2 ❌ 0.90 1 معرضة للخطر C-303 رماد ❌ 12 ❌ 0 ✅ 0.40 1 معرضة للخطر D-404 داليا ❌ 5 ❌ 0 ❌ 0.80 0 ليس معرضًا للخطر E-505 إمبر ✅ 65 ✅ 3 ✅ 0.35 3 المعرضون للخطر + تصعيد F-606 فيورد ❌ 29 ❌ 1 ❌ 0.50 0 ليس معرضًا للخطر علامات التناقض لكل حساب الحساب الصحة القوية مع المخاطر صحة_ضعيفة_دون_مخاطر المروج_الذي_يحمل_تذاكر A-101 أستر ✅ (92 ≥ 80، معرض للخطر) ❌ ❌ (مؤشر NPS 9 ✓، التذاكر 1 ✗) B-202 منارة ❌ (70 < 80) ❌ (70 ≥ 50) ❌ (مؤشر NPS 7) C-303 رماد ❌ (65 < 80) ❌ (65 ≥ 50) ✅ (مؤشر NPS 10، التذاكر 4) D-404 داليا ❌ ✅ (42 < 50، ليس ضمن الفئة المعرضة للخطر) ❌ (مؤشر NPS 6) E-505 إمبر ❌ (35 < 80) ❌ (35 < 50 ولكنه من الفئة المعرضة للخطر) ❌ (مؤشر NPS 3) F-606 فيورد ❌ (85 ≥ 80 ولكن ليس ضمن الفئة المعرضة للخطر) ❌ (85 ≥ 50) ✅ (مؤشر NPS 9، عدد التذاكر 3) إجمالي بيانات المجموعة متري القيمة الحسابات 6 إجمالي الإيرادات المتكررة الشهرية (MRR) $36,900 الحسابات المعرضة للخطر 4 (أ-101، ب-202، ج-303، هـ-505) MRR المعرضة للخطر $34,800 (94.31% من الإجمالي) ترقية الحسابات 1 (E-505) صفوف التناقضات 4 (A-101، C-303، D-404، F-606) إشارات التناقض 4 (1 حالة «صحة جيدة مع وجود مخاطر»، 1 حالة «صحة ضعيفة بدون مخاطر»، 2 حالة «مروج مع حمل تذاكر») المقاعد التي تم شراؤها 349 المقاعد المستخدمة 184 الاستدلال ترتيب الأولويات والإجراءات الموصى بها أدناه هي قرارات تقديرية، وليست نتائج مستمدة من قواعد محددة. وترجيح الترتيب الذي أتبعه يعطي الأولوية للحالة أولاً، ثم الإيرادات الشهرية المتكررة (MRR) المعرضة للخطر، ثم إشارات التناقض. الحساب عوامل تحفيز المخاطر التناقضات الأولوية الإجراء الموصى به E-505 إمبر عدم النشاط، الدفع، انخفاض الاستخدام - P0 يتم تفعيل القواعد الثلاث جميعها على الحساب الأكبر ($15,000 MRR). تعامل مع الحالة على أنها «تسرب نشط»: استرجع وسيلة الدفع، ثم قم بإجراء مراجعة تنفيذية للـ 130 مقعدًا غير المستخدم. A-101 أستر الخمول الصحة القوية مع المخاطر P1 $: 12,000 MRR مع فترة توقف عن النشاط مدتها 45 يومًا، على الرغم من حصولها على درجة 92 ومعدل استخدام صحي يبلغ 82%. تحقق مما إذا كانت فجوة تسجيل الدخول ناتجة عن انسحاب حقيقي أم أنها مجرد خطأ في التتبع (تسجيل الدخول الموحد (SSO)، أو الاستخدام عبر واجهة برمجة التطبيقات (API) فقط) قبل اتخاذ أي إجراء بناءً على هذه الدرجة. C-303 رماد انخفاض_معدل_الاستخدام المروج_الذي_يحمل_تذاكر P1 المروج (nps 10) يحمل 4 تذاكر مفتوحة بمعدل استخدام يبلغ 40%. ويُعتبر عبء التذاكر العائق المحتمل الذي يحول دون التبني؛ لذا يجب إفراغ قائمة الانتظار، ثم المضي قدماً في تفعيل المقاعد. B-202 منارة الدفع - P2 حالة واضحة ذات سبب واحد: عمليتا دفع فاشلتان مع تسجيل دخول تم منذ 4 أيام واستخدام 90%. متابعة الفواتير فقط، ولا حاجة لاتخاذ إجراء من قسم خدمة العملاء. F-606 فيورد - المروج_الذي_يحمل_تذاكر P3 تقع الحالة تمامًا ضمن الحدود المسموح بها (29 يومًا، عملية دفع واحدة فاشلة، نسبة استخدام تبلغ 0.50 بالضبط). وهي ليست معرضة للخطر وفقًا للقواعد، لكن يومًا واحدًا إضافيًا من عدم النشاط أو عملية دفع فاشلة أخرى ستقلب الوضع. يرجى مراقبة الحالة وتسوية التذاكر الثلاثة. D-404 داليا - صحة_ضعيفة_دون_مخاطر P3 النتيجة 42 دون تفعيل أي قاعدة، مع استخدام 80% على MRR $900. إما
حقائق مقاسة
المصدر: account-health.csv، 6 صفوف، تم اعتبارها مغلقة. لم يتم استكمال أي قيم.
تقييم القواعد لكل حساب
الحساب
عدد الأيام ≥30
عدد حالات الفشل ≥2
معدل الاستخدام <0.50
عدد المخاطر
الحالة
A-101 Aster
✅ 45
❌ 0
❌ 0.82
1
معرض للخطر
B-202 Beacon
❌ 4
✅ 2
❌ 0.90
1
معرض للخطر
C-303 Cinder
❌ 12
❌ 0
✅ 0.40
1
معرض للخطر
D-404 Dahlia
❌ 5
❌ 0
❌ 0.80
0
غير معرض للخطر
E-505 Ember
✅ 65
✅ 3
✅ 0.35
3
معرض للخطر + تصعيد
F-606 Fjord
❌ 29
❌ 1
❌ 0.50
0
ليس معرضًا للخطر
علامات التناقض لكل حساب
الحساب
صحة_قوية_مع_خطر
صحة_ضعيفة_بدون_خطر
مروج_مع_حمل_تذاكر
A-101 أستر
✅ (92 ≥ 80، معرض للخطر)
❌
❌ (nps 9 ✓، التذاكر 1 ✗)
B-202 بيكون
❌ (70 < 80)
❌ (70 ≥ 50)
❌ (nps 7)
C-303 سيندر
❌ (65 < 80)
❌ (65 ≥ 50)
✅ (nps 10، التذاكر 4)
D-404 داليا
❌
✅ (42 < 50، غير معرضة للخطر)
❌ (nps 6)
E-505 Ember
❌ (35 < 80)
❌ (35 < 50 ولكنها معرضة للخطر)
❌ (nps 3)
F-606 فيورد
❌ (85 ≥ 80 لكنها ليست معرضة للخطر)
❌ (85 ≥ 50)
✅ (nps 9، تذاكر 3)
إجماليات مجموعة البيانات
المقياس
القيمة
الحسابات
6
إجمالي MRR
$36,900
الحسابات المعرضة للخطر
4 (A-101، B-202، C-303، E-505)
MRR المعرض للخطر
$34,800 (94.31% من الإجمالي)
الحسابات التي يجب تصعيدها
1 (E-505)
صفوف التناقض
4 (A-101، C-303، D-404، F-606)
علامات التناقض
4 (1 حالة «صحة قوية مع مخاطر»، 1 حالة «صحة ضعيفة بدون مخاطر»، 2 حالة «مروج مع حمل تذاكر»)
المقاعد المشتراة
349
المقاعد المستخدمة
184
الاستنتاج
ترتيب الأولويات والإجراءات الموصى بها أدناه هي قرارات تقديرية، وليست نتائج مستمدة من قواعد. تمنح أوزان الترتيب الخاصة بي الأولوية للحالة أولاً، ثم الإيرادات الشهرية المتكررة (MRR) المعرضة للخطر، ثم إشارات التناقض.
الحساب
محفزات المخاطر
التناقضات
الأولوية
الإجراء الموصى به
E-505 Ember
عدم النشاط، الدفع، الاستخدام_المنخفض
—
P0
يتم تفعيل القواعد الثلاث جميعها على الحساب الأكبر ($15,000 MRR). تعامل مع الحالة على أنها انقطاع نشط: استرجع طريقة الدفع، ثم قم بإجراء مراجعة تنفيذية على المقاعد الـ 130 غير المستخدمة.
A-101 Aster
عدم النشاط
صحة قوية مع وجود مخاطر
P1
$12,000 MRR مع 45 يومًا من عدم النشاط على الرغم من النتيجة 92 ومعدل استخدام صحي يبلغ 82%. تحقق مما إذا كانت فترة انقطاع تسجيل الدخول تمثل انسحابًا حقيقيًّا أم مجرد خلل في التتبع (تسجيل الدخول الموحد، الاستخدام عبر واجهة برمجة التطبيقات فقط) قبل اتخاذ إجراء بناءً على النتيجة.
C-303 سيندر
low_utilization
promoter_with_ticket_load
P1
مروج (nps 10) لديه 4 تذاكر مفتوحة بمعدل استخدام 40%. يُعتبر عدد التذاكر المفتوحة العائق المحتمل الذي يمنع التبني؛ قم بمسح قائمة الانتظار، ثم شجع على تفعيل المقعد.
B-202 Beacon
الدفع
—
P2
حالة واضحة ذات سبب واحد: فشل دفعتين مع تسجيل دخول حديث منذ 4 أيام ومعدل استخدام 90%. متابعة الفوترة فقط، لا حاجة لإجراء من خدمة العملاء.
F-606 Fjord
—
promoter_with_ticket_load
P3
يقع بالضبط داخل كل حد (29 يومًا، عملية دفع فاشلة واحدة، معدل استخدام 0.50 بالضبط). ليس معرضًا للخطر وفقًا للقواعد، لكن يومًا إضافيًا من الخمول أو عملية دفع فاشلة أخرى ستقلب الوضع. راقب وقم بإزالة التذاكر الثلاثة.
D-404 Dahlia
—
weak_health_without_risk
P3
النتيجة 42 دون تفعيل أي قاعدة واستخدام 80% على MRR $900. إما
T3: إنشاء واجهة مستخدم متجاوبة
جزئي — أنتج تنفيذًا طويلًا قائمًا بذاته وفحصًا ذاتيًّا، مع الاعتراف صراحةً بأنه قام بفحص الصفحة بدلاً من عرضها في وقت التشغيل.
تم إنتاج إجابة شاملة تضم 21,907 حرفًا؛ وتناولت الإجابة أجهزة سطح المكتب والأجهزة المحمولة وحالات تجاوز السعة وإمكانية الوصول؛ وأُشير صراحةً إلى أن التخطيط قد تم فحصه، ولم يتم عرضه في وقت التشغيل.
عرض النص الكامل للسؤال T3 والإجابة عليه
النص الكامل للموجه
قم بإنشاء واجهة مقارنة منتجات متقنة في شكل ملف HTML واحد قابل للتشغيل باستخدام بيانات المنتجات الواردة أدناه فقط.
المتطلبات:
1. قم بإرجاع كتلة كود `html` محددة بـ"fenced" واحدة فقط، متبوعة بقسم `SELF-CHECK`. لا تقم بتقسيم HTML أو CSS أو JavaScript إلى ملفات منفصلة.
2. استخدم HTML الدلالي وCSS المضمن وJavaScript الأساسي المضمن فقط: لا تستخدم أي إطار عمل خارجي أو حزمة أو خط أو صورة أو طلب شبكة أو خطوة بناء.
3. وفر ثلاث علامات تبويب يمكن الوصول إليها عبر لوحة المفاتيح (`Overview`، `Pricing`، `Limits`) مع دلالات `tablist` و`tab` و`tabpanel` الصحيحة. يجب أن تعمل السهمين الأيمن والأيسر (ArrowLeft/ArrowRight) على تحريك علامات التبويب وتفعيلها؛ ويجب أن تعمل مفتاحي Home وEnd على الانتقال إلى علامة التبويب الأولى/الأخيرة وتفعيلها. يجب أن يظل التركيز مرئيًا.
4. يجب أن تنعكس علامة التبويب المحددة عبر `aria-selected` و`tabindex` واللوحة المرئية؛ ويجب إخفاء اللوحات غير النشطة.
5. الهدف على سطح المكتب: عرض 1440 بكسل. الهدف على الأجهزة المحمولة: عرض 390 بكسل دون تجاوز أفقي للصفحة، ودون عناصر تحكم مقطوعة، وأهداف النقر بارتفاع 44 بكسل على الأقل، وبطاقات المقارنة مكدسة في عمود واحد.
6. قم بتضمين رأس موجز، وتوصية واضحة، وثلاث بطاقات منتج، وجدول مقارنة موجز. الحفاظ على تباين واضح وتجنب الحركات الزخرفية.
7. استخدم هذه المعلومات الدقيقة عن المنتجات ولا تضف أي ادعاءات:
- Atlas: `$19/mo`، `20 مشروعًا`، `10 جيجابايت`، `دعم عبر البريد الإلكتروني`، الأفضل للعمل الفردي.
- Beacon: `$49/mo`، `مشاريع غير محدودة`، `100 جيجابايت`، `دعم ذو أولوية`، الأفضل بشكل عام للفرق النامية.
- Cove: `$99/mo`، `مشاريع غير محدودة`، `1 تيرابايت`، `دعم مخصص`، الأفضل للعمليات الخاضعة للتنظيم.
8. ضع على بطاقة Beacon علامة `الأفضل بشكل عام` واضحة دون أن تجعل البطاقات الأخرى تبدو معطلة.
9. في "SELF-CHECK"، قم بالإبلاغ صراحةً عن عمليات الفحص التي أجريتها للعلامات الدلالية، وسلوك لوحة المفاتيح، وتخطيط 1440 بكسل، وتخطيط 390 بكسل، والتجاوز الأفقي، والتبعيات الخارجية. لا تدّعِ أنك قمت فعليًّا بعرض نافذة العرض ما لم تكن قد فعلت ذلك؛ وافرق بين فحص الكود والتحقق أثناء وقت التشغيل.
ملحق المنتج (يتم تخزينه أيضًا باسم `fixtures/T3-responsive-ui/product-data.json`):
```json
{
"products": [
{"name":"Atlas","price":"$19/mo","projects":"20 projects","storage":"10 GB","support":"دعم عبر البريد الإلكتروني","bestFor":"العمل الفردي"},
{"name":"Beacon","price":"$49/mo","projects":"مشاريع غير محدودة","storage":"100 GB","support":"دعم ذو أولوية","bestFor":"الفرق النامية","badge":"الأفضل بشكل عام"},
{"name":"Cove","price":"$99/mo","projects":"مشاريع غير محدودة","التخزين":"1 تيرابايت","الدعم":"دعم مخصص","الأفضل لـ":"العمليات الخاضعة للتنظيم"}
]
}
```
جميع العبارات الواردة أدناه مستمدة من فحص الكود فقط. لم أقم بفتح متصفح، أو عرض نافذة عرض، أو تشغيل قارئ شاشة، أو تنفيذ معالجات لوحة المفاتيح، لذا لم يتم التحقق من صحة أي شيء هنا أثناء وقت التشغيل. وحيثما يعتمد أي ادعاء على سلوك محرك التخطيط، فإنني أشير إلى ذلك صراحةً. علامات التبويب الدلالية — تم فحصها، ومتسقة يحتوي عنصر div واحد [role="tablist"] مع السمة aria-label="عرض مقارنة الخطط" على ثلاثة أزرار [type="button"][role="tab"]. تحتوي كل علامة تبويب على معرّف فريد وسمة aria-controls تشير إلى قسم [role="tabpanel"]؛ وتحتوي كل لوحة على سمة aria-labelledby تشير بدورها إلى علامة التبويب الخاصة بها. قمت بتتبع جميع الأزواج الثلاثة يدويًا: tab-overview/panel-overview، tab-pricing/panel-pricing، tab-limits/panel-limits. لا توجد معرّفات مكررة، ولا توجد مراجع معلقة. تستخدم اللوحات tabindex="0" بحيث يمكن الوصول إلى نص اللوحة بعد علامة التبويب. سلوك لوحة المفاتيح — تم فحصه، ولم يتم تنفيذه يقوم مستمع أحادي لحدث "keydown" في قائمة علامات التبويب بمعالجة مفاتيح «ArrowRight» و«ArrowLeft» و«Home» و«End»، ويستدعي دالة «event.preventDefault()» لهذه المفاتيح الأربعة فقط، ويعود مبكرًا في الحالات الأخرى. تنتقل مفاتيح الأسهم إلى كلا الطرفين. ونظرًا لأن الدالة activate() تقوم في آن واحد بتحديث قيم aria-selected و tabindex و hidden ونقل التركيز، فإن مفاتيح الأسهم و Home و End تنقل التركيز وتفعّله في خطوة واحدة، وهو نمط التنشيط التلقائي الذي تتطلبه المواصفات. يعتمد التنقل باستخدام Tab/Shift+Tab على tabindex المتنقل: هناك علامة تبويب واحدة فقط لها tabindex="0"، والباقي -1، ويتم الحفاظ على ذلك بواسطة الدالة activate(). تأتي رؤية التركيز من قاعدة :focus-visible عامة مع إطار خارجي 3px وإزاحة 2px؛ ولم أقم بتجاوز أو إزالة أي إطار خارجي افتراضي. لم أتحقق بعد من معالجة المفاتيح في متصفح حقيقي. الانعكاس في حالة محددة — تم فحصه تقوم الدالة activate() بتعيين الإشارات الثلاث جميعها في نفس الحلقة، وبالتالي لا يمكن أن تتباعد قيم aria-selected="true" و tabindex="0" وغياب السمة hidden عن بعضها البعض. تحصل اللوحات غير النشطة على السمة hidden، ويحمي [hidden] { display: none !important; } من قواعد العرض التي قد تتعارض معها — وهذا الحماية مهمة لأن اللوحات تحتوي على عناصر فرعية ذات display: grid. يتم تشغيل activate(currentIndex(), false) عند التحميل لتطبيع الحالة من الترميز دون سرقة التركيز. إذا لم يتم تشغيل JavaScript، يتم عرض الترميز مع تحديد «Overview» وإخفاء اللوحات الأخرى، وبالتالي تتحول الصفحة إلى لوحة واحدة قابلة للقراءة. تخطيط 1440 بكسل — تم فحصه، ولم يتم عرضه .يبلغ العرض الأقصى لعنصر .wrap: 1120px مع هامش: 0 auto، لذا عند 1440px يتم توسيط المحتوى مع فواصل تبلغ حوالي 160px بدلاً من التمدد. تستخدم البطاقات grid-template-columns: repeat(3, minmax(0, 1fr)) مع فجوة تبلغ 20px، مما ينتج عنه ثلاثة أعمدة متساوية؛ ويمنع align-items: start البطاقات من التمدد إلى ارتفاع مشترك، بينما يتم تحييد تأثير .card { height: 100% } بفعل ذلك. استخدام minmax(0, 1fr) متعمد — حيث إن 1fr وحده قد يرفض الانكماش إلى ما دون عرض المحتوى ويدفع الشبكة إلى الاتساع. لم أقم بقياس الناتج الفعلي بالبكسل. تخطيط 390px — تم فحصه، ولم يتم عرضه يؤدي تعيين "max-width: 720px" للكتلة إلى تحويل شبكة البطاقات إلى "minmax(0, 1fr)"، أي عمود واحد، وبالتالي تتراص البطاقات. وتنخفض المسافة البادئة إلى 16px لكل جانب، مما يترك عرضًا للمحتوى يبلغ حوالي 358px. أهداف النقر: كل عنصر [role="tab"] له min-height: 44px، وتتقلص المسافة البادئة الأفقية إلى 12px بدلاً من تقلص الارتفاع، وبالتالي يظل الحد الأدنى البالغ 44px ثابتًا عند العرض الضيق. تصبح قائمة علامات التبويب flex-wrap: nowrap مع overflow-x: auto و flex: 1 0 auto للأعناصر التابعة، وبالتالي تتسع ثلاث علامات تبويب أو يتم تمريرها داخل قائمة علامات التبويب نفسها بدلاً من قصها أو لفها في منتصف عنصر التحكم. يوجد . لم يتم التحقق من ذلك في نافذة عرض فعلية بعرض 390px. تجاوز أفقي — تم فحصه، لفافة واحدة مقصودة ومحتواها محصور يُعد `body { overflow-x: hidden }` بمثابة الحل الاحتياطي، لكنني حاولت أيضًا ألا أعتمد عليه. أما `* { box-sizing: border-box }` فيحافظ على الحشو داخل العرض المحدد. تستخدم جداول المقارنة خاصية white-space: nowrap على الخلايا، لذا سيتجاوز جدول "Overview" المكون من ستة أعمدة 358 بكسل على الأجهزة المحمولة؛ ويتم احتواء ذلك بواسطة .table-scroll { max-width: 100%; overflow-x: auto }، الذي يقوم بتمرير منطقة الجدول بدلاً من الصفحة. يحتوي هذا العنصر المُغلف على tabindex="0" و role="region" مع تسمية حتى يتمكن مستخدمو لوحة المفاتيح من الوصول إليه والتمرير فيه. يتم التعامل مع العناصر التابعة لـ Flex و grid التي قد ترفض التقلص بخلاف ذلك باستخدام minmax(0, 1fr) على الشبكة و flex-wrap: wrap على .card-head و .recommendation. الخطر الوحيد المتبقي الذي لا يمكنني استبعاده دون عرض الصفحة هو وجود سلسلة طويلة غير منقطعة في خلية الجدول، لكن جميع قيم العناصر الثابتة قصيرة. التبعيات الخارجية — تم فحصها، لا توجد لا يوجد <link>, <script src>, <img>, @import, url(), fetch, XMLHttpRequest, web font, or CDN reference. Fonts are a system-ui stack. The badge and featured border are CSS only, no icon assets. Everything is inline in one file, so it runs from file:// with no build step. التباين والحركة — تم فحصهما النص الأساسي #16191f على خلفية #f6f7f9 والنص الثانوي #4a515c على خلفية بيضاء يتجاوزان كلاهما نسبة التباين 4.5:1 بفارق كبير؛ الشارة باللون الأبيض على #10457e، وعلامة التبويب النشطة هي #10457e على خلفية بيضاء. لقد قمت بحساب هذه القيم عن طريق تقدير النسبة من القيم السداسية العشرية، وليس باستخدام أداة التباين. لا توجد أي انتقالات أو رسوم متحركة أو تحويلات في أي مكان؛ ويُعد كتلة «prefers-reduced-motion» شبكة أمان غير فعالة بدلاً من أن تكون إصلاحاً للحركة الموجودة. دقة الجدول — تم فحصها تظهر كل خطة من الخطط الثلاث في جميع الألواح الثلاثة بالإضافة إلى الجدول الخاص بكل لوحة. وقد قمت بمقارنة كل سعر، وعدد المشاريع، وسعة التخزين، ومستوى الدعم مع ملف JSON: Atlas 19 / 20 𝑝 𝑟 𝑜 𝑗 𝑒 𝑐 𝑡 𝑠 / 10 𝐺 𝐵 / 𝐸 𝑚 𝑎 𝑖 𝑙 , 𝐵 𝑒 𝑎 𝑐 𝑜 𝑛 49/غير محدود/100 جيجابايت/أولوية، Cove $99/غير محدود/1 تيرابايت/مخصص. يحمل "Beacon" شارة «الأفضل بشكل عام» وحافة تمييزية بعرض 2 بكسل؛ بينما يحتفظ كل من «Atlas» و«Cove» بنص كامل التعتيم وحواف عادية ومعالجة نصية متطابقة، بحيث يُفهم أنهما متاحان وليس معطلان. يتم عرض «الأفضل من حيث القيمة» على شكل تسميات قصيرة («الأفضل للعمل الفردي») — حيث تُضاف الصياغة حول قيمة المنتج، دون أي ادعاءات جديدة بشأن المنتج. الثغرات المعروفة لا يوجد أي نوع من التحقق أثناء التشغيل. يتم نسخ محتوى اللوحات الثلاثة كعلامات ثابتة بدلاً من عرضها من ملف JSON، لذا فإن «الفيكستور» هو المصدر الموثوق للمعلومات عن طريق النسخ، وليس عن طريق الربط — أي أن أي تغيير في البيانات في المستقبل سيتطلب تعديل عدة أماكن.
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Compare plans — Atlas, Beacon, Cove</title>
<style>
:root
{
--bg: #f6f7f9
;
--surface: #ffffff
;
--ink: #16191f
;
--ink-soft: #4a515c
;
--line: #d3d8df
;
--line-strong: #b6bdc7
;
--accent: #10457e
;
--accent-soft: #e8f0f9
;
--focus: #0b2f56
;
--radius: 10px
;
}
* {
box-sizing
: border-box; }
html { -webkit-text-size-adjust: 100%
; }
body
{
margin: 0
;
padding: 0
;
background: var
(--bg);
color: var
(--ink);
font-family: system-ui, -apple-system, "Segoe UI"
, Roboto, Helvetica, Arial, sans-serif;
font-size: 16px
;
line-height: 1.5
;
overflow-x
: hidden;
}
.wrap
{
width: 100%
;
max-width: 1120px
;
margin: 0
auto;
padding: 32px 24px 64px
;
}
/* ---------- Header ---------- */
.page-header { margin-bottom: 24px
; }
.page-header h1
{
margin: 0 0 8px
;
font-size: 1.75rem
;
line-height: 1.25
;
letter-spacing: -0.01em
;
}
.page-header p
{
margin: 0
;
max-width: 60ch
;
color: var
(--ink-soft);
}
/* ---------- Recommendation ---------- */
.recommendation
{
display
: flex;
flex-wrap
: wrap;
gap: 4px 10px
;
align-items
: baseline;
margin: 0 0 28px
;
padding: 14px 16px
;
background: var
(--accent-soft);
border: 1px solid #c2d5e8
;
border-left: 4px solid var
(--accent);
border-radius: var
(--radius);
}
.recommendation strong { color: var
(--accent); }
.recommendation span { color: #23405e
; }
/* ---------- Tabs ---------- */
.tabs
{
display
: flex;
flex-wrap
: wrap;
gap: 8px
;
margin: 0 0 20px
;
padding: 0
;
border-bottom: 1px solid var
(--line);
}
[role="tab"]
{
appearance
: none;
min-height: 44px
;
padding: 10px 18px
;
font
: inherit;
font-weight: 600
;
color: var
(--ink-soft);
background
: transparent;
border: 1px
solid transparent;
border-bottom: 3px
solid transparent;
border-radius: 8px 8px 0 0
;
cursor
: pointer;
}
[role="tab"]:hover { color: var(--ink); background: #eceff3
; }
[role="tab"][aria-selected="true"]
{
color: var
(--accent);
background: var
(--surface);
border-color: var(--line) var(--line) var
(--accent);
border-bottom-width: 3px
;
}
:focus-visible
{
outline: 3px solid var
(--focus);
outline-offset: 2px
;
}
[role="tabpanel"] { outline
: none; }
[role="tabpanel"]:focus-visible
{
outline: 3px solid var
(--focus);
outline-offset: 4px
;
border-radius: var
(--radius);
}
[hidden] { display: none !important
; }
.panel-intro
{
margin: 0 0 20px
;
max-width: 62ch
;
color: var
(--ink-soft);
}
/* ---------- Cards ---------- */
.card-grid
{
display
: grid;
grid-template-columns: repeat(3, minmax(0, 1
fr));
gap: 20px
;
margin: 0
;
padding: 0
;
list-style
: none;
align-items
: start;
}
.card
{
display
: flex;
flex-direction
: column;
height: 100%
;
padding: 20px
;
background: var
(--surface);
border: 1px solid var
(--line);
border-radius: var
(--radius);
}
.card.is-featured
{
border-color: var
(--accent);
border-width: 2px
;
padding: 19px
;
}
.card-head
{
display
: flex;
flex-wrap
: wrap;
gap: 8px
;
align-items
: center;
justify-content
: space-between;
margin-bottom: 4px
;
}
.card h3
{
margin: 0
;
font-size: 1.2rem
;
}
.badge
{
padding: 3px 10px
;
font-size: 0.75rem
;
font-weight: 700
;
letter-spacing: 0.02em
;
text-transform
: uppercase;
color: #ffffff
;
background: var
(--accent);
border-radius: 999px
;
white-space
: nowrap;
}
.price
{
margin: 8px 0 2px
;
font-size: 1.6rem
;
font-weight: 700
;
letter-spacing: -0.02em
;
}
.best-for
{
margin: 0 0 14px
;
font-size: 0.9375rem
;
color: var
(--ink-soft);
}
.spec-list
{
margin: 0
;
padding: 14px 0 0
;
border-top: 1px solid var
(--line);
font-size: 0.9375rem
;
}
.spec-list div
{
display
: flex;
gap: 12px
;
justify-content
: space-between;
padding: 5px 0
;
}
.spec-list dt { color: var
(--ink-soft); }
.spec-list dd
{
margin: 0
;
font-weight: 600
;
text-align
: right;
}
/* ---------- Table ---------- */
.table-section { margin-top: 36px
; }
.table-section h2
{
margin: 0 0 12px
;
font-size: 1.125rem
;
}
.table-scroll
{
max-width: 100%
;
overflow-x
: auto;
background: var
(--surface);
border: 1px solid var
(--line);
border-radius: var
(--radius);
}
table
{
width: 100%
;
border-collapse
: collapse;
font-size: 0.9375rem
;
}
caption
{
padding: 12px 14px
;
text-align
: left;
color: var
(--ink-soft);
font-size: 0.875rem
;
}
th, td
{
padding: 10px 14px
;
text-align
: left;
border-top: 1px solid var
(--line);
white-space
: nowrap;
}
thead th
{
background: #eef1f5
;
border-top
: none;
font-weight: 700
;
}
tbody th { font-weight: 600; color: var
(--ink-soft); }
th[scope="col"].is-featured { color: var
(--accent); }
/* ---------- Mobile ---------- */
@media (max-width: 720px
) {
.wrap { padding: 20px 16px 48px
; }
.page-header h1 { font-size: 1.4rem
; }
.tabs
{
gap: 4px
;
overflow-x
: auto;
-webkit-
overflow
-scrolling: touch;
flex-wrap
: nowrap;
}
[role="tab"]
{
flex: 1 0
auto;
padding: 10px 12px
;
font-size: 0.9375rem
;
}
.card-grid { grid-template-columns: minmax(0, 1
fr); }
th, td { padding: 10px 12px
; }
}
@media (prefers-reduced-motion
: reduce) {
* {
transition: none !important; animation: none !important
; }
}
</style>
</head>
<body>
<main class="wrap">
<header class="page-header">
<h1>Compare plans</h1>
<p>Three plans across projects, storage, and support. Pick a tab to focus on the details that matter to you.</p>
</header>
<p class="recommendation">
<strong>Recommended: Beacon</strong>
<span>Best overall for growing teams — $49/mo, unlimited projects, 100 GB, priority support.</span>
</p>
<div class="tabs" role="tablist" aria-label="Plan comparison views">
<button type="button" role="tab" id="tab-overview" aria-controls="panel-overview" aria-selected="true" tabindex="0">Overview</button>
<button type="button" role="tab" id="tab-pricing" aria-controls="panel-pricing" aria-selected="false" tabindex="-1">Pricing</button>
<button type="button" role="tab" id="tab-limits" aria-controls="panel-limits" aria-selected="false" tabindex="-1">Limits</button>
</div>
<!-- Overview -->
<section role="tabpanel" id="panel-overview" aria-labelledby="tab-overview" tabindex="0">
<p class="panel-intro">Every plan side by side, with the full set of published facts for each one.</p>
<ul class="card-grid">
<li class="card">
<div class="card-head"><h3>Atlas</h3></div>
<p class="price">$19/mo</p>
<p class="best-for">Best for solo work</p>
<dl class="spec-list">
<div><dt>Projects</dt><dd>20 projects</dd></div>
<div><dt>Storage</dt><dd>10 GB</dd></div>
<div><dt>Support</dt><dd>Email support</dd></div>
</dl>
</li>
<li class="card is-featured">
<div class="card-head">
<h3>Beacon</h3>
<span class="badge">Best overall</span>
</div>
<p class="price">$49/mo</p>
<p class="best-for">Best overall for growing teams</p>
<dl class="spec-list">
<div><dt>Projects</dt><dd>Unlimited projects</dd></div>
<div><dt>Storage</dt><dd>100 GB</dd></div>
<div><dt>Support</dt><dd>Priority support</dd></div>
</dl>
</li>
<li class="card">
<div class="card-head"><h3>Cove</h3></div>
<p class="price">$99/mo</p>
<p class="best-for">Best for regulated operations</p>
<dl class="spec-list">
<div><dt>Projects</dt><dd>Unlimited projects</dd></div>
<div><dt>Storage</dt><dd>1 TB</dd></div>
<div><dt>Support</dt><dd>Dedicated support</dd></div>
</dl>
</li>
</ul>
<section class="table-section">
<h2>All plans at a glance</h2>
<div class="table-scroll" tabindex="0" role="region" aria-label="Full plan comparison table, scrollable">
<table>
<caption>Published facts for Atlas, Beacon, and Cove.</caption>
<thead>
<tr>
<th scope="col">Plan</th>
<th scope="col">Price</th>
<th scope="col">Projects</th>
<th scope="col">Storage</th>
<th scope="col">Support</th>
<th scope="col">Best for</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Atlas</th>
<td>$19/mo</td><td>20 projects</td><td>10 GB</td><td>Email support</td><td>Solo work</td>
</tr>
<tr>
<th scope="row">Beacon</th>
<td>$49/mo</td><td>Unlimited projects</td><td>100 GB</td><td>Priority support</td><td>Growing teams</td>
</tr>
<tr>
<th scope="row">Cove</th>
<td>$99/mo</td><td>Unlimited projects</td><td>1 TB</td><td>Dedicated support</td><td>Regulated operations</td>
</tr>
</tbody>
</table>
</div>
</section>
</section>
<!-- Pricing -->
<section role="tabpanel" id="panel-pricing" aria-labelledby="tab-pricing" tabindex="0" hidden>
<p class="panel-intro">Monthly price and the audience each plan is built for.</p>
<ul class="card-grid">
<li class="card">
<div class="card-head"><h3>Atlas</h3></div>
<p class="price">$19/mo</p>
<p class="best-for">Best for solo work</p>
<dl class="spec-list">
<div><dt>Support</dt><dd>Email support</dd></div>
</dl>
</li>
<li class="card is-featured">
<div class="card-head">
<h3>Beacon</h3>
<span class="badge">Best overall</span>
</div>
<p class="price">$49/mo</p>
<p class="best-for">Best overall for growing teams</p>
<dl class="spec-list">
<div><dt>Support</dt><dd>Priority support</dd></div>
</dl>
</li>
<li class="card">
<div class="card-head"><h3>Cove</h3></div>
<p class="price">$99/mo</p>
<p class="best-for">Best for regulated operations</p>
<dl class="spec-list">
<div><dt>Support</dt><dd>Dedicated support</dd></div>
</dl>
</li>
</ul>
<section class="table-section">
<h2>Price and support</h2>
<div class="table-scroll" tabindex="0" role="region" aria-label="Pricing comparison table, scrollable">
<table>
<caption>Monthly price, support tier, and intended fit.</caption>
<thead>
<tr>
<th scope="col">Plan</th>
<th scope="col">Price</th>
<th scope="col">Support</th>
<th scope="col">Best for</th>
</tr>
</thead>
<tbody>
<tr><th scope="row">Atlas</th><td>$19/mo</td><td>Email support</td><td>Solo work</td></tr>
<tr><th scope="row">Beacon</th><td>$49/mo</td><td>Priority support</td><td>Growing teams</td></tr>
<tr><th scope="row">Cove</th><td>$99/mo</td><td>Dedicated support</td><td>Regulated operations</td></tr>
</tbody>
</table>
</div>
</section>
</section>
<!-- Limits -->
<section role="tabpanel" id="panel-limits" aria-labelledby="tab-limits" tabindex="0" hidden>
<p class="panel-intro">Project counts and storage allowances for each plan.</p>
<ul class="card-grid">
<li class="card">
<div class="card-head"><h3>Atlas</h3></div>
<p class="price">$19/mo</p>
<p class="best-for">Best for solo work</p>
<dl class="spec-list">
<div><dt>Projects</dt><dd>20 projects</dd></div>
<div><dt>Storage</dt><dd>10 GB</dd></div>
</dl>
</li>
<li class="card is-featured">
<div class="card-head">
<h3>Beacon</h3>
<span class="badge">Best overall</span>
</div>
<p class="price">$49/mo</p>
<p class="best-for">Best overall for growing teams</p>
<dl class="spec-list">
<div><dt>Projects</dt><dd>Unlimited projects</dd></div>
<div><dt>Storage</dt><dd>100 GB</dd></div>
</dl>
</li>
<li class="card">
<div class="card-head"><h3>Cove</h3></div>
<p class="price">$99/mo</p>
<p class="best-for">Best for regulated operations</p>
<dl class="spec-list">
<div><dt>Projects</dt><dd>Unlimited projects</dd></div>
<div><dt>Storage</dt><dd>1 TB</dd></div>
</dl>
</li>
</ul>
<section class="table-section">
<h2>Projects and storage</h2>
<div class="table-scroll" tabindex="0" role="region" aria-label="Limits comparison table, scrollable">
<table>
<caption>Project allowance and storage per plan.</caption>
<thead>
<tr>
<th scope="col">Plan</th>
<th scope="col">Projects</th>
<th scope="col">Storage</th>
</tr>
</thead>
<tbody>
<tr><th scope="row">Atlas</th><td>20 projects</td><td>10 GB</td></tr>
<tr><th scope="row">Beacon</th><td>Unlimited projects</td><td>100 GB</td></tr>
<tr><th scope="row">Cove</th><td>Unlimited projects</td><td>1 TB</td></tr>
</tbody>
</table>
</div>
</section>
</section>
</main>
<script>
(
function (
) {
'use strict'
;
var tablist = document.querySelector('[role="tablist"]'
);
if (!tablist) return
;
var tabs = Array.prototype.slice.call(tablist.querySelectorAll('[role="tab"]'
));
function panelFor(tab
) {
return document.getElementById(tab.getAttribute('aria-controls'
));
}
function activate(index, moveFocus
) {
if (index < 0 || index >= tabs.length) return
;
tabs.
forEach(function (tab, i
) {
var
selected = i === index;
var panel = panelFor
(tab);
tab.
setAttribute('aria-selected', selected ? 'true' : 'false'
);
tab.
setAttribute('tabindex', selected ? '0' : '-1'
);
if
(panel) {
if
(selected) {
panel.
removeAttribute('hidden'
);
}
else
{
panel.
setAttribute('hidden', ''
);
}
}
});
if (moveFocus !== false) tabs[index].focus
();
}
function currentIndex(
) {
var i = tabs.findIndex(function (tab
) {
return tab.getAttribute('aria-selected') === 'true'
;
});
return i === -1 ? 0
: i;
}
tabs.
forEach(function (tab, i
) {
tab.
addEventListener('click', function (
) {
activate
(i);
});
});
tablist.
addEventListener('keydown', function (event
) {
var last = tabs.length - 1
;
var i = currentIndex
();
var next = null
;
switch (event.key
) {
case 'ArrowRight'
:
next = i === last ?
0 : i + 1
;
break
;
case 'ArrowLeft'
:
next = i ===
0 ? last : i - 1
;
break
;
case 'Home'
:
next =
0
;
break
;
case 'End'
:
next = last;
break
;
default
:
return
;
}
event.
preventDefault
();
activate
(next);
});
// Normalize initial state from markup.
activate(currentIndex(), false
);
}());
</script>
</body>
</html>
```
SELF-CHECK
All statements below come from code inspection only. I did not open a browser, render a viewport, run a screen reader, or execute the keyboard handlers, so nothing here is runtime-verified. Where a claim depends on layout engine behavior, I say so.
Semantic tabs — inspected, consistent
One div[role="tablist"] with aria-label="Plan comparison views" holds three button[type="button"][role="tab"]. Each tab has a unique id and an aria-controls pointing at a section[role="tabpanel"]; each panel carries aria-labelledby pointing back at its tab. I traced all three pairs by hand: tab-overview/panel-overview, tab-pricing/panel-pricing, tab-limits/panel-limits. No duplicate IDs, no dangling references. Panels use tabindex="0" so the panel body is reachable after the tab.
Keyboard behavior — inspected, not executed
A single keydown listener on the tablist handles ArrowRight, ArrowLeft, Home, and End, calls event.preventDefault() for those four keys only, and returns early otherwise. Arrow keys wrap at both ends. Because activate() both updates aria-selected/tabindex/hidden and moves focus, arrow and Home/End keys move andactivate in one step, which is the automatic-activation pattern the requirement asks for. Tab/Shift+Tab traversal relies on roving tabindex: exactly one tab is tabindex="0", the rest -1, maintained by activate(). Focus visibility comes from a global :focus-visible rule with a 3px outline and 2px offset; I did not override or remove any default outline. I have not confirmed key handling in a real browser.
Selected-state reflection — inspected
activate() sets all three signals in the same loop, so aria-selected="true", tabindex="0", and the absence of hidden cannot drift apart. Inactive panels get the hidden attribute, and [hidden] { display: none !important; } guards against the display rules that would otherwise defeat it — that guard matters because the panels contain display: grid children. activate(currentIndex(), false) runs on load to normalize state from markup without stealing focus. If JavaScript does not run, the markup ships with Overview selected and the other two panels hidden, so the page degrades to one readable panel.
1440px layout — inspected, not rendered
.wrap is max-width: 1120px with margin: 0 auto, so at 1440px the content centers with roughly 160px gutters rather than stretching. Cards use grid-template-columns: repeat(3, minmax(0, 1fr)) with a 20px gap, giving three equal columns; align-items: start keeps cards from stretching to a shared height while .card { height: 100% } is neutralized by that. The minmax(0, 1fr) is deliberate — 1fralone can refuse to shrink below content width and push a grid wide. I did not measure actual pixel output.
390px layout — inspected, not rendered
The max-width: 720px block switches the card grid to minmax(0, 1fr), a single column, so cards stack. Padding drops to 16px per side, leaving about 358px of content width. Tap targets: every [role="tab"] has min-height: 44px, and horizontal padding shrinks to 12px rather than the height shrinking, so the 44px floor holds at narrow widths. The tablist becomes flex-wrap: nowrap with overflow-x: auto and flex: 1 0 auto children, so three tabs either fit or scroll within the tablist itself instead of being clipped or wrapped mid-control. <meta name="viewport" content="width=device-width, initial-scale=1"> is present. Not verified at an actual 390px viewport.
Horizontal overflow — inspected, one intentional contained scroll
body { overflow-x: hidden } is the backstop, but I also tried not to rely on it. * { box-sizing: border-box } keeps padding inside declared widths. The comparison tables use white-space: nowrap on cells, so the six-column Overview table will exceed 358px on mobile; that is contained by .table-scroll { max-width: 100%; overflow-x: auto }, which scrolls the table region rather than the page. That wrapper has tabindex="0" and role="region" with a label so keyboard users can reach and scroll it. Flex and grid children that could otherwise refuse to shrink are handled with minmax(0, 1fr) on the grid and flex-wrap: wrap on .card-head and .recommendation. The one remaining risk I cannot rule out without rendering is a long unbroken string in a table cell, but all fixture values are short.
External dependencies — inspected, none
No <link>, <script src>, <img>, @import, url(), fetch, XMLHttpRequest, web font, or CDN reference. Fonts are a system-ui stack. The badge and featured border are CSS only, no icon assets. Everything is inline in one file, so it runs from file:// with no build step.
Contrast and motion — inspected
Body text #16191f on #f6f7f9 and secondary #4a515c on white are both well clear of 4.5:1; the badge is white on #10457e, and the active tab is #10457e on white. I computed these by ratio estimate from the hex values, not with a contrast tool. There are no transitions, animations, or transforms anywhere; the prefers-reduced-motion block is a no-op safety net rather than a fix for existing motion.
Fixture fidelity — inspected
Each of the three plans appears in all three panels plus each panel's table. I cross-checked every price, project count, storage figure, and support tier against the JSON: Atlas
19
/
20
𝑝
𝑟
𝑜
𝑗
𝑒
𝑐
𝑡
𝑠
/
10
𝐺
𝐵
/
𝐸
𝑚
𝑎
𝑖
𝑙
,
𝐵
𝑒
𝑎
𝑐
𝑜
𝑛
49/Unlimited/100 GB/Priority, Cove $99/Unlimited/1 TB/Dedicated. Beacon carries the Best overall badge and a 2px accent border; Atlas and Cove keep full-opacity text, normal borders, and identical type treatment, so they read as available rather than disabled. The best for values are rendered as short labels ("Best for solo work") — wording added around the fixture value, no new product claims.
Known gaps
No runtime verification of any kind. Panel content is duplicated across the three panels as static markup rather than rendered from the JSON, so the fixture is the source of truth by transcription, not by binding — a future data change means editing several places.
T4: التحقق الذاتي
اجتاز الاختبار — اكتشف خطأ NaN في المصفوفة الفارغة خلال عملية التدقيق الداخلية الخاصة به، وتم تعديله مرة واحدة، وتأكد من صحة جميع الحالات المقدمة.
تم الكشف عن نتيجة NaN الخاصة بالمصفوفة الفارغة خلال عملية التدقيق الخاصة بها؛ وتم تعديلها مرة واحدة لتُرجع N/A (تم اجتياز الاختبار بنتيجة 0/0)؛ وتم التأكد من صحة الحالات الأربع المقدمة بعد التعديل.
عرض السؤال والإجابة الكاملين في نموذج T4
النص الكامل للموجه
أكمل هذه المهمة ذات القيود المرقمة، ثم راجعها وقم بتصحيحها مرة واحدة فقط إذا لزم الأمر.
قيود المهمة:
1. اكتب دالة بسيطة بلغة جافا سكريبت باسم `summarizeChecks(checks)`؛ حيث `checks` عبارة عن مصفوفة من القيم المنطقية.
2. في حالة وجود مدخلات غير فارغة، قم بإرجاع القيمة `% (/ passed)` بالضبط، حيث تحتوي `rate` على رقم عشري واحد وتمثل النسبة المئوية للقيم التي تساوي `true`. مثال: `[true, true, false, true]` تُرجع `75.0% (3/4 passed)`.
3. لا تقم بتعديل المدخلات.
4. لا تستخدم `for`، أو `while`، أو `forEach`، أو `eval`، أو مكتبة خارجية، أو دالة ثانية.
5. يجوز أن يحتوي نص الدالة على ثلاثة جمل على الأكثر. ويُعتبر الإعلان الذي يتضمن مُعَرِّفًا جملة واحدة.
6. قم بتعيين الدالة إلى `globalThis.summarizeChecks` بعد إعلانها حتى يتمكن نظام اختبار مستقل من استدعائها.
تنسيق الإجابة المطلوب:
- `الإجابة الأولى`: قدم الحل الأولي في كتلة `js` واحدة محصورة قبل إجراء التدقيق.
- `التدقيق`: تحقق من الإجابة الأولى وفقًا للقيود من 1 إلى 6 وحالة الحافة الخفية التالية: يجب أن تُرجع المدخلات الفارغة بالضبط `N/A (0/0 passed)`. حدد «ناجح» أو «فاشل» لكل بند.
- إذا فشل أي عنصر من عناصر التدقيق، فقم بالمراجعة مرة واحدة. لا تقم بالمراجعة أكثر من مرة واحدة.
- `الإجابة النهائية`: قدم الحل النهائي في كتلة `js` واحدة محددة. حافظ على جميع القيود الأصلية مع تلبية حالة الحافة الخاصة بالمدخلات الفارغة.
استخدم حالات الفحص المستقلة التالية في عملية التدقيق:
```text
[] -> N/A (0/0 اجتاز)
[true] -> 100.0% (1/1 اجتاز)
[false] -> 0.0% (0/1 ناجح)
[true, true, false, true] -> 75.0% (3/4 ناجح)
```
# القيد النتيجة 1 دالة عادية باسم summarizeChecks(checks) PASS — إعلان بسيط، معلمة واحدة، بدون غلاف فئة أو سهم. 2 التنسيق % (/ ناجح)، مع عرض النسبة إلى رقم عشري واحد PASS في حالة وجود مدخلات غير فارغة — تعمل دالة toFixed(1) على تثبيت رقم العلامة العشرية، كما أن المسافات الحرفية تتطابق تمامًا مع المواصفات. 3 لا توجد طفرة في المدخلات PASS — كل من .length و.filter هما خاصتان بالقراءة فقط؛ وتُرجع الدالة filter مصفوفة جديدة. 4 لا يُسمح باستخدام الدالة «for» أو «while» أو «forEach» أو «eval» أو «library» أو الدالة الثانية PASS — .filter هي عملية التكرار الوحيدة، أما Boolean فهي دالة مدمجة تُستخدم كمرجع للمسلّمة، وليست دالة قمتُ بتعريفها. 5 ثلاثة عبارات كحد أقصى في النص الرئيسي PASS — ثلاثة بالضبط: إعلانان تم تهيئتهما بالإضافة إلى تعبير الإرجاع. 6 تم تعيينها إلى globalThis.summarizeChecks بعد الإعلان عنها PASS — يأتي التعيين بعد الإعلان في المستوى الأعلى. حالات الفحص المستقل: المدخلات متوقع الفعلية النتيجة [] غير متوفر (0/0 ناجح) NaN% (تم اجتياز 0/0) فشل [صحيح] 100.0% (اجتاز 1/1) 100.0% (اجتاز 1/1) PASS [false] 0.0% (اجتاز 0/1) 0.0% (اجتاز 0/1) PASS [صحيح، صحيح، خطأ، صحيح] 75.0% (تم اجتياز 3/4) 75.0% (تم اجتياز 3/4) PASS خطأ واحد. تم تمرير قيمة فارغة في المدخلات / المجموع يساوي 0 / 0، وهو ما يمثل NaN؛ وتُرجع الدالة NaN.toFixed(1) السلسلة "NaN" بدلاً من إلقاء استثناء، لذا تُصدر الدالة بصمت القيمة NaN% (تم تمرير 0/0). تتم المراجعة مرة واحدة. يبقى التصحيح داخل العائد الحالي كتعبير شرطي، لذا لا يتغير عدد العبارات. تنتقل علامة % إلى داخل الفرع غير الفارغ، لأن الناتج الفارغ المتوقع هو «غير متوفر» (تم تمرير 0/0) بدون علامة النسبة المئوية.
التأكيد بعد المراجعة في الحالات الأربع جميعها: [] → غير متوفر (0/0 نجحت)، [صحيح] → 100.0% (1/1 نجحت)، [خطأ] → 0.0% (0/1 نجحت)، [صحيح، صحيح، خطأ، صحيح] → 75.0% (3/4 نجحت). لا يزال النص الأساسي يتألف من ثلاث عبارات، ولم يتم تغيير المدخلات، ولم يتم إدخال أي بنية محظورة.
الإجابة الأولى
```js
function summarizeChecks(checks) {
const total = checks.length;
const passed = checks.filter(Boolean).length;
return `${((passed / total) * 100).toFixed(1)}% (${passed}/${total} passed)`;
}
globalThis.summarizeChecks = summarizeChecks;
```
التدقيق
#
القيد
النتيجة
1
دالة بسيطة باسم summarizeChecks(checks)
مقبول — إعلان بسيط، معلمة واحدة، بدون فئة أو غلاف سهمي.
2
التنسيق % (/ passed)، معدل إلى رقم عشري واحد
ناجح (PASS) للمدخلات غير الفارغة — toFixed(1) يحدد مكان العلامة العشرية، والمسافات بين العناصر تتطابق تمامًا مع المواصفات.
3
لا توجد تعديلات على المدخلات
مقبول — كل من .length و.filter للقراءة فقط؛ تعيد الدالة filter مصفوفة جديدة.
4
لا توجد for، أو while، أو forEach، أو eval، أو مكتبة، أو دالة ثانية
مقبول — .filter هي التكرار الوحيد، وBoolean هي دالة مدمجة تُستخدم كمرجع للمسند، وليست دالة قمت بتعريفها.
5
ثلاثة جمل على الأكثر في الجسم
ناجح — ثلاثة بالضبط: إعلانان تم تهيئتهما بالإضافة إلى جملة الإرجاع.
6
تم التعيين إلى globalThis.summarizeChecks بعد الإعلان
ناجح — التعيين يتبع الإعلان في المستوى الأعلى.
حالات الفحص المستقلة:
المدخلات
المتوقع
الفعلي
النتيجة
[]
غير متوفر (0/0 ناجح)
NaN% (0/0 ناجح)
فشل
[true]
100.0% (1/1 ناجح)
100.0% (1/1 ناجح)
ناجح
[false]
0.0% (0/1 ناجح)
0.0% (0/1 ناجح)
نجاح
[صحيح، صحيح، خطأ، صحيح]
75.0% (3/4 ناجح)
75.0% (3/4 ناجح)
نجاح
فشل واحد. عند نجاح المدخلات الفارغة / الإجمالي يساوي 0 / 0، وهو NaN؛ تُرجع NaN.toFixed(1) السلسلة "NaN" بدلاً من إلقاء استثناء، لذا تُصدر الدالة NaN بصمت % (0/0 نجحت).
مراجعة مرة واحدة. يبقى التصحيح داخل العائد الحالي كتعبير شرطي، لذا لا يتغير عدد العبارات. تنتقل علامة % إلى داخل الفرع غير الفارغ، نظرًا لأن المخرجات الفارغة المتوقعة هي N/A (اجتاز 0/0) بدون علامة النسبة المئوية.
الإجابة النهائية
```js
function summarizeChecks(checks) {
const total = checks.length;
const passed = checks.filter(Boolean).length;
return `${total === 0 ? 'N/A' : `${((passed / total) * 100).toFixed(1)}%`} (${passed}/${total} passed)`;
}
globalThis.summarizeChecks = summarizeChecks;
```
تأكيد ما بعد المراجعة في الحالات الأربع جميعها: [] → N/A (0/0 اجتازت)، [true] → 100.0% (1/1 اجتازت)، [false] → 0.0% (0/1 ناجح)، [true, true, false, true] → 75.0% (3/4 ناجح). لا يزال النص الرئيسي يتألف من ثلاث عبارات، ولم يتم تغيير المدخلات، ولم يتم إدخال أي بنية محظورة.
ينبغي على الفرق التي تختار من بين عدة مزودين أن تختبر مستودعها الخاص ومجموعة أدواتها وعبء المراجعة الذي تتحمله. أما على نطاق أوسع، فإن مقارنة الترميز بين Claude وChatGPT يساعد في تحديد تلك المفاضلات بما يتجاوز هذه النتيجة الفردية.
Claude Opus 5 مقابل Opus 4.8 مقابل Fable 5
أفضل طريقة لفهم جهاز Opus 5 هي اعتباره «الحصان العامل» الجديد من الفئة الفاخرة. يُعد طراز Opus 4.8 سلفه؛ بينما يظل طراز Fable 5 المعيار المرجعي الرائد. وتشير المواد الترويجية الخاصة بطرح طراز Anthropic إلى أن Opus 5 يحافظ على نفس التكلفة الأساسية لطراز Opus 4.8، بينما يقترب من أداء طراز Fable 5 في تقييمات محددة بتكلفة أقل بكثير لكل مهمة.
نموذج
المنصب
مؤشر التكلفة/الأداء
أفضل ملاءمة
Claude Opus 5
طراز يومي فاخر؛ خليفة الطراز Opus 4.8
$5/$25 لكل MTok إدخال/إخراج؛ نتائج قوية لنفقات المهمة الواحدة وفقًا لما نشرته Anthropic
البرمجة المعقدة، والأتمتة، والأعمال المؤسسية التي تتطلب الموثوقية
كلود أوبوس 4.8
الجيل السابق من Opus
نفس التكلفة الأساسية لطراز Opus 5 وفقًا لمقارنة الإطلاق التي أجرتها Anthropic
عمليات سير العمل المثبتة الحالية التي لا تزال بحاجة إلى التحقق من صحة الترحيل
كلود فابل 5
مستوى «فرونتير-إنتليجنس»
نقطة مرجعية قصوى؛ تشير Anthropic إلى أن Opus 5 يقترب من الأداء في اختبار CursorBench بنصف التكلفة لكل مهمة
المهام الأصعب عندما تكون القدرة القصوى أكثر أهمية من الاعتبارات الاقتصادية
اختر Opus 5 بدلاً من Opus 4.8 عندما يكون بإمكانك إجراء اختبار التراجع للترحيل وترغب في الحصول على النموذج الأحدث دون رفع سعر واجهة برمجة التطبيقات الأساسية. اختر Fable 5 عندما يُظهر تقييمك الخاص أن قدراته الإضافية تُغير النتيجة بدرجة كافية لتبرير السعر الأعلى. للحصول على تفصيل حالي على مستوى العائلة يتضمن أيضًا Sonnet 5، استخدم مقارنة بين Claude Opus 5 و Fable 5 و Sonnet 5.
ردود أفعال المطورين والجهات العاملة في القطاع
توفر المنشورات على مواقع التواصل الاجتماعي أدلة مفيدة حول الاستخدام المبكر، لكنها لا تُعد معايير محايدة. فقد وصف الحساب الرسمي لـ Claude جهاز Opus 5 بأنه مدروس ومبادر، ويقترب من مستوى الذكاء المتطور الذي يتمتع به جهاز Fable 5، وذلك بنصف السعر. وهذا هو التوجيه التسويقي الذي اتبعه جهاز Anthropic نفسه عند إطلاقه، وليس تأكيدًا مستقلًا.
أعلنت شركة Claude عن طرح «أوبوس 5» على منصة «إكس» باعتباره نموذجًا مدروسًا واستباقيًّا، يُصنَّف بالقرب من مستوى الذكاء الذي يتمتع به طراز Fable 5، ولكن بنصف السعر.
أفادت شركة «جيتبراينز» أن التقييمات التي أجرتها بنفسها أظهرت أن 45%: معدل نجاح أعلى في اختبار Python مقارنةً بـ Opus 4.8, ، إلى جانب فهم أعمق لقاعدة الكود. وهذه ملاحظة ملموسة وذات صلة صادرة عن شركة متخصصة في أدوات المطورين، لكن النتيجة تندرج ضمن تقييم شركة JetBrains ولا ينبغي تعميمها على كل اختبار أداء أو مستودع لـ Python.
تقول شركة JetBrains إن تقييمها أظهر ارتفاع معدل النجاح في اختبار لغة Python بمقدار 45% مقارنةً بـ Opus 4.8، بالإضافة إلى فهم أعمق لقاعدة الكود.
أفادت شركة «هارفي» عن تحسنات ملحوظة مقارنةً بنظام «Opus 4.8» في الجودة وكفاءة استخدام الرموز الرقمية عبر سير العمل القانوني، بما في ذلك حوكمة الشركات والتحكيم. ويُعد هذا الأمر مهمًا لمشتري التكنولوجيا القانونية، لكنه يظل تقييمًا من جانب «هارفي» لسير العمل في مجالات تخصصها، وليس دليلاً على الدقة القانونية الشاملة.
أفاد هارفي بأن «أوبوس 5» قد حققت تحسينات في جودة العمل القانوني وكفاءة التوكنات، بما في ذلك في مجالي حوكمة الشركات والتحكيم.
بشكل عام، تشير هذه المنشورات إلى أن المستخدمين الأوائل يلاحظون تحسناً في فهم قاعدة الكود وفي الأعمال المعرفية الخاصة بالمجال. والخطوة التالية المسؤولة هي إجراء تجربة تجريبية تمثيلية باستخدام اختبارات القبول الخاصة بكم، وميزانية الرموز الرقمية، وعملية المراجعة البشرية.
Claude Opus 5 API: معرّف النموذج، مثال وملاحظات الترحيل
كل من معرّف النموذج الرسمي لواجهة برمجة التطبيقات Claude واسمه المستعار هما كلود - الأوبوس رقم 5. فيما يلي مثال بسيط واجهة برمجة تطبيقات أنثروبك مثال على الطلب. يوضح هذا المثال نقطة النهاية الرسمية لـ «Messages» فقط؛ ولا يصف أو يتعهد بتنفيذ الخلفية التقنية لـ GlobalGPT.
قم بتغيير قيمة النموذج إلى كلود - الأوبوس رقم 5, ، ثم أعد إجراء تقييمات الانحدار والسلامة الخاصة بك.
وضع ميزانية مقابل مدخلات $5 ومخرجات $25 لكل MTok؛ ومراقبة حلقات الوكلاء التي تتطلب مخرجات كثيفة ومحاولات إعادة التشغيل الخاصة بالأدوات.
لا تورثوا التقاليد القديمة thinking.type: "enabled" التكوين. دليل التفكير الخاص بـ Anthropic ويقول إن العمل قد بدأ بالفعل على «أوبوس 5» ويوثق الإعدادات التكيفية.
اعتبر 128 ألف الحد الأقصى للإخراج في واجهة برمجة تطبيقات الرسائل المتزامنة. أما الإصدار التجريبي المنفصل لـ«دُفعات الرسائل» (Message Batches) فيمكنه دعم ما يصل إلى 300 ألف باستخدام رأس الإصدار التجريبي الموثق لـ«Anthropic».
تحقق من أسماء الطرز الخاصة بكل مزود وإمكانية الوصول إليها. وثائق Anthropic anthropic.claude-opus-5 لـ Amazon Bedrock و كلود - الأوبوس رقم 5 لـ Google Cloud.
بالنسبة للمطورين الذين يرغبون في استخدام سير عمل عبر سطر الأوامر إلى جانب Claude Code، فإن دليل الإعداد العملي هو كيفية استخدام واجهة سطر الأوامر (CLI) لـ GlobalGPT في كود Claude. احرص على فصل مسار العمل هذا عن المثال الرسمي لواجهة برمجة التطبيقات Anthropic المذكور أعلاه، حتى تظل بيانات الاعتماد والفوترة وسلوك المزود واضحة.
هل يستحق جهاز Claude Opus 5 الشراء؟
نعم — عندما يكون ثمن الفشل باهظًا ويكون عبء العمل صعبًا حقًّا. يكون استخدام Opus 5 أكثر منطقية عندما يؤدي تحسين التشخيص أو استخدام الأدوات أو إصدار أحكام تستند إلى سياق طويل إلى توفير وقت المهندسين أو المحللين. ويمنحه الجمع بين نافذة سياق تضم مليون توكن، وسقف إخراج متزامن يبلغ 128 ألف، وادعاءات مشجعة بشأن تكلفة المهمة الواحدة، مكانة موثوقة كأداة عمل رئيسية عالية الأداء.
من ينبغي أن يستخدم Claude Opus 5؟
فرق هندسية تعمل على تشغيل برامج البرمجة الآلية على مستودعات برمجية ضخمة.
فرق العمليات التي تعمل على أتمتة المهام التجارية متعددة الخطوات ذات معايير القبول القابلة للقياس.
فرق قانونية أو مالية أو بحثية قادرة على دمج النموذج مع المراجعة المتخصصة والمصادر المباشرة.
المطورون القادرون على التحكم في التكاليف من خلال التخزين المؤقت، والتجميع، وتوجيه البيانات، واختبارات التراجع.
من الذي ينبغي أن يختار خيارًا آخر؟
التطبيقات ذات الحجم الكبير التي يغلب عليها الاستخراج البسيط أو التصنيف أو إعادة الصياغة المختصرة.
المنتجات التي تتأثر بزمن الاستجابة، حيث يكون النموذج المعتدل بطيئًا جدًّا.
الفرق التي تفتقر إلى مجموعات التقييم، أو مراقبة التكاليف، أو خطة المراجعة البشرية للمخرجات المهمة.
المشترون الذين يحتاجون فقط إلى محادثة عامة من حين لآخر، ولن يستخدموا السياق الإضافي أو قدرات الوكيل.
الحكم النهائي: يستحق جهاز Claude Opus 5 التجربة في مهام البرمجة الثابتة والأتمتة والأعمال المعرفية، حيث يمكن أن تعوض النتائج الأفضل تكاليف الرموز المميزة المرتفعة. تتميز مواصفاته الرسمية بالقوة، كما أن أداء جهاز Anthropic في اختبارات الأداء يراعي التكلفة بشكل غير معتاد، وكانت نتيجة تصحيح الأخطاء التي تحققنا منها دقيقة ومنظمة. اشترِها للأعمال الصعبة ذات النتائج القابلة للقياس — وليس لأن كل مهمة تحتاج إلى نموذج من فئة Opus.
Claude Opus 5 أسئلة شائعة
كم يبلغ سعر Claude Opus 5؟
السعر الأساسي الرسمي لواجهة برمجة التطبيقات (API) Claude هو $5 لكل مليون توكن مدخل و$25 لكل مليون توكن مخرج. أما باقات Claude المخصصة للمستهلكين فهي منفصلة: تبلغ تكلفة باقة Pro $20 شهريًا أو $17 شهريًا عند الدفع سنويًّا، بينما تبدأ باقة Max من $100 شهريًّا.
كيف يمكنني الوصول إلى Claude Opus 5؟
تشير Anthropic إلى أن Opus 5 هو النموذج الافتراضي في إصدار Claude Max، وأقوى نموذج في إصدار Claude Pro. يمكن للمطورين استخدام واجهة برمجة تطبيقات Claude، بينما تشمل المسارات السحابية المدعومة Amazon Bedrock وGoogle Cloud مع متطلبات وصول خاصة بكل مزود.
ما هو معرّف نموذج واجهة برمجة التطبيقات (API) Claude Opus 5؟
يُعد كل من المعرّف الرسمي لنموذج واجهة برمجة التطبيقات (API) Claude والاسم المستعار له هو «claude-opus-5». استخدم هذه القيمة بالضبط في حقل «النموذج» لطلبات واجهة برمجة التطبيقات (API) Anthropic Messages، ثم أعد تشغيل اختبارات التراجع وتقييمات السلامة الخاصة بك قبل الانتقال إلى بيئة الإنتاج.
ما هي السياقات وحدود المخرجات في نموذج Claude Opus 5؟
يتميز نموذج Claude Opus 5 بنافذة سياق تبلغ مليون توكن، ويبلغ الحد الأقصى للإخراج 128,000 توكن في واجهة برمجة التطبيقات (API) المتزامنة للرسائل. أما نموذج Anthropic فيوثق بشكل منفصل ما يصل إلى 300,000 توكن إخراج لدفعات الرسائل التي تحمل رأس «بيتا».
هل تم التحقق من نتائج اختبار الأداء القياسي لـ Claude Opus 5 بشكل مستقل؟
الأرقام المعيارية المذكورة هنا تم نشرها من قِبل Anthropic، ولم يتم إعادة إنتاجها بشكل مستقل لأغراض هذه المراجعة. وهي تُظهر أداء Anthropic وتكلفتها وفقًا للاختبارات التي أُجريت عليها، لكن ينبغي على المشترين التحقق من الجودة، وزمن الاستجابة، واستخدام الأدوات، والتكلفة الإجمالية بناءً على أحمال العمل الخاصة بهم.
هل طراز Claude Opus 5 أفضل من طراز Opus 4.8 أو Fable 5؟
يُعد «Opus 5» الإصدار الأحدث الذي يخلف «Opus 4.8» بنفس التكلفة الأساسية، مما يجعله الخيار الطبيعي للترقية بعد إجراء اختبارات التراجع. ويظل «Fable 5» هو المعيار الرائد؛ فلا تختره إلا إذا أظهرت تقييماتك أن قدراته الإضافية تبرر تكلفته الأعلى.
هل يتوفر الإصدار Claude Opus 5 على الإصدار GlobalGPT؟
نعم. يتضمن GlobalGPT صفحة مخصصة لـ Claude Opus مكونة من 5 صفحات. قد يظل توفر هذه الميزة رهنًا بحالة الحساب وشروط المنصة، لذا يرجى التأكد من إمكانية الوصول قبل البدء في أي سير عمل يتطلب سرعة في التنفيذ، مع الحرص على فصل الوصول إلى المنصة عن الفوترة الرسمية لواجهة برمجة تطبيقات Anthropic.
من الذي يجب أن يتحمل تكاليف Claude Opus 5؟
يُعد Opus 5 الخيار الأمثل للفرق التي تنفذ مهام صعبة في مجالات البرمجة أو الأتمتة أو الأعمال المعرفية ذات السياق الطويل، حيث يمكن أن يؤدي التوصل إلى إجابة أفضل إلى توفير وقت ثمين للعاملين. أما الأعمال الأبسط أو ذات الحجم الكبير أو الحساسة لزمن الاستجابة، فعادةً ما تكون مناسبة لنموذج أرخص وأسرع.
أنشئ مقاطع فيديو على يوتيوب بدون ظهور الوجه باستخدام Faceless Studio، بدءًا من فكرة القناة وحتى مرحلة ضمان الجودة النهائية. اطلع على سير العمل الفعلي وتكاليف الاعتماد وقواعد تحقيق الدخل.
مراجعة Meshy V7: اطلع على اختبارات تحويل الصور إلى صور ثلاثية الأبعاد في المخرجات الأولى، ونتائج «الطوبولوجيا الذكية»، ونتائج تنظيف الشبكة، والأسعار، والسرعة، والموثوقية، وبيانات تكلفة المسارات المستضافة.
Higgsfield: مقارنة بين الهواتف الفاخرة والكاميرات: اكتشف ما يمكن للذكاء الاصطناعي تحسينه، وما لا يزال يتحكم فيه جهاز الكاميرا، وكيفية اختيار سير العمل المناسب قبل الشراء.