انتقل إلى المحتوى

تخطيط الحل

ما هو

يُنظَّم حل ManpowerIQ في مشاريع Clean Architecture الأربعة إضافةً إلى تطبيقي العميل. هذه الصفحة هي الخريطة: أي مشروع يحمل ماذا، وأي اتجاه تشير إليه الاعتماديات.

لماذا بُني بهذه الطريقة

تُقسَّم المشاريع بحيث لا يعتمد جوهر العمل على قاعدة البيانات أو إطار الويب. يحمل Domain وApplication القواعد؛ ويحمل Infrastructure وAPI الأسلاك. ذلك الاتجاه (كل شيء يشير إلى الداخل نحو النطاق) هو ما يجعل محرّك التخصيص وقواعد الطلب والكيانات قابلة للاختبار دون Postgres أو HTTP. قاعدة الاعتمادية مُغطّاة بالتفصيل في Clean Architecture.

كيف يعمل

flowchart LR
    API[ManpowerIQ.API<br/>ASP.NET Core] --> APP[ManpowerIQ.Application]
    INFRA[ManpowerIQ.Infrastructure<br/>EF Core, Hangfire, Auth] --> APP
    API --> INFRA
    APP --> DOM[ManpowerIQ.Domain]
    INFRA --> DOM
    WEB[web/ · React + Vite] -.HTTP/JWT.-> API
    MOB[mobile/ · Expo skeleton] -.HTTP.-> API

الواجهة الخلفية (manpoweriq/src/)

المشروع المسؤولية محتويات تمثيلية
ManpowerIQ.Domain الكيانات، التعدادات، أشكال القواعد — دون اعتماديات على الإطار. Domain/Common/AuditableEntity.cs، TenantEntity.cs؛ Domain/Entities/* (Employee، Role، Permission، AuditEvent…) (الورقة 01 §entities)
ManpowerIQ.Application خدمات وواجهات العمل — حالات الاستخدام. محرّك التخصيص، تخطيط الطلب، الإجازة، خدمات الحضور؛ Application/Auditing/IAuditLogger.cs، Application/Tenancy/ICurrentTenantProvider.cs، Application/Resources/ErrorMessages.resx
ManpowerIQ.Infrastructure تنفيذ EF Core، المعترضات، المصادقة، Hangfire، الاستيرادات. Persistence/ManpowerIQDbContext.cs، Persistence/Interceptors/TenantStampingInterceptor.cs، Tenancy/CurrentTenantProvider.cs، Auth/JwtTokenMinter.cs، Services/ImportJobRunner.cs
ManpowerIQ.API مضيف ASP.NET Core: المتحكّمات، الوسائط، DI، خطّ أنابيب الطلب. Program.cs (DI + ترتيب الوسائط)، Controllers/*، Middleware/TenantContextMiddleware.cs

العملاء (manpoweriq/)

  • web/ — تطبيق الصفحة الواحدة React + Vite. سطح المنتج الحقيقي؛ Tailwind متجاوب، مصادقة JWT.
  • mobile/ — مشروع Expo + React Native + TypeScript هو شاشة فحص-صحة واحدة (mobile/App.tsx)، لا تطبيق وظيفي (الورقة 20 §build-status).

الاختباراتtests/ManpowerIQ.E2E.Tests/ (Playwright E2E + بذرة البيانات التجريبية) ومشاريع اختبار الوحدة/التكامل.

مزالق / قيود

  • يعتمد Infrastructure على Application، لا العكس. يُعرِّف Application الواجهات (ICurrentTenantProvider، IAuditLogger)؛ وينفّذها Infrastructure. لا تُضِف مرجعًا Application→Infrastructure (انظر Clean Architecture).
  • حجم mobile/ هو وزن اعتماديات، لا ميزات. mobile/node_modules كبير، لكن شيفرة التطبيق هي App.tsx + index.ts فقط (الورقة 20). لا تخلطه بتطبيق جوّال مبني.
  • web/ وmobile/ لا يتشاركان أي شيفرة — قاعدتا شيفرة منفصلتان (DOM+Tailwind مقابل أوليّات React Native) (الورقة 20).
  • المستودع ليس تحت git في بيئة التحقّق، فتُستشهَد المصادر بـ file.cs:line مقابل لقطة نموذج EF، لا hash لـ commit (الورقة 00-index).

حالة البناء

Available — الواجهة الخلفية بأربعة مشاريع وتطبيق ويب React هما الحل الحيّ. مشروع الجوّال Planned/هيكل (الورقة 20).

ذات صلة