بذرة التقنية · تقرير أعمال

ملاحظاتك العشر، وأربعة أعطال ما وصلت لك بعد

فحصنا كل ملاحظة أرسلتِها بسجلّ التعديلات، لا بالانطباع: أي سطر سبّبها، ومتى كُتب، ومن كتبه. ثم أصلحنا ما علينا على حسابنا، ونفّذنا ما طلبتِه بعد أن رددتِ على الأسئلة الأربعة. وهذي الصفحة تُريك كل بند: ما كان، وما صار، وبأي دليل.

٥ سبتمبر ٢٠٢٦ · careerfolio.co
16/16مرفق في رابط المدير عاد يفتح
10ملاحظات: ٨ نُفِّذت، ٢ بقرارك
4أعطال وجدناها قبل أن تصل لك
47فحصًا آليًّا قبل كل نشرة

أولًا: ما كان يعطّل شغلك — وهو علينا

هذي البنود ليست هدية ولا خدمة إضافية: عيوب في أعمالنا نحن، وإصلاحها التزام في البند العاشر من العقد. نذكرها هنا بالاسم لأن الشفافية أرخص من المفاجأة.

مرفقات رابط المدير ما تفتح علينا · التزام تعاقدي

ملف المدير كان يفتح، لكن كل مرفق فيه ميت. السبب إعداد أضفناه نحن يوم نقل المنصة إلى استضافتك: الدالة التي تبني صفحة الزائر كانت توقّع روابط المرفقات على عنوان داخلي لا يعرفه أي متصفح خارج الخادم (kong:8000)، وعلى http داخل صفحة https. قِسناه على رابطك النشط: ١٦ من ١٦ مرفقًا.

// قبل — من استجابة الخادم نفسها attachments: 16 hosts: { 'kong:8000': 16 } schemes: { http: 16 } // بعد attachments: 16 hosts: { 'api.careerfolio.co': 16 } schemes: { https: 16 } fetch 200 application/pdf fetch 200 application/pdf fetch 200 image/jpeg ... 5/5

ترتيب الأهداف والجدارات في رابط المدير علينا · التزام تعاقدي

الخمسة أقسام في صفحة المدير كانت تُجلب بلا أي ترتيب — أي بالترتيب الذي تراه قاعدة البيانات مناسبًا لحظتها، فيختلف عمّا تشوفينه على الشاشة وقد يختلف بين فتحة وأخرى. صار الترتيب واحدًا في المنصة كلها: الأحدث أولًا، على تاريخ الإضافة.

// تسلسل الأهداف كما ترجعه صفحة المدير الآن 1e63ec1f, e0dff720, 68a0e833, 3db26917, 357e0303 // وتسلسلها في قاعدة البيانات مرتّبةً بتاريخ الإضافة تنازليًّا 1e63ec1f, e0dff720, 68a0e833, 3db26917, 357e0303 // مطابق

«إلغاء تفعيل الرابط» كان يلغي روابط العام كلها علينا · ما بلّغتِ عنه

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

// سجلّ الروابط — ٣ سبتمبر GX49QW9WWBIY updated_at = 2026-09-03 14:03:16.69508 MBGTTYMJE3XL updated_at = 2026-09-03 14:03:16.69508 // نفس اللحظة

الآن: الإلغاء يصيب الرابط المعروض وحده، والنافذة تعرض دائمًا رابط العام الفعّال، والنصّ داخلها صار يقول الحقيقة بدل أن يطمئن بالعكس.

إثبات اطلاع المدير: توثيق واحد ولا مسح علينا · ما بلّغتِ عنه

قيد صمّمناه نحن غلط: أول من يوثّق اطلاعه على الرابط يقفله، وأي شخص بعده يُرفض. ومن مسح بيانات متصفحه فقد «ملكية» توثيقه فما عاد يقدر يعدّله. ولا يوجد في النظام كله أي طريق لمسح توثيق خاطئ — لا لك ولا لنا.

