Skip to main content

Introducción

Las muestras representan análisis de control de calidad realizados durante el proceso productivo. Cada muestra puede estar asociada a un lote, bitácora, proceso y máquina específicos, permitiendo trazabilidad completa de los resultados de calidad. Campos clave:
  • codigo_muestra: Identificador único de la muestra
  • lote_id: Lote asociado (opcional, permite vincular con producción)
  • resultado: Resultado del análisis (ej: “aprobado”, “rechazado”, “condicional”)
  • parametro: Parámetro medido (ej: “tensión”, “humedad”, “resistencia”)
  • valor: Valor medido en el análisis
  • valor_nominal: Valor esperado o de referencia
Relaciones:
  • Vinculada a un lote (lote_id) para trazabilidad con producción
  • Asociada a una bitácora de turno (bitacora_id)
  • Relacionada con un proceso específico (proceso_id)
  • Puede estar ligada a una máquina (maquina_id)

Listar Muestras por Lote

curl -X GET https://api.prod-sys.com/api/muestras/lote/45 \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json"
{
  "status": "success",
  "data": [
    {
      "id": 201,
      "codigo_muestra": "M-2025-001-003-001",
      "fecha_analisis": "2025-11-15",
      "lote_id": 45,
      "bitacora_id": 89,
      "proceso_id": 3,
      "maquina_id": 12,
      "resultado": "aprobado",
      "valor": "850",
      "parametro": "tensión",
      "valor_nominal": "800-900",
      "usuario_modificacion": "operador.calidad",
      "fecha_modificacion": "2025-11-15T09:30:00Z"
    },
    {
      "id": 202,
      "codigo_muestra": "M-2025-001-003-002",
      "fecha_analisis": "2025-11-15",
      "lote_id": 45,
      "bitacora_id": 89,
      "proceso_id": 3,
      "maquina_id": 12,
      "resultado": "rechazado",
      "valor": "12.5",
      "parametro": "humedad",
      "valor_nominal": "8-10",
      "usuario_modificacion": "operador.calidad",
      "fecha_modificacion": "2025-11-15T11:45:00Z"
    },
    {
      "id": 203,
      "codigo_muestra": "M-2025-001-003-003",
      "fecha_analisis": "2025-11-15",
      "lote_id": 45,
      "bitacora_id": 90,
      "proceso_id": 5,
      "maquina_id": null,
      "resultado": "aprobado",
      "valor": "95.2",
      "parametro": "resistencia",
      "valor_nominal": ">=90",
      "usuario_modificacion": "laboratorio.turno1",
      "fecha_modificacion": "2025-11-15T14:20:00Z"
    }
  ]
}
GET /api/muestras/lote/:id Retorna todas las muestras de control de calidad asociadas a un lote específico.

Path Parameters

id
integer
required
ID del lote

Headers

Authorization
string
required
Token de autenticación Bearer

Respuesta

status
string
Estado de la respuesta (success)
data
array
Array de objetos muestra
id
integer
ID único de la muestra
codigo_muestra
string
Código identificador único de la muestra
fecha_analisis
string
Fecha en que se realizó el análisis (YYYY-MM-DD)
lote_id
integer
ID del lote asociado
bitacora_id
integer
ID de la bitácora de turno donde se tomó la muestra
proceso_id
integer
ID del proceso productivo asociado
maquina_id
integer
ID de la máquina donde se tomó la muestra
resultado
string
Resultado del análisis (ej: “aprobado”, “rechazado”, “condicional”)
valor
string
Valor medido en el análisis
parametro
string
Parámetro analizado (ej: “tensión”, “humedad”, “resistencia”)
valor_nominal
string
Valor esperado o rango de referencia
usuario_modificacion
string
Usuario que registró la muestra
fecha_modificacion
string
Timestamp de creación/modificación del registro

Crear Nueva Muestra

