6.1حالات عملية
الأساسي في 30 ثانية
- التثبيت : تتبع النفقات يتسلسل دوال ← dataclass + JSON ← venv + pytest ← FastAPI ← Docker + CI حتى النشر.
- الأتمتة : التقرير الأسبوعي CSV يضيف pandas، ورسم Matplotlib، وجدولة cron مع سجلات وإرسال بالبريد على هذه الأسس.
- التسليم : venv معاد بناؤه، ومتطلبات مثبتة، واختبارات خضراء وسجلات متحقق منها في الشهر الأول.
خيط نبيل — بعد سنة : ورشتان تعملان في الجزائر
نبيل، محلل بيانات مبتدئ في الجزائر، يراجع ورشتيه الأبرز في السنة : تتبع النفقات المولود دفتر وحدة تحكم الذي صار واجهة منشورة، ثم التقرير الأسبوعي لمبيعات CSV المؤتمت بالكامل. الحالتان أدناه تستعيدان تسلسله : قسّم، ونمّط، واختبر، واعزل، وسلّم.
كل حالة تتبع السياق ← الخطوات ← النتيجة : أعد تنفيذها على مشاريعك.
تركيب اللبنات معاً
وضعت المستويات السابقة اللبنات (الأسس، والبنى، والبرمجة كائنية التوجه (POO)، والأخطاء، والوحدات، وvenv، والاختبارات، والويب، والبيانات، والنشر (Deployment)) ؛ هنا نركبها في ظروف حقيقية : ننطلق من حاجة ملموسة، ونقسّم، وننمّط، ونختبر، ونعزل ونسلّم. حالتان مفصلتان من الألف إلى الياء.
الحالة 1 — تتبع النفقات : من الدفتر إلى الواجهة المنشورة
السياق: المشروع الخيط الأحمر : تتبع نفقات مولود دفتر وحدة تحكم (N1)، صار دائماً (N2)، ومختبراً (N3)، ومعروضاً كواجهة (N4) ومنشوراً (N5).
Déroulé :
- N1 : دوال إضافة/سرد/مجموع، وقائمة main()، و80 سطراً مقسمة.
- N2 : dataclass نفقة، وJSON عبر pathlib، وtry/except على الإدخال.
- N3 : وحدات + venv + متطلبات، وتلميحات الأنواع (type hints)، واختبارات pytest للمجموع.
- N4 : FastAPI (GET/POST) لعرض النفقات.
- N5 : Dockerfile نحيف، وCI ruff + pytest، والنشر عند كل دفع.
النتيجة: رابط يسرد نفقاتك، مختبر في CI، ومعاد نشره عند كل دفع.
الحالة 2 — تقرير أسبوعي مؤتمت من CSV
السياق: كل يوم اثنين، يجب أن يصير استخراج CSV للمبيعات ملخصاً مرقماً مرسلاً بالبريد.
Déroulé :
- pandas : قراءة، وفحص (isna)، وتجميع groupby حسب المدينة، وأعلى 5.
- Matplotlib : شريط واحد بعنوان-رسالة، وتصدير PNG.
- سكربت مجدول (cron) مع تسجيل (logging) وtry مستهدفة، ومختبر على نسخ.
- بريد بالملخص + PNG مرفقاً، وسجلات متحقق منها في الشهر الأول.
النتيجة: صفر اثنين يدوي : التقرير يصل وحده، مع سجلاته.
نص جاهز للقول — تأطير مشروع Python قبل الترميز (30 ثانية)
« حاجتنا : [تتبع نفقات معروض كواجهة]. أسسنا : [دوال مقسمة + تلميحات + pytest + venv]. نخزن دائماً بـ JSON، ونعرض بـ FastAPI، ونسلّم عبر Docker + CI. »
نموذج نسخ ولصق — واجهة تتبع دنيا (FastAPI)
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
depenses: list[dict] = []
class Depense(BaseModel):
motif: str
montant: float
@app.get("/depenses")
def lister() -> list[dict]:
return depenses
@app.post("/depenses", status_code=201)
def ajouter(depense: Depense) -> dict:
item = depense.model_dump()
depenses.append(item)
return item
شركة صغيرة جداً / ميزانية صغيرة
حالة واحدة معادة التنفيذ على حاجة بسيطة : تتبع بمورد واحد، وتقرير CSV أدنى، ونشر مباشر.
شركة صغيرة ومتوسطة في الجزائر
تكييف النشر مع الواقع المحلي : حواسيب مشتركة، وذروات الاثنين، ونسخ احتياطية ومرجع معين.
عن بعد / هجين
مضاعفة التتبع عن بعد : متطلبات مثبتة موثقة، وخط أنابيب CI ووصول مكتوب.
بين الثقافات
التحقق من الاستعمالات المحلية قبل نقل حالة : يجب أن تخاطب التسميات والمدن وقواعد التجميع الفريق.
تحدي 48 ساعة — طبّق غداً
خذ مشروعاً حقيقياً واحداً واكتب سلسلته في 5 أوقات (قسّم ← نمّط ← اختبر ← اعزل ← سلّم). حدد الخطوة التالية.
- أعرف تركيب اللبنات في تطبيق كامل، من الدفتر إلى الواجهة المنشورة.
- عندي نموذج FastAPI قابل لإعادة التنفيذ لمشروعي.
- أنجزت تحدي 48 ساعة أو برمجت تاريخه.
نبيل يكبّر تتبع نفقاته حتى الواجهة المنشورة. أي تسلسل يحترم الدليل ؟