Add improved production UI 3

This commit is contained in:
Urtzi Alfaro
2025-09-23 19:24:22 +02:00
parent 7f871fc933
commit 7892c5a739
47 changed files with 6211 additions and 267 deletions

View File

@@ -4,6 +4,7 @@
"operations": "Operations",
"inventory": "Inventory",
"production": "Production",
"equipment": "Equipment",
"recipes": "Recipes",
"orders": "Orders",
"procurement": "Procurement",

View File

@@ -0,0 +1,90 @@
{
"title": "Equipment",
"subtitle": "Manage and monitor your production equipment",
"equipment_status": {
"operational": "Operational",
"maintenance": "Maintenance",
"down": "Out of Service",
"warning": "Warning"
},
"equipment_type": {
"oven": "Oven",
"mixer": "Mixer",
"proofer": "Proofing Chamber",
"freezer": "Freezer",
"packaging": "Packaging Machine",
"other": "Other"
},
"fields": {
"name": "Name",
"type": "Type",
"model": "Model",
"serial_number": "Serial Number",
"location": "Location",
"status": "Status",
"install_date": "Installation Date",
"last_maintenance": "Last Maintenance",
"next_maintenance": "Next Maintenance",
"maintenance_interval": "Maintenance Interval",
"efficiency": "Efficiency",
"uptime": "Uptime",
"energy_usage": "Energy Usage",
"temperature": "Temperature",
"target_temperature": "Target Temperature",
"power": "Power",
"capacity": "Capacity",
"weight": "Weight",
"parts": "Parts"
},
"actions": {
"add_equipment": "Add Equipment",
"edit_equipment": "Edit Equipment",
"delete_equipment": "Delete Equipment",
"schedule_maintenance": "Schedule Maintenance",
"view_maintenance_history": "View Maintenance History",
"acknowledge_alert": "Acknowledge Alert",
"view_details": "View Details",
"view_history": "View History",
"close": "Close",
"cost": "Cost"
},
"labels": {
"total_equipment": "Total Equipment",
"operational": "Operational",
"avg_efficiency": "Average Efficiency",
"active_alerts": "Active Alerts",
"maintenance_due": "Maintenance Due",
"overdue_maintenance": "Overdue Maintenance",
"low_efficiency": "Low Efficiency"
},
"descriptions": {
"equipment_efficiency": "Current equipment efficiency percentage",
"uptime_percentage": "Percentage of uptime",
"active_alerts_count": "Number of active alerts not acknowledged"
},
"maintenance": {
"title": "Maintenance",
"last": "Last",
"next": "Next",
"interval": "Interval",
"history": "History",
"records": "records",
"overdue": "Overdue",
"scheduled": "Scheduled",
"type": {
"preventive": "Preventive",
"corrective": "Corrective",
"emergency": "Emergency"
}
},
"alerts": {
"title": "Alerts",
"unread_alerts": "unread alerts",
"acknowledged": "Acknowledged",
"new": "New",
"acknowledge": "Acknowledge",
"critical": "Critical",
"warning": "Warning",
"info": "Information"
}
}

View File

@@ -4,6 +4,7 @@
"operations": "Operaciones",
"inventory": "Inventario",
"production": "Producción",
"equipment": "Maquinaria",
"recipes": "Recetas",
"orders": "Pedidos",
"procurement": "Compras",

View File

