diff --git a/frontend/src/components/domain/onboarding/UnifiedOnboardingWizard.tsx b/frontend/src/components/domain/onboarding/UnifiedOnboardingWizard.tsx index 39861d26..2b4b04b8 100644 --- a/frontend/src/components/domain/onboarding/UnifiedOnboardingWizard.tsx +++ b/frontend/src/components/domain/onboarding/UnifiedOnboardingWizard.tsx @@ -409,6 +409,16 @@ const OnboardingWizardContent: React.FC = () => { } }; + const handleGoToPrevious = () => { + if (currentStepIndex > 0) { + const previousStep = VISIBLE_STEPS[currentStepIndex - 1]; + console.log(`⬅️ Going back from "${currentStep.id}" to "${previousStep.id}"`); + setCurrentStepIndex(currentStepIndex - 1); + } else { + console.warn('⚠️ Already at first step, cannot go back'); + } + }; + // Show loading state if (!isNewTenant && (isLoadingProgress || !isInitialized)) { return ( @@ -518,7 +528,7 @@ const OnboardingWizardContent: React.FC = () => { {}} - onPrevious={() => {}} + onPrevious={handleGoToPrevious} onComplete={handleStepComplete} onUpdate={handleStepUpdate} isFirstStep={currentStepIndex === 0} diff --git a/frontend/src/locales/en/dashboard.json b/frontend/src/locales/en/dashboard.json index 53f6ba16..1618aa03 100644 --- a/frontend/src/locales/en/dashboard.json +++ b/frontend/src/locales/en/dashboard.json @@ -132,6 +132,30 @@ "last_30_days": "Last 30 days", "last_90_days": "Last 90 days" }, + "config": { + "title": "Complete Your Bakery Setup", + "subtitle": "Configure essential features to get started", + "inventory": "Inventory", + "suppliers": "Suppliers", + "recipes": "Recipes", + "quality": "Quality Standards", + "add_ingredients": "Add at least {{count}} ingredients", + "add_supplier": "Add your first supplier", + "add_recipe": "Create your first recipe", + "add_quality": "Add quality checks (optional)", + "sections_complete": "sections complete", + "added": "added", + "recommended": "recommended", + "next_step": "Next Step", + "configure": "Configure", + "features_unlocked": "Features Unlocked!", + "features": { + "inventory_tracking": "Inventory Tracking", + "purchase_orders": "Purchase Orders", + "production_planning": "Production Planning", + "cost_analysis": "Cost Analysis" + } + }, "errors": { "failed_to_load_stats": "Failed to load dashboard statistics. Please try again." } diff --git a/frontend/src/locales/en/setup_wizard.json b/frontend/src/locales/en/setup_wizard.json new file mode 100644 index 00000000..fa408cda --- /dev/null +++ b/frontend/src/locales/en/setup_wizard.json @@ -0,0 +1,276 @@ +{ + "why_this_matters": "Why This Matters", + "optional": "Optional", + "navigation": { + "continue": "Continue →", + "back": "← Back", + "skip": "Skip for now" + }, + "welcome": { + "title": "Excellent! Your AI is Ready", + "subtitle": "Now let's set up your bakery's daily operations so the system can help you manage:", + "feature_inventory": "Inventory Tracking", + "feature_inventory_desc": "Real-time stock levels & reorder alerts", + "feature_recipes": "Recipe Costing", + "feature_recipes_desc": "Automatic cost calculation & profitability analysis", + "feature_quality": "Quality Monitoring", + "feature_quality_desc": "Track standards & production quality", + "feature_team": "Team Coordination", + "feature_team_desc": "Assign tasks & track responsibilities", + "time_estimate": "Takes about 15-20 minutes", + "save_resume": "You can save progress and resume anytime", + "skip": "I'll Do This Later", + "get_started": "Let's Get Started! →" + }, + "suppliers": { + "why": "Suppliers are the source of your ingredients. Setting them up now lets you track costs, manage orders, and analyze supplier performance.", + "added_count": "{{count}} supplier added", + "added_count_plural": "{{count}} suppliers added", + "minimum_met": "Minimum requirement met", + "add_minimum": "Add at least 1 supplier to continue", + "your_suppliers": "Your Suppliers", + "confirm_delete": "Are you sure you want to delete this supplier?", + "edit_supplier": "Edit Supplier", + "add_supplier": "Add Supplier", + "add_first": "Add Your First Supplier", + "add_another": "Add Another Supplier", + "manage_products": "Manage Products", + "products": "products", + "products_for": "Products for {{name}}", + "add_products": "Add Products", + "no_products_available": "No products available", + "select_products": "Select Products", + "unit_price": "Price", + "unit": "Unit", + "min_qty": "Min Qty", + "add_new_product": "Add New Product", + "save_products": "Save", + "no_products_warning": "Add at least 1 product to enable automatic purchase orders", + "fields": { + "name": "Supplier Name", + "type": "Type", + "contact_person": "Contact Person", + "phone": "Phone", + "email": "Email" + }, + "placeholders": { + "name": "e.g., Molinos SA, Distribuidora López", + "contact_person": "e.g., Juan Pérez", + "phone": "e.g., +54 11 1234-5678", + "email": "e.g., ventas@proveedor.com" + }, + "errors": { + "name_required": "Name is required", + "email_invalid": "Invalid email format" + } + }, + "inventory": { + "why": "Inventory items are the building blocks of your recipes. Once set up, the system will track quantities, alert you when stock is low, and help you calculate recipe costs.", + "quick_start": "Quick Start", + "quick_start_desc": "Import common ingredients to get started quickly", + "essential": "Essential Ingredients", + "common": "Common Ingredients", + "packaging": "Packaging", + "import_all": "Import All", + "templates_hint": "Click any item to customize before adding, or use \"Import All\" for quick setup", + "show_templates": "Show Quick Start Templates", + "added_count": "{{count}} ingredient added", + "added_count_plural": "{{count}} ingredients added", + "minimum_met": "Minimum requirement met", + "need_more": "Need {{count}} more", + "your_ingredients": "Your Ingredients", + "add_ingredient": "Add Ingredient", + "edit_ingredient": "Edit Ingredient", + "add_first": "Add Your First Ingredient", + "add_another": "Add Another Ingredient", + "confirm_delete": "Are you sure you want to delete this ingredient?", + "add_stock": "Add Initial Stock", + "quantity": "Quantity", + "expiration_date": "Expiration Date", + "supplier": "Supplier", + "batch_number": "Batch/Lot Number", + "stock_help": "Expiration tracking helps prevent waste and enables FIFO inventory management", + "add_another_lot": "+ Add Another Lot", + "add_another_stock": "Add Another Stock Lot", + "add_initial_stock": "Add Initial Stock (Optional)", + "fields": { + "name": "Ingredient Name", + "category": "Category", + "unit": "Unit of Measure", + "brand": "Brand", + "cost": "Standard Cost" + }, + "placeholders": { + "name": "e.g., Harina 000, Levadura fresca", + "brand": "e.g., Molinos Río", + "cost": "e.g., 150.00" + }, + "errors": { + "name_required": "Name is required", + "cost_invalid": "Cost must be a valid number", + "threshold_invalid": "Threshold must be a valid number" + }, + "stock_errors": { + "quantity_required": "Quantity must be greater than zero", + "expiration_past": "Expiration date is in the past", + "expiring_soon": "Warning: This ingredient expires very soon!" + } + }, + "recipes": { + "why": "Recipes connect your inventory to production. The system will calculate exact costs per item, track ingredient consumption, and help you optimize your menu profitability.", + "quick_start": "Recipe Templates", + "quick_start_desc": "Start with proven recipes and customize to your needs", + "category": { + "breads": "Breads", + "pastries": "Pastries", + "cakes": "Cakes & Tarts", + "cookies": "Cookies" + }, + "use_template": "Use Template", + "templates_hint": "Templates will automatically match your ingredients. Review and adjust as needed.", + "show_templates": "Show Recipe Templates", + "prerequisites_title": "More ingredients needed", + "prerequisites_desc": "You need at least 2 ingredients in your inventory before creating recipes. Go back to the Inventory step to add more ingredients.", + "added_count": "{{count}} recipe added", + "added_count_plural": "{{count}} recipes added", + "minimum_met": "{{count}} recipe(s) added - Ready to continue!", + "your_recipes": "Your Recipes", + "yield_label": "Yield", + "add_recipe": "Add Recipe", + "add_first": "Add Your First Recipe", + "add_another": "Add Another Recipe", + "add_new_ingredient": "Add New Ingredient", + "select_ingredient": "Select...", + "add_ingredient": "Add Ingredient", + "no_ingredients": "No ingredients added yet", + "confirm_delete": "Are you sure you want to delete this recipe?", + "fields": { + "name": "Recipe Name", + "finished_product": "Finished Product", + "yield_quantity": "Yield Quantity", + "yield_unit": "Unit", + "ingredients": "Ingredients" + }, + "placeholders": { + "name": "e.g., Baguette, Croissant", + "finished_product": "Select finished product..." + }, + "errors": { + "name_required": "Recipe name is required", + "finished_product_required": "Finished product is required", + "yield_invalid": "Yield must be a positive number", + "ingredients_required": "At least one ingredient is required", + "ingredient_required": "Ingredient is required", + "quantity_invalid": "Quantity must be positive" + } + }, + "quality": { + "why": "Quality checks ensure consistent output and help you identify issues early. Define what \"good\" looks like for each stage of production.", + "optional_note": "You can skip this and configure quality checks later", + "added_count": "{{count}} quality check added", + "added_count_plural": "{{count}} quality checks added", + "recommended_met": "Recommended amount met", + "recommended": "2+ recommended (optional)", + "your_checks": "Your Quality Checks", + "add_check": "Add Quality Check", + "add_first": "Add Your First Quality Check", + "add_another": "Add Another Quality Check", + "fields": { + "name": "Check Name", + "check_type": "Check Type", + "description": "Description", + "stages": "Applicable Stages", + "required": "Required check (must be completed)", + "critical": "Critical check (failure stops production)" + }, + "placeholders": { + "name": "e.g., Crust color check, Dough temperature", + "description": "What should be checked and why..." + }, + "errors": { + "name_required": "Name is required", + "stages_required": "At least one stage is required" + } + }, + "team": { + "why": "Adding team members allows you to assign tasks, track who does what, and give everyone the tools they need to work efficiently.", + "optional_note": "You can add team members now or invite them later from settings", + "invitation_note": "Team members will receive invitation emails once you complete the setup wizard.", + "added_count": "{{count}} team member added", + "added_count_plural": "{{count}} team members added", + "your_team": "Your Team Members", + "add_member": "Add Team Member", + "add_first": "Add Your First Team Member", + "add_another": "Add Another Team Member", + "skip_message": "Working alone for now? No problem!", + "skip_hint": "You can always invite team members later from Settings → Team", + "fields": { + "name": "Full Name", + "email": "Email Address", + "role": "Role" + }, + "placeholders": { + "name": "e.g., María García", + "email": "e.g., maria@panaderia.com" + }, + "errors": { + "name_required": "Name is required", + "email_required": "Email is required", + "email_invalid": "Invalid email format", + "email_duplicate": "This email is already added" + } + }, + "review": { + "title": "Review Your Setup", + "subtitle": "Let's review everything you've configured. You can go back and make changes if needed.", + "suppliers": "Suppliers", + "ingredients": "Ingredients", + "recipes": "Recipes", + "quality": "Quality Checks", + "suppliers_title": "Suppliers", + "more": "more", + "ingredients_title": "Inventory Items", + "total_cost": "Total value", + "recipes_title": "Recipes", + "avg_ingredients": "Avg ingredients", + "yields": "Yields", + "cost": "Cost", + "quality_title": "Quality Check Templates", + "required": "Required", + "ready_title": "Your Bakery is Ready to Go!", + "ready_message": "You've successfully configured {{suppliers}} suppliers, {{ingredients}} ingredients, and {{recipes}} recipes. Click 'Complete Setup' to finish and start using the system.", + "help": "Need to make changes? Use the \"Back\" button to return to any step." + }, + "completion": { + "title": "🎉 Setup Complete!", + "subtitle": "Congratulations! Your bakery management system is ready to use. Let's get started with your first tasks.", + "next_steps": "Recommended Next Steps", + "step1_title": "Start Production", + "step1_desc": "Create your first production batch using your configured recipes", + "step1_action": "Go to Production", + "step2_title": "Order Inventory", + "step2_desc": "Place your first purchase order with your suppliers", + "step2_action": "View Procurement", + "step3_title": "Track Analytics", + "step3_desc": "Monitor your production efficiency and costs in real-time", + "step3_action": "View Analytics", + "tips": "Pro Tips for Success", + "tip1_title": "Keep Inventory Updated", + "tip1_desc": "Regularly update stock levels to get accurate cost calculations and low-stock alerts", + "tip2_title": "Monitor Quality Metrics", + "tip2_desc": "Use quality checks during production to identify issues early and maintain consistency", + "tip3_title": "Review Analytics Weekly", + "tip3_desc": "Check your production analytics every week to optimize recipes and reduce waste", + "tip4_title": "Maintain Supplier Relationships", + "tip4_desc": "Keep supplier information current and track order performance for better partnerships", + "need_help": "Need Help?", + "settings": "Settings", + "settings_desc": "Configure preferences", + "dashboard": "Dashboard", + "dashboard_desc": "View overview", + "recipes": "Recipes", + "recipes_desc": "Manage recipes", + "go_dashboard": "Go to Dashboard", + "thanks": "Thank you for completing the setup! Happy baking! 🥖🥐🍰" + } +} diff --git a/frontend/src/locales/es/dashboard.json b/frontend/src/locales/es/dashboard.json index 421eade5..e3876d72 100644 --- a/frontend/src/locales/es/dashboard.json +++ b/frontend/src/locales/es/dashboard.json @@ -167,6 +167,30 @@ "last_30_days": "Últimos 30 días", "last_90_days": "Últimos 90 días" }, + "config": { + "title": "Completa la Configuración de tu Panadería", + "subtitle": "Configura características esenciales para comenzar", + "inventory": "Inventario", + "suppliers": "Proveedores", + "recipes": "Recetas", + "quality": "Estándares de Calidad", + "add_ingredients": "Agregar al menos {{count}} ingredientes", + "add_supplier": "Agregar tu primer proveedor", + "add_recipe": "Crear tu primera receta", + "add_quality": "Agregar controles de calidad (opcional)", + "sections_complete": "secciones completas", + "added": "agregado", + "recommended": "recomendado", + "next_step": "Siguiente Paso", + "configure": "Configurar", + "features_unlocked": "¡Características Desbloqueadas!", + "features": { + "inventory_tracking": "Seguimiento de Inventario", + "purchase_orders": "Órdenes de Compra", + "production_planning": "Planificación de Producción", + "cost_analysis": "Análisis de Costos" + } + }, "errors": { "failed_to_load_stats": "Error al cargar las estadísticas del panel. Por favor, inténtelo de nuevo." } diff --git a/frontend/src/locales/es/setup_wizard.json b/frontend/src/locales/es/setup_wizard.json new file mode 100644 index 00000000..d19ca1cc --- /dev/null +++ b/frontend/src/locales/es/setup_wizard.json @@ -0,0 +1,276 @@ +{ + "why_this_matters": "Por qué es importante", + "optional": "Opcional", + "navigation": { + "continue": "Continuar →", + "back": "← Atrás", + "skip": "Omitir por ahora" + }, + "welcome": { + "title": "¡Excelente! Tu IA está lista", + "subtitle": "Ahora configuremos las operaciones diarias de tu panadería para que el sistema pueda ayudarte a gestionar:", + "feature_inventory": "Control de Inventario", + "feature_inventory_desc": "Niveles de stock en tiempo real y alertas de reposición", + "feature_recipes": "Costeo de Recetas", + "feature_recipes_desc": "Cálculo automático de costos y análisis de rentabilidad", + "feature_quality": "Monitoreo de Calidad", + "feature_quality_desc": "Seguimiento de estándares y calidad de producción", + "feature_team": "Coordinación del Equipo", + "feature_team_desc": "Asignar tareas y seguir responsabilidades", + "time_estimate": "Toma aproximadamente 15-20 minutos", + "save_resume": "Puedes guardar el progreso y reanudar en cualquier momento", + "skip": "Lo haré más tarde", + "get_started": "¡Empecemos! →" + }, + "suppliers": { + "why": "Los proveedores son la fuente de tus ingredientes. Configurarlos ahora te permite rastrear costos, gestionar pedidos y analizar el rendimiento de los proveedores.", + "added_count": "{{count}} proveedor agregado", + "added_count_plural": "{{count}} proveedores agregados", + "minimum_met": "Requisito mínimo cumplido", + "add_minimum": "Agrega al menos 1 proveedor para continuar", + "your_suppliers": "Tus Proveedores", + "confirm_delete": "¿Estás seguro de que deseas eliminar este proveedor?", + "edit_supplier": "Editar Proveedor", + "add_supplier": "Agregar Proveedor", + "add_first": "Agrega tu Primer Proveedor", + "add_another": "Agregar Otro Proveedor", + "manage_products": "Gestionar Productos", + "products": "productos", + "products_for": "Productos para {{name}}", + "add_products": "Agregar Productos", + "no_products_available": "No hay productos disponibles", + "select_products": "Seleccionar Productos", + "unit_price": "Precio", + "unit": "Unidad", + "min_qty": "Cant. Mín.", + "add_new_product": "Agregar Nuevo Producto", + "save_products": "Guardar", + "no_products_warning": "Agrega al menos 1 producto para habilitar órdenes de compra automáticas", + "fields": { + "name": "Nombre del Proveedor", + "type": "Tipo", + "contact_person": "Persona de Contacto", + "phone": "Teléfono", + "email": "Correo Electrónico" + }, + "placeholders": { + "name": "ej., Molinos SA, Distribuidora López", + "contact_person": "ej., Juan Pérez", + "phone": "ej., +34 91 123 4567", + "email": "ej., ventas@proveedor.com" + }, + "errors": { + "name_required": "El nombre es obligatorio", + "email_invalid": "Formato de correo inválido" + } + }, + "inventory": { + "why": "Los artículos de inventario son los componentes básicos de tus recetas. Una vez configurados, el sistema rastreará las cantidades, te alertará cuando el stock sea bajo y te ayudará a calcular los costos de las recetas.", + "quick_start": "Inicio Rápido", + "quick_start_desc": "Importa ingredientes comunes para comenzar rápidamente", + "essential": "Ingredientes Esenciales", + "common": "Ingredientes Comunes", + "packaging": "Embalaje", + "import_all": "Importar Todo", + "templates_hint": "Haz clic en cualquier artículo para personalizarlo antes de agregarlo, o usa \"Importar Todo\" para una configuración rápida", + "show_templates": "Mostrar Plantillas de Inicio Rápido", + "added_count": "{{count}} ingrediente agregado", + "added_count_plural": "{{count}} ingredientes agregados", + "minimum_met": "Requisito mínimo cumplido", + "need_more": "Necesitas {{count}} más", + "your_ingredients": "Tus Ingredientes", + "add_ingredient": "Agregar Ingrediente", + "edit_ingredient": "Editar Ingrediente", + "add_first": "Agrega tu Primer Ingrediente", + "add_another": "Agregar Otro Ingrediente", + "confirm_delete": "¿Estás seguro de que deseas eliminar este ingrediente?", + "add_stock": "Agregar Stock Inicial", + "quantity": "Cantidad", + "expiration_date": "Fecha de Vencimiento", + "supplier": "Proveedor", + "batch_number": "Número de Lote", + "stock_help": "El seguimiento de vencimiento ayuda a prevenir desperdicios y habilita la gestión de inventario FIFO", + "add_another_lot": "+ Agregar Otro Lote", + "add_another_stock": "Agregar Otro Lote de Stock", + "add_initial_stock": "Agregar Stock Inicial (Opcional)", + "fields": { + "name": "Nombre del Ingrediente", + "category": "Categoría", + "unit": "Unidad de Medida", + "brand": "Marca", + "cost": "Costo Estándar" + }, + "placeholders": { + "name": "ej., Harina 000, Levadura fresca", + "brand": "ej., Molinos Río", + "cost": "ej., 150.00" + }, + "errors": { + "name_required": "El nombre es obligatorio", + "cost_invalid": "El costo debe ser un número válido", + "threshold_invalid": "El umbral debe ser un número válido" + }, + "stock_errors": { + "quantity_required": "La cantidad debe ser mayor que cero", + "expiration_past": "La fecha de vencimiento está en el pasado", + "expiring_soon": "¡Advertencia: Este ingrediente vence muy pronto!" + } + }, + "recipes": { + "why": "Las recetas conectan tu inventario con la producción. El sistema calculará los costos exactos por artículo, rastreará el consumo de ingredientes y te ayudará a optimizar la rentabilidad de tu menú.", + "quick_start": "Plantillas de Recetas", + "quick_start_desc": "Comienza con recetas probadas y personalízalas según tus necesidades", + "category": { + "breads": "Panes", + "pastries": "Bollería", + "cakes": "Pasteles y Tartas", + "cookies": "Galletas" + }, + "use_template": "Usar Plantilla", + "templates_hint": "Las plantillas coincidirán automáticamente con tus ingredientes. Revisa y ajusta según sea necesario.", + "show_templates": "Mostrar Plantillas de Recetas", + "prerequisites_title": "Se necesitan más ingredientes", + "prerequisites_desc": "Necesitas al menos 2 ingredientes en tu inventario antes de crear recetas. Regresa al paso de Inventario para agregar más ingredientes.", + "added_count": "{{count}} receta agregada", + "added_count_plural": "{{count}} recetas agregadas", + "minimum_met": "{{count}} receta(s) agregada(s) - ¡Listo para continuar!", + "your_recipes": "Tus Recetas", + "yield_label": "Rendimiento", + "add_recipe": "Agregar Receta", + "add_first": "Agrega tu Primera Receta", + "add_another": "Agregar Otra Receta", + "add_new_ingredient": "Agregar Nuevo Ingrediente", + "select_ingredient": "Seleccionar...", + "add_ingredient": "Agregar Ingrediente", + "no_ingredients": "Aún no se han agregado ingredientes", + "confirm_delete": "¿Estás seguro de que deseas eliminar esta receta?", + "fields": { + "name": "Nombre de la Receta", + "finished_product": "Producto Terminado", + "yield_quantity": "Cantidad de Rendimiento", + "yield_unit": "Unidad", + "ingredients": "Ingredientes" + }, + "placeholders": { + "name": "ej., Baguette, Croissant", + "finished_product": "Seleccionar producto terminado..." + }, + "errors": { + "name_required": "El nombre de la receta es obligatorio", + "finished_product_required": "El producto terminado es obligatorio", + "yield_invalid": "El rendimiento debe ser un número positivo", + "ingredients_required": "Se requiere al menos un ingrediente", + "ingredient_required": "Se requiere un ingrediente", + "quantity_invalid": "La cantidad debe ser positiva" + } + }, + "quality": { + "why": "Los controles de calidad aseguran una producción consistente y te ayudan a identificar problemas temprano. Define qué significa \"bueno\" para cada etapa de producción.", + "optional_note": "Puedes omitir esto y configurar los controles de calidad más tarde", + "added_count": "{{count}} control de calidad agregado", + "added_count_plural": "{{count}} controles de calidad agregados", + "recommended_met": "Cantidad recomendada cumplida", + "recommended": "2+ recomendados (opcional)", + "your_checks": "Tus Controles de Calidad", + "add_check": "Agregar Control de Calidad", + "add_first": "Agrega tu Primer Control de Calidad", + "add_another": "Agregar Otro Control de Calidad", + "fields": { + "name": "Nombre del Control", + "check_type": "Tipo de Control", + "description": "Descripción", + "stages": "Etapas Aplicables", + "required": "Control obligatorio (debe completarse)", + "critical": "Control crítico (el fallo detiene la producción)" + }, + "placeholders": { + "name": "ej., Control de color de corteza, Temperatura de masa", + "description": "Qué debe verificarse y por qué..." + }, + "errors": { + "name_required": "El nombre es obligatorio", + "stages_required": "Se requiere al menos una etapa" + } + }, + "team": { + "why": "Agregar miembros del equipo te permite asignar tareas, rastrear quién hace qué y dar a todos las herramientas que necesitan para trabajar eficientemente.", + "optional_note": "Puedes agregar miembros del equipo ahora o invitarlos más tarde desde la configuración", + "invitation_note": "Los miembros del equipo recibirán correos de invitación una vez que completes el asistente de configuración.", + "added_count": "{{count}} miembro del equipo agregado", + "added_count_plural": "{{count}} miembros del equipo agregados", + "your_team": "Los Miembros de tu Equipo", + "add_member": "Agregar Miembro del Equipo", + "add_first": "Agrega tu Primer Miembro del Equipo", + "add_another": "Agregar Otro Miembro del Equipo", + "skip_message": "¿Trabajas solo por ahora? ¡No hay problema!", + "skip_hint": "Siempre puedes invitar miembros del equipo más tarde desde Configuración → Equipo", + "fields": { + "name": "Nombre Completo", + "email": "Dirección de Correo", + "role": "Rol" + }, + "placeholders": { + "name": "ej., María García", + "email": "ej., maria@panaderia.com" + }, + "errors": { + "name_required": "El nombre es obligatorio", + "email_required": "El correo es obligatorio", + "email_invalid": "Formato de correo inválido", + "email_duplicate": "Este correo ya ha sido agregado" + } + }, + "review": { + "title": "Revisa tu Configuración", + "subtitle": "Revisemos todo lo que has configurado. Puedes regresar y hacer cambios si es necesario.", + "suppliers": "Proveedores", + "ingredients": "Ingredientes", + "recipes": "Recetas", + "quality": "Controles de Calidad", + "suppliers_title": "Proveedores", + "more": "más", + "ingredients_title": "Artículos de Inventario", + "total_cost": "Valor total", + "recipes_title": "Recetas", + "avg_ingredients": "Prom. ingredientes", + "yields": "Rendimiento", + "cost": "Costo", + "quality_title": "Plantillas de Control de Calidad", + "required": "Obligatorio", + "ready_title": "¡Tu Panadería está Lista!", + "ready_message": "Has configurado exitosamente {{suppliers}} proveedores, {{ingredients}} ingredientes y {{recipes}} recetas. Haz clic en 'Completar Configuración' para finalizar y comenzar a usar el sistema.", + "help": "¿Necesitas hacer cambios? Usa el botón \"Atrás\" para volver a cualquier paso." + }, + "completion": { + "title": "🎉 ¡Configuración Completa!", + "subtitle": "¡Felicitaciones! Tu sistema de gestión de panadería está listo para usar. Comencemos con tus primeras tareas.", + "next_steps": "Próximos Pasos Recomendados", + "step1_title": "Iniciar Producción", + "step1_desc": "Crea tu primer lote de producción usando tus recetas configuradas", + "step1_action": "Ir a Producción", + "step2_title": "Ordenar Inventario", + "step2_desc": "Realiza tu primera orden de compra con tus proveedores", + "step2_action": "Ver Adquisiciones", + "step3_title": "Seguir Analíticas", + "step3_desc": "Monitorea tu eficiencia de producción y costos en tiempo real", + "step3_action": "Ver Analíticas", + "tips": "Consejos Pro para el Éxito", + "tip1_title": "Mantén el Inventario Actualizado", + "tip1_desc": "Actualiza regularmente los niveles de stock para obtener cálculos de costos precisos y alertas de stock bajo", + "tip2_title": "Monitorea las Métricas de Calidad", + "tip2_desc": "Usa controles de calidad durante la producción para identificar problemas temprano y mantener la consistencia", + "tip3_title": "Revisa las Analíticas Semanalmente", + "tip3_desc": "Revisa tus analíticas de producción cada semana para optimizar recetas y reducir desperdicios", + "tip4_title": "Mantén las Relaciones con Proveedores", + "tip4_desc": "Mantén la información de proveedores actualizada y rastrea el rendimiento de pedidos para mejores asociaciones", + "need_help": "¿Necesitas Ayuda?", + "settings": "Configuración", + "settings_desc": "Configurar preferencias", + "dashboard": "Panel", + "dashboard_desc": "Ver resumen", + "recipes": "Recetas", + "recipes_desc": "Gestionar recetas", + "go_dashboard": "Ir al Panel", + "thanks": "¡Gracias por completar la configuración! ¡Feliz horneado! 🥖🥐🍰" + } +} diff --git a/frontend/src/locales/eu/dashboard.json b/frontend/src/locales/eu/dashboard.json index f7c3c855..ca5402e9 100644 --- a/frontend/src/locales/eu/dashboard.json +++ b/frontend/src/locales/eu/dashboard.json @@ -122,5 +122,29 @@ "last_7_days": "Azken 7 egun", "last_30_days": "Azken 30 egun", "last_90_days": "Azken 90 egun" + }, + "config": { + "title": "Osatu Zure Okindegiaren Konfigurazioa", + "subtitle": "Konfiguratu ezinbesteko eginbideak hasteko", + "inventory": "Inbentarioa", + "suppliers": "Hornitzaileak", + "recipes": "Errezetak", + "quality": "Kalitate Estandarrak", + "add_ingredients": "Gehitu gutxienez {{count}} osagai", + "add_supplier": "Gehitu zure lehen hornitzailea", + "add_recipe": "Sortu zure lehen errezeta", + "add_quality": "Gehitu kalitate kontrolak (aukerakoa)", + "sections_complete": "atal osatuta", + "added": "gehituta", + "recommended": "gomendatua", + "next_step": "Hurrengo Urratsa", + "configure": "Konfiguratu", + "features_unlocked": "Eginbideak Desblokeatuta!", + "features": { + "inventory_tracking": "Inbentario Jarraipena", + "purchase_orders": "Erosketa Aginduak", + "production_planning": "Ekoizpen Plangintza", + "cost_analysis": "Kostu Analisia" + } } } \ No newline at end of file diff --git a/frontend/src/locales/eu/setup_wizard.json b/frontend/src/locales/eu/setup_wizard.json new file mode 100644 index 00000000..337c5d83 --- /dev/null +++ b/frontend/src/locales/eu/setup_wizard.json @@ -0,0 +1,276 @@ +{ + "why_this_matters": "Zergatik da garrantzitsua", + "optional": "Aukerakoa", + "navigation": { + "continue": "Jarraitu →", + "back": "← Atzera", + "skip": "Orain saltatu" + }, + "welcome": { + "title": "Bikain! Zure IA prest dago", + "subtitle": "Orain zure okindegiko eguneroko eragiketak konfiguratu ditzagun sistemak kudeatzeko lagundu diezazun:", + "feature_inventory": "Inbentario Jarraipena", + "feature_inventory_desc": "Denbora errealeko stock mailak eta birpornitzeko alertak", + "feature_recipes": "Errezeta Kostuak", + "feature_recipes_desc": "Kostu kalkulua automatikoa eta errentagarritasun analisia", + "feature_quality": "Kalitate Monitorizazioa", + "feature_quality_desc": "Estandarren eta ekoizpen kalitatearen jarraipena", + "feature_team": "Talde Koordinazioa", + "feature_team_desc": "Zereginak esleitu eta erantzukizunen jarraipena", + "time_estimate": "Gutxi gorabehera 15-20 minutu behar dira", + "save_resume": "Aurrerapena gorde eta edozein unetan berrekin dezakezu", + "skip": "Geroago egingo dut", + "get_started": "Has gaitezen! →" + }, + "suppliers": { + "why": "Hornitzaileak zure osagaien iturria dira. Orain konfiguratuz, kostuak jarraitu, eskaerak kudeatu eta hornitzaileen errendimendua aztertu dezakezu.", + "added_count": "Hornitzaile {{count}} gehituta", + "added_count_plural": "{{count}} hornitzaile gehituta", + "minimum_met": "Gutxieneko baldintza betetzen da", + "add_minimum": "Gehitu gutxienez hornitzaile 1 jarraitzeko", + "your_suppliers": "Zure Hornitzaileak", + "confirm_delete": "Ziur zaude hornitzaile hau ezabatu nahi duzula?", + "edit_supplier": "Hornitzailea Editatu", + "add_supplier": "Hornitzailea Gehitu", + "add_first": "Gehitu Zure Lehen Hornitzailea", + "add_another": "Beste Hornitzaile Bat Gehitu", + "manage_products": "Produktuak Kudeatu", + "products": "produktuak", + "products_for": "{{name}}-(r)entzako produktuak", + "add_products": "Produktuak Gehitu", + "no_products_available": "Ez dago produkturik eskuragarri", + "select_products": "Produktuak Aukeratu", + "unit_price": "Prezioa", + "unit": "Unitatea", + "min_qty": "Kant. Gutx.", + "add_new_product": "Produktu Berria Gehitu", + "save_products": "Gorde", + "no_products_warning": "Gehitu gutxienez produktu 1 erosketa-agindu automatikoak gaitzeko", + "fields": { + "name": "Hornitzailearen Izena", + "type": "Mota", + "contact_person": "Kontaktu Pertsona", + "phone": "Telefonoa", + "email": "Posta Elektronikoa" + }, + "placeholders": { + "name": "adib., Molinos SA, Distribuidora López", + "contact_person": "adib., Juan Pérez", + "phone": "adib., +34 91 123 4567", + "email": "adib., salmentak@hornitzailea.eus" + }, + "errors": { + "name_required": "Izena beharrezkoa da", + "email_invalid": "Posta formatu baliogabea" + } + }, + "inventory": { + "why": "Inbentario osagaiak zure errezeten oinarrizko elementuak dira. Konfiguratuta, sistemak kantitateen jarraipena egingo du, stock apala dagoenean alertak bidaliko ditu eta errezeten kostuak kalkulatzen lagunduko dizu.", + "quick_start": "Abio Azkarra", + "quick_start_desc": "Inportatu ohiko osagaiak azkar hasteko", + "essential": "Oinarrizko Osagaiak", + "common": "Ohiko Osagaiak", + "packaging": "Ontziratzea", + "import_all": "Dena Inportatu", + "templates_hint": "Klik egin edozein elementutan gehitu aurretik pertsonalizatzeko, edo erabili \"Dena Inportatu\" konfigurazio azkarrerako", + "show_templates": "Erakutsi Abio Azkarreko Txantiloiak", + "added_count": "Osagai {{count}} gehituta", + "added_count_plural": "{{count}} osagai gehituta", + "minimum_met": "Gutxieneko baldintza betetzen da", + "need_more": "{{count}} gehiago behar dira", + "your_ingredients": "Zure Osagaiak", + "add_ingredient": "Osagaia Gehitu", + "edit_ingredient": "Osagaia Editatu", + "add_first": "Gehitu Zure Lehen Osagaia", + "add_another": "Beste Osagai Bat Gehitu", + "confirm_delete": "Ziur zaude osagai hau ezabatu nahi duzula?", + "add_stock": "Stock Hasiera Gehitu", + "quantity": "Kantitatea", + "expiration_date": "Iraungitze Data", + "supplier": "Hornitzailea", + "batch_number": "Lote Zenbakia", + "stock_help": "Iraungitze jarraipenak hondakinak prebenitzen laguntzen du eta FIFO inbentario kudeaketa gaitzen du", + "add_another_lot": "+ Beste Lote Bat Gehitu", + "add_another_stock": "Beste Stock Lote Bat Gehitu", + "add_initial_stock": "Stock Hasiera Gehitu (Aukerakoa)", + "fields": { + "name": "Osagaiaren Izena", + "category": "Kategoria", + "unit": "Neurri Unitatea", + "brand": "Marka", + "cost": "Kostu Estandarra" + }, + "placeholders": { + "name": "adib., Irina 000, Legami freskoa", + "brand": "adib., Molinos Río", + "cost": "adib., 150.00" + }, + "errors": { + "name_required": "Izena beharrezkoa da", + "cost_invalid": "Kostua zenbaki baliozkoa izan behar da", + "threshold_invalid": "Atalasea zenbaki baliozkoa izan behar da" + }, + "stock_errors": { + "quantity_required": "Kantitatea zero baino handiagoa izan behar da", + "expiration_past": "Iraungitze data iraganean dago", + "expiring_soon": "Abisua: Osagai hau laster iraungitzen da!" + } + }, + "recipes": { + "why": "Errezetak zure inbentarioa ekoizpenarekin konektatzen dute. Sistemak elementu bakoitzeko kostu zehatzak kalkulatuko ditu, osagaien kontsumoa jarraituko du eta menuko errentagarritasuna optimizatzen lagunduko dizu.", + "quick_start": "Errezeta Txantiloiak", + "quick_start_desc": "Hasi frogatutako errezetekin eta pertsonalizatu zure beharretara", + "category": { + "breads": "Ogiak", + "pastries": "Gozogintza", + "cakes": "Pastelak eta Tartak", + "cookies": "Galletak" + }, + "use_template": "Txantiloia Erabili", + "templates_hint": "Txantiloiek automatikoki zure osagaiekin bat egingo dute. Berrikusi eta egokitu behar den bezala.", + "show_templates": "Erakutsi Errezeta Txantiloiak", + "prerequisites_title": "Osagai gehiago behar dira", + "prerequisites_desc": "Gutxienez 2 osagai behar dituzu zure inbentarioan errezetak sortu aurretik. Itzuli Inbentario urratsera osagai gehiago gehitzeko.", + "added_count": "Errezeta {{count}} gehituta", + "added_count_plural": "{{count}} errezeta gehituta", + "minimum_met": "{{count}} errezeta gehituta - Jarraitzeko prest!", + "your_recipes": "Zure Errezetak", + "yield_label": "Etekin", + "add_recipe": "Errezeta Gehitu", + "add_first": "Gehitu Zure Lehen Errezeta", + "add_another": "Beste Errezeta Bat Gehitu", + "add_new_ingredient": "Osagai Berria Gehitu", + "select_ingredient": "Aukeratu...", + "add_ingredient": "Osagaia Gehitu", + "no_ingredients": "Oraindik ez da osagairik gehitu", + "confirm_delete": "Ziur zaude errezeta hau ezabatu nahi duzula?", + "fields": { + "name": "Errezeta Izena", + "finished_product": "Produktu Amaituak", + "yield_quantity": "Etekinaren Kantitatea", + "yield_unit": "Unitatea", + "ingredients": "Osagaiak" + }, + "placeholders": { + "name": "adib., Baguette, Croissant", + "finished_product": "Aukeratu produktu amaituak..." + }, + "errors": { + "name_required": "Errezeta izena beharrezkoa da", + "finished_product_required": "Produktu amaituak beharrezkoa da", + "yield_invalid": "Etekina zenbaki positiboa izan behar da", + "ingredients_required": "Gutxienez osagai bat beharrezkoa da", + "ingredient_required": "Osagaia beharrezkoa da", + "quantity_invalid": "Kantitatea positiboa izan behar da" + } + }, + "quality": { + "why": "Kalitate kontrolek irteera koherentea bermatzen dute eta goiz arazoak identifikatzen laguntzen dizute. Definitu zer den \"ona\" ekoizpen etapa bakoitzerako.", + "optional_note": "Hau saltatu eta kalitate kontrolak geroago konfigura ditzakezu", + "added_count": "Kalitate kontrol {{count}} gehituta", + "added_count_plural": "{{count}} kalitate kontrol gehituta", + "recommended_met": "Gomendatutako kopurua betetzen da", + "recommended": "2+ gomendatzen dira (aukerakoa)", + "your_checks": "Zure Kalitate Kontrolak", + "add_check": "Kalitate Kontrola Gehitu", + "add_first": "Gehitu Zure Lehen Kalitate Kontrola", + "add_another": "Beste Kalitate Kontrol Bat Gehitu", + "fields": { + "name": "Kontrolaren Izena", + "check_type": "Kontrol Mota", + "description": "Deskribapena", + "stages": "Etapa Aplikagarriak", + "required": "Nahitaezko kontrola (osatu behar da)", + "critical": "Kontrol kritikoa (hutsegiteak ekoizpena gelditzen du)" + }, + "placeholders": { + "name": "adib., Azal kolorearen kontrola, Oraren tenperatura", + "description": "Zer egiaztatu behar den eta zergatik..." + }, + "errors": { + "name_required": "Izena beharrezkoa da", + "stages_required": "Gutxienez etapa bat beharrezkoa da" + } + }, + "team": { + "why": "Taldekideak gehitzeak zereginak esleitzea, nork zer egiten duen jarraitzea eta guztiei behar dituzten tresnak ematea ahalbidetzen dizu modu eraginkorrean lan egiteko.", + "optional_note": "Taldekideak orain gehi ditzakezu edo ezarpenetatik geroago gonbida ditzakezu", + "invitation_note": "Taldekideek gonbidapen posta elektronikoak jasoko dituzte konfigurazio morroia osatu ondoren.", + "added_count": "Taldekide {{count}} gehituta", + "added_count_plural": "{{count}} taldekide gehituta", + "your_team": "Zure Taldekideak", + "add_member": "Taldekidea Gehitu", + "add_first": "Gehitu Zure Lehen Taldekidea", + "add_another": "Beste Taldekide Bat Gehitu", + "skip_message": "Oraingoz bakarrik lanean? Ez dago arazorik!", + "skip_hint": "Beti gehi ditzakezu taldekideak geroago Ezarpenak → Taldea-tik", + "fields": { + "name": "Izen Osoa", + "email": "Posta Elektroniko Helbidea", + "role": "Rola" + }, + "placeholders": { + "name": "adib., María García", + "email": "adib., maria@okindegi.eus" + }, + "errors": { + "name_required": "Izena beharrezkoa da", + "email_required": "Posta beharrezkoa da", + "email_invalid": "Posta formatu baliogabea", + "email_duplicate": "Posta elektroniko hau dagoeneko gehituta dago" + } + }, + "review": { + "title": "Berrikusi Zure Konfigurazioa", + "subtitle": "Berrikusi ditzagun konfiguratu dituzun guztiak. Atzera joan eta aldaketak egin ditzakezu behar izanez gero.", + "suppliers": "Hornitzaileak", + "ingredients": "Osagaiak", + "recipes": "Errezetak", + "quality": "Kalitate Kontrolak", + "suppliers_title": "Hornitzaileak", + "more": "gehiago", + "ingredients_title": "Inbentario Elementuak", + "total_cost": "Balio osoa", + "recipes_title": "Errezetak", + "avg_ingredients": "Batez besteko osagaiak", + "yields": "Etekina", + "cost": "Kostua", + "quality_title": "Kalitate Kontrol Txantiloiak", + "required": "Nahitaezkoa", + "ready_title": "Zure Okindegi Prest Dago!", + "ready_message": "Arrakastaz konfiguratu dituzu {{suppliers}} hornitzaile, {{ingredients}} osagai eta {{recipes}} errezeta. Egin klik 'Konfigurazioa Osatu'-n amaitzeko eta sistema erabiltzen hasteko.", + "help": "Aldaketak egin behar dituzu? Erabili \"Atzera\" botoia edozein urratsera itzultzeko." + }, + "completion": { + "title": "🎉 Konfigurazioa Osatuta!", + "subtitle": "Zorionak! Zure okindegi kudeaketa sistema erabiltzeko prest dago. Has gaitezen zure lehen zereginekin.", + "next_steps": "Gomendatutako Hurrengo Urratsak", + "step1_title": "Ekoizpena Hasi", + "step1_desc": "Sortu zure lehen ekoizpen lotea konfiguratutako errezetek erabiliz", + "step1_action": "Joan Ekoizpenera", + "step2_title": "Inbentarioa Eskatu", + "step2_desc": "Egin zure lehen erosketa-agindua zure hornitzaileekin", + "step2_action": "Ikusi Erosketak", + "step3_title": "Jarraitu Analitikak", + "step3_desc": "Zaindu zure ekoizpen eraginkortasuna eta kostuak denbora errealean", + "step3_action": "Ikusi Analitikak", + "tips": "Arrakastako Aholku Profesionalak", + "tip1_title": "Mantendu Inbentarioa Eguneratuta", + "tip1_desc": "Eguneratu stock mailak erregularki kostu kalkulu zehatzak eta stock apala alertak lortzeko", + "tip2_title": "Zaindu Kalitate Metrikak", + "tip2_desc": "Erabili kalitate kontrolak ekoizpenean goiz arazoak identifikatzeko eta koherentzia mantentzeko", + "tip3_title": "Berrikusi Analitikak Astero", + "tip3_desc": "Egiaztatu zure ekoizpen analitikak astero errezetak optimizatzeko eta hondakinak murrizteko", + "tip4_title": "Mantendu Hornitzaileekin Harremanak", + "tip4_desc": "Mantendu hornitzaileen informazioa eguneratuta eta jarraitu eskaeren errendimendua elkarlantza hobeak lortzeko", + "need_help": "Laguntza Behar?", + "settings": "Ezarpenak", + "settings_desc": "Konfiguratu hobespenak", + "dashboard": "Aginte-panela", + "dashboard_desc": "Ikusi laburpena", + "recipes": "Errezetak", + "recipes_desc": "Kudeatu errezetak", + "go_dashboard": "Joan Aginte-panelera", + "thanks": "Eskerrik asko konfigurazioa osatzeagatik! Labealdi zoriontsuak! 🥖🥐🍰" + } +}