curl -X POST https://api.prod-sys.com/api/muestras \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "codigo_muestra": "M-2025-001-003-004",
    "fecha_analisis": "2025-11-16",
    "lote_id": 45,
    "bitacora_id": 91,
    "proceso_id": 3,
    "maquina_id": 12,
    "resultado": "aprobado",
    "valor": "875",
    "parametro": "tensión",
    "valor_nominal": "800-900",
    "usuario_modificacion": "operador.calidad"
  }'
{
  "status": "success",
  "data": {
    "id": 204,
    "codigo_muestra": "M-2025-001-003-004",
    "fecha_analisis": "2025-11-16",
    "lote_id": 45,
    "bitacora_id": 91,
    "proceso_id": 3,
    "maquina_id": 12,
    "resultado": "aprobado",
    "valor": "875",
    "parametro": "tensión",
    "valor_nominal": "800-900",
    "usuario_modificacion": "operador.calidad",
    "fecha_modificacion": "2025-11-16T08:15:00Z"
  }
}
POST /api/muestras Crea un nuevo registro de muestra de control de calidad.

Headers

Authorization
string
required
Token de autenticación Bearer
Content-Type
string
required
application/json

Body Parameters

codigo_muestra
string
required
Código único identificador de la muestra
fecha_analisis
string
Fecha del análisis en formato YYYY-MM-DD. Si no se proporciona, se usa la fecha actual
lote_id
integer
ID del lote asociado (opcional, permite vincular con producción)
bitacora_id
integer
ID de la bitácora de turno donde se tomó la muestra
proceso_id
integer
ID del proceso productivo asociado
maquina_id
integer
ID de la máquina donde se tomó la muestra (opcional)
resultado
string
required
Resultado del análisis. Valores típicos: “aprobado”, “rechazado”, “condicional”
valor
string
required
Valor medido en el análisis
parametro
string
required
Parámetro analizado (ej: “tensión”, “humedad”, “resistencia”, “pH”)
valor_nominal
string
required
Valor esperado o rango de referencia
usuario_modificacion
string
required
Usuario que registra la muestra

Permisos Requeridos

  • MANAGE_QUALITY: Gestionar registros de calidad

Respuesta

status
string
Estado de la respuesta (success)
data
object
Muestra creada con la misma estructura que en el listado, incluyendo:
id
integer
ID asignado a la nueva muestra
fecha_modificacion
string
Timestamp de creación del registro

Reglas de Negocio

  1. Fecha automática: Si no se proporciona fecha_analisis, el sistema usa la fecha actual
  2. Campos opcionales: Los campos lote_id, bitacora_id, proceso_id y maquina_id son opcionales
  3. Trazabilidad: Se recomienda siempre vincular con lote_id cuando la muestra corresponda a un lote específico
  4. Usuario registrado: El campo usuario_modificacion es obligatorio para auditoría

Modelo de Datos

Tabla muestras

CREATE TABLE muestras (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  codigo_muestra TEXT NOT NULL UNIQUE,
  fecha_analisis TEXT NOT NULL,
  lote_id INTEGER,
  bitacora_id INTEGER,
  proceso_id INTEGER,
  maquina_id INTEGER,
  resultado TEXT NOT NULL,
  valor TEXT NOT NULL,
  parametro TEXT NOT NULL,
  valor_nominal TEXT NOT NULL,
  usuario_modificacion TEXT NOT NULL,
  fecha_modificacion TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (lote_id) REFERENCES lotes(id),
  FOREIGN KEY (bitacora_id) REFERENCES bitacora_turno(id),
  FOREIGN KEY (proceso_id) REFERENCES procesos(id),
  FOREIGN KEY (maquina_id) REFERENCES MAQUINAS(id)
);

Índices Recomendados

CREATE INDEX idx_muestras_lote_id ON muestras(lote_id);
CREATE INDEX idx_muestras_fecha_analisis ON muestras(fecha_analisis);
CREATE INDEX idx_muestras_resultado ON muestras(resultado);
CREATE UNIQUE INDEX idx_muestras_codigo ON muestras(codigo_muestra);

Integración con Lotes

Consulta de Muestras en Trazabilidad de Lotes

Cuando se consulta la trazabilidad completa de un lote mediante /api/lotes/:id/trazabilidad, se puede complementar con las muestras asociadas:
# 1. Obtener trazabilidad del lote
curl -X GET https://api.prod-sys.com/api/lotes/45/trazabilidad \
  -H "Authorization: Bearer {token}"

# 2. Obtener muestras del lote
curl -X GET https://api.prod-sys.com/api/muestras/lote/45 \
  -H "Authorization: Bearer {token}"
