<?php
/** @var array<string,mixed> $overview */
$overviewData = is_array($overview ?? null) ? $overview : [];
$summary = is_array($overviewData['summary'] ?? null) ? $overviewData['summary'] : [];
$sites = is_array($overviewData['sites'] ?? null) ? $overviewData['sites'] : [];
$pipeline = is_array($overviewData['pipeline'] ?? null) ? $overviewData['pipeline'] : [];
$isAr = current_lang() === 'ar';
$tr = static function (string $en, string $ar) use ($isAr): string { return $isAr ? $ar : $en; };
$readinessLabels = [
    'READY' => $tr('Ready', 'جاهز'),
    'FINAL_VALIDATION' => $tr('Final validation', 'التحقق النهائي'),
    'IN_PROGRESS' => $tr('Preparing history', 'تجهيز التاريخ'),
    'PARTIAL' => $tr('Partial coverage', 'تغطية جزئية'),
    'NOT_STARTED' => $tr('Not started', 'لم يبدأ'),
    'ATTENTION' => $tr('Needs attention', 'يحتاج متابعة'),
    'UNAVAILABLE' => $tr('Unavailable', 'غير متاح'),
];
$runLabels = [
    'PASS' => $tr('Completed', 'مكتمل'),
    'RUNNING' => $tr('Running', 'قيد التشغيل'),
    'FAILED' => $tr('Failed', 'فشل'),
    'PENDING' => $tr('Pending', 'قيد الانتظار'),
    'CANCELLED' => $tr('Cancelled', 'ملغى'),
];
$pipelineStatusLabels = [
    'PASS' => $tr('Completed', 'مكتمل'),
    'IN_PROGRESS' => $tr('In progress', 'قيد التنفيذ'),
    'AVAILABLE' => $tr('Available', 'متاح'),
    'PENDING' => $tr('Not enabled', 'غير مفعّل'),
    'PREPARED' => $tr('Contract prepared', 'العقد مجهز'),
];
$uniqueTypes = (int)($summary['movement_unique_count'] ?? $summary['movement_type_count'] ?? 0);
$movementEntries = (int)($summary['movement_entry_count'] ?? $summary['movement_type_count'] ?? 0);
?>
<section class="diar-command-page diar-functional-page diar-overview-page" data-diar-functional-clarity="overview">
    <?php include __DIR__ . '/_tabs.php'; ?>
    <?php include __DIR__ . '/_context.php'; ?>

    <header class="diar-command-hero clarity-hero">
        <div class="hero-copy">
            <span class="eyebrow"><?= e($tr('MEDICATION MOVEMENT INTELLIGENCE', 'ذكاء حركات مخزون الأدوية')) ?></span>
            <h1><?= e($tr('Detect unusual movements by comparing each item with its own history', 'اكتشاف الحركات غير المعتادة بمقارنة كل صنف بتاريخه الخاص')) ?></h1>
            <p><?= e($tr(
                'DIAR does not judge a movement by a fixed quantity rule. It learns the normal behaviour of the same medication, in the same store, unit and transaction type, then highlights meaningful deviations for review.',
                'لا تحكم منظومة DIAR على الحركة بواسطة كمية ثابتة عامة. بل تتعلم السلوك الطبيعي لنفس الدواء داخل نفس المخزن والوحدة ونوع الحركة، ثم تبرز الانحرافات المهمة للمراجعة.'
            )) ?></p>
        </div>
        <aside class="hero-boundary methodology-boundary">
            <span class="boundary-label"><?= e($tr('Key principle', 'المبدأ الأساسي')) ?></span>
            <strong><?= e($tr('Compare like with like', 'مقارنة المتشابه بالمتشابه')) ?></strong>
            <span><?= e($tr('A movement is compared only with the exact historical grain that represents it. A high score means review priority, not proof of theft or misuse.', 'تُقارن الحركة فقط بالحبة التاريخية الدقيقة التي تمثلها. وتعني الدرجة العالية أولوية للمراجعة، وليست إثباتًا للسرقة أو سوء الاستخدام.')) ?></span>
        </aside>
    </header>

    <?php if (!empty($loadError)): ?><div class="diar-command-alert error"><?= e($loadError) ?></div><?php endif; ?>

    <section class="diar-command-section method-section" aria-labelledby="diar-how-title">
        <div class="section-heading">
            <div>
                <span class="section-kicker"><?= e($tr('HOW THE SYSTEM WORKS', 'كيف تعمل المنظومة')) ?></span>
                <h2 id="diar-how-title"><?= e($tr('From historical movements to a reviewable case', 'من الحركات التاريخية إلى قضية قابلة للمراجعة')) ?></h2>
                <p><?= e($tr('The workflow separates statistical comparison from human investigation.', 'يفصل المسار بين المقارنة الإحصائية والتحقيق البشري.')) ?></p>
            </div>
        </div>
        <div class="method-steps">
            <article><span class="method-no">1</span><div><strong><?= e($tr('Collect exact daily movement facts', 'تجميع الحقائق اليومية الدقيقة')) ?></strong><p><?= e($tr('Daily quantity, value, line count and maximum line are stored separately for every exact item movement grain.', 'تُحفظ الكمية والقيمة وعدد الأسطر وأقصى سطر يوميًا بصورة مستقلة لكل حبة حركة دقيقة.')) ?></p></div></article>
            <article><span class="method-no">2</span><div><strong><?= e($tr('Build the normal statistical baseline', 'بناء خط السلوك الإحصائي الطبيعي')) ?></strong><p><?= e($tr('The engine calculates the usual level, variability, frequency and dormancy from completed historical days.', 'يحسب المحرك المستوى المعتاد والتذبذب والتكرار والخمول من الأيام التاريخية المكتملة.')) ?></p></div></article>
            <article><span class="method-no">3</span><div><strong><?= e($tr('Compare the new movement with its own baseline', 'مقارنة الحركة الجديدة بخطها الخاص')) ?></strong><p><?= e($tr('The same hospital, branch, store, item, raw unit, transaction code and raw effect must match before comparison.', 'يجب تطابق المستشفى والفرع والمخزن والصنف والوحدة الخام وكود الحركة والتأثير الخام قبل المقارنة.')) ?></p></div></article>
            <article><span class="method-no">4</span><div><strong><?= e($tr('Prioritize and investigate', 'ترتيب الأولوية والتحقيق')) ?></strong><p><?= e($tr('Significant deviations become candidates. A reviewer verifies documents, users and operational context before any conclusion.', 'تتحول الانحرافات المهمة إلى مرشحين. ويتحقق المراجع من المستندات والمستخدمين والسياق التشغيلي قبل أي استنتاج.')) ?></p></div></article>
        </div>
    </section>

    <section class="diar-command-section exact-comparison-section">
        <div class="section-heading">
            <div><h2><?= e($tr('What is compared?', 'ما الذي تتم مقارنته؟')) ?></h2><p><?= e($tr('The comparison never mixes different stores, units or transaction effects.', 'لا تخلط المقارنة بين مخازن أو وحدات أو تأثيرات حركة مختلفة.')) ?></p></div>
        </div>
        <div class="grain-explainer">
            <?php foreach ([
                [$tr('Hospital', 'المستشفى'), 'HOSPITAL_CODE'], [$tr('Branch', 'الفرع'), 'BRANCH_ID'], [$tr('Store', 'المخزن'), 'STORE_CODE'],
                [$tr('Medication', 'الصنف'), 'ITEM_CODE'], [$tr('Raw unit', 'الوحدة الخام'), 'RAW_UNIT_CODE'], ['STORETRANSCODE', 'RAW'], ['STORETRANSEFFECT', 'RAW']
            ] as $dimension): ?>
                <div><span><?= e($dimension[0]) ?></span><strong><?= e($dimension[1]) ?></strong></div>
            <?php endforeach; ?>
        </div>
        <div class="plain-example">
            <span><?= e($tr('Simple example', 'مثال مبسط')) ?></span>
            <p><?= e($tr('If the usual quantity for item A in Store 7 under movement 9/effect 2 is around 10 units, a movement of 85 units is assessed against that specific history—not against another medicine or a hospital-wide fixed limit.', 'إذا كانت الكمية المعتادة للصنف A في المخزن 7 تحت الحركة 9/التأثير 2 نحو 10 وحدات، فإن حركة بقيمة 85 وحدة تُقيّم مقابل هذا التاريخ المحدد، وليس مقابل دواء آخر أو حد ثابت على مستوى المستشفى.')) ?></p>
        </div>
    </section>

    <div class="diar-command-kpis overview-kpis">
        <article><span><?= e($tr('Daily fact rows', 'صفوف الحقائق اليومية')) ?></span><strong><?= number_format((int)($summary['fact_rows'] ?? 0)) ?></strong><small><?= e($tr('Historical comparison source', 'مصدر المقارنة التاريخية')) ?></small></article>
        <article><span><?= e($tr('Current profiles', 'الملفات الإحصائية الحالية')) ?></span><strong><?= number_format((int)($summary['profile_count'] ?? 0)) ?></strong><small><?= e($tr('One per exact movement grain', 'ملف لكل حبة حركة دقيقة')) ?></small></article>
        <article><span><?= e($tr('Movement types', 'أنواع الحركات')) ?></span><strong><?= number_format($uniqueTypes) ?></strong><small><?= number_format($movementEntries) ?> <?= e($tr('dictionary entries', 'إدخالًا في القاموس')) ?></small></article>
        <article><span><?= e($tr('Engine runs', 'تشغيلات المحرك')) ?></span><strong><?= number_format((int)($summary['total_runs'] ?? 0)) ?></strong><small><?= number_format((int)($summary['running_runs'] ?? 0)) ?> <?= e($tr('running', 'قيد التشغيل')) ?> · <?= number_format((int)($summary['failed_runs'] ?? 0)) ?> <?= e($tr('failed', 'فاشل')) ?></small></article>
    </div>

    <section class="diar-command-section">
        <div class="section-heading"><div><h2><?= e($tr('Hospital data readiness', 'جاهزية بيانات المستشفيات')) ?></h2><p><?= e($tr('Each hospital runs locally and is checked independently.', 'يعمل كل مستشفى محليًا ويتم التحقق منه بصورة مستقلة.')) ?></p></div></div>
        <div class="hospital-readiness-grid">
            <?php foreach ($sites as $siteCode => $site):
                $displayReadiness = (string)($site['readiness_code'] ?? 'UNAVAILABLE');
                $coverage = max(0, min(100, (int)($site['coverage_percent'] ?? 0)));
                $latestRun = is_array($site['latest_run'] ?? null) ? $site['latest_run'] : [];
                $map = is_array($site['movement_map'] ?? null) ? $site['movement_map'] : [];
            ?>
                <article class="hospital-readiness-card readiness-<?= e(strtolower($displayReadiness)) ?>">
                    <div class="hospital-card-head">
                        <div><span class="hospital-code"><?= e((string)$siteCode) ?></span><h3><?= e($siteCode === 'NJCH' ? $tr('New Jeddah Clinic Hospital', 'مستشفى جدة الوطني الجديد') : $tr('Madinah National Hospital', 'مستشفى المدينة الوطني')) ?></h3><small><?= e((string)($site['source_db'] ?? '')) ?> · WATANY · <?= e($tr('Local engine', 'محرك محلي')) ?></small></div>
                        <span class="readiness-badge readiness-<?= e(strtolower($displayReadiness)) ?>"><?= e($readinessLabels[$displayReadiness] ?? $displayReadiness) ?></span>
                    </div>
                    <?php if (!empty($site['error'])): ?>
                        <div class="site-error"><?= e($tr('Connection or DIAR table check failed.', 'فشل فحص الاتصال أو جداول DIAR.')) ?></div>
                    <?php else: ?>
                        <div class="coverage-row"><div><span><?= e($tr('Historical coverage', 'التغطية التاريخية')) ?></span><strong><?= number_format($coverage) ?>%</strong></div><div class="coverage-track"><span style="width:<?= e((string)$coverage) ?>%"></span></div></div>
                        <div class="hospital-metrics">
                            <div><span><?= e($tr('Fact rows', 'صفوف الحقائق')) ?></span><strong><?= number_format((int)($site['fact_rows'] ?? 0)) ?></strong></div>
                            <div><span><?= e($tr('Profiles', 'الملفات الإحصائية')) ?></span><strong><?= number_format((int)($site['profile_count'] ?? 0)) ?></strong></div>
                            <div><span><?= e($tr('First day', 'أول يوم')) ?></span><strong><?= e((string)($site['first_fact_day'] ?: '—')) ?></strong></div>
                            <div><span><?= e($tr('Last day', 'آخر يوم')) ?></span><strong><?= e((string)($site['last_fact_day'] ?: '—')) ?></strong></div>
                        </div>
                        <div class="run-snapshot"><div><span><?= e($tr('Latest engine run', 'آخر تشغيل للمحرك')) ?></span><strong><?= e((string)($latestRun['run_type'] ?? $tr('No run', 'لا يوجد تشغيل'))) ?></strong></div><span class="run-status status-<?= e(strtolower((string)($latestRun['status_code'] ?? 'pending'))) ?>"><?= e($runLabels[(string)($latestRun['status_code'] ?? '')] ?? (string)($latestRun['status_code'] ?? '—')) ?></span><small><?= e((string)($latestRun['current_step'] ?? '')) ?></small></div>
                        <dl class="hospital-contract">
                            <div><dt><?= e($tr('Ready profiles', 'ملفات جاهزة')) ?></dt><dd><?= number_format((int)($site['profile_ready_count'] ?? 0)) ?></dd></div>
                            <div><dt><?= e($tr('Limited profiles', 'ملفات محدودة')) ?></dt><dd><?= number_format((int)($site['profile_limited_count'] ?? 0)) ?></dd></div>
                            <div><dt><?= e($tr('Sparse profiles', 'ملفات قليلة البيانات')) ?></dt><dd><?= number_format((int)($site['profile_sparse_count'] ?? 0)) ?></dd></div>
                            <div><dt><?= e($tr('Movement dictionary', 'قاموس الحركات')) ?></dt><dd><?= number_format((int)($map['source_type_count'] ?? 0)) ?> · <?= e((string)($map['status_code'] ?? '—')) ?></dd></div>
                        </dl>
                    <?php endif; ?>
                </article>
            <?php endforeach; ?>
        </div>
    </section>

    <section class="diar-command-section workflow-status-section">
        <div class="section-heading"><div><h2><?= e($tr('Implementation status', 'حالة مراحل التنفيذ')) ?></h2><p><?= e($tr('A prepared page or contract is not presented as live detection.', 'لا تُعرض الصفحة أو العقد المجهز باعتباره اكتشافًا فعليًا.')) ?></p></div></div>
        <div class="pipeline-grid">
            <?php
            $pipelineNames = [
                'FOUNDATION' => $tr('Oracle foundation', 'تأسيس Oracle'),
                'DAILY_FACT' => $tr('Daily movement facts', 'حقائق الحركات اليومية'),
                'STATISTICAL_PROFILES' => $tr('Statistical baselines', 'الخطوط الإحصائية'),
                'ANOMALY_DETECTION' => $tr('Deviation detection', 'اكتشاف الانحرافات'),
                'CASE_EVIDENCE' => $tr('Cases and evidence', 'القضايا والأدلة'),
                'NIGHTLY_AUTOMATION' => $tr('Nightly automation', 'التشغيل الليلي'),
            ];
            foreach ($pipeline as $index => $step): $status = (string)($step['status'] ?? 'PENDING'); $code = (string)($step['code'] ?? ''); ?>
                <article class="pipeline-step pipeline-<?= e(strtolower($status)) ?>"><span class="step-number"><?= number_format($index + 1) ?></span><div><strong><?= e($pipelineNames[$code] ?? $code) ?></strong><small><?= e($pipelineStatusLabels[$status] ?? $status) ?></small></div></article>
            <?php endforeach; ?>
        </div>
    </section>

    <details class="diar-command-section technical-tools-panel">
        <summary><span><strong><?= e($tr('Technical data and engine tools', 'البيانات التقنية وأدوات المحرك')) ?></strong><small><?= e($tr('For technical review and audit; not required for daily investigation.', 'للمراجعة التقنية والتدقيق، ولا تلزم للتحقيق اليومي.')) ?></small></span><b>⌄</b></summary>
        <div class="quick-link-grid operational-only">
            <?php if (!empty($capabilities['runs'])): ?><a href="<?= e(url_to('diar-engine-runs')) ?>"><span class="quick-status live"><?= e($tr('Live', 'متاح')) ?></span><strong><?= e($tr('Engine runs', 'تشغيلات المحرك')) ?></strong><span><?= e($tr('Run status, period, step and errors.', 'حالة التشغيل والفترة والخطوة والأخطاء.')) ?></span></a><?php endif; ?>
            <?php if (!empty($capabilities['movements'])): ?><a href="<?= e(url_to('diar-movement-dictionary')) ?>"><span class="quick-status live"><?= e($tr('Live', 'متاح')) ?></span><strong><?= e($tr('Movement dictionary', 'قاموس الحركات')) ?></strong><span><?= e($tr('Raw transaction codes and effects.', 'أكواد الحركات الخام وتأثيراتها.')) ?></span></a><?php endif; ?>
            <?php if (!empty($capabilities['facts'])): ?><a href="<?= e(url_to('diar-daily-facts')) ?>"><span class="quick-status live"><?= e($tr('Live', 'متاح')) ?></span><strong><?= e($tr('Daily facts', 'الحقائق اليومية')) ?></strong><span><?= e($tr('The exact daily aggregates used by the statistical engine.', 'التجميعات اليومية الدقيقة التي يستخدمها المحرك الإحصائي.')) ?></span></a><?php endif; ?>
        </div>
    </details>
</section>
