🐍 مكتبة بايثون الخالصة

المرجع البرمجي لمكتبة بايثون (SDK)

المرجع البرمجي المعتمد للتحكم الآلي في فهرس التسليمات، تحديد الحجم والتخصيص، التحقق من صحة البيانات وفق Draft 2020-12، وتوليد التقارير.

1. المعمارية البرمجية ومبدأ الاعتمادية الصفرية

تم تصميم مكتبة tasleemat وفق فلسفة صارمة قائمة على الاعتمادية الصفرية على المكتبات الخارجية (Zero-Dependency)؛ حيث تعتمد بالكامل على حزم بايثون القياسية المدمجة (json, pathlib, dataclasses, hashlib, re, csv). يضمن هذا النهج التثبيت الفوري في بضع ثوانٍ، وانعدام تعارض إصدارات الحزم، وإمكانية التشغيل في البيئات الحكومية والمصرفية المعزولة أمنياً (Air-Gapped).

الضمانات الهندسية الأساسية:
  • تخزين مؤقت آمن ومتزامن (Thread-Safe Caching): فهرسة الأصول وتحليل المخططات تتم مرة واحدة في الذاكرة لتوفير استجابة في أجزاء من الملي ثانية.
  • حماية النواة المصدرية من التعديل (Immutability): تمنع دوال الوصول أي عمليات كتابة أو تعديل على بيانات الحزمة المعتمدة.
  • توافق تام مع مختلف أنظمة التشغيل: دعم كامل لأنظمة Linux و macOS و Windows مع معالجة قياسية لترميز UTF-8.

2. الدوال الثماني المعتمدة في واجهة البرمجة (API)

tasleemat.list_artifacts(phase=None, tier=None, pack=None)

استكشاف كائنات التسليمات في الفهرس بالكامل أو مع تصفية محددة بحسب مرحلة المشروع أو مستوى الحجم أو حزمة المنهجية.

import tasleemat

# استعراض كافة الـ 114 تسليمة
all_artifacts = tasleemat.list_artifacts()
print(f"إجمالي التسليمات: {len(all_artifacts)}")

# استعراض تسليمات المرحلة 03 (البدء) للمستوى 2
phase_artifacts = tasleemat.list_artifacts(phase="03", tier=2)
for art in phase_artifacts:
    print(f"- [{art.artifact_id}] {art.name_ar} ({art.name_en})")

tasleemat.get_artifact_definition(artifact_id: str) -> dict

استرجاع قاموس البيانات الوصفية لتسليمة معينة يشمل الأسماء ثنائية اللغة، ورمز المرحلة، والمستويات المدعومة.

meta = tasleemat.get_artifact_definition("PMO-03.01")
print(f"الاسم بالعربية: {meta['name_ar']}")
print(f"الاسم بالإنجليزية: {meta['name_en']}")
print(f"المستويات المعتمدة: {meta['tiers']}")

tasleemat.get_artifact_assets(artifact_id: str, lang='ar') -> ArtifactAssets

استرجاع كائن الأصول الذي يتيح الوصول الآمن للملفات الخمسة المرافقة للتسليمة.

assets = tasleemat.get_artifact_assets("PMO-03.01", lang="ar")

# دوال الوصول المباشر للمحتوى
template_text = assets.get_template_content()
guide_text = assets.get_guide_content()
example_text = assets.get_example_content()
schema_dict = assets.get_schema_data()
dict_rows = assets.get_dictionary_rows()

# أو جلب الأصل مباشرة بحسب نوعه
schema_raw = tasleemat.get_artifact_asset("PMO-03.01", role="schema", lang="ar")

tasleemat.get_tailoring_profile(tier: Union[int, str], pack: str='general') -> List[str]

تحديد القائمة الدقيقة والحتمية لرموز التسليمات المطلوبة وفق مستوى الحوكمة وحزمة المنهجية.

# استخراج تسليمات مشروع رشيق من المستوى 2
deliverable_ids = tasleemat.get_tailoring_profile(tier=2, pack="agile")
print(f"عدد التسليمات المخصصة: {len(deliverable_ids)}")

tasleemat.validate_artifact_data(artifact_id: str, data: dict, mode='strict') -> ValidationReport

التحقق البرمجي الدقيق من بيانات JSON مقابل مخطط Draft 2020-12 المرافق للتسليمة.

payload = {
    "project_id": "PRJ-2026-CLOUD",
    "project_name": "منصة التحول الرقمي السحابي",
    "sponsor": "نائب الرئيس التنفيذي للعمليات",
    "project_manager": "سارة الأحمد",
    "authorization_date": "2026-10-15"
}

