Feat: agregar 4 flujos complejos al seed y filtrar lotes finales en grafos
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m6s

- Agregar flujo 5: Las Nubes (Geisha) + El Paraíso (Castillo) → SEC-EXOTIC-001
- Agregar flujo 6: Santa Rita (Caturra Rojo) → División → SEC-SRT-PREM-001 + SEC-SRT-STD-001
- Agregar flujo 7: Trinidad + San José + Villa Rosa → Triple Blend → SEC-TRIPLE-001
- Agregar flujo 8: Mezcla de segundas calidades → SEC-COMERCIAL-001
- Implementar filtro soloFinales en queries, API y composable
- Modificar tab Grafos para mostrar solo lotes finales (sin hijos)
- Actualizar descripción de tab Grafos para clarificar el filtro
- Total: 7 lotes finales de secado para visualización de grafos
This commit is contained in:
2025-11-22 04:05:24 -06:00
parent 1874c81db6
commit f3a170c882
5 changed files with 644 additions and 14 deletions

View File

@@ -116,7 +116,7 @@
<div class="flex flex-col md:flex-row md:items-center md:justify-between gap-3">
<div>
<h3 class="text-xl font-semibold">Grafo de trazabilidad</h3>
<p class="text-sm text-gray-500 dark:text-gray-400">Visualiza el grafo desde el lote seleccionado (por defecto el más reciente).</p>
<p class="text-sm text-gray-500 dark:text-gray-400">Visualiza el grafo completo desde un lote final (sin hijos). Solo se muestran lotes que no han sido procesados.</p>
</div>
<div class="flex gap-2 items-center">
<USelect
@@ -418,7 +418,8 @@ const loadGraphLotes = async () => {
graphLoading.value = true
graphError.value = null
try {
const lotes = await fetchLotesComposable()
// Filtrar solo lotes finales (sin hijos) para el grafo
const lotes = await fetchLotesComposable({ soloFinales: true })
graphLotes.value = lotes.sort((a, b) =>
new Date(b.fecha_creado).getTime() - new Date(a.fecha_creado).getTime()
)

View File

@@ -48,6 +48,7 @@ export const useLotes = () => {
tipo?: string
limit?: number
offset?: number
soloFinales?: boolean
}) => {
console.log('🔵 fetchLotes: Iniciando, filtros:', filtros)
try {
@@ -55,6 +56,7 @@ export const useLotes = () => {
if (filtros?.tipo) query.append('tipo', filtros.tipo)
if (filtros?.limit) query.append('limit', filtros.limit.toString())
if (filtros?.offset) query.append('offset', filtros.offset.toString())
if (filtros?.soloFinales) query.append('soloFinales', 'true')
const queryString = query.toString()
const url = `/api/lotes${queryString ? `?${queryString}` : ''}`