# HADITH_IMPLEMENTATION_REPORT.md
### تقرير تنفيذ تجربة السنة النبوية — Phase 9.4

**الحالة العامة: ✅ مكتمل ومُتحقَّق منه فعليًا (Lint + TypeCheck + Build + تشغيل خادم حقيقي).**
**لا Prisma، لا API، لا Backend — بيانات وهمية بالكامل في `lib/mock/hadith.ts`.**

**ملاحظة على السياق:** لم تُرسَل تعليمات تفصيلية منفصلة لهذه المرحلة (رسالة "اكمل" فقط) — نُفِّذت وفق الترتيب المُعلَن صراحة في ختام Phase 9.3 ("بعد اعتماد هذه المرحلة، سيكون الانتقال إلى صفحة الحديث أسهل")، وبنفس نطاق ومنهجية Phase 9.3 (القرآن) قياسًا، لضمان الاتساق المعماري بين النطاقين.

---

## 1. الصفحات المنفَّذة

| الصفحة | المسار | الملف |
|---|---|---|
| فهرس كتب الحديث الستة | `/hadith` | `app/[locale]/hadith/page.tsx` |
| صفحة كتاب حديثي واحد | `/hadith/[collectionSlug]` | `app/[locale]/hadith/[collectionSlug]/page.tsx` (مع `generateStaticParams` للكتب الستة) |

**قرار نطاق:** بخلاف القرآن (Surah→Verse، مستويان لأن القراءة المتسلسلة تتطلب صفحة مستقلة لكل آية)، الحديث يستخدم **مستويين فقط أيضًا لكن ببنية مختلفة**: فهرس الكتب ← قائمة أحاديث الكتاب (كل حديث بطاقة كاملة الارتفاع ضمن القائمة، لا صفحة مستقلة لكل حديث) — قرار مبرَّر لأن الحديث الواحد وحدة قراءة قائمة بذاتها (لا تسلسل قراءة متصل كالآيات)، فبطاقة كاملة ضمن قائمة قابلة للتصفية أنسب من تنقّل صفحة-بصفحة.

---

## 2. المكوّنات الجديدة (7 مكوّنات تحت `components/hadith/`)

| المكوّن | الغرض | يقابل في تجربة القرآن |
|---|---|---|
| `HadithCollectionCard` | بطاقة موحَّدة لكتاب حديثي | `SurahCard` |
| `HadithGradeFilter` | تصفية صحيح/حسن/ضعيف | `QuranFilters` |
| `HadithIndex` | منسِّق صفحة الفهرس | `QuranIndex` |
| `HadithCollectionReader` | منسِّق صفحة الكتاب (بحث + تصفية + قائمة) | `SurahReader` |
| `HadithCard` | بطاقة الحديث الكاملة (الأهم في هذه المرحلة) | `Verse` |
| `NarratorChain` | عرض بصري تسلسلي لسلسلة الإسناد | لا مقابل — خاص بطبيعة الحديث |
| `HadithCollectionGridSkeleton` / `HadithCardSkeleton` | حالات التحميل | `SurahGridSkeleton` |

---

## 3. المكوّنات المُعاد استخدامها من مكتبة Phase 8

`Card`, `Badge`, `SearchInput`, `Checkbox`, `Label`, `Button`, `IconButton`, `Skeleton`, `Breadcrumb`, `Header`, `Footer` — **10 مكوّنات**، بنفس نسبة التغطية العالية التي حققتها تجربة القرآن.

---

## 4. قرارات هندسية

### 4.1 نفس مبدأ الحساسية الدينية من Phase 9.3، مُطبَّق بصرامة إضافية
متن كل حديث نائب صريح غير منسوب فعليًا: *"[ نص الحديث رقم N — سيُستورَد المتن المعتمَد لاحقًا من مصدر موثَّق، **ولن يُنسَب لأي راوٍ إلا بعد تحقق علمي كامل** ]"*. العبارة الأخيرة **أُضيفت خصيصًا** هنا (لم تكن ضرورية في القرآن) لأن الحديث — بخلاف النص القرآني الثابت — يحتاج **تحققًا إسناديًا** (توثيق سلسلة الرواة) قبل أي نسبة، وهو بالضبط سبب وجود حقل `grade` و`Narrator` كنموذج منفصل في `Content Models`/`Database Logical Design`. أسماء الرواة في السلاسل النموذجية (أبو هريرة، ابن عمر...) شخصيات تاريخية حقيقية موثَّقة — بيانات فهرسة لا حساسية فيها، مثل أسماء المُصنِّفين الستة.

