diff --git a/frontend/src/pages/app/analytics/ProcurementAnalyticsPage.tsx b/frontend/src/pages/app/analytics/ProcurementAnalyticsPage.tsx index 8289c77c..aabc989b 100644 --- a/frontend/src/pages/app/analytics/ProcurementAnalyticsPage.tsx +++ b/frontend/src/pages/app/analytics/ProcurementAnalyticsPage.tsx @@ -108,30 +108,30 @@ const ProcurementAnalyticsPage: React.FC = () => { showMobileNotice={true} > {activeTab === 'overview' && ( - <> +
| Plan | -Fecha | -Estado | -Requerimientos | -Costo Total | +|||
|---|---|---|---|---|---|---|---|
| Plan | +Fecha | +Estado | +Requerimientos | +Costo Total | |||
| {plan.plan_number} | -+ | ||||||
| {plan.plan_number} | +{new Date(plan.plan_date).toLocaleDateString()} | -- + | + {plan.status} | -+ | {plan.total_requirements} | -+ | €{formatters.currency(plan.total_estimated_cost)} |
No hay datos de tendencias disponibles
| Proveedor | -Órdenes | -Tasa Cumplimiento | -Entregas a Tiempo | -Calidad | +||
|---|---|---|---|---|---|---|
| Proveedor | +Órdenes | +Cumplimiento | +Puntualidad | +Calidad | ||
| {supplier.name} | -{supplier.total_orders} | -- {formatters.percentage(supplier.fulfillment_rate)} + | ||||
| {supplier.name} | ++ + {supplier.total_orders} + | -- {formatters.percentage(supplier.on_time_rate)} + | + = 0.9 ? 'bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-300' : + supplier.fulfillment_rate >= 0.7 ? 'bg-yellow-100 dark:bg-yellow-900/30 text-yellow-700 dark:text-yellow-300' : + 'bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-300' + }`}> + {formatters.percentage(supplier.fulfillment_rate)} + | -- {supplier.quality_score?.toFixed(1) || 'N/A'} + | + = 0.9 ? 'bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-300' : + supplier.on_time_rate >= 0.7 ? 'bg-yellow-100 dark:bg-yellow-900/30 text-yellow-700 dark:text-yellow-300' : + 'bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-300' + }`}> + {formatters.percentage(supplier.on_time_rate)} + + | ++ + {supplier.quality_score?.toFixed(1) || 'N/A'} + |
No hay datos de calidad disponibles
{getInsightDescription(insight)}
+ +{getInsightDescription(insight)}
{/* Impact */} {insight.impact_value && insight.impact_type && ( diff --git a/frontend/src/pages/app/analytics/events/EventRegistryPage.tsx b/frontend/src/pages/app/analytics/events/EventRegistryPage.tsx index 6087a583..1517864e 100644 --- a/frontend/src/pages/app/analytics/events/EventRegistryPage.tsx +++ b/frontend/src/pages/app/analytics/events/EventRegistryPage.tsx @@ -119,53 +119,55 @@ const EventRegistryPage: React.FC = () => { )} {/* Controls Bar */} -| + | Timestamp | -+ | Servicio | -+ | Acción | -+ | Recurso | -+ | Severidad | -+ | Descripción | -+ | Acciones |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -299,31 +301,31 @@ const EventRegistryPage: React.FC = () => {
{/* Pagination */}
-
+
-
+
Mostrando{' '}
-
+
{(currentPage - 1) * pageSize + 1}
{' '}
a{' '}
-
+
{Math.min(currentPage * pageSize, auditLogs.length)}
{' '}
de{' '}
- {auditLogs.length}{' '}
+ {auditLogs.length}{' '}
eventos
-
+
diff --git a/frontend/src/pages/app/analytics/forecasting/ForecastingPage.tsx b/frontend/src/pages/app/analytics/forecasting/ForecastingPage.tsx
index e2efaddf..da20b3aa 100644
--- a/frontend/src/pages/app/analytics/forecasting/ForecastingPage.tsx
+++ b/frontend/src/pages/app/analytics/forecasting/ForecastingPage.tsx
@@ -254,9 +254,9 @@ const ForecastingPage: React.FC = () => {
{/* Ingredient Selection Section */}
-
+
Página {currentPage} de {totalPages}
{/* Ingredients Grid - Similar to POSPage products */}
-
-
+
|
- {products.find(p => p.id === selectedProduct)?.name} -
-+
+ {products.find(p => p.id === selectedProduct)?.name} +
+Predicción para {forecastPeriod} días
- Selecciona un ingrediente para continuar -
+
+
+
{products.find(p => p.id === selectedProduct)?.name} • {forecastPeriod} días
{insight.title}
-{insight.description}
+{insight.title}
+{insight.description}
+
{dept.metrics.primary_metric.label}
-+
{dept.metrics.primary_metric.value.toFixed(1)} {dept.metrics.primary_metric.unit}
+
{dept.metrics.secondary_metric.label}
-+
{dept.metrics.secondary_metric.value.toFixed(1)} {dept.metrics.secondary_metric.unit}
+
{dept.metrics.tertiary_metric.label}
-+
{dept.metrics.tertiary_metric.value.toFixed(1)} {dept.metrics.tertiary_metric.unit}
@@ -282,27 +282,44 @@ const PerformanceAnalyticsPage: React.FC = () => { {/* Process Efficiency Breakdown */} {processScore && (
-
-