الآن: القيد صار اسمًا واحدًا لكل رابط (وهو القيد الصحيح الموجود في قاعدة البيانات أصلًا)، فيقدر مديران مختلفان يوثّقان على الرابط نفسه ولا يقدر أحد ينتحل توثيق غيره. وأضفنا لك زر حذف التوثيق في سجلّ الاطلاع داخل ملفك — لا يظهر في المستند المطبوع، والحذف مقصور على صاحب الملف.

قوالب البريد كانت تُرجع صفحة التطبيق بحالة «سليم» علينا · ما بلّغتِ عنه

أي خطأ مطبعي في اسم قالب بريد كان يمرّ صامتًا: الخادم يرد صفحة التطبيق بحالة 200 بدل أن يقول «غير موجود». يعني قالب رسالة مكسور يبدو سليمًا في كل فحص. صار المفقود يردّ 404 بصوت عالٍ.

// قبل /email/recovery.html → 200 /email/اسم-خطأ.html → 200 text/html // بعد /email/recovery.html → 200 /email/اسم-خطأ.html → 404

ثانيًا: ملاحظاتك العشر — بندًا بندًا

ردّك على الأسئلة الأربعة يوم ٥ سبتمبر حسم أربعة بنود كانت موقوفة، ونُفِّذت في نفس اليوم كما كتبتِها حرفيًّا.

١ · المفردات أُلغي بقرارك

كنّا غيّرنا «المعلومات الشخصية/المهنية» إلى «البيانات»، ثم وصل ردّك: «لاتغير المفردات خلها خلاص» — فأُعيدت كما كانت حرفيًّا، عربيًّا وإنجليزيًّا.

٢ · أزرار العرض الشامل غير متناسقة نُفِّذ

الجذر مقيس: الصفحة تختار مقاسًا صغيرًا لأزرارها (ارتفاع 36 بكسل) بينما زرّا الطباعة والتصدير يأتيان من مكوّن مشترك يفرض 40×40 بلا منفذ لتغيير المقاس — فصار في الصف ارتفاعان. وُحِّدت الارتفاعات في صفحة العرض الشامل وحدها: إضافة نصّ إلى المكوّن المشترك كانت ستوسّع الزر إلى نحو 100 بكسل وتكسر سبع صفحات أخرى على الجوال الصغير.

قبل — ارتفاعات 36 / 40 / 40 / 36

صف الأزرار قبل التوحيد

بعد — 36 / 36 / 36 / 36

صف الأزرار بعد التوحيد

٣ · تاريخ الميلاد نُفِّذ

حُذف من نموذج الإدخال، ومن العرض الشامل، ومن الأرشيف، ومن قوالب الطباعة — ومن استجابة الخادم لصفحة المدير أيضًا، فما عاد يسافر إلى متصفحه أصلًا. العمود باقٍ في قاعدة البيانات فلا تضيع بيانات مسجَّلة، ومسح البيانات عند حذف الحساب باقٍ كما هو.

٤ · إلزامية الحقول نُفِّذ

ثلاثة حقول عليها علامة الآن: الاسم، والقسم، والمسمى الوظيفي — وهي الثلاثة التي يُبنى منها سطر هويتك أعلى كل مستند، والتي كان نقصها يُخرج شرطة يتيمة تحت الاسم.

والقاعدة تمنع التراجع لا الحالة: حقلٌ عبّأتِه ثم مسحتِه يُرفض حفظه، لأن مسحه إتلاف لسطر الهوية. وحقلٌ لم يُعبَّأ أصلًا لا يمنعك من حفظ أي تعديل آخر — يُحفظ ويصلك تنبيه بأن السطر ما زال ناقصًا. (النسخة الأولى منعت الحفظ مطلقًا، فحجبت ١٦ من ٢٣ ملفًا عن حفظ أي شيء — أُصلحت قبل أن تصل إليك، ودليلها في القسم التالي.)