report = tasleemat.validate_artifact_data("PMO-03.01", payload, mode="strict")
if report.valid:
    print("البيانات مطابقة بنسبة 100% لمعايير المخطط المعياري!")
else:
    for err in report.errors:
        print(f"خطأ في الحقل {err.path}: {err.message} (القاعدة: {err.keyword})")

tasleemat.get_lexicon() و tasleemat.render_artifact()

دالة get_lexicon() لاسترجاع المصطلحات المهنية المعتمدة في إدارة المشاريع، ودالة render_artifact() لتوليد مخرجات HTML أنيقة وجاهزة للطباعة مع دعم اتجاه الكتابة العربي (RTL).

# استرجاع المصطلحات المعتمدة
terms = tasleemat.get_lexicon(category="governance")

# توليد صفحة HTML منسقة باللغة العربية
html_output = tasleemat.render_artifact(
    artifact_id="PMO-03.01",
    lang="ar",
    data=payload,
    out_path="./output_charter.html"
)

3. نماذج البيانات وفئات الكائنات (Data Models)

فئة ArtifactSummary (كائن غير قابل للتعديل)

@dataclass(frozen=True)
class ArtifactSummary:
    artifact_id: str                    # الرمز الفريد للتسليمة (مثل "PMO-03.01")
    prefix: str                         # بادئة الملف (مثل "03_01")
    name_en: str                        # الاسم بالإنجليزية
    name_ar: str                        # الاسم بالعربية
    phase_code: str                     # رمز المرحلة ("00" إلى "07")
    phase_name_en: str                  # اسم المرحلة بالإنجليزية
    phase_name_ar: str                  # اسم المرحلة بالعربية
    tiers: List[str]                    # المستويات المعتمدة: ["1", "2", "3"]
    fingerprint: str                    # بصمة التجزئة SHA-256 للملف المصدري
    completed_data_validation: dict     # تقرير المطابقة المعياري المسبق

فئتا ValidationReport و ValidationError

@dataclass
class ValidationReport:
    valid: bool                         # True إذا كانت البيانات مطابقة تماماً
    errors: List[ValidationError]       # قائمة بأخطاء عدم المطابقة المنظمة
    schema_id: str                      # الرابط المعياري للمخطط المرافق
    schema_dialect: str                 # لهجة المخطط Draft 2020-12
    fingerprint: str                    # بصمة التجزئة SHA-256 لملف المخطط

@dataclass
class ValidationError:
    path: str                           # مسار الحقل بنظام JSON Pointer (مثل "/risks/0/score")
    message: str                        # رسالة الخطأ وشرح المشكلة
    keyword: str                        # الكلمة المفتاحية في المخطط التي تم انتهاكها
    schema_path: str                    # مسار القاعدة داخل المخطط نفسه

4. أدلة بناء التطبيقات والأنظمة المؤسسية (Tutorials)

الدليل 1: بناء واجهة برمجة تطبيقات REST كاملة عبر إطار FastAPI

تضمين مكتبة tasleemat في خدمة سحابية عالية الأداء لربط أنظمة المؤسسة:

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import Optional, List, Dict, Any
import tasleemat

app = FastAPI(title="Tasleemat PMO Governance API", version="2.5.0")

class TailorRequest(BaseModel):
    tier: int
    pack: str = "general"

class ValidateRequest(BaseModel):
    artifact_id: str
    data: Dict[str, Any]
    mode: str = "strict"

@app.get("/api/v1/artifacts")
def list_artifacts(phase: Optional[str] = None, tier: Optional[int] = None):
    results = tasleemat.list_artifacts(phase=phase, tier=tier)
    return [
        {"id": a.artifact_id, "name_en": a.name_en, "name_ar": a.name_ar, "phase": a.phase_code}
        for a in results
    ]

@app.post("/api/v1/tailor")
def tailor_project(req: TailorRequest):
    try:
        deliverable_ids = tasleemat.get_tailoring_profile(tier=req.tier, pack=req.pack)
        return {"tier": req.tier, "pack": req.pack, "count": len(deliverable_ids), "deliverables": deliverable_ids}
    except Exception as e:
        raise HTTPException(status_code=400, detail=str(e))

@app.post("/api/v1/validate")
def validate_deliverable(req: ValidateRequest):
    report = tasleemat.validate_artifact_data(req.artifact_id, req.data, mode=req.mode)
    return {
        "valid": report.valid,
        "errors": [{"path": e.path, "message": e.message, "rule": e.keyword} for e in report.errors],
        "schema_id": report.schema_id
    }