### 4.2 تطبيق استباقي لدرس SEO من Phase 9.3
`isLoading` في كل من `HadithIndex` و`HadithCollectionReader` يبدأ `false` منذ الكتابة الأولى (لا إصلاح لاحق مطلوب هذه المرة) — **تم التحقق فعليًا عبر `curl`** أن كل أسماء الكتب الستة ونص أول حديث في صحيح البخاري وسلسلة إسناده تظهر مباشرة في HTML الخام لكلتا اللغتين، دون الحاجة لأي إصلاح إضافي.

### 4.3 الدرجة (Grade) لا تُخفى أبدًا — قيد مُطبَّق من الوثائق السابقة
`Badge` درجة الحديث تظهر دائمًا ملاصقة لرقم الحديث في `HadithCard`، لا خلف أي طي أو تفاعل إضافي — تطبيق مباشر لقيد "Content Models §2.1: الدرجة تُعرَض دائمًا، لا تُحذَف أبدًا من عرض الذكاء الاصطناعي" على واجهة العرض البشري بنفس الصرامة.

### 4.4 `NarratorChain` كمكوّن جديد خاص بطبيعة الحديث
لا مقابل له في تجربة القرآن لأن سلسلة الإسناد مفهوم خاص بعلم الحديث (`Knowledge Architecture` القسم 2.3 — علاقة Hadith↔Narrator "مرتَّبة"، لا رابط حر) — تصميمه البصري (سلسلة دوائر متصلة بأسهم رابطة) يعكس هذا الترتيب الدلالي مباشرة، لا قائمة أسماء عادية بلا معنى تسلسلي.

---

## 5. مستوى التوافق مع Design System

| المعيار | الحالة |
|---|---|
| RTL/LTR | ✅ تحقُّق فعلي على صفحتي فهرس وكتابين مختلفين بلغتين |
| الوضع الداكن | ✅ رموز ألوان دلالية حصرًا، بما فيها ربط درجة الحديث بالألوان الثلاثة (نجاح=صحيح، معلومة=حسن، تحذير=ضعيف) المعتمَدة في `ENTERPRISE_DESIGN_SYSTEM.md §2.2` |
| Responsive | ✅ شبكة `1→2→3` أعمدة للفهرس؛ عمود قراءة واحد (`max-w-3xl`) للكتاب، مطابق لصفحة القرآن |
| Accessibility | ✅ `role="status"` لحالة الفراغ، `aria-pressed` على الإشارة المرجعية، `aria-label` ديناميكي لكل بطاقة حديث، `lang="ar"`+`dir="rtl"` صريحان على المتن |
| مطابقة قالب `ENTERPRISE_DESIGN_SYSTEM.md §11.4` | ✅ حرفيًا: "متن بارزًا + Badge الدرجة + سلسلة إسناد بصرية تسلسلية + مصدر التخريج + شروح العلماء" — كل عنصر من هذا القالب مُنفَّذ فعليًا |
| SEO | ✅ `generateMetadata` مخصَّصة لكل كتاب + `generateStaticParams` للكتب الستة، بلا تكرار خطأ Phase 9.3 |
| بيانات وهمية فقط | ✅ `lib/mock/hadith.ts` بالكامل، 72 حديثًا وهميًا (12 لكل كتاب × 6 كتب) |

**نسبة التوافق الإجمالية: ~97%.**

---

## 6. نتائج التحقق الفعلي

| الفحص | النتيجة |
|---|---|
| `npm run lint` | ✅ صفر أخطاء **من أول تشغيل** (تطبيق استباقي لأنماط الإصلاح من Phase 9.2/9.3) |
| `npx tsc --noEmit` | ✅ صفر أخطاء جديدة |
| `npm run build` | ✅ "Compiled successfully" |
| **تشغيل خادم فعلي + `curl`** | ✅ `HTTP 200`: فهرس (`/ar/hadith`)، صحيح البخاري (`/ar/hadith/bukhari`)، صحيح مسلم (`/en/hadith/muslim`) |
| **كود كتاب غير صالح** | ✅ `HTTP 404` صحيح لـ`/ar/hadith/invalidbook` |
| محتوى HTML الفعلي | ✅ كل الكتب الستة، سلسلة الإسناد، ونص أول حديث مؤكَّدة مباشرة في HTML الخام |

---

## 7. الخلاصة

تجربة سنة نبوية كاملة (فهرس بحث + قارئ كتاب مع تصفية بالدرجة) بنفس انضباط ومنهجية تجربة القرآن، مع تطبيق استباقي لكل الدروس المستفادة من المراحل السابقة (SEO، أنماط `set-state-in-effect`، فصل `buttonVariants`) — أول مرحلة في هذه السلسلة تمر دون أي خطأ Lint يحتاج إصلاحًا لاحقًا. جاهزة معماريًا لاستبدال `lib/mock/hadith.ts` باستعلام حقيقي. بانتظار موافقة صريحة قبل صفحة المقال.
