SANADالهندسة والتحليل التنافسي

Architecture &
Competitive Analysis

خمس حلول معمارية تعالج الفجوات في أنظمة الموارد البشرية الرائدة في السوق السعودي. كل حل يمثل مكوناً قائماً بذاته، قابل للتكامل والتوسع.

5 حلول أساسية.NET 8 + PostgreSQLABP + MediatR
PROBLEM

أنظمة Jisr و ZenHR الحالية لا تتحقق من الامتثال مع مَـدَد في الوقت الفعلي. يكتشف الخطأ بعد فوات الأوان، مما يؤدي إلى غرامات تأخير واحتياج لإعادة المعالجة يدوياً.

SOLUTION

يعتمد الحل على بنية 'الدفتر الرقمي الأول' (Ledger-First) حيث يتم التحقق من كل عملية مالية عبر API مَـدَد قبل ترحيلها. نسخة EF Core من المخطط تضمن سلامة البيانات مع سجل تدقيق كامل.

C#
// MudadShadowValidator.cs - .NET 8 C#
public class MudadValidationMiddleware : IMiddleware
{
    private readonly IMudadApiClient _mudadClient;
    private readonly ShadowLedgerContext _ledger;

    public async Task InvokeAsync(HttpContext context, RequestDelegate next)
    {
        if (context.Request.Path.StartsWithSegments("/api/payroll"))
        {
            var payload = await context.Request.ReadFromJsonAsync<PayrollSubmission>();
            var validation = await _mudadClient.ValidateComplianceAsync(
                new ComplianceRequest
                {
                    EmployerId = payload.EmployerId,
                    Period = payload.Period,
                    TotalWages = payload.TotalWages,
                    WpsFileHash = payload.ComputeHash()
                });

            if (!validation.IsCompliant)
            {
                await _ledger.RecordRejectionAsync(
                    payload.EmployerId, validation.Errors);
                context.Response.StatusCode = 422;
                await context.Response.WriteAsJsonAsync(
                    new { error = "Compliance validation failed",
                          details = validation.Errors });
                return;
            }

            await _ledger.RecordValidationAsync(payload);
        }
        await next(context);
    }
}