الدليل 2: بناء لوحة تحكم تفاعلية للممارسين عبر Streamlit

تطبيق ويب متكامل يتيح لمديري المشاريع اختيار مستوى وحزمة المشروع والتحقق من صحة الوثائق مباشرة:

import streamlit as st
import json
import tasleemat

st.set_page_config(page_title="بوابة تسليمات لإدارة المشاريع", layout="wide")
st.title("🛡️ بوابة الحوكمة وإدارة التسليمات المؤسسية")

st.sidebar.header("معايير تخصيص المشروع")
tier = st.sidebar.selectbox("مستوى الحجم والحوكمة", [1, 2, 3], index=1)
pack = st.sidebar.selectbox("حزمة المنهجية", ["general", "agile", "ai", "predictive", "hybrid"])

deliverables = tasleemat.get_tailoring_profile(tier=tier, pack=pack)
st.sidebar.success(f"عدد التسليمات المعتمدة: {len(deliverables)}")

col1, col2 = st.columns([1, 1])

with col1:
    st.subheader("بيان التسليمات المطلوبة")
    selected_id = st.selectbox("اختر التسليمة للمعاينة", deliverables)
    assets = tasleemat.get_artifact_assets(selected_id, lang="ar")
    st.markdown(f"**دليل الممارس:**\n{assets.get_guide_content()[:500]}...")

with col2:
    st.subheader(f"التحقق من البيانات مقابل المخطط ({selected_id})")
    sample_json = json.dumps({"project_id": "PRJ-01", "name": "مشروع التحول السحابي"}, indent=2, ensure_ascii=False)
    user_input = st.text_area("بيانات JSON", sample_json, height=220)
    
    if st.button("تشغيل فحص المطابقة"):
        try:
            payload = json.loads(user_input)
            report = tasleemat.validate_artifact_data(selected_id, payload, mode="strict")
            if report.valid:
                st.success("✅ البيانات مطابقة 100% لمعايير المخطط المعياري!")
            else:
                for err in report.errors:
                    st.error(f"❌ في المسار {err.path}: {err.message}")
        except json.JSONDecodeError as e:
            st.warning(f"صيغة JSON غير صحيحة: {e}")

الدليل 3: محرك الحسابات الرياضية الموثقة لإدارة القيمة المكتسبة (EVM)

كود برمجي حتمي لتنفيذ معادلات القيمة المكتسبة لتسليمة PMO-06.05 بدقة ومنع أخطاء القسمة على صفر:

def calculate_evm_metrics(pv: float, ev: float, ac: float, bac: float) -> dict:
    # حساب مقاييس إدارة القيمة المكتسبة وفق معايير PMI PMBOK مع معالجة آمنة للقسمة
    # التباينات (Variances)
    cv = ev - ac                               # تباين التكلفة (Cost Variance)
    sv = ev - pv                               # تباين الجدول الزمني (Schedule Variance)

    # المؤشرات (Indices)
    cpi = (ev / ac) if ac > 0 else 1.0        # مؤشر أداء التكلفة
    spi = (ev / pv) if pv > 0 else 1.0        # مؤشر أداء الجدول الزمني

    # التنبؤات (Forecasting)
    eac = (bac / cpi) if cpi > 0 else bac      # التكلفة التقديرية عند الاكتمال
    etc = eac - ac                             # التكلفة التقديرية المتبقية للاكتمال
    vac = bac - eac                            # تباين التكلفة عند الاكتمال

    # مؤشر الأداء المطلوب للاكتمال (TCPI)
    remaining_work = bac - ev
    remaining_budget = bac - ac
    tcpi = (remaining_work / remaining_budget) if remaining_budget > 0 else 1.0

    return {
        "cost_variance": round(cv, 2),
        "schedule_variance": round(sv, 2),
        "cpi": round(cpi, 3),
        "spi": round(spi, 3),
        "eac": round(eac, 2),
        "etc": round(etc, 2),
        "vac": round(vac, 2),
        "tcpi": round(tcpi, 3),
        "status": "HEALTHY" if cpi >= 1.0 and spi >= 1.0 else "WARNING"
    }

# تجربة حسابية للمشروع:
metrics = calculate_evm_metrics(pv=100000, ev=95000, ac=105000, bac=250000)
print(f"مؤشر التكلفة: {metrics['cpi']}، مؤشر الجدول: {metrics['spi']}، التكلفة المتوقعة: ${metrics['eac']:,}")