Saltar al contenido
Índice de Kit UI
Kit UI Componentes

Cola de trabajo.

Patrón canónico de cola de trabajo para cis-admin, cis-infra, cis-inbox, usaia y servicios internos.

Verlo por niveles

Primero el componente, después la variación de marca y finalmente su uso dentro de una página.

Nivel 1Componente canónico
Cola editorialSin atraso
PrioridadTrabajoEspera
AltaRender FYD12 s
Nivel 2COCHID · variación
Cola editorial4 pendientes
PrioridadTrabajoEspera
AltaRender FYD8 min
AltaPortada de la edición6 min
NormalBoletín semanal3 min
NormalÍndice de búsqueda40 s
Nivel 3Dentro de una página
Sitio · sección
Cola editorialSin atraso
PrioridadTrabajoEspera
AltaRender FYD12 s
Ver y copiar el código de este render
HTML del nivel canónico
<section class="ui-sample ui-service" data-queue="true"><header><strong>Cola editorial</strong><span class="badge badge--ok">Sin atraso</span></header><table><thead><tr><th>Prioridad</th><th>Trabajo</th><th>Espera</th></tr></thead><tbody><tr><td>Alta</td><td>Render FYD</td><td>12 s</td></tr></tbody></table></section>

Variaciones por marca y sitio

Cada cambio visible declara su autoridad; lo que permanece canónico no se vuelve a inventar en el producto.

innovacionsantiago.cl

Compañía de Innovación de Santiago

Autoridad: CONSTITUTION.md + LOGOS-CANONICOS.md
Cola editorialSin atraso
PrioridadTrabajoEspera
AltaRender FYD12 s

Cambia en esta marca

  • Navegación y contenido propios del servicio
  • Acento reservado para acciones y datos

Permanece canónico

  • Mark CIS y namebrand de tres líneas
  • IBM Plex Sans, foco, espaciado y anatomía
cochid.cl

COCHID

Autoridad: core-style/DECISIONES.md M15 y LOGOS-CANONICOS.md
Cola editorial4 pendientes
PrioridadTrabajoEspera
AltaRender FYD8 min
AltaPortada de la edición6 min
NormalBoletín semanal3 min
NormalÍndice de búsqueda40 s

Cambia en esta marca

  • Cuadrado azul y namebrand de tres líneas
  • Azul COCHID en selección, capas y series

Permanece canónico

  • Estructura y semántica comunes
  • Fuentes, unidades y alternativa tabular

Comparación histórica recuperable

Compara la propuesta con cortes reales del repositorio. La ausencia de una muestra se declara y nunca se reconstruye de memoria.

Estado actual
Cola de trabajo no tiene una implementación vigente demostrada; sus ejemplos son material candidato.
Cambio propuesto
Publicar en r19 el contrato de Cola de trabajo para Patrón canónico de cola de trabajo para cis-admin, cis-infra, cis-inbox, usaia y servicios internos.
Qué ocurre si respondes No
Cola de trabajo queda fuera de r19 y sus ejemplos siguen sólo como evidencia pendiente de reformulación.

Preparando comparación histórica…

Antes / r19

La comparación convierte una regla abstracta en una diferencia visible y verificable.

r19 · correctoContrato canónico renderizado
Cola editorialSin atraso
PrioridadTrabajoEspera
AltaRender FYD12 s
  • Conecta estado, timestamp y fuente al servicio real.
  • Explica impacto, recuperación y recibo cuando hay una falla.
Antes · problema observadoAnti-ejemplo no interactivo
CONFIRMADOServicio operativoSin healthcheck, timestamp ni recibo
  • No muestres CONFIRMADO o EN LÍNEA sin señal verificable.
  • No expongas secretos, tokens ni trazas con datos personales.

Responsive

La misma anatomía debe conservar lectura, foco y acciones sin cortar contenido ni crear scroll horizontal en la página.

320 pxMóvil y zoom
Cola editorialSin atraso
PrioridadTrabajoEspera
AltaRender FYD12 s
1280 pxEscritorio
Cola editorial4 pendientes
PrioridadTrabajoEspera
AltaRender FYD8 min
AltaPortada de la edición6 min
NormalBoletín semanal3 min
NormalÍndice de búsqueda40 s

Cobertura

DimensiónContrato
Propietario canónicoSistema de diseño CIS e Infraestructura · core/core-style
Consumidorescis-admin, cis-infra, cis-inbox, usaia y servicios internos
DependenciasAPI del servicio, recibos verificables
Estadocandidato

Evidencia de adopción

Patrón propuesto. 0 implementaciones observadas en 0 repositorios.

La observación demuestra uso existente; la aceptación canónica sigue dependiendo de esta ficha y de su propietario.

DatoResultado
ClasificaciónPatrón propuesto
Implementaciones0 implementaciones observadas
RepositoriosNingún repositorio observado
Snapshotkit/componentes/componentes-observados.json

Consumidores observados

El inventario conserva repositorio, archivo fuente y criterio de asociación. Observar una implementación no la convierte automáticamente en canónica.

Estados

Estado requerido
operativo
degradado
fallido
sin datos

Accesibilidad

  • Conserva nombre accesible, orden de lectura y foco visible.
  • Funciona a 320 px, con zoom de 200% y texto largo.
  • El color nunca es la única señal de estado o acción.
  • El contenido esencial permanece disponible sin JavaScript.

Código HTML

Copia el bloque completo; después cambia contenido y destinos, no su anatomía.