وللملفات القديمة التي حُفظت قبل الإلزام: الصف الفارغ يُخفى بدل أن يُطبع «—» أو «غير محدد»، في العرض الشامل وصفحة المدير والأرشيف.

⚠️ الإلزام يمنع حفظ صفحة البيانات وحدها: لا يحجب الدخول، ولا يقفل حسابًا، ولا يمنع تصديرًا أو طباعة.

قبل — سبع شرطات وتاريخ ميلاد

بطاقة البيانات الشخصية قبل الإصلاح

بعد — المعبّأ وحده

بطاقة البيانات الشخصية بعد الإصلاح

اللقطتان من الحساب نفسه وفي اللحظة نفسها: اليسرى من النسخة السابقة، واليمنى من المنشور الآن.

٦أ · عمود المرفقات على الجوال نُفِّذ

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

قبل — العمود الأخير يختفي مع السحب

الجدول على الجوال قبل التثبيت

بعد — مثبَّت على الحافة، ودلالة سحب على الطرف

الجدول على الجوال بعد التثبيت

اللقطتان بعرض 390 بكسل، والجدول مسحوب إلى منتهاه في الحالتين.

٧ · الترتيب الافتراضي نُفِّذ

كان كل قسم يكتب ترتيبه بنفسه تصاعديًّا، بينما الإضافة تضع الصف الجديد في الأعلى — فيقفز البند من أعلى الجدول إلى أسفله عند أول تحديث للصفحة. وجدول الجدارات كان يعكس الترتيب عند العرض وحده فيخالف نفسه في العرض الشامل. صار التعريف في ملف واحد: الأحدث أولًا على تاريخ الإضافة، ويسري على الشاشة والعرض الشامل وصفحة المدير والأرشيف معًا.

// ترتيب الصفوف في الحساب نفسه، واللحظة نفسها قبل ترتيب-1 · ترتيب-2 · ترتيب-3 · شهادة · ترتيب-1 · ترتيب-2 // الأقدم أولًا بعد ترتيب-2 · ترتيب-1 · شهادة · ترتيب-3 · ترتيب-2 · ترتيب-1 // الأحدث أولًا

⚠️ أثرٌ متوقّع: أرقام عمود «#» ستختلف عن أي مستند صدّرتِه سابقًا. المحتوى نفسه لم يتغيّر — الترتيب هو الذي صار موحّدًا.

٩ · مربع «أخرى» في الجدارات نُفِّذ

«الغها» — أُلغي. وللعلم: نحن من أضافه، لم يكن في طلبك. وكان في بياناتك صفٌّ واحد يحمل «أخرى» ضمن قائمة فئاته، نُظِّف بإسقاط «أخرى» وحدها وبقيت فئاته الثلاث كما هي.

١٠ · عبارة الأوزان عولج بجذره

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

ثالثًا: ما أضفناه بلا أن تطلبيه

قلتِ في رسالتك: «الأهم أنه ما يظهر مشاكل جديدة». هذا القسم كله جواب على تلك الجملة.

تنبيه «صدرت نسخة جديدة» إضافة

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

التنبيه كما يظهر فعلًا

تنبيه صدرت نسخة جديدة

هذي اللقطة ليست تمثيلًا: فُتح تبويب على نسخة، ثم نُشرت نسخة جديدة والتبويب مفتوح، فظهر التنبيه من تلقائه.

بوابة فحص قبل كل نشرة إضافة

كانت أدوات فحصنا تعيش خارج المشروع على جهاز واحد، تأخذ كلمة المرور من سطر الأوامر، وعنوانها الافتراضي الإنتاج نفسه — أي أن تشغيلها «للتجربة» يكتب في بياناتك. وأحدها كان يُنشئ رابط مشاركة حقيقيًّا ويسجّل عليه توثيق اطلاع، فيقفل الرابط تحت القفل القديم. الآن: ٤٧ فحصًا داخل المشروع، مقسّمة قراءةً وكتابةً وخطرًا، ولا يكتب أي فحص شيئًا إلا بعلَمين صريحين.

