حاسبة سلسلة العادات: السلسلة الحالية والأطول
تحوّل حاسبة سلسلة العادات قائمة تواريخ الإنجاز إلى مقياسين مفيدين: سلسلة الأيام المتتالية التي تنتهي عند أحدث تاريخ مسجّل، وأطول سلسلة في السجل كله.
شغّل الأداة مجانًا
يمكن أن تكون التواريخ غير مرتبة، ولا يُحتسب التاريخ المكرر إلا مرة واحدة، ولذلك يمكن استخدام البيانات المصدّرة من تطبيقات التتبع أو اليوميات أو جداول البيانات مباشرة. يعتمد الحساب على الأيام التقويمية لا على الساعات المحلية المنقضية، فتظل النتيجة ثابتة باختلاف المناطق الزمنية وتغييرات التوقيت الصيفي.
جهّز سجل إنجاز موثوقًا
أدخل كل يوم تقويمي أُنجزت فيه العادة بصيغة YYYY-MM-DD. لا يلزم ترتيب القائمة، لأن الحاسبة ترتب التواريخ قبل قياس أي سلسلة. ولا تسبب التكرارات مشكلة؛ فإذا صدّر تطبيق ما الإنجاز نفسه مرتين، لا يساهم ذلك اليوم إلا مرة واحدة. يمثّل الإنجاز في أي وقت من اليوم اليومَ التقويمي كله، ولذلك لا تُقبل الأوقات أو الطوابع الزمنية أو إزاحات المناطق الزمنية. يحافظ هذا الأسلوب على وضوح معنى السلسلة، ويمنع اعتبار إدخالين في اليوم نفسه يومين من التقدم. أدرج السجل الكامل إذا أردت معرفة أطول سلسلة بدقة، لا الشهر الأخير فقط أو الجزء الظاهر في لوحة المعلومات. يجب أن تضم القائمة تاريخًا واحدًا على الأقل، وأن يشير كل عنصر إلى تاريخ تقويمي حقيقي. تُرفض القيم مثل 30 فبراير والتواريخ الناقصة والنصوص المكتوبة بصيغة مختلفة بدل تصحيحها بصمت. ويساعد هذا التحقق الصارم على كشف ملفات التصدير المعيبة قبل أن تنتج رقمًا قياسيًا مضللًا.
افهم السلسلة الحالية وأطول سلسلة
السلسلة الحالية هي تسلسل الأيام المتتالية الذي ينتهي عند أحدث تاريخ إنجاز تم إدخاله. لا يستعلم هذا التعريف عن تاريخ اليوم، ولذلك تعطي المدخلات نفسها النتيجة نفسها دائمًا، وتظل السجلات التاريخية قابلة لإعادة الحساب. فعلى سبيل المثال، إذا كانت أحدث التواريخ هي الاثنين والثلاثاء والأربعاء، تكون السلسلة الحالية 3 حتى عند إجراء الحساب لاحقًا. وإذا غاب يوم الثلاثاء، انقطع التسلسل بين الاثنين والأربعاء، لأن السلسلة تتطلب تواريخ تقويمية متجاورة. أما أطول سلسلة فهي أكبر تسلسل من هذا النوع في السجل الكامل، وقد تكون أقدم وأطول من السلسلة الحالية. تعرض النتيجة أيضًا عدد أيام الإنجاز الفريدة وأحدث تاريخ مستخدم، مما يسهّل التأكد من حذف التكرارات واستلام السجل المقصود. تُعامل الأيام الكبيسة وحدود الأشهر والسنوات مثل أي أيام تقويمية متجاورة. توفر هذه القواعد مقاييس نافعة للتتبع من دون الاعتماد على ساعة الجهاز أو موقع الشخص الذي يجري الحساب.
استخدم النتيجة في التتبع والمراجعة
استخدم السلسلة الحالية لتلخيص الاستمرارية عند نهاية السجل، وأطول سلسلة بوصفها معيارًا شخصيًا. يستطيع تطبيق لتتبع العادات حساب القيمتين بعد استيراد سجل الأحداث، كما يمكن لمسار عمل يعتمد على جدول بيانات إرسال عمود من التواريخ وحفظ المقاييس بجانب المراجعة الشهرية. ولأن ترتيب المدخلات لا يؤثر في النتيجة، لا تحتاج البرامج العميلة إلى خطوة فرز مستقلة. ولأن التاريخ المكرر يُحتسب مرة واحدة، فلا تؤدي إعادة المحاولة أو دمج ملفات التصدير إلى تضخيم النتيجة. ومع ذلك، ينبغي تفسير السلاسل بحذر؛ فهي تقيس انتظام الإنجاز المسجّل، ولا تقيس الجهد أو الجودة أو الفائدة الطويلة الأمد. إذا كانت العادة تتضمن أيام راحة أو تتبع جدولًا أسبوعيًا، فقد لا تعبّر سلسلة يومية صارمة عن السلوك المراد تعزيزه. في هذه الحالة، حوّل التواريخ وفق جدولك قبل استخدام الحاسبة. تُطبق على طلبات API كلفة الأساس المعروضة وقدرها $0.002. ويستخدم إصدار المتصفح منطق الحساب النقي نفسه بلا شبكة أو عشوائية أو اعتماد على التاريخ الحالي.
حالات الاستخدام
أضف السلاسل إلى تطبيق لتتبع العادات
احسب الاستمرارية الحالية والرقم القياسي كلما استورد المستخدم تواريخ الإنجاز أو حدّثها.
راجع سجلًا مصدّرًا من يوميات
حوّل عمودًا من الإدخالات المؤرخة إلى مقاييس واضحة للانتظام من دون ترتيب يدوي.
ادمج سجلات التتبع
اجمع التواريخ من مصادر متعددة من دون أن تزيد الإنجازات المكررة أيًا من السلسلتين.
الأسئلة الشائعة
ما المقصود بالسلسلة الحالية؟
هي تسلسل الأيام المتتالية الذي ينتهي عند أحدث تاريخ في السجل المُدخل، ولا تجري مقارنته بتاريخ اليوم.
هل تزيد التواريخ المكررة طول السلسلة؟
لا. يُحتسب كل تاريخ تقويمي مرة واحدة فقط، حتى إذا تكرر في المدخلات.
هل يجب ترتيب التواريخ؟
لا. يجري التحقق من التواريخ وحذف تكراراتها وترتيبها قبل حساب السلاسل.
ماذا يحدث إذا كانت القائمة فارغة؟
يعيد الطلب خطأ يفيد بأن المدخلات غير صالحة، إذ لا يمكن حساب سلسلة من دون تاريخ إنجاز واحد على الأقل.
هل تدعم الحاسبة السنوات الكبيسة وحدود الأشهر؟
نعم. تظل التواريخ الصحيحة والمتجاورة متتالية عند الانتقال بين الأشهر والسنوات وعبر اليوم الكبيس.
ما كلفة طلب API؟
تُطبق على كل طلب API كلفة الأساس البالغة $0.002.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/final3/habit-streak-calculate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"dates":["2026-07-20","2026-07-21","2026-07-23","2026-07-24","2026-07-25"]}'const res = await fetch("https://api.kit.forhosting.com/final3/habit-streak-calculate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"dates": [
"2026-07-20",
"2026-07-21",
"2026-07-23",
"2026-07-24",
"2026-07-25"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/final3/habit-streak-calculate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"dates": [
"2026-07-20",
"2026-07-21",
"2026-07-23",
"2026-07-24",
"2026-07-25"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/final3/habit-streak-calculate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"dates":["2026-07-20","2026-07-21","2026-07-23","2026-07-24","2026-07-25"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"dates":["2026-07-20","2026-07-21","2026-07-23","2026-07-24","2026-07-25"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/final3/habit-streak-calculate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"dates": [
"2026-07-20",
"2026-07-21",
"2026-07-23",
"2026-07-24",
"2026-07-25"
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "final3.habit_streak_calculate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |