feat: Add i18n support for AI insights with structured reasoning
Complete i18n implementation for internal service reasoning: - Update AIInsight interface to include reasoning_data field - Integrate useReasoningTranslation hook in AI Insights page - Add translation keys for safety stock, price forecaster, and optimization Translation coverage (EN/ES/EU): - Safety Stock: statistical z-score, advanced variability, fixed percentage, errors - Price Forecaster: price change predictions, volatility alerts, buying recommendations - Optimization: EOQ calculations, MOQ/max constraints, tier pricing Benefits: - AI insights now display in user's preferred language - Consistent with PO/Batch reasoning translation pattern - Structured parameters enable rich, contextualized translations - Falls back gracefully to description field if translation missing Implementation: - frontend/src/api/services/aiInsights.ts: Add reasoning_data to interface - frontend/src/pages/app/analytics/ai-insights/AIInsightsPage.tsx: Translate insights - frontend/src/locales/*/reasoning.json: Add safetyStock, priceForecaster, optimization keys This completes the full i18n implementation for the bakery AI system.
This commit is contained in:
@@ -46,6 +46,29 @@ ko da.",
|
||||
"LEAD_TIME_INVALID": "Entrega denbora edo eskaeraren desbideratzea zero edo negatiboa da",
|
||||
"NO_DEMAND_DATA": "Ez dago eskaeraren datu historikorik eskuragarri (gutxienez 2 datu puntu behar dira)"
|
||||
},
|
||||
"safetyStock": {
|
||||
"statistical_z_score": "Segurtasun-stock kalkulatua metodo estatistikoarekin (zerbitzu-maila {{service_level}}%, z-score {{z_score}}). Eskaeraren desbideratze estandarrean {{demand_std_dev}} eta {{lead_time_days}} eguneko entrega-denboran oinarrituta. Emaitza: {{safety_stock}} unitate.",
|
||||
"advanced_variability": "Segurtasun-stock kalkulatua aldakortasun-analisi aurreratuarekin. Eskaeraren aldakortasuna (σ={{demand_std_dev}}) eta entrega-denboraren ziurgabetasuna (σ={{lead_time_std_dev}} egun) kontuan hartzen ditu. Emaitza: {{safety_stock}} unitate.",
|
||||
"fixed_percentage": "Segurtasun-stock ezarri da {{lead_time_days}} eguneko eskaeraren {{percentage}}%n ({{lead_time_demand}} unitate). Emaitza: {{safety_stock}} unitate.",
|
||||
"error_lead_time_invalid": "Ezin da segurtasun-stock kalkulatu: entrega-denbora ({{lead_time_days}} egun) edo eskaeraren desbideratze estandarra ({{demand_std_dev}}) ez dira baliodunak.",
|
||||
"error_insufficient_data": "Eskaeraren historiala ez da nahikoa segurtasun-stock kalkulatzeko ({{data_points}} datu puntu, {{min_required}} behar dira)."
|
||||
},
|
||||
"priceForecaster": {
|
||||
"decrease_expected": "Espero da prezioa {{change_pct}}% jaitsiko dela hurrengo {{forecast_days}} egunetan. Oraingoa: €{{current_price}}, aurreikuspena: €{{forecast_mean}}. Gomendio: Itxaron prezio hobeago baterako.",
|
||||
"increase_expected": "Espero da prezioa {{change_pct}}% igoko dela hurrengo {{forecast_days}} egunetan. Oraingoa: €{{current_price}}, aurreikuspena: €{{forecast_mean}}. Gomendio: Erosi orain oraingo prezioa ziurtatzeko.",
|
||||
"high_volatility": "Prezio-aldakortasun altua detektatu da (CV={{coefficient}}). Prezioaren eguneko batez besteko aldaketa: {{avg_daily_change_pct}}%. Gomendio: Itxaron prezioaren jaitsierara.",
|
||||
"below_average": "Oraingo prezioa €{{current_price}} batez besteko historikoaren (€{{mean_price}}) {{below_avg_pct}}% azpitik dago. Erosketa-aukera egokia.",
|
||||
"stable": "Prezioa egonkorra da. Oraingoa: €{{current_price}}, aurreikuspena: €{{forecast_mean}} ({{expected_change_pct}}% aldaketa espero da). Ohiko erosketa-denbora gomendatzen da.",
|
||||
"insufficient_data": "Prezioen historiala ez da nahikoa aurreikuspen fidagarrirako ({{history_days}} egun eskuragarri, {{min_required_days}} egun behar dira)."
|
||||
},
|
||||
"optimization": {
|
||||
"eoq_base": "Eskaera Kantitate Ekonomikoa kalkulatu da: {{eoq}} unitate (beharrezkoa: {{required_quantity}}, urteko eskaera: {{annual_demand}}). {{optimal_quantity}} unitatetan optimizatuta.",
|
||||
"moq_applied": "Gutxieneko eskaera-kantitatearen murrizketa aplikatu da: {{moq}} unitate.",
|
||||
"max_applied": "Gehienezko eskaera-kantitatearen murrizketa aplikatu da: {{max_qty}} unitate.",
|
||||
"no_tiers": "Ez dago prezio-mailarik eskuragarri produktu honetarako. Oinarrizko kantitatea: {{base_quantity}} unitate €{{unit_price}} unitateko.",
|
||||
"current_tier": "Oraingo prezio-maila: €{{current_tier_price}} unitateko {{base_quantity}} unitateko (guztira: €{{base_cost}}).",
|
||||
"tier_upgraded": "Prezio-maila hobea lortu da! {{tier_min_qty}} unitate eskatzeak ({{additional_qty}} gehiago) €{{tier_price}} unitateko €{{savings}} aurrezten ditu {{base_quantity}} unitateri €{{base_price}}n konparatuta."
|
||||
},
|
||||
"jtbd": {
|
||||
"health_status": {
|
||||
"green": "Dena ondo dabil",
|
||||
|
||||
Reference in New Issue
Block a user