@@ -0,0 +1,87 @@
{
"title": "Maquinaria",
"subtitle": "Gestiona y monitorea tus equipos de producción",
"equipment_status": {
"operational": "Operacional",
"maintenance": "Mantenimiento",
"down": "Fuera de Servicio",
"warning": "Advertencia"
},
"equipment_type": {
"oven": "Horno",
"mixer": "Batidora",
"proofer": "Cámara de Fermentación",
"freezer": "Congelador",
"packaging": "Empaquetadora",
"other": "Otro"
},
"fields": {
"name": "Nombre",
"type": "Tipo",
"model": "Modelo",
"serial_number": "Número de Serie",
"location": "Ubicación",
"status": "Estado",
"install_date": "Fecha de Instalación",
"last_maintenance": "Último Mantenimiento",
"next_maintenance": "Próximo Mantenimiento",
"maintenance_interval": "Intervalo de Mantenimiento",
"efficiency": "Eficiencia",
"uptime": "Tiempo de Funcionamiento",
"energy_usage": "Consumo Energético",
"temperature": "Temperatura",
"target_temperature": "Temperatura Objetivo",
"power": "Potencia",
"capacity": "Capacidad",
"weight": "Peso"
},
"actions": {
"add_equipment": "Agregar Equipo",
"edit_equipment": "Editar Equipo",
"delete_equipment": "Eliminar Equipo",
"schedule_maintenance": "Programar Mantenimiento",
"view_maintenance_history": "Ver Historial de Mantenimiento",
"acknowledge_alert": "Reconocer Alerta",
"view_details": "Ver Detalles",
"view_history": "Ver Historial"
},
"labels": {
"total_equipment": "Total de Equipos",
"operational": "Operacionales",
"avg_efficiency": "Eficiencia Promedio",
"active_alerts": "Alertas Activas",
"maintenance_due": "Mantenimiento Próximo",
"overdue_maintenance": "Mantenimiento Atrasado",
"low_efficiency": "Baja Eficiencia"
},
"descriptions": {
"equipment_efficiency": "Porcentaje de eficiencia actual de los equipos",
"uptime_percentage": "Porcentaje de tiempo de funcionamiento",
"active_alerts_count": "Número de alertas activas sin reconocer"
},
"maintenance": {
"title": "Mantenimiento",
"last": "Último",
"next": "Próximo",
"interval": "Intervalo",
"history": "Historial",
"records": "registros",
"overdue": "Atrasado",
"scheduled": "Programado",
"type": {
"preventive": "Preventivo",
"corrective": "Correctivo",
"emergency": "Emergencia"
}
},
"alerts": {
"title": "Alertas",
"unread_alerts": "alertas no leídas",
"acknowledged": "Reconocido",
"new": "Nuevo",
"acknowledge": "Reconocer",
"critical": "Crítico",
"warning": "Advertencia",
"info": "Información"
}
}

View File

@@ -76,5 +76,9 @@
"production_efficiency": "Porcentaje de eficiencia en la producción actual",
"quality_average": "Puntuación promedio de calidad en los últimos lotes",
"waste_reduction": "Reducción de desperdicio comparado con el mes anterior"
},
"equipment": {
"title": "Equipos",
"subtitle": "Gestión de maquinaria de producción"
}
}

View File

