مخطّط النظام

نموذج بيانات CSIM مُخطّطًا — 31 نموذجًا، 109 علاقات

🔍 للاستكشاف الجادّ، افتح عارض المخطّط التفاعلي — تحريكٌ، وتكبيرٌ بعجلة الفأرة، وملاءمةٌ للشاشة، وملء الشاشة، وتبويبات لكلّ وحدة، ومخطّط العلاقات الكامل بروابطه الـ 109، ووضع تركيز يرسم نموذجًا واحدًا وجيرانه عند عمقٍ مختار. والنموذجان Person (‏42 رابطًا) وOrganisation (‏15) عمودا دورٍ يتفرّعان إلى كلّ شيء تقريبًا، لذا يخفيهما العارض افتراضيًّا — ويعيدهما زرّ تبديل. والمخطّطات أدناه هي الملخّص الثابت القابل للقراءة للروابط الرئيسية فقط.


نظرة عامة على البنية

سبع مناطق تعكس قائمة الشريط الجانبي. وكلّ سهمٍ يعني "صفٌّ واحد من النموذج الأيسر يُشار إليه من صفوفٍ كثيرة من النموذج الأيمن".

flowchart LR
    subgraph REF["📚 المرجع"]
        Organisation --> Site --> SiteArea
    end

    subgraph CTR["🏢 المقاولون"]
        ContractorProfile
        ContractorDocument
        ContractorPerformanceReview
    end

    subgraph WRK["📄 العقود والأعمال"]
        Contract --> ContractRequirement
        Contract --> WorkPackage
        WorkPackage --> SubcontractorEngagement
        WorkPackage --> Mobilisation --> MobilisationChecklistItem
        WorkPackage --> Demobilisation
    end

    subgraph IFC["🔗 الواجهات والضوابط"]
        InterfaceRegister --> InterfaceHazard --> InterfaceControl
        InterfaceRegister --> InterfaceDecision
        CoordinationMeeting --> MeetingAttendance
    end

    subgraph PPL["👷 الأفراد والوصول"]
        Person --> PersonCompetency
        Person --> SiteInduction
        Person --> SiteAccessAuthorisation
        RoleRequirement
    end

    subgraph PLT["🚜 المعدّات"]
        ContractorPlant --> PlantSiteApproval
    end

    subgraph ASR["🔍 التأكد"]
        FieldAssuranceEvent --> AssuranceFinding
        AssuranceFinding --> StopWorkEvent
        Incident
        CorrectiveAction
    end

    Organisation --> Contract
    Organisation --> ContractorProfile
    Organisation --> ContractorPlant
    SiteArea --> WorkPackage
    WorkPackage --> InterfaceRegister
    WorkPackage --> CoordinationMeeting
    WorkPackage --> FieldAssuranceEvent
    WorkPackage --> Incident
    InterfaceControl --> AssuranceFinding
    AssuranceFinding --> CorrectiveAction
    Incident --> CorrectiveAction
    ContractorPerformanceReview --> CorrectiveAction
    Contract --> ContractorPerformanceReview

السلسلة الأساسية

الخطّة على اليسار، ودليل الميدان على اليمين. هذا هو المخطّط الذي وُجد التطبيق ليجعله حقيقةً.

