Improve the frontend and fix TODOs

This commit is contained in:
Urtzi Alfaro
2025-10-24 13:05:04 +02:00
parent 07c33fa578
commit 61376b7a9f
100 changed files with 8284 additions and 3419 deletions

View File

@@ -120,30 +120,30 @@ const ProcurementAnalyticsPage: React.FC = () => {
stats={[
{
label: 'Planes Activos',
value: dashboard?.stats?.total_plans || 0,
value: dashboard?.summary?.total_plans || 0,
icon: ShoppingCart,
formatter: formatters.number
},
{
label: 'Tasa de Cumplimiento',
value: dashboard?.stats?.avg_fulfillment_rate || 0,
value: dashboard?.performance_metrics?.average_fulfillment_rate || 0,
icon: Target,
formatter: formatters.percentage,
change: dashboard?.stats?.fulfillment_trend
change: dashboard?.performance_metrics?.fulfillment_trend
},
{
label: 'Entregas a Tiempo',
value: dashboard?.stats?.avg_on_time_delivery || 0,
value: dashboard?.performance_metrics?.average_on_time_delivery || 0,
icon: Calendar,
formatter: formatters.percentage,
change: dashboard?.stats?.on_time_trend
change: dashboard?.performance_metrics?.on_time_trend
},
{
label: 'Variación de Costos',
value: dashboard?.stats?.avg_cost_variance || 0,
value: dashboard?.performance_metrics?.cost_accuracy || 0,
icon: DollarSign,
formatter: formatters.percentage,
change: dashboard?.stats?.cost_variance_trend
change: dashboard?.performance_metrics?.cost_variance_trend
}
]}
loading={dashboardLoading}
@@ -176,7 +176,7 @@ const ProcurementAnalyticsPage: React.FC = () => {
<div className="w-32 h-2 bg-[var(--bg-tertiary)] rounded-full overflow-hidden">
<div
className="h-full bg-[var(--color-primary)]"
style={{ width: `${(status.count / dashboard.stats.total_plans) * 100}%` }}
style={{ width: `${(status.count / (dashboard?.summary?.total_plans || 1)) * 100}%` }}
/>
</div>
<span className="text-sm font-medium text-[var(--text-primary)] w-8 text-right">
@@ -275,7 +275,7 @@ const ProcurementAnalyticsPage: React.FC = () => {
<div className="p-6 text-center">
<Target className="mx-auto h-8 w-8 text-[var(--color-success)] mb-3" />
<div className="text-3xl font-bold text-[var(--text-primary)] mb-1">
{formatters.percentage(dashboard?.stats?.avg_fulfillment_rate || 0)}
{formatters.percentage(dashboard?.performance_metrics?.average_fulfillment_rate || 0)}
</div>
<div className="text-sm text-[var(--text-secondary)]">Tasa de Cumplimiento</div>
</div>
@@ -285,7 +285,7 @@ const ProcurementAnalyticsPage: React.FC = () => {
<div className="p-6 text-center">
<Calendar className="mx-auto h-8 w-8 text-[var(--color-info)] mb-3" />
<div className="text-3xl font-bold text-[var(--text-primary)] mb-1">
{formatters.percentage(dashboard?.stats?.avg_on_time_delivery || 0)}
{formatters.percentage(dashboard?.performance_metrics?.average_on_time_delivery || 0)}
</div>
<div className="text-sm text-[var(--text-secondary)]">Entregas a Tiempo</div>
</div>
@@ -295,7 +295,7 @@ const ProcurementAnalyticsPage: React.FC = () => {
<div className="p-6 text-center">
<Award className="mx-auto h-8 w-8 text-[var(--color-warning)] mb-3" />
<div className="text-3xl font-bold text-[var(--text-primary)] mb-1">
{dashboard?.stats?.avg_quality_score?.toFixed(1) || '0.0'}
{dashboard?.performance_metrics?.supplier_performance?.toFixed(1) || '0.0'}
</div>
<div className="text-sm text-[var(--text-secondary)]">Puntuación de Calidad</div>
</div>
@@ -372,23 +372,23 @@ const ProcurementAnalyticsPage: React.FC = () => {
<div className="flex justify-between items-center">
<span className="text-[var(--text-secondary)]">Costo Total Estimado</span>
<span className="text-2xl font-bold text-[var(--text-primary)]">
{formatters.currency(dashboard?.cost_analysis?.total_estimated || 0)}
{formatters.currency(dashboard?.summary?.total_estimated_cost || 0)}
</span>
</div>
<div className="flex justify-between items-center">
<span className="text-[var(--text-secondary)]">Costo Total Aprobado</span>
<span className="text-2xl font-bold text-[var(--text-primary)]">
{formatters.currency(dashboard?.cost_analysis?.total_approved || 0)}
{formatters.currency(dashboard?.summary?.total_approved_cost || 0)}
</span>
</div>
<div className="flex justify-between items-center">
<span className="text-[var(--text-secondary)]">Variación Promedio</span>
<span className={`text-2xl font-bold ${
(dashboard?.cost_analysis?.avg_variance || 0) > 0
(dashboard?.summary?.cost_variance || 0) > 0
? 'text-[var(--color-error)]'
: 'text-[var(--color-success)]'
}`}>
{formatters.percentage(Math.abs(dashboard?.cost_analysis?.avg_variance || 0))}
{formatters.currency(Math.abs(dashboard?.summary?.cost_variance || 0))}
</span>
</div>
</div>
@@ -408,7 +408,7 @@ const ProcurementAnalyticsPage: React.FC = () => {
<div className="w-32 h-2 bg-[var(--bg-tertiary)] rounded-full overflow-hidden">
<div
className="h-full bg-[var(--color-primary)]"
style={{ width: `${(category.amount / dashboard.cost_analysis.total_estimated) * 100}%` }}
style={{ width: `${(category.amount / (dashboard?.summary?.total_estimated_cost || 1)) * 100}%` }}
/>
</div>
<span className="text-sm font-medium text-[var(--text-primary)] w-20 text-right">