demo seed change 4

This commit is contained in:
Urtzi Alfaro
2025-12-14 19:05:37 +01:00
parent 4ae5356ad1
commit 82f9622411
16 changed files with 532 additions and 55 deletions

View File

@@ -138,6 +138,58 @@ export function PendingPurchasesBlock({
});
}
// Handle production requirement reasoning
if (reasoningData.type === 'production_requirement') {
const params = reasoningData.parameters || {};
const productNames = params.product_names || [];
const productsStr = productNames.length > 0 ? productNames.join(', ') : 'products';
return t('dashboard:new_dashboard.pending_purchases.reasoning.production_requirement', {
products: productsStr,
batches: params.production_batches || params.batches_required || 0,
days: params.days_until_required || 0,
});
}
// Handle safety stock replenishment reasoning
if (reasoningData.type === 'safety_stock_replenishment') {
const params = reasoningData.parameters || {};
return t('dashboard:new_dashboard.pending_purchases.reasoning.safety_stock', {
count: params.product_count || 0,
current: params.current_safety_stock || 0,
target: params.target_safety_stock || 0,
});
}
// Handle supplier contract reasoning
if (reasoningData.type === 'supplier_contract') {
const params = reasoningData.parameters || {};
return t('dashboard:new_dashboard.pending_purchases.reasoning.supplier_contract', {
supplier: params.supplier_name || 'supplier',
products: params.product_categories?.join(', ') || 'products',
});
}
// Handle seasonal demand reasoning
if (reasoningData.type === 'seasonal_demand') {
const params = reasoningData.parameters || {};
return t('dashboard:new_dashboard.pending_purchases.reasoning.seasonal_demand', {
season: params.season || 'season',
increase: params.expected_demand_increase_pct || 0,
products: params.product_names?.join(', ') || 'products',
});
}
// Handle forecast demand reasoning
if (reasoningData.type === 'forecast_demand') {
const params = reasoningData.parameters || {};
return t('dashboard:new_dashboard.pending_purchases.reasoning.forecast_demand', {
product: params.product_name || 'product',
confidence: params.confidence_score ? Math.round(params.confidence_score * 100) : 0,
period: params.forecast_period_days || 0,
});
}
if (reasoningData.summary) return reasoningData.summary;
// Fallback to ai_reasoning_summary if structured data doesn't have a matching type