# Módulo: Services

> **Estado:** ✅ Production-ready (2026-04-28)
> **Doc técnica:** [`docs/backend3.0/services/README.md`](../../backend3.0/services/README.md)

---

## 1. Identidad

| Campo | Valor |
|-------|-------|
| **Nombre** | Services |
| **Slug** | `services` |
| **Cores que lo usan** | 21 |
| **Productos a la venta** | 6 de 8 (no personal-brand, restaurant-bar) |
| **Modelo principal** | `App\Modules\Services\Models\Service` |
| **Tabla principal** | `services` |
| **Tabla categorías** | `service_categories` |
| **Vista standalone** | `/services` |
| **Vista detail** | `/services/{slug}` |
| **CRUD admin** | `/admin/services` |

---

## 2. Defaults JSON — `database/seeders/project-data/defaults/services.json`

| Campo | Cantidad | Notas |
|-------|---------:|-------|
| Items principales | 5 | Genéricos universales |
| Categorías | 1 | "Servicios" |

5 servicios genéricos: Servicio Principal, Secundario, Asesoramiento Personalizado, Servicio Especializado, Acompañamiento Continuo. Cada uno con `icon` apuntando a `cd-project/img/defaults/services/icons/icon-{1..5}.svg`, `benefits[]`, `process_steps[]`, `cta_config{}`.

---

## 3. Asset pack — `public/cd-project/img/defaults/services/icons/`

| Archivo | Tipo | Notas |
|---------|------|-------|
| icon-1.svg ... icon-8.svg | SVG | Genéricos del demo accounting-1 (íconos de negocio neutros, 0.7-6KB) |

El blade detecta si el `icon` es path SVG (empieza con `cd-project/`) o FontAwesome class — y renderiza acorde.

---

## 4. Variables expuestas vía ViewComposer

| Variable | Origen | Dónde se usa |
|----------|--------|--------------|
| `$services` | módulo services | layout.front.*, modules.cd-base.frontend.* (todos) |
| `$featuredServices` | módulo services (is_featured=1) | idem |
| `$serviceCategories` | módulo services | layout.front.headers.*, components header-nav (auto-fetch) |
| `$headerServices` | módulo services (todos activos para dropdown) | layout.front.headers.*, components header-nav (auto-fetch) |

---

## 5. Vistas

### Frontend
| Archivo | Notas |
|---------|-------|
| `resources/views/modules/services/frontend/services.blade.php` | Listing universal con `dynamic-header` partial por demo |
| `resources/views/modules/services/frontend/service-detail.blade.php` | Detail completo (subtitle, description, benefits, process, FAQ, CTA) |
| `resources/views/modules/services/frontend/service-page.blade.php` | Variante de detail |
| `resources/views/modules/services/frontend/partials/dynamic-header.blade.php` | Cases por demo |

### Demo-specific
| Demo | Bloque | Render |
|------|--------|--------|
| demo-law-firm-2 | welcome.blade L88-164 | Owl carousel cards, íconos SVG temáticos legales |
| (otros demos) | sus propios welcome | varían |

### Admin
| Archivo | Notas |
|---------|-------|
| `resources/views/modules/services/admin/index.blade.php` | DataTable + actions |
| (modal/page create/edit) | |

---

## 6. CRUD admin

- **Ruta**: `/admin/services`
- **Permisos**: `services.view`, `services.create`, `services.edit`, `services.delete`
- **Funcionalidades**: listing + create/edit + delete + toggle active + toggle featured + categorías + bulk delete

---

## 7. Comandos artisan

| Comando | Función |
|---------|---------|
| `bewpro:clean-services` | Limpia services y service_categories |
| `bewpro:refresh-services` | Re-seedea desde defaults JSON |

---

## 8. Mejoras 2026-04-28

| Archivo | Cambio |
|---------|--------|
| `defaults/services.json` | Aumentado de 3 a 5 servicios. Cambiado `icon` de FontAwesome class a paths SVG defaults (`cd-project/img/defaults/services/icons/icon-{N}.svg`). Beneficios + process_steps + cta_config para cada servicio. |
| Asset pack | Carpeta `public/cd-project/img/defaults/services/icons/` con 8 íconos SVG genéricos (copiados de demo accounting-1). |

---

## 9. Auditoría — 30 items

| Bloque | Items pasan | Estado |
|--------|-------------|--------|
| 1. Identidad y código (4) | 4/4 | ✅ |
| 2. Defaults JSON (6) | 6/6 | ✅ |
| 3. Asset pack (5) | 5/5 | ✅ |
| 4. Vistas (6) | 6/6 | ✅ |
| 5. Integración sistema (5) | 5/5 | ✅ (header dropdown 5 items, footer recent OK) |
| 6. CRUD admin (4) | 4/4 | ✅ |
| **TOTAL** | **30/30** | ✅ |

**Veredicto**: ✅ Production-ready

---

## 10. Bugs conocidos

- `service-page.blade.php` y `service-detail.blade.php` conviven; revisar si una es legacy.
- Comandos `bewpro:clean-services` y `bewpro:refresh-services` no testeados en esta sesión.

---

## 11. Referencias

- Doc técnica: [`docs/backend3.0/services/README.md`](../../backend3.0/services/README.md)
- Demo integration: [`DEMO-INTEGRATION-PATTERN.md`](DEMO-INTEGRATION-PATTERN.md)
