# Contexto — renombre Lab → Órdenes (`/ordenes`)

**Fecha:** 2026-08-03  
**Estado:** implementado  
**Alcance:** label de navegación + ruta canónica del tablero kanban de laboratorio.

## Decisión

| Antes | Después |
|-------|---------|
| Label nav admin: **Lab** | **Órdenes** |
| Label nav laboratorista: **Tablero** | **Órdenes** |
| Ruta canónica: `/lab` | `/ordenes` |
| Home laboratorista: `/lab` | `/ordenes` |

**Por qué:** “Lab” era ambiguo (el producto entero es un LIMS/lab). La pantalla es un kanban de **órdenes de trabajo** (ventas cobradas → muestras/estudios como subtareas). “Órdenes” describe la entidad de negocio y alinea label + URL.

## Qué es la sección

Tablero Kanban de laboratorio (`Lab\Tablero`):

- Columnas: **Pendiente → En proceso → En revisión → Completada**
- Unidad de tarjeta: orden (venta cobrada); estudios = subtareas (`muestra`)
- Acciones: cambiar estado (orden/muestra), asignar laboratorista, comentarios, captura de resultados (modal o `/captura/{id}`)
- Filtros: todas / mías / sin asignar; búsqueda paciente/folio/CDB

Rutas hermanas (sin cambio de path):

| Ruta | Uso |
|------|-----|
| `/captura/{id}` | Formulario de captura (AJAX o página) |
| `/capturas` | Listado de capturados + ver/imprimir/PDF |

## Rutas

**Canónicas** (`filter`: `auth` + `group:admin,laboratorista`):

```
GET  /ordenes
GET  /ordenes/datos
POST /ordenes/orden/{idventa}/estado
POST /ordenes/muestra/{id}/estado
POST /ordenes/muestra/{id}/asignar
GET  /ordenes/muestra/{id}/comentarios
POST /ordenes/muestra/{id}/comentarios
```

**Legacy (redirect → `/ordenes`)** vía `Lab\Pendientes::index`:

- `GET /lab`
- `GET /pendientes`

## Archivos tocados

| Archivo | Cambio |
|---------|--------|
| `app/Config/Routes.php` | Rutas `ordenes/*`; legacy `lab` y `pendientes` |
| `app/Controllers/Lab/Pendientes.php` | Redirect a `/ordenes` |
| `app/Controllers/Lab/Captura.php` | Redirects post-captura/error → `/ordenes` |
| `app/Controllers/Lab/Tablero.php` | Comentario de ruta |
| `app/Controllers/Home.php` | Home laboratorista → `/ordenes` |
| `app/Controllers/Auth.php` | Post-login laboratorista → `/ordenes` |
| `app/Views/layouts/admin.php` | Nav: url/label/match `ordenes` |
| `app/Views/layouts/lab.php` | `homeUrl` + nav `ordenes` |
| `app/Views/lab/tablero/index.php` | `base_url('ordenes…')` en form y data-attrs |
| `app/Views/lab/captura/form.php` | Link volver → `ordenes` |
| `public/js/lab-tablero.js` | Fallback URL estado orden |
| `app/Config/DocumentacionFaq.php` | FAQ con `/ordenes` |
| `docs/PLAN_SEO.md` | `Disallow: /ordenes` (plan) |
| `docs/ANALISIS_CONTEXTO.md` | Home lab actualizado |
| `CLAUDE.md` | Homes + nota legacy |

**Sin renombrar** (intencional): namespace `App\Controllers\Lab`, vistas `app/Views/lab/`, layout `layouts/lab`, JS/CSS `lab-*`, columnas BD `lab_status`, helper `lab`. Solo cambió la **ruta HTTP y el copy de menú**.

## Homes por rol (actual)

| Grupo | Home |
|-------|------|
| `admin` | `/dashboard` |
| `empleado` | `/inicio` (POS en `/cotizacion`) |
| `laboratorista` | `/ordenes` |
| `superadmin` | `/super` |

## Notas para agentes

1. Enlaces nuevos al tablero: siempre `base_url('ordenes')` o `/ordenes`, no `/lab`.
2. El match del nav admin incluye `ordenes*`, `lab*`, `pendientes*`, `capturas*`, `captura*` para resaltar el ítem en rutas hermanas y legacy.
3. El fallback en `lab-tablero.js` es `/ordenes/orden/`; las URLs reales salen de `data-url-*` en el DOM.
4. No confundir con “órdenes” de compra u otro módulo: aquí = órdenes de trabajo de lab (post-venta).
5. Registrar avances relacionados en la bitácora de `PLAN_ACTUALIZACION.md`.

## Pendiente opcional (fuera de este cambio)

- Título H1 de la vista sigue diciendo “Tablero de laboratorio” (puede alinearse a “Órdenes” si se quiere consistencia total de copy).
- Preview de landing (`public/landing.php`) aún muestra “Laboratorio” en el mock de nav — copy marketing, no la app.
- Históricos en `docs/PLAN_ACTUALIZACION.md` / auditorías antiguas mencionan `/lab`; no reescribir historia salvo bitácora nueva.
