مخطّط النظام
نموذج بيانات 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. - يحمل
Person42 من العلاقات الـ 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) وحدّث هذه الصفحة
والبيانات المضمَّنة في العارض.