مآل الهدف
نطاق، وعدد أسابيع، وعقبة واحدة — والبوّابتان اللتان تمنعانه من الكلام أصلًا.
lib/services/simulation_engine.dartsrc/engines/simulation-engine.tsلديك هدف بموعد نهائيّ. والمآل يجيب عن سؤال واحد: بالوتيرة التي سرت بها فعلًا، هل تصل؟
ويجيب بثلاثة أجزاء — نطاق، وعدد أسابيع، وأكبر عائق واحد — ويمتنع عن الإجابة أكثر ممّا تتوقّع.
بوّابتان قبل أن يتكلّم
export const MIN_WEEKS_HISTORY = 2.0;
export const MIN_LINKED_SESSIONS = 3;
بأقلّ من أسبوعين من التاريخ، أو أقلّ من ثلاث جلسات عمل عميق مربوطة بهذا الهدف، يُرجع المحرّك قيد التكوّن ويسمّي الخطوة التالية. لا تقديرًا حذرًا، ولا نطاقًا واسعًا — لا شيء.
وهذا هو الفرق بين الإسقاط والتخمين. فنقطتان تَرسمان خطًّا عبر أيّ شيء.
النطاقات الأربعة الحقيقيّة
يحسب المحرّك نسبة التقدّم المطلوبة أسبوعيًّا من الآن لبلوغ الموعد، والنسبة التي حقّقتها فعلًا في المتوسّط. والنسبة بينهما تختار النطاق.
| نسبة الوتيرة الفعليّة إلى المطلوبة | النطاق |
|---|---|
≥ ١٫٠ | على المسار |
≥ ٠٫٧ | حرِج |
≥ ٠٫٤ | في خطر |
| دون ذلك | يحتاج تغييرًا |
ويحتاج تغييرًا أقصى ما تبلغه المفردات. فهو يصف الخطّة لا الشخص، وقد اختيرت العبارة مقابل قائمة تحظر بدائلها.
أسابيع، لا نسب مئويّة
الجزء الثاني هو weeksDelta — النهاية المتوقّعة مقابل الموعد، بالأسابيع. الموجب
تأخّر، والسالب تقدّم.
ولا توجد عمدًا نسبة ثقة. فعبارة «احتمال ٦٨٪ أن تنتهي في وقتك» تُلمِح إلى توزيع لم يحسبه أحد، من عيّنة قوامها أربعة أسابيع لشخص واحد. أمّا الأسابيع فوحدة تستطيع التصرّف بناءً عليها: التأخّر ثلاثة أسابيع عددٌ من أيّام السبت.
العقبة
الجزء الثالث مضبوط دائمًا، ويسمّي أكبر عامل مُقيِّد حقيقيّ ومعه رقمه — الدقائق المربوطة أسبوعيًّا، أو الأسابيع المنقضية، أو نقص الوتيرة. شيء واحد برقم، بدل قائمة من خمسة اقتراحات.
ويُحمَل العمل العميق المربوط حديثًا إلى جانبه بوصفه تعزيزًا. وهو ليس المحرِّك: فالنطاق يأتي من التقدّم مقابل الموعد، لأن الدقائق المبذولة مُدخَل والتقدّم نتيجة، والأداة التي تقيّمك بالساعات المسجّلة أداةٌ تستطيع إرضاءها دون أن تتحرّك.