@@ -1,18 +1,19 @@
{
"navigation": {
"dashboard": "Aginte Panela",
"dashboard": "Aginte-panela",
"operations": "Eragiketak",
"inventory": "Inbentarioa",
"production": "Ekoizpena",
"equipment": "Makinaria",
"recipes": "Errezetak",
"orders": "Eskaerak",
"procurement": "Erosketak",
"pos": "Salmenta Puntua",
"pos": "Salmenta-puntua",
"analytics": "Analisiak",
"forecasting": "Aurreikuspena",
"forecasting": "Aurreikuspenak",
"sales": "Salmentak",
"performance": "Errendimendua",
"insights": "AI Jakintza",
"insights": "AA ikuspegiak",
"data": "Datuak",
"weather": "Eguraldia",
"traffic": "Trafikoa",
@@ -20,13 +21,13 @@
"communications": "Komunikazioak",
"notifications": "Jakinarazpenak",
"alerts": "Alertak",
"preferences": "Lehentasunak",
"preferences": "Hobespenak",
"settings": "Ezarpenak",
"team": "Taldea",
"bakery": "Okindegi",
"training": "Trebakuntza",
"bakery": "Ogindegi",
"training": "Trebatzea",
"system": "Sistema",
"onboarding": "Hasierako Konfigurazioa"
"onboarding": "Hasierako konfigurazioa"
},
"actions": {
"save": "Gorde",

View File

@@ -0,0 +1,90 @@
{
"title": "Makinaria",
"subtitle": "Kudeatu eta monitorizatu zure ekoizpen-makina",
"equipment_status": {
"operational": "Funtzionamenduan",
"maintenance": "Mantentzea",
"down": "Zerbitzuetik kanpo",
"warning": "Abisua"
},
"equipment_type": {
"oven": "Labean",
"mixer": "Nahaste-makina",
"proofer": "Igoera-gela",
"freezer": "Izozkailua",
"packaging": "Paketatze-makina",
"other": "Bestelakoa"
},
"fields": {
"name": "Izena",
"type": "Mota",
"model": "Modeloa",
"serial_number": "Serie-zenbakia",
"location": "Kokapena",
"status": "Egoera",
"install_date": "Instalazio-data",
"last_maintenance": "Azken mantentzea",
"next_maintenance": "Hurrengo mantentzea",
"maintenance_interval": "Mantentze-tartea",
"efficiency": "Eraginkortasuna",
"uptime": "Funtzionamendu-denbora",
"energy_usage": "Energia-kontsumoa",
"temperature": "Tenperatura",
"target_temperature": "Helburuko tenperatura",
"power": "Potentzia",
"capacity": "Edukiera",
"weight": "Pisua",
"parts": "Piezak"
},
"actions": {
"add_equipment": "Gehitu makina",
"edit_equipment": "Editatu makina",
"delete_equipment": "Ezabatu makina",
"schedule_maintenance": "Antolatu mantentzea",
"view_maintenance_history": "Ikusi mantentze-historia",
"acknowledge_alert": "Berretsi alerta",
"view_details": "Ikusi xehetasunak",
"view_history": "Ikusi historia",
"close": "Itxi",
"cost": "Kostua"
},
"labels": {
"total_equipment": "Makina guztira",
"operational": "Funtzionamenduan",
"avg_efficiency": "Batez besteko eraginkortasuna",
"active_alerts": "Alerta aktiboak",
"maintenance_due": "Mantentzea egiteko",
"overdue_maintenance": "Mantentzea atzeratuta",
"low_efficiency": "Eraginkortasun baxua"
},
"descriptions": {
"equipment_efficiency": "Uneko makinaren eraginkortasun-ehunekoa",
"uptime_percentage": "Funtzionamendu-denboraren ehunekoa",
"active_alerts_count": "Berretsi gabeko alerta kopurua"
},
"maintenance": {
"title": "Mantentzea",
"last": "Azkena",
"next": "Hurrengoa",
"interval": "Tartea",
"history": "Historia",
"records": "erregistro",
"overdue": "Atzeratuta",
"scheduled": "Antolatuta",
"type": {
"preventive": "Prebentiboa",
"corrective": "Zuzentzailea",
"emergency": "Larria"
}
},
"alerts": {
"title": "Alertak",
"unread_alerts": "irakurri gabeko alertak",
"acknowledged": "Berretsita",
"new": "Berria",
"acknowledge": "Berretsi",
"critical": "Larria",
"warning": "Abisua",
"info": "Informazioa"
}
}

View File

@@ -1,14 +1,14 @@
{
"title": "Ekoizpena",
"subtitle": "Zure okindegiaren ekoizpena kudeatu",
"subtitle": "Kudeatu zure ogindegiko ekoizpena",
"production_status": {
"PENDING": "Zain",
"PENDING": "Itxaroten",
"IN_PROGRESS": "Abian",
"COMPLETED": "Amaituta",
"CANCELLED": "Bertan behera utzi",
"COMPLETED": "Osatuta",
"CANCELLED": "Ezeztatuta",
"ON_HOLD": "Pausatuta",
"QUALITY_CHECK": "Kalitate Kontrola",
"FAILED": "Huts egin"
"QUALITY_CHECK": "Kalitate-kontrola",
"FAILED": "Huts egin du"
},
"production_priority": {
"LOW": "Baxua",
@@ -19,62 +19,66 @@
"batch_status": {
"PLANNED": "Planifikatuta",
"IN_PROGRESS": "Abian",
"COMPLETED": "Amaituta",
"CANCELLED": "Bertan behera utzi",
"COMPLETED": "Osatuta",
"CANCELLED": "Ezeztatuta",
"ON_HOLD": "Pausatuta"
},
"quality_check_status": {
"PENDING": "Zain",
"PENDING": "Itxaroten",
"IN_PROGRESS": "Abian",
"PASSED": "Onartuta",
"FAILED": "Baztertuta",
"REQUIRES_ATTENTION": "Arreta Behar du"
"PASSED": "Gaindituta",
"FAILED": "Huts egin du",
"REQUIRES_ATTENTION": "Arreta behar du"
},
"fields": {
"batch_number": "Lote Zenbakia",
"production_date": "Ekoizpen Data",
"planned_quantity": "Planifikatutako Kantitatea",
"actual_quantity": "Benetako Kantitatea",
"yield_percentage": "Errendimendu Ehunekoa",
"batch_number": "Sorta-zenbakia",
"production_date": "Ekoizpen-data",
"planned_quantity": "Planifikatutako kantitatea",
"actual_quantity": "Benetako kantitatea",
"yield_percentage": "Errendimendu-ehunekoa",
"priority": "Lehentasuna",
"assigned_staff": "Esleitutako Langilea",
"production_notes": "Ekoizpen Oharrak",
"quality_score": "Kalitate Puntuazioa",
"quality_notes": "Kalitate Oharrak",
"defect_rate": "Akats Tasa",
"rework_required": "Berrlana Behar",
"waste_quantity": "Hondakin Kantitatea",
"waste_reason": "Hondakin Arrazoia",
"assigned_staff": "Esleitutako langilea",
"production_notes": "Ekoizpen-oharrak",
"quality_score": "Kalitate-puntua",
"quality_notes": "Kalitate-oharrak",
"defect_rate": "Akats-tasa",
"rework_required": "Berregitea behar da",
"waste_quantity": "Hondakin-kantitatea",
"waste_reason": "Hondakinaren arrazoia",
"efficiency": "Eraginkortasuna",
"material_cost": "Material Kostua",
"labor_cost": "Lan Kostua",
"overhead_cost": "Kostu Orokorra",
"total_cost": "Kostu Osoa",
"cost_per_unit": "Unitateko Kostua"
"material_cost": "Material-kostua",
"labor_cost": "Lan-kostua",
"overhead_cost": "Indirektoko kostua",
"total_cost": "Kostu osoa",
"cost_per_unit": "Unitateko kostua"
},
"actions": {
"start_production": "Ekoizpena Hasi",
"complete_batch": "Lotea Amaitu",
"pause_production": "Ekoizpena Pausatu",
"cancel_batch": "Lotea Ezeztatu",
"quality_check": "Kalitate Kontrola",
"create_batch": "Lotea Sortu",
"view_details": "Xehetasunak Ikusi",
"edit_batch": "Lotea Editatu",
"duplicate_batch": "Lotea Bikoiztu"
"start_production": "Hasi ekoizpena",
"complete_batch": "Osatu sorta",
"pause_production": "Pausatu ekoizpena",
"cancel_batch": "Ezeztatu sorta",
"quality_check": "Kalitate-kontrola",
"create_batch": "Sortu sorta",
"view_details": "Ikusi xehetasunak",
"edit_batch": "Editatu sorta",
"duplicate_batch": "Bikoiztu sorta"
},
"labels": {
"current_production": "Uneko Ekoizpena",
"production_queue": "Ekoizpen Ilara",
"completed_today": "Gaur Amaitutakoak",
"efficiency_rate": "Eraginkortasun Tasa",
"quality_score": "Kalitate Puntuazioa",
"active_batches": "Lote Aktiboak",
"pending_quality_checks": "Kalitate Kontrol Zain"
"current_production": "Uneko ekoizpena",
"production_queue": "Ekoizpen-ilara",
"completed_today": "Gaur osatuta",
"efficiency_rate": "Eraginkortasun-tasa",
"quality_score": "Kalitate-puntua",
"active_batches": "Sorta aktiboak",
"pending_quality_checks": "Kalitate-kontrolak itxaroten"
},
"descriptions": {
"production_efficiency": "Uneko ekoizpenaren eraginkortasun ehunekoa",
"quality_average": "Azken loteen batez besteko kalitate puntuazioa",
"waste_reduction": "Hondakin murrizketa aurreko hilarekin alderatuta"
"production_efficiency": "Uneko ekoizpenaren eraginkortasun-ehunekoa",
"quality_average": "Azken sorten batez besteko kalitate-puntua",
"waste_reduction": "Aurreko hilabetearekin alderatutako hondakin-murrizketa"
},
"equipment": {
"title": "Makinen egoera",
"subtitle": "Monitorizatu makinen osasuna eta errendimendua"
}
}

View File

@@ -9,6 +9,7 @@ import recipesEs from './es/recipes.json';
import errorsEs from './es/errors.json';
import dashboardEs from './es/dashboard.json';
import productionEs from './es/production.json';
import equipmentEs from './es/equipment.json';
// English translations
import commonEn from './en/common.json';
@@ -21,6 +22,7 @@ import recipesEn from './en/recipes.json';
import errorsEn from './en/errors.json';
import dashboardEn from './en/dashboard.json';
import productionEn from './en/production.json';
import equipmentEn from './en/equipment.json';
// Basque translations
import commonEu from './eu/common.json';
@@ -33,6 +35,7 @@ import recipesEu from './eu/recipes.json';
import errorsEu from './eu/errors.json';
import dashboardEu from './eu/dashboard.json';
import productionEu from './eu/production.json';
import equipmentEu from './eu/equipment.json';
// Translation resources by language
export const resources = {
@@ -47,6 +50,7 @@ export const resources = {
errors: errorsEs,
dashboard: dashboardEs,
production: productionEs,
equipment: equipmentEs,
},
en: {
common: commonEn,
@@ -59,6 +63,7 @@ export const resources = {
errors: errorsEn,
dashboard: dashboardEn,
production: productionEn,
equipment: equipmentEn,
},
eu: {
common: commonEu,
@@ -71,6 +76,7 @@ export const resources = {
errors: errorsEu,
dashboard: dashboardEu,
production: productionEu,
equipment: equipmentEu,
},
};
@@ -107,7 +113,7 @@ export const languageConfig = {
};
// Namespaces available in translations
export const namespaces = ['common', 'auth', 'inventory', 'foodSafety', 'suppliers', 'orders', 'recipes', 'errors', 'dashboard', 'production'] as const;
export const namespaces = ['common', 'auth', 'inventory', 'foodSafety', 'suppliers', 'orders', 'recipes', 'errors', 'dashboard', 'production', 'equipment'] as const;
export type Namespace = typeof namespaces[number];
// Helper function to get language display name
@@ -121,7 +127,7 @@ export const isSupportedLanguage = (language: string): language is SupportedLang
};
// Export individual language modules for direct imports
export { commonEs, authEs, inventoryEs, foodSafetyEs, suppliersEs, ordersEs, recipesEs, errorsEs };
export { commonEs, authEs, inventoryEs, foodSafetyEs, suppliersEs, ordersEs, recipesEs, errorsEs, equipmentEs };
// Default export with all translations
export default resources;