وأضفنا ثلاثة فحوص لم تكن موجودة، كل واحد منها كان غيابه يُمرِّر

// بوابة التسليم على النسخة المنشورة الآن — ٥ سبتمبر مصفوفة الأجهزة 100 تحميل صفحة صفر إخفاق صفر خطأ جافاسكربت صفر HTTP≥400 نصّ المستند 24/24 التصديرات (٤ أجهزة × لغتين) 40/40 دورة الإضافة والتعديل والحذف 28/28 المسارات والطباعة والمشاركة واعتماد المدير 9/9 تطابق الترتيب عبر الأسطح 5/5 فتح مرفق فعليًّا من صفحة المدير 5/5 ────────────────────────────────────────────────── 111 فحصًا · صفر إخفاق
عطلًا حقيقيًّا: تطابق الترتيب عبر الشاشة والعرض الشامل وصفحة المدير، ومحتوى المستند (لا تاريخ ميلاد، لا شرطة يتيمة، لا قيم إنجليزية خام، لا أرقام هندية)، وفتح مرفق فعليًّا من صفحة المدير — وهذا الأخير هو بالضبط ما كان غيابه يجعل عطل المرفقات يمرّ أخضر في أغسطس.

سكربت نشر ببوابات إضافة

لم يكن في تاريخ المشروع كلّه أي سكربت نشر — كل نشرة كانت نسخًا يدويًّا لأي بناء موجود في المجلد. الآن النشر أمر واحد يبني من الصفر، ويسأل الخادم الحيّ قبل أن يلمسه: هل المفتاح في هذه الحزمة مقبول؟ وبعد النشر: هل النسخة الحيّة هي هذا البناء بالذات؟ وهل بقيت قوالب البريد؟ وهل بقي جيرانك على الخادم يعملون؟ أي بوابة تسقط ⇒ النشرة ساقطة.

تنظيف وإزالة طرق مسدودة إضافة

زر «الرمز عبر الجوال» في نافذة استعادة كلمة المرور كان يَعِد برمز لا يصل — لا يوجد مزوّد رسائل مربوط بالمنصة أصلًا. أُخفي (والمسار محفوظ في الكود إن أردنا تفعيله لاحقًا). وحُذف 961 سطرًا ميتة لا يستوردها أحد.

رابعًا: بنود مؤجَّلة — بقرارك أو بانتظار توجيهك

٥ · صورة صفحة التعريف بانتظار توجيهك

الصورة الحالية في صفحة التعريف مولَّدة بالذكاء الاصطناعي، وفيها نصوص لاتينية بلا معنى على كعوب المجلدات وعلامة تجارية لطرف ثالث. استبدالها يحتاج اتجاهًا بصريًّا منك: صورة واقعية؟ رسم؟ لقطة من المنصة نفسها؟

لكن بطاقة معاينة الرابط — أول ما يظهر حين يُرسَل رابط المنصة في واتساب — استُبدلت اليوم، لأن القديمة كانت نفس الصورة وفيها كلمة العنوان مرسومة «بدعاً» بدل «بدءاً».

قبل — شعار طرف ثالث، ونصّ لاتيني بلا معنى، و«بدعاً»

بطاقة المعاينة السابقة

بعد — من إنتاجنا، ببيانات تجريبية

بطاقة المعاينة الجديدة

١١ · تاريخ العمل للجدارات مؤجَّل

الترتيب اليوم على تاريخ الإضافة. الترتيب على «تاريخ العمل» يحتاج حقل تاريخ جديدًا للجدارات — الجدارات المسجَّلة اليوم بلا تاريخ — وهذي واجهة جديدة تُقرّ قبل أن تُبنى.

إعادة فتح عام مؤرشف مسجَّل — «مو ضروري الآن»

مسجَّل عندنا بنصّك. متى ما احتجتِه نبدأ فيه.