erDiagram
    Contract ||--o{ WorkPackage : "contract_id"
    SiteArea ||--o{ WorkPackage : "site_area_id"
    WorkPackage ||--o{ WorkPackage : "parent_work_package_id"
    WorkPackage ||--o{ InterfaceRegister : "work_package_id"
    WorkPackage ||--o{ InterfaceRegister : "other_work_package_id"
    SiteArea ||--o{ InterfaceRegister : "affected_area_id"
    InterfaceRegister ||--o{ InterfaceHazard : "interface_register_id"
    InterfaceHazard ||--o{ InterfaceControl : "interface_hazard_id"
    WorkPackage ||--o{ FieldAssuranceEvent : "work_package_id"
    FieldAssuranceEvent ||--o{ AssuranceFinding : "field_assurance_event_id"
    InterfaceControl ||--o{ AssuranceFinding : "interface_control_id"
    AssuranceFinding ||--o{ StopWorkEvent : "assurance_finding_id"
    AssuranceFinding ||--o{ CorrectiveAction : "assurance_finding_id"

لاحظ الحافّتين الخارجتين من WorkPackage إلى InterfaceRegister: واحدةٌ للحزمة التي تملك الواجهة، وأخرى للحزمة التي تتفاعل معها. وهذا الزوج هو ما يجعل التداخل حقيقةً قابلة للاستعلام.


العقود وبدء التشغيل وإنهاء التعاقد

erDiagram
    Organisation ||--o{ Contract : "contractor_organisation_id"
    Organisation ||--o{ Contract : "principal_organisation_id"
    Site ||--o{ Contract : "site_id"
    Contract ||--o{ Contract : "parent_contract_id"
    Contract ||--o{ ContractRequirement : "contract_id"
    WorkPackage ||--o{ SubcontractorEngagement : "work_package_id"
    Organisation ||--o{ SubcontractorEngagement : "subcontractor_organisation_id"
    WorkPackage ||--o{ Mobilisation : "work_package_id"
    Mobilisation ||--o{ MobilisationChecklistItem : "mobilisation_id"
    WorkPackage ||--o{ Demobilisation : "work_package_id"
    Contract ||--o{ ContractorPerformanceReview : "contract_id"
    ContractorPerformanceReview ||--o{ CorrectiveAction : "performance_review_id"

الأفراد والوصول والمعدّات

ثلاثة سجلّات تنتهي صلاحيّتها بشكل مستقلّ تُقيّد الشخص؛ والمعدّات منفصلة عن اعتماد موقعها.

erDiagram
    Organisation ||--o{ Person : "organisation_id"
    Person ||--o{ PersonCompetency : "person_id"
    Site ||--o{ SiteInduction : "site_id"
    Person ||--o{ SiteInduction : "person_id"
    Site ||--o{ SiteAccessAuthorisation : "site_id"
    Person ||--o{ SiteAccessAuthorisation : "person_id"
    WorkPackage ||--o{ SiteAccessAuthorisation : "work_package_id"
    Contract ||--o{ RoleRequirement : "contract_id"
    WorkPackage ||--o{ RoleRequirement : "work_package_id"
    Organisation ||--o{ ContractorPlant : "owning_organisation_id"
    ContractorPlant ||--o{ PlantSiteApproval : "contractor_plant_id"
    Site ||--o{ PlantSiteApproval : "site_id"
    ContractorPlant ||--o{ ContractorDocument : "plant_item_id"

التنسيق والحوادث والإجراءات

erDiagram
    WorkPackage ||--o{ CoordinationMeeting : "work_package_id"
    CoordinationMeeting ||--o{ MeetingAttendance : "coordination_meeting_id"
    CoordinationMeeting ||--o{ InterfaceDecision : "coordination_meeting_id"
    InterfaceRegister ||--o{ InterfaceDecision : "interface_register_id"
    InterfaceDecision ||--o{ InterfaceDecision : "supersedes_decision_id"
    Site ||--o{ Incident : "site_id"
    WorkPackage ||--o{ Incident : "work_package_id"
    Incident ||--o{ CorrectiveAction : "incident_id"
    WorkPackage ||--o{ StopWorkEvent : "work_package_id"

قراءة المخطّطات

  • A ||--o{ B تعني أنّ صفًّا واحدًا من A يُشار إليه من صفوفٍ كثيرة من B (والتسمية هي عمود المفتاح الأجنبي على B).
  • تُظهر هذه المخطّطات الثابتة الروابط الرئيسية فقط — أمّا أعمدة الأدوار الموجودة في كلّ نموذج تقريبًا (*_person_id و*_organisation_id) فمحذوفةٌ لأجل القراءة. ويُظهر مخطّط العلاقات الكامل في العارض التفاعلي الروابط الـ 109 جميعًا، مع إمكانية تبديل ضجيج person/organisation.
  • يحمل Person ‏42 من العلاقات الـ 109 لأنّ النموذج يسجّل مَن في كلّ خطوة: يملك، يعتمد، يتحقّق، يشرف، يُجري، يراجع، يبدأ، يقبل التسليم. وذلك أثر المساءلة هو جوهر حوكمة المقاولين، لا بيانات وصفية عرضية.
  • الـ WorkPackage (‏14 رابطًا) هو المحور البنيوي — ووضع التركيز في العارض يبدأ منه افتراضيًّا.
  • أُسقِط مفتاحٌ أجنبيّ واحد في التحويل لكسر دورةٍ حقيقية من طرفين: كان النموذج الأوّلي يحتوي على Person.organisationId → Organisation و Organisation.primaryContactPersonId → Person. فأُسقِط طرف Organisation؛ ويمكن استرجاع جهة الاتصال الأساسية بالاستعلام عن الأفراد في تلك المؤسّسة.

المخطّطات مُشتقّة من بيانات مخطّط النظام المولَّدة (apps/csim/generated/json/csim_relationship_metadata.json). فإذا تغيّر مخطّط DSL، فأعِد توليد البيانات (python -m codegen.cli all csim) وحدّث هذه الصفحة والبيانات المضمَّنة في العارض.