Código de referencia
<section class="ui-sample ui-service" data-queue="true"><header><strong>Cola editorial</strong><span class="badge badge--ok">Sin atraso</span></header><table><thead><tr><th>Prioridad</th><th>Trabajo</th><th>Espera</th></tr></thead><tbody><tr><td>Alta</td><td>Render FYD</td><td>12 s</td></tr></tbody></table></section>

Código TAILWIND

Copia el bloque completo; después cambia contenido y destinos, no su anatomía.

Código de referencia
<section class="ui-sample ui-service border border-slate-300 bg-white p-4 text-slate-950 grid gap-3" data-queue="true"><header class="flex flex-wrap items-center justify-between gap-3"><strong>Cola editorial</strong><span class="badge badge--ok">Sin atraso</span></header><table class="w-full border-collapse text-left"><thead><tr><th class="border-b border-slate-300 p-2 align-top">Prioridad</th><th class="border-b border-slate-300 p-2 align-top">Trabajo</th><th class="border-b border-slate-300 p-2 align-top">Espera</th></tr></thead><tbody><tr><td class="border-b border-slate-300 p-2 align-top">Alta</td><td class="border-b border-slate-300 p-2 align-top">Render FYD</td><td class="border-b border-slate-300 p-2 align-top">12 s</td></tr></tbody></table></section>

Código REACT

Copia el bloque completo; después cambia contenido y destinos, no su anatomía.

Código de referencia
export interface QueueRow {
  /** Prioridad del trabajo («Alta», «Normal»). */
  priority: string;
  /** Nombre del trabajo en cola. */
  label: string;
  /** Tiempo que lleva esperando, con su unidad («12 s», «8 min»). */
  wait: string;
}

/** Tono de la insignia de estado: `ok` sin atraso, `warn` con atraso o pendientes acumulados, `err` detenida, `neutral` sin tono. */
export type QueueTone = "ok" | "warn" | "err" | "neutral";

export interface QueueProps {
  /** Nombre de la cola. */
  title?: string;
  /** Estado visible de la cola: atraso o cantidad de pendientes («Sin atraso», «4 pendientes»); va en una insignia y vacío lo oculta. */
  status?: string;
  /** Tono de la insignia; sin valor se deduce de `status` («Sin atraso» → `ok`, «Con atraso» y «4 pendientes» → `warn`, «Detenida» → `err`) y si no lo reconoce es `neutral`. */
  statusTone?: QueueTone;
  /** Encabezados de las columnas de prioridad, trabajo y espera. */
  columns?: [priority: string, job: string, wait: string];
  /** Filas de la tabla: trabajos en cola, en orden de atención; vacío oculta la tabla. */
  rows?: QueueRow[];
  className?: string;
}

const QUEUE_COLUMNS: [string, string, string] = ["Prioridad", "Trabajo", "Espera"];

const QUEUE_ROWS: QueueRow[] = [{ priority: "Alta", label: "Render FYD", wait: "12 s" }];

const QUEUE_BADGE: Record<QueueTone, string> = {
  ok: "badge badge--ok",
  warn: "badge badge--warn",
  err: "badge badge--err",
  neutral: "badge",
};

const QUEUE_TONES: [string, QueueTone][] = [
  ["sin atraso", "ok"],
  ["al día", "ok"],
  ["atraso", "warn"],
  ["pendiente", "warn"],
  ["detenida", "err"],
  ["falló", "err"],
];

function queueTone(status: string, tone?: QueueTone): QueueTone {
  const texto = status.toLowerCase();
  return tone ?? QUEUE_TONES.find(([clave]) => texto.includes(clave))?.[1] ?? "neutral";
}

/**
 * Cola de trabajos pendientes con prioridad, nombre y tiempo de espera de cada uno; se usa en tableros de operación para ver el atraso de un proceso.
 *
 * Los trabajos van en una tabla en el orden en que se atienden. El estado va en texto dentro de una insignia con tono.
 *
 * @example <Queue title="Cola editorial" status="Sin atraso" rows={[{ priority: "Alta", label: "Render FYD", wait: "12 s" }]} />
 * @example <Queue status="3 pendientes" rows={[{ priority: "Alta", label: "Render FYD", wait: "8 min" }, { priority: "Normal", label: "Boletín semanal", wait: "3 min" }, { priority: "Normal", label: "Índice de búsqueda", wait: "40 s" }]} />
 */
export function Queue({
  title = "Cola editorial",
  status = "Sin atraso",
  statusTone,
  columns = QUEUE_COLUMNS,
  rows = QUEUE_ROWS,
  className,
}: QueueProps) {
  const [prioridad, trabajo, espera] = columns;
  return (
    <section className={["ui-service", className].filter(Boolean).join(" ")} data-queue>
      <header>
        <strong>{title}</strong>
        {status ? <span className={QUEUE_BADGE[queueTone(status, statusTone)]}>{status}</span> : null}
      </header>
      {rows.length ? (
        <table>
          <thead>
            <tr>
              <th>{prioridad}</th>
              <th>{trabajo}</th>
              <th>{espera}</th>
            </tr>
          </thead>
          <tbody>
            {rows.map((row, i) => (
              <tr key={`${row.label}-${i}`}>
                <td>{row.priority}</td>
                <td>{row.label}</td>
                <td>{row.wait}</td>
              </tr>
            ))}
          </tbody>
        </table>
      ) : null}
    </section>
  );
}