# WP6 — واجهة: شاشة إدارة الوسوم + تقرير «المنصرف حسب الوسم»

**التذكرة:** ISS-2026-9296 · **الريبو:** FE (`/home/moonui2/public_html/moon-erp`, فرع `hazemdev2`)

## الهدف
حاجتان:
1. **شاشة إدارة الوسوم** — عرض/إضافة/تعديل/إقفال/فتح/حذف.
2. ⭐ **تقرير «المنصرف حسب الوسم»** — وده **جوهر التذكرة كلها**: العميل قال حرفيًا «هو مثلًا **صرف 5 مرات في اليوم على نفس الشغلانة** يعرف يراقب هو بيعمل إيه». كل اللي اتبنى قبل كده موجود عشان التقرير ده.

## عقد الـAPI (منفَّذ ومختبَر — التزم بيه حرفيًا)
**الوسوم:**
- `GET /api/inventory/issue-tags?status=active|closed|all&search=&page=` — مصفّح، company-scoped، **الافتراضي `status=active`** ⇒ **شاشة الإدارة لازم تبعت `status=all`** وإلا المقفولة هتختفي عن الأدمن.
- `POST /api/inventory/issue-tags` `{name, name_ar?, description?}` — صلاحية `inventory.issue-tags.create`
- `GET|PUT|DELETE /api/inventory/issue-tags/{id}` — صلاحيات `…view` / `…update` / `…delete`
- `GET /api/inventory/issue-tags/similar?name=&exclude_id=` — لحد 5 وسوم قريبة (**تحذير مش منع**)
- الإقفال/الفتح عن طريق `status` في الـPUT (`active` / `closed`).

**التقرير** (⚠️ **اقرا الشكل النهائي من الباك إند قبل ما تكتب** — الحقول اتثبتت في WP3 وموثّقة في `LEDGER.md` تحت «WP3 — التنفيذ»):
- `GET /api/inventory/reports/issue-tags?from=&to=&status=&search=&page=` — ملخّص لكل وسم فيه على الأقل: الاسم · الحالة · **`issues_count`** · عدد الأصناف · إجمالي الكمية · أول وآخر صرف · **وقيمة إجمالية تظهر فقط لو صلاحية عرض التكلفة متوفّرة**.
- `GET /api/inventory/reports/issue-tags/{tag}?from=&to=` — تفصيل: أذون الصرف على الوسم (رقم الإذن · التاريخ · المخزن · الحالة · الأصناف والكميات).

⚠️ **حقول القيمة بتكون غايبة تمامًا من الرد لما الصلاحية مش متوفّرة** (مش صفر ولا null). ⇒ الواجهة لازم **تخفي العمود** لما الحقل غايب — **ماتعرضش صفرًا ولا شرطة**. عرض صفر معناه «الشغلانة دي ما كلّفتش حاجة» وده أسوأ من عدم العرض.

## المكان
- **شاشة الإدارة:** شاشة مستقلة على نمط شاشات الـCRUD البسيطة في الموديول (زي `warehouses`)، بمسار تحت مجموعة `/core/...` وصلاحية `inventory.issue-tags` في الـroute data، **ومدخل في القائمة الجانبية** تحت مجموعة المخزون (`sidebar.component.ts` — شوف `NAV.STOCK_ISSUES` :398 كنموذج، وأضف المدخل لقائمة مسارات المخزون في :590+ عشان الموديول النشط يتحدّد صح).
- **التقرير:** ⭐ فيه **مركز تقارير مخزون موجود** — `src/app/features/inventory-reports/inventory-reports.component.{ts,html}` (`/core/inventory-reports`) وهو **مبني بـ`p-tabs`** (الملف فيه `<p-tabs [value]="activeTab()" (valueChange)="onTabChange($event)">` :15). ⇒ **ضيف التقرير كتبويب جديد هناك، ماتعملش شاشة منفصلة** — ده مكانه الطبيعي واللي المستخدم بيدوّر فيه.

## المطلوب في التقرير (بالتحديد)
- جدول ملخّص، **العمود الأبرز فيه `issues_count`** («عدد مرات الصرف») — ده الرقم اللي العميل بيراقب بيه.
- **فلتر فترة (من → إلى)** ظاهر ومهم — «5 مرات في اليوم» لازم تبان.
- الضغط على صف الوسم ⇒ **تفصيل** أذونه (حوار أو صف موسّع — اتبع نمط الشاشة).
- فلتر حالة (نشط/مقفول/الكل) — **الوسم المقفول لسه ليه تقرير** (قرار العميل: أرشيف).
- عمود القيمة **يظهر بس لو الحقل موجود في الرد**.
- زرار تصدير لو التبويبات التانية في نفس المركز عندها زرار تصدير — **اتبع الموجود، ماتضيفش آلية جديدة**.

## قيود
- ⛔ **ماتلمسش** التبويبات الموجودة في مركز التقارير ولا أي شاشة تانية.
- ⛔ **ماتلمسش** `stock-issues.component.*` — فيه WP تاني شغّال عليها.
- كل نص جديد بمفتاح في **`ar.json` و`en.json`** الاتنين. RTL أولًا.
- **بمّت `I18N_VERSION`** في `src/app/app.config.ts` (⚠️ اقرا القيمة الحالية — WP تاني بمّها؛ زوّد اللاحقة من اللي هتلاقيها).
- الصلاحيات: أزرار الإضافة/التعديل/الحذف كل واحد متبوّب على صلاحيته. **وماتعطّلش** كنترول في فورم عشان الصلاحية — أخفي الزرار أو اعرض رسالة (كنترول معطّل بيتشال من `form.value` وبيسبّب 422 صامت — درس متعلَّم من تذكرة سابقة).

## معايير القبول
1. شاشة الإدارة بتعرض **المقفولة كمان** (بتبعت `status=all`)، والإقفال/الفتح شغّال.
2. تحذير الاسم المتقارب شغّال في شاشة الإدارة كمان (نفس مسار `similar`).
3. **5 أذون معتمدة على نفس الوسم ⇒ التقرير يوري `issues_count = 5`** بالأصناف والكميات. ← اختبار قبول المالك الحرفي.
4. فلتر الفترة بيقصّ صح.
5. **عمود القيمة مختفي تمامًا** لمستخدم بلا صلاحية التكلفة (مش صفر ولا شرطة).
6. التبويبات الموجودة في مركز التقارير ما اتأثرتش، والبناء أخضر.

## التحقّق
```bash
cd /home/moonui2/public_html/moon-erp && npx ng build --base-href /app/
```
أخضر بلا تحذير **جديد** (الموجود: CommonJS bailouts لـcanvg/jsbarcode/qrcode/file-saver/html2canvas + تجاوزَي ميزانية SCSS في شاشتَي LIS). **ماتنشرش على `/app`** — النشر شغلي.

## بعد الانتهاء
`chown -R moonui2:moonui2` على أي ملف عدّلته (و`dist/`). **بلا commit وبلا git.**