ملاحظة من البيانات للعلم

‏16 جدارة في المنصة مسجَّلة تحت فئة «سلوكية» — وهي فئة خارج الأربع المعتمدة، من بيانات قديمة. تظهر في الجداول كما هي، لكن لا يمكن اختيارها من النافذة. إن أردتِ توحيدها ضمن الأربع نفعلها بأمر واحد، وإن أردتِ إبقاءها كما هي فلا ضرر — أحببنا فقط أن تعرفي.

خامسًا: الفاتورة

البنود التي علينا غير مذكورة هنا إطلاقًا — تلك التزام تعاقدي لا يُحاسَب عليه. ما في الجدول هو التحسينات المنتجية وحدها.

البندالقيمة
حذف تاريخ الميلاد من المنتج كله ومن استجابة الخادم400
توحيد الترتيب «الأحدث أولًا» عبر الشاشة والعرض الشامل وصفحة المدير والأرشيف500
إلزام الحقول الثلاثة، وإخفاء الصف الفارغ في المستندات الثلاثة350
تثبيت العمود الأخير على الجوال ودلالة السحب350
تناسق صفّ الأزرار في العرض الشامل، وإلغاء مربع «أخرى»200
تنبيه «صدرت نسخة جديدة» وبطاقة معاينة الرابط400
مجموع البنود الستة2,200
حسم الحزمة المثبت في العقد (٥٠٪)−1,100
هدية انطلاقة بذرة — لأنك من أول عملائنا−700
المستحق400 ﷼
البنود التي في القسم الأول من هذي الصفحة — المرفقات، والترتيب في صفحة المدير، وقفل التوثيق، وإلغاء الروابط، وقوالب البريد — غير محسوبة هنا إطلاقًا، ولا في أي فاتورة قادمة. عيوب أعمالنا نصلحها على حسابنا.

سادسًا: التشغيل الشهري

هذا بند موجود في عقدك أصلًا ولم نفعّله. نطرحه الآن لأن الجولة الأخيرة أظهرت أن أكثر ما يزعجك ليس العطل نفسه، بل ألّا تعرفي أنه وقع.

ما تحصلين عليه شهريًّا
بوابة الفحص (‏47 فحصًا) تُشغَّل قبل كل نشرة، ويصلك رقمها معها
نسخة احتياطية يومية مختبَرة الاسترجاع — لا مأخوذة فقط
تقرير شهري: ما نُشر، وما رُصد، وما لم يُصلح ولماذا
سقف بلاغات متفق عليه، بزمن استجابة معلوم
‏350 ﷼ شهريًّاحسب العقد
بلا ارتباط بما سبق: الإصلاحات في هذي الصفحة تمّت وانتهت سواء اشتركتِ أو لا. ومتى ما أردتِ تجربته شهرًا واحدًا بلا التزام، قولي.

تنبيه خارج المنصة — لكنه يمسّها في ٢ أكتوبر

الصورة التي أرسلتِها صباح اليوم من Google Workspace تخصّ اشتراك بريد shafq.tech: آخر عملية دفع لم تنجح، والخدمات تُعلَّق لجميع المستخدمين في ٢ أكتوبر ٢٠٢٦ ما لم تُصحَّح البطاقة.

ولماذا يهمّ كارير فوليو تحديدًا: البريد الصادر من المنصة — ومنه رسائل استعادة كلمة المرور للمشتركات — يُرسَل عبر حساب شفق نفسه. يوم يُعلَّق الاشتراك تتوقف رسائل الاستعادة في منصتك، لا بريد شفق وحده.

الأمر بيدك وحدك (بطاقة/بنك، ولا ندخل بيانات دفع نيابةً عن أحد). وإن قررتِ عدم التجديد فلدينا بديل: مزوّد بريد مستقل للمنصة لا يعتمد على مساحتك — نطرحه ضمن ملحق التشغيل، لا نغيّره صامتين.