Esto permite construir una vista completa:
  • Producción: Dónde se produjo el lote (bitácora, fecha, usuario)
  • Consumo: Dónde se consumió (telares, fechas, turnos)
  • Calidad: Resultados de análisis de muestras asociadas
  • Historial: Cambios de estado del lote

Ejemplo de Análisis de Calidad

// Ejemplo: Identificar lotes con muestras rechazadas
const loteId = 45;

// 1. Obtener información del lote
const lote = await fetch(`/api/lotes/${loteId}/trazabilidad`);

// 2. Obtener muestras del lote
const muestras = await fetch(`/api/muestras/lote/${loteId}`);

// 3. Analizar resultados
const muestrasRechazadas = muestras.data.filter(
  m => m.resultado === 'rechazado'
);

if (muestrasRechazadas.length > 0) {
  console.log(`Lote ${lote.data.lote.codigo_lote} tiene ${muestrasRechazadas.length} muestras rechazadas`);
  
  // Si hay muestras rechazadas, considerar pausar el lote
  await fetch(`/api/lotes/${loteId}/estado`, {
    method: 'PATCH',
    body: JSON.stringify({
      estado: 'pausado',
      comentario: `Muestras rechazadas: ${muestrasRechazadas.map(m => m.codigo_muestra).join(', ')}`
    })
  });
}

Casos de Uso Comunes

1. Registro de Análisis Físico

# Muestra de tensión en proceso de bobinado
curl -X POST https://api.prod-sys.com/api/muestras \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "codigo_muestra": "M-BOB-2025-123",
    "lote_id": 45,
    "bitacora_id": 89,
    "proceso_id": 3,
    "maquina_id": 12,
    "resultado": "aprobado",
    "valor": "850",
    "parametro": "tensión_grf",
    "valor_nominal": "800-900",
    "usuario_modificacion": "operador.calidad"
  }'

2. Registro de Análisis Químico

# Análisis de pH en proceso de tratamiento
curl -X POST https://api.prod-sys.com/api/muestras \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "codigo_muestra": "M-QUIM-2025-045",
    "bitacora_id": 91,
    "proceso_id": 7,
    "resultado": "aprobado",
    "valor": "15.2",
    "parametro": "pH",
    "valor_nominal": "14-16",
    "usuario_modificacion": "laboratorio.quimico"
  }'

3. Auditoría de Calidad por Lote

# Obtener todas las muestras de un lote para auditoría
curl -X GET https://api.prod-sys.com/api/muestras/lote/45 \
  -H "Authorization: Bearer {token}" | jq '{
  total: .data | length,
  aprobadas: [.data[] | select(.resultado == "aprobado")] | length,
  rechazadas: [.data[] | select(.resultado == "rechazado")] | length,
  condicionales: [.data[] | select(.resultado == "condicional")] | length
}'

4. Pausar Lote por Resultado de Calidad

# Flujo completo: Crear muestra rechazada + Pausar lote

# 1. Registrar muestra rechazada
curl -X POST https://api.prod-sys.com/api/muestras \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "codigo_muestra": "M-2025-001-003-005",
    "lote_id": 45,
    "bitacora_id": 92,
    "proceso_id": 3,
    "maquina_id": 12,
    "resultado": "rechazado",
    "valor": "14.2",
    "parametro": "humedad",
    "valor_nominal": "8-10",
    "usuario_modificacion": "operador.calidad"
  }'

# 2. Pausar lote automáticamente
curl -X PATCH https://api.prod-sys.com/api/lotes/45/estado \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "estado": "pausado",
    "comentario": "Muestra M-2025-001-003-005 rechazada por humedad fuera de rango (14.2%, esperado 8-10%)"
  }'

Relación con Lotes

Las muestras están estrechamente vinculadas con lotes a través del campo lote_id. Esta relación permite:
  1. Trazabilidad de calidad: Vincular resultados de análisis con producción específica
  2. Control de proceso: Identificar problemas de calidad en lotes específicos
  3. Auditoría: Rastrear historial de análisis por lote
  4. Acciones correctivas: Pausar o cerrar lotes basándose en resultados de muestras
Para más información sobre lotes, consulta la documentación de Lotes.

Build docs developers (and LLMs) love