Files
bakery-ia/frontend/src/components/domain/onboarding/steps/UploadSalesDataStep.tsx

1010 lines
42 KiB
TypeScript
Raw Normal View History

import React, { useState, useRef } from 'react';
2025-10-19 19:22:37 +02:00
import { useTranslation } from 'react-i18next';
import { Button } from '../../../ui/Button';
import { useCurrentTenant } from '../../../../stores/tenant.store';
2025-10-06 15:27:01 +02:00
import { useCreateIngredient, useClassifyBatch } from '../../../../api/hooks/inventory';
import { useValidateImportFile, useImportSalesData } from '../../../../api/hooks/sales';
2025-10-19 19:22:37 +02:00
import type { ImportValidationResponse } from '../../../../api/types/dataImport';
import type { ProductSuggestionResponse } from '../../../../api/types/inventory';
import { useAuth } from '../../../../contexts/AuthContext';
Implement 5 UX enhancements for ingredient management This commit implements the requested enhancements for the ingredient quick-add system and batch management: **1. Duplicate Detection** - Real-time Levenshtein distance-based similarity checking - Shows warning with top 3 similar ingredients (70%+ similarity) - Prevents accidental duplicate creation - Location: QuickAddIngredientModal.tsx **2. Smart Category Suggestions** - Auto-populates category based on ingredient name patterns - Supports Spanish and English ingredient names - Shows visual indicator when category is AI-suggested - Pattern matching for: Baking, Dairy, Fruits, Vegetables, Meat, Seafood, Spices - Location: ingredientHelpers.ts **3. Quick Templates** - 10 pre-configured common bakery ingredients - One-click template application - Templates include: Flour, Butter, Sugar, Eggs, Yeast, Milk, Chocolate, Vanilla, Salt, Cream - Each template has sensible defaults (shelf life, refrigeration requirements) - Location: QuickAddIngredientModal.tsx **4. Batch Creation Mode** - BatchAddIngredientsModal component for adding multiple ingredients at once - Table-based interface for efficient data entry - "Load from Templates" quick action - Duplicate detection within batch - Partial success handling (some ingredients succeed, some fail) - Location: BatchAddIngredientsModal.tsx - Integration: UploadSalesDataStep.tsx (2 buttons: "Add One" / "Add Multiple") **5. Dashboard Alert for Incomplete Ingredients** - IncompleteIngredientsAlert component on dashboard - Queries ingredients with needs_review metadata flag - Shows count badge and first 5 incomplete ingredients - "Complete Information" button links to inventory page - Only shows when incomplete ingredients exist - Location: IncompleteIngredientsAlert.tsx - Integration: DashboardPage.tsx **New Files Created:** - ingredientHelpers.ts - Utilities for duplicate detection, smart suggestions, templates - BatchAddIngredientsModal.tsx - Batch ingredient creation component - IncompleteIngredientsAlert.tsx - Dashboard alert component **Files Modified:** - QuickAddIngredientModal.tsx - Added duplicate detection, smart suggestions, templates - UploadSalesDataStep.tsx - Integrated batch creation modal - DashboardPage.tsx - Added incomplete ingredients alert **Technical Highlights:** - Levenshtein distance algorithm for fuzzy name matching - Pattern-based category suggestions (supports 100+ ingredient patterns) - Metadata tracking (needs_review, created_context) - Real-time validation and error handling - Responsive UI with animations - Consistent with existing design system All features built and tested successfully. Build time: 21.29s
2025-11-06 15:39:30 +00:00
import { BatchAddIngredientsModal } from '../../inventory/BatchAddIngredientsModal';
interface UploadSalesDataStepProps {
onNext: () => void;
onPrevious: () => void;
onComplete: (data?: any) => void;
isFirstStep: boolean;
isLastStep: boolean;
}
interface ProgressState {
stage: string;
progress: number;
message: string;
}
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
interface InventoryItemForm {
id: string; // Unique ID for UI tracking
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
name: string;
product_type: string;
category: string;
unit_of_measure: string;
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
stock_quantity: number;
cost_per_unit: number;
estimated_shelf_life_days: number;
requires_refrigeration: boolean;
requires_freezing: boolean;
is_seasonal: boolean;
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
low_stock_threshold: number;
reorder_point: number;
notes: string;
// AI suggestion metadata (if from AI)
isSuggested: boolean;
confidence_score?: number;
sales_data?: {
total_quantity: number;
average_daily_sales: number;
};
}
export const UploadSalesDataStep: React.FC<UploadSalesDataStepProps> = ({
onComplete,
isFirstStep
}) => {
2025-10-19 19:22:37 +02:00
const { t } = useTranslation();
const [selectedFile, setSelectedFile] = useState<File | null>(null);
const [isValidating, setIsValidating] = useState(false);
const [validationResult, setValidationResult] = useState<ImportValidationResponse | null>(null);
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
const [inventoryItems, setInventoryItems] = useState<InventoryItemForm[]>([]);
const [showInventoryStep, setShowInventoryStep] = useState(false);
const [error, setError] = useState<string>('');
const [progressState, setProgressState] = useState<ProgressState | null>(null);
2025-10-19 19:22:37 +02:00
const [showGuide, setShowGuide] = useState(false);
const fileInputRef = useRef<HTMLInputElement>(null);
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
// Form state for adding/editing
const [isAdding, setIsAdding] = useState(false);
const [editingId, setEditingId] = useState<string | null>(null);
Implement 5 UX enhancements for ingredient management This commit implements the requested enhancements for the ingredient quick-add system and batch management: **1. Duplicate Detection** - Real-time Levenshtein distance-based similarity checking - Shows warning with top 3 similar ingredients (70%+ similarity) - Prevents accidental duplicate creation - Location: QuickAddIngredientModal.tsx **2. Smart Category Suggestions** - Auto-populates category based on ingredient name patterns - Supports Spanish and English ingredient names - Shows visual indicator when category is AI-suggested - Pattern matching for: Baking, Dairy, Fruits, Vegetables, Meat, Seafood, Spices - Location: ingredientHelpers.ts **3. Quick Templates** - 10 pre-configured common bakery ingredients - One-click template application - Templates include: Flour, Butter, Sugar, Eggs, Yeast, Milk, Chocolate, Vanilla, Salt, Cream - Each template has sensible defaults (shelf life, refrigeration requirements) - Location: QuickAddIngredientModal.tsx **4. Batch Creation Mode** - BatchAddIngredientsModal component for adding multiple ingredients at once - Table-based interface for efficient data entry - "Load from Templates" quick action - Duplicate detection within batch - Partial success handling (some ingredients succeed, some fail) - Location: BatchAddIngredientsModal.tsx - Integration: UploadSalesDataStep.tsx (2 buttons: "Add One" / "Add Multiple") **5. Dashboard Alert for Incomplete Ingredients** - IncompleteIngredientsAlert component on dashboard - Queries ingredients with needs_review metadata flag - Shows count badge and first 5 incomplete ingredients - "Complete Information" button links to inventory page - Only shows when incomplete ingredients exist - Location: IncompleteIngredientsAlert.tsx - Integration: DashboardPage.tsx **New Files Created:** - ingredientHelpers.ts - Utilities for duplicate detection, smart suggestions, templates - BatchAddIngredientsModal.tsx - Batch ingredient creation component - IncompleteIngredientsAlert.tsx - Dashboard alert component **Files Modified:** - QuickAddIngredientModal.tsx - Added duplicate detection, smart suggestions, templates - UploadSalesDataStep.tsx - Integrated batch creation modal - DashboardPage.tsx - Added incomplete ingredients alert **Technical Highlights:** - Levenshtein distance algorithm for fuzzy name matching - Pattern-based category suggestions (supports 100+ ingredient patterns) - Metadata tracking (needs_review, created_context) - Real-time validation and error handling - Responsive UI with animations - Consistent with existing design system All features built and tested successfully. Build time: 21.29s
2025-11-06 15:39:30 +00:00
const [showBatchModal, setShowBatchModal] = useState(false);
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
const [formData, setFormData] = useState<InventoryItemForm>({
id: '',
name: '',
product_type: 'ingredient',
category: '',
unit_of_measure: 'kg',
stock_quantity: 0,
cost_per_unit: 0,
estimated_shelf_life_days: 30,
requires_refrigeration: false,
requires_freezing: false,
is_seasonal: false,
low_stock_threshold: 0,
reorder_point: 0,
notes: '',
isSuggested: false,
});
const [formErrors, setFormErrors] = useState<Record<string, string>>({});
const currentTenant = useCurrentTenant();
const { user } = useAuth();
2025-10-06 15:27:01 +02:00
const validateFileMutation = useValidateImportFile();
const createIngredient = useCreateIngredient();
2025-10-06 15:27:01 +02:00
const importMutation = useImportSalesData();
const classifyBatchMutation = useClassifyBatch();
const handleFileSelect = async (event: React.ChangeEvent<HTMLInputElement>) => {
const file = event.target.files?.[0];
if (file) {
setSelectedFile(file);
setValidationResult(null);
setError('');
await handleAutoValidateAndClassify(file);
}
};
const handleDrop = async (event: React.DragEvent<HTMLDivElement>) => {
event.preventDefault();
const file = event.dataTransfer.files[0];
if (file) {
setSelectedFile(file);
setValidationResult(null);
setError('');
await handleAutoValidateAndClassify(file);
}
};
const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {
event.preventDefault();
};
const handleAutoValidateAndClassify = async (file: File) => {
if (!currentTenant?.id) return;
setIsValidating(true);
setError('');
setProgressState({ stage: 'preparing', progress: 0, message: 'Preparando validación automática del archivo...' });
try {
// Step 1: Validate the file
2025-10-06 15:27:01 +02:00
const validationResult = await validateFileMutation.mutateAsync({
tenantId: currentTenant.id,
file
});
if (validationResult && validationResult.is_valid !== undefined) {
setValidationResult(validationResult);
setProgressState({ stage: 'analyzing', progress: 60, message: 'Validación exitosa. Generando sugerencias automáticamente...' });
2025-10-06 15:27:01 +02:00
await generateInventorySuggestionsAuto(validationResult);
} else {
2025-10-06 15:27:01 +02:00
setError('Respuesta de validación inválida del servidor');
setProgressState(null);
setIsValidating(false);
}
} catch (error) {
setError('Error validando archivo: ' + (error instanceof Error ? error.message : 'Error desconocido'));
setProgressState(null);
setIsValidating(false);
}
};
2025-10-19 19:22:37 +02:00
const generateInventorySuggestionsAuto = async (validationData: ImportValidationResponse) => {
if (!currentTenant?.id) {
setError('No hay datos de validación disponibles para generar sugerencias');
setIsValidating(false);
setProgressState(null);
return;
}
try {
setProgressState({ stage: 'analyzing', progress: 65, message: 'Analizando productos de ventas...' });
const products = validationData.product_list?.map((productName: string) => ({
product_name: productName
})) || [];
if (products.length === 0) {
setError('No se encontraron productos en los datos de ventas');
setProgressState(null);
setIsValidating(false);
return;
}
setProgressState({ stage: 'classifying', progress: 75, message: 'Clasificando productos con IA...' });
2025-10-06 15:27:01 +02:00
const classificationResponse = await classifyBatchMutation.mutateAsync({
tenantId: currentTenant.id,
2025-10-06 15:27:01 +02:00
products
});
setProgressState({ stage: 'preparing', progress: 90, message: 'Preparando sugerencias de inventario...' });
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
// Convert AI suggestions to inventory items (NOT created yet, just added to list)
const items: InventoryItemForm[] = classificationResponse.suggestions.map((suggestion: ProductSuggestionResponse, index: number) => {
const defaultStock = Math.max(
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
Math.ceil((suggestion.sales_data?.average_daily_sales || 1) * 7),
1
);
const estimatedCost = suggestion.category === 'Dairy' ? 5.0 :
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
suggestion.category === 'Baking Ingredients' ? 2.0 : 3.0;
const minimumStock = Math.max(1, Math.ceil(defaultStock * 0.2));
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
const reorderPoint = Math.max(minimumStock + 2, Math.ceil(defaultStock * 0.3), minimumStock + 1);
return {
id: `ai-${index}-${Date.now()}`,
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
name: suggestion.suggested_name,
product_type: suggestion.product_type,
category: suggestion.category,
unit_of_measure: suggestion.unit_of_measure,
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
stock_quantity: defaultStock,
cost_per_unit: estimatedCost,
estimated_shelf_life_days: suggestion.estimated_shelf_life_days || 30,
requires_refrigeration: suggestion.requires_refrigeration,
requires_freezing: suggestion.requires_freezing,
is_seasonal: suggestion.is_seasonal,
low_stock_threshold: minimumStock,
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
reorder_point: reorderPoint,
notes: `AI generado - Confianza: ${Math.round(suggestion.confidence_score * 100)}%`,
isSuggested: true,
confidence_score: suggestion.confidence_score,
sales_data: suggestion.sales_data ? {
total_quantity: suggestion.sales_data.total_quantity,
average_daily_sales: suggestion.sales_data.average_daily_sales,
} : undefined,
};
});
setInventoryItems(items);
setShowInventoryStep(true);
setProgressState(null);
setIsValidating(false);
} catch (err) {
console.error('Error generating inventory suggestions:', err);
setError('Error al generar sugerencias de inventario. Por favor, inténtalo de nuevo.');
setProgressState(null);
setIsValidating(false);
}
};
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
// Form validation
const validateForm = (): boolean => {
const newErrors: Record<string, string> = {};
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
if (!formData.name.trim()) {
newErrors.name = 'El nombre es requerido';
}
if (!formData.category.trim()) {
newErrors.category = 'La categoría es requerida';
}
if (formData.stock_quantity < 0) {
newErrors.stock_quantity = 'El stock debe ser 0 o mayor';
}
if (formData.cost_per_unit < 0) {
newErrors.cost_per_unit = 'El costo debe ser 0 o mayor';
}
if (formData.estimated_shelf_life_days <= 0) {
newErrors.estimated_shelf_life_days = 'Los días de caducidad deben ser mayores a 0';
}
setFormErrors(newErrors);
return Object.keys(newErrors).length === 0;
};
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
// Add or update item in list
const handleSubmitForm = (e: React.FormEvent) => {
e.preventDefault();
if (!validateForm()) return;
if (editingId) {
// Update existing item
setInventoryItems(items =>
items.map(item =>
item.id === editingId ? { ...formData, id: editingId } : item
)
);
setEditingId(null);
} else {
// Add new item
const newItem: InventoryItemForm = {
...formData,
id: `manual-${Date.now()}`,
isSuggested: false,
};
setInventoryItems(items => [...items, newItem]);
}
resetForm();
};
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
const resetForm = () => {
setFormData({
id: '',
name: '',
product_type: 'ingredient',
category: '',
unit_of_measure: 'kg',
stock_quantity: 0,
cost_per_unit: 0,
estimated_shelf_life_days: 30,
requires_refrigeration: false,
requires_freezing: false,
is_seasonal: false,
low_stock_threshold: 0,
reorder_point: 0,
notes: '',
isSuggested: false,
});
setFormErrors({});
setIsAdding(false);
setEditingId(null);
};
const handleEdit = (item: InventoryItemForm) => {
setFormData(item);
setEditingId(item.id);
setIsAdding(true);
};
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
const handleDelete = (itemId: string) => {
if (!window.confirm('¿Estás seguro de que quieres eliminar este ingrediente de la lista?')) {
return;
}
setInventoryItems(items => items.filter(item => item.id !== itemId));
};
2025-10-15 21:09:42 +02:00
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
// Create all inventory items when Next is clicked
const handleNext = async () => {
if (inventoryItems.length === 0) {
setError('Por favor agrega al menos un ingrediente antes de continuar');
return;
}
if (!currentTenant?.id) {
setError('No se encontró información del tenant');
return;
}
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
setProgressState({
stage: 'creating_inventory',
progress: 10,
message: `Creando ${inventoryItems.length} ingredientes...`
});
try {
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
// Create all ingredients in parallel
const creationPromises = inventoryItems.map(item => {
const ingredientData = {
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
name: item.name,
2025-11-05 13:34:56 +01:00
product_type: item.product_type,
category: item.category,
unit_of_measure: item.unit_of_measure,
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
low_stock_threshold: item.low_stock_threshold,
max_stock_level: item.stock_quantity * 2,
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
reorder_point: item.reorder_point,
shelf_life_days: item.estimated_shelf_life_days,
requires_refrigeration: item.requires_refrigeration,
requires_freezing: item.requires_freezing,
is_seasonal: item.is_seasonal,
average_cost: item.cost_per_unit,
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
notes: item.notes || undefined,
};
2025-10-15 21:09:42 +02:00
return createIngredient.mutateAsync({
tenantId: currentTenant.id,
ingredientData
2025-10-15 21:09:42 +02:00
}).then(created => ({
...created,
initialStock: item.stock_quantity
2025-10-15 21:09:42 +02:00
}));
});
const results = await Promise.allSettled(creationPromises);
const createdIngredients = results
.filter(r => r.status === 'fulfilled')
.map(r => (r as PromiseFulfilledResult<any>).value);
const failedCount = results.filter(r => r.status === 'rejected').length;
if (failedCount > 0) {
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
console.warn(`${failedCount} ingredientes fallaron al crear de ${inventoryItems.length}`);
}
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
console.log(`Creados exitosamente ${createdIngredients.length} ingredientes`);
2025-10-15 21:09:42 +02:00
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
// Import sales data if available
2025-10-15 21:09:42 +02:00
setProgressState({
stage: 'importing_sales',
progress: 50,
message: 'Importando datos de ventas...'
});
let salesImportResult = null;
try {
if (selectedFile) {
2025-10-06 15:27:01 +02:00
const result = await importMutation.mutateAsync({
tenantId: currentTenant.id,
file: selectedFile
});
salesImportResult = result;
if (result.success) {
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
console.log('Datos de ventas importados exitosamente');
}
}
} catch (importError) {
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
console.error('Error importando datos de ventas:', importError);
}
setProgressState(null);
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
// Complete step
onComplete({
createdIngredients,
2025-10-15 21:09:42 +02:00
totalItems: createdIngredients.length,
validationResult,
file: selectedFile,
salesImportResult,
2025-10-15 21:09:42 +02:00
inventoryConfigured: true,
shouldAutoCompleteSuppliers: true,
userId: user?.id
});
} catch (err) {
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
console.error('Error creando ingredientes:', err);
setError('Error al crear ingredientes. Por favor, inténtalo de nuevo.');
setProgressState(null);
}
};
const formatFileSize = (bytes: number) => {
if (bytes === 0) return '0 Bytes';
const k = 1024;
const sizes = ['Bytes', 'KB', 'MB', 'GB'];
const i = Math.floor(Math.log(bytes) / Math.log(k));
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
};
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
const categoryOptions = [
'Baking Ingredients',
'Dairy',
'Fruits',
'Vegetables',
'Meat',
'Seafood',
'Spices',
'Other'
];
const unitOptions = ['kg', 'g', 'L', 'ml', 'units', 'dozen'];
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
// INVENTORY LIST VIEW (after AI suggestions loaded)
if (showInventoryStep) {
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
const canContinue = inventoryItems.length >= 1;
return (
<div className="space-y-6">
{/* Why This Matters */}
<div className="bg-[var(--color-info)]/10 border border-[var(--color-info)]/20 rounded-lg p-4">
<h3 className="font-semibold text-[var(--text-primary)] mb-2 flex items-center gap-2">
<svg className="w-5 h-5 text-[var(--color-info)]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
{t('onboarding:ai_suggestions.why_title', 'Configurar Inventario')}
</h3>
<p className="text-sm text-[var(--text-secondary)]">
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
Revisa y edita los ingredientes sugeridos por IA. Puedes agregar más ingredientes manualmente. Cuando hagas clic en "Siguiente", se crearán todos los ingredientes.
</p>
</div>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
{/* Inventory Items List */}
<div>
<h4 className="text-sm font-medium text-[var(--text-secondary)] mb-3">
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
Ingredientes ({inventoryItems.length})
</h4>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
{inventoryItems.length > 0 ? (
<div className="space-y-3">
{inventoryItems.map((item) => (
<div
key={item.id}
className="p-4 bg-[var(--bg-secondary)] border border-[var(--border-secondary)] rounded-lg"
>
<div className="flex items-start justify-between">
<div className="flex-1">
<div className="flex items-center gap-2">
<h5 className="font-medium text-[var(--text-primary)]">
{item.name}
</h5>
{item.isSuggested && item.confidence_score && (
<span className="text-xs bg-[var(--color-info)]/10 text-[var(--color-info)] px-2 py-0.5 rounded-full">
IA {Math.round(item.confidence_score * 100)}%
</span>
)}
</div>
<p className="text-sm text-[var(--text-secondary)] mt-1">
{item.category} {item.unit_of_measure}
</p>
<div className="mt-2 flex items-center gap-4 text-xs text-[var(--text-secondary)]">
<span>Stock: {item.stock_quantity} {item.unit_of_measure}</span>
<span>Costo: {item.cost_per_unit.toFixed(2)}/{item.unit_of_measure}</span>
<span>Caducidad: {item.estimated_shelf_life_days} días</span>
</div>
{item.sales_data && (
<div className="mt-2 text-xs text-[var(--text-tertiary)]">
📊 Ventas: {item.sales_data.average_daily_sales.toFixed(1)}/día
</div>
)}
</div>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
<div className="flex items-center gap-2 ml-4">
<button
onClick={() => handleEdit(item)}
className="p-2 text-[var(--text-secondary)] hover:text-[var(--color-primary)] hover:bg-[var(--bg-primary)] rounded transition-colors"
title="Editar"
>
<svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" />
</svg>
</button>
<button
onClick={() => handleDelete(item.id)}
className="p-2 text-[var(--text-secondary)] hover:text-[var(--color-error)] hover:bg-[var(--color-error)]/10 rounded transition-colors"
title="Eliminar"
>
<svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" />
</svg>
</button>
</div>
</div>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
</div>
))}
</div>
) : (
<div className="text-center py-8 border border-dashed border-[var(--border-secondary)] rounded-lg">
<p className="text-[var(--text-tertiary)] text-sm">
No hay ingredientes en la lista todavía
</p>
</div>
)}
</div>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
{/* Add/Edit Form */}
{isAdding ? (
<div className="border-2 border-[var(--color-primary)] rounded-lg p-4 bg-gradient-to-br from-[var(--color-primary)]/5 to-transparent">
<h4 className="font-semibold text-[var(--text-primary)] mb-4">
{editingId ? 'Editar Ingrediente' : 'Agregar Ingrediente Manualmente'}
</h4>
<form onSubmit={handleSubmitForm} className="space-y-4">
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<label className="block text-sm font-medium text-[var(--text-primary)] mb-1">
Nombre *
</label>
<input
type="text"
value={formData.name}
onChange={(e) => setFormData({ ...formData, name: e.target.value })}
className="w-full px-3 py-2 bg-[var(--bg-primary)] border border-[var(--border-secondary)] rounded-lg focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] text-[var(--text-primary)]"
placeholder="Ej: Harina de trigo"
/>
{formErrors.name && (
<p className="text-xs text-[var(--color-error)] mt-1">{formErrors.name}</p>
)}
</div>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
<div>
<label className="block text-sm font-medium text-[var(--text-primary)] mb-1">
Categoría *
</label>
<select
value={formData.category}
onChange={(e) => setFormData({ ...formData, category: e.target.value })}
className="w-full px-3 py-2 bg-[var(--bg-primary)] border border-[var(--border-secondary)] rounded-lg focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] text-[var(--text-primary)]"
>
<option value="">Seleccionar...</option>
{categoryOptions.map(cat => (
<option key={cat} value={cat}>{cat}</option>
))}
</select>
{formErrors.category && (
<p className="text-xs text-[var(--color-error)] mt-1">{formErrors.category}</p>
)}
</div>
<div>
<label className="block text-sm font-medium text-[var(--text-primary)] mb-1">
Unidad de Medida
</label>
<select
value={formData.unit_of_measure}
onChange={(e) => setFormData({ ...formData, unit_of_measure: e.target.value })}
className="w-full px-3 py-2 bg-[var(--bg-primary)] border border-[var(--border-secondary)] rounded-lg focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] text-[var(--text-primary)]"
>
{unitOptions.map(unit => (
<option key={unit} value={unit}>{unit}</option>
))}
</select>
</div>
<div>
<label className="block text-sm font-medium text-[var(--text-primary)] mb-1">
Stock Inicial
</label>
<input
type="number"
min="0"
step="0.01"
value={formData.stock_quantity}
onChange={(e) => setFormData({ ...formData, stock_quantity: parseFloat(e.target.value) || 0 })}
className="w-full px-3 py-2 bg-[var(--bg-primary)] border border-[var(--border-secondary)] rounded-lg focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] text-[var(--text-primary)]"
/>
{formErrors.stock_quantity && (
<p className="text-xs text-[var(--color-error)] mt-1">{formErrors.stock_quantity}</p>
)}
</div>
<div>
<label className="block text-sm font-medium text-[var(--text-primary)] mb-1">
Costo por Unidad ()
</label>
<input
type="number"
min="0"
step="0.01"
value={formData.cost_per_unit}
onChange={(e) => setFormData({ ...formData, cost_per_unit: parseFloat(e.target.value) || 0 })}
className="w-full px-3 py-2 bg-[var(--bg-primary)] border border-[var(--border-secondary)] rounded-lg focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] text-[var(--text-primary)]"
/>
{formErrors.cost_per_unit && (
<p className="text-xs text-[var(--color-error)] mt-1">{formErrors.cost_per_unit}</p>
)}
</div>
<div>
<label className="block text-sm font-medium text-[var(--text-primary)] mb-1">
Días de Caducidad
</label>
<input
type="number"
min="1"
value={formData.estimated_shelf_life_days}
onChange={(e) => setFormData({ ...formData, estimated_shelf_life_days: parseInt(e.target.value) || 30 })}
className="w-full px-3 py-2 bg-[var(--bg-primary)] border border-[var(--border-secondary)] rounded-lg focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] text-[var(--text-primary)]"
/>
{formErrors.estimated_shelf_life_days && (
<p className="text-xs text-[var(--color-error)] mt-1">{formErrors.estimated_shelf_life_days}</p>
)}
</div>
<div>
<label className="block text-sm font-medium text-[var(--text-primary)] mb-1">
Stock Mínimo
</label>
<input
type="number"
min="0"
value={formData.low_stock_threshold}
onChange={(e) => setFormData({ ...formData, low_stock_threshold: parseInt(e.target.value) || 0 })}
className="w-full px-3 py-2 bg-[var(--bg-primary)] border border-[var(--border-secondary)] rounded-lg focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] text-[var(--text-primary)]"
/>
</div>
<div>
<label className="block text-sm font-medium text-[var(--text-primary)] mb-1">
Punto de Reorden
</label>
<input
type="number"
min="0"
value={formData.reorder_point}
onChange={(e) => setFormData({ ...formData, reorder_point: parseInt(e.target.value) || 0 })}
className="w-full px-3 py-2 bg-[var(--bg-primary)] border border-[var(--border-secondary)] rounded-lg focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] text-[var(--text-primary)]"
/>
</div>
</div>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
<div className="flex items-center gap-4">
<label className="flex items-center gap-2 text-sm text-[var(--text-primary)]">
<input
type="checkbox"
checked={formData.requires_refrigeration}
onChange={(e) => setFormData({ ...formData, requires_refrigeration: e.target.checked })}
className="rounded"
/>
Requiere Refrigeración
</label>
<label className="flex items-center gap-2 text-sm text-[var(--text-primary)]">
<input
type="checkbox"
checked={formData.requires_freezing}
onChange={(e) => setFormData({ ...formData, requires_freezing: e.target.checked })}
className="rounded"
/>
Requiere Congelación
</label>
<label className="flex items-center gap-2 text-sm text-[var(--text-primary)]">
<input
type="checkbox"
checked={formData.is_seasonal}
onChange={(e) => setFormData({ ...formData, is_seasonal: e.target.checked })}
className="rounded"
/>
Estacional
</label>
</div>
<div>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
<label className="block text-sm font-medium text-[var(--text-primary)] mb-1">
Notas (opcional)
</label>
<textarea
value={formData.notes}
onChange={(e) => setFormData({ ...formData, notes: e.target.value })}
rows={2}
className="w-full px-3 py-2 bg-[var(--bg-primary)] border border-[var(--border-secondary)] rounded-lg focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] text-[var(--text-primary)]"
placeholder="Información adicional..."
/>
</div>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
<div className="flex gap-2 pt-2">
<button
type="submit"
className="px-4 py-2 bg-[var(--color-primary)] text-white rounded-lg hover:bg-[var(--color-primary-dark)] transition-colors font-medium"
>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
{editingId ? 'Guardar Cambios' : 'Agregar a Lista'}
</button>
<button
type="button"
onClick={resetForm}
className="px-4 py-2 text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:bg-[var(--bg-primary)] rounded-lg transition-colors"
>
Cancelar
</button>
</div>
</form>
</div>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
) : (
Implement 5 UX enhancements for ingredient management This commit implements the requested enhancements for the ingredient quick-add system and batch management: **1. Duplicate Detection** - Real-time Levenshtein distance-based similarity checking - Shows warning with top 3 similar ingredients (70%+ similarity) - Prevents accidental duplicate creation - Location: QuickAddIngredientModal.tsx **2. Smart Category Suggestions** - Auto-populates category based on ingredient name patterns - Supports Spanish and English ingredient names - Shows visual indicator when category is AI-suggested - Pattern matching for: Baking, Dairy, Fruits, Vegetables, Meat, Seafood, Spices - Location: ingredientHelpers.ts **3. Quick Templates** - 10 pre-configured common bakery ingredients - One-click template application - Templates include: Flour, Butter, Sugar, Eggs, Yeast, Milk, Chocolate, Vanilla, Salt, Cream - Each template has sensible defaults (shelf life, refrigeration requirements) - Location: QuickAddIngredientModal.tsx **4. Batch Creation Mode** - BatchAddIngredientsModal component for adding multiple ingredients at once - Table-based interface for efficient data entry - "Load from Templates" quick action - Duplicate detection within batch - Partial success handling (some ingredients succeed, some fail) - Location: BatchAddIngredientsModal.tsx - Integration: UploadSalesDataStep.tsx (2 buttons: "Add One" / "Add Multiple") **5. Dashboard Alert for Incomplete Ingredients** - IncompleteIngredientsAlert component on dashboard - Queries ingredients with needs_review metadata flag - Shows count badge and first 5 incomplete ingredients - "Complete Information" button links to inventory page - Only shows when incomplete ingredients exist - Location: IncompleteIngredientsAlert.tsx - Integration: DashboardPage.tsx **New Files Created:** - ingredientHelpers.ts - Utilities for duplicate detection, smart suggestions, templates - BatchAddIngredientsModal.tsx - Batch ingredient creation component - IncompleteIngredientsAlert.tsx - Dashboard alert component **Files Modified:** - QuickAddIngredientModal.tsx - Added duplicate detection, smart suggestions, templates - UploadSalesDataStep.tsx - Integrated batch creation modal - DashboardPage.tsx - Added incomplete ingredients alert **Technical Highlights:** - Levenshtein distance algorithm for fuzzy name matching - Pattern-based category suggestions (supports 100+ ingredient patterns) - Metadata tracking (needs_review, created_context) - Real-time validation and error handling - Responsive UI with animations - Consistent with existing design system All features built and tested successfully. Build time: 21.29s
2025-11-06 15:39:30 +00:00
<div className="grid grid-cols-2 gap-3">
<button
type="button"
onClick={() => setIsAdding(true)}
className="p-4 border-2 border-dashed border-[var(--border-secondary)] rounded-lg hover:border-[var(--color-primary)] hover:bg-[var(--bg-secondary)] transition-colors group"
>
<div className="flex items-center justify-center gap-2 text-[var(--text-secondary)] group-hover:text-[var(--color-primary)]">
<svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 6v6m0 0v6m0-6h6m-6 0H6" />
</svg>
<span className="font-medium">
Agregar Uno
</span>
</div>
</button>
<button
type="button"
onClick={() => setShowBatchModal(true)}
className="p-4 border-2 border-dashed border-[var(--color-primary)]/30 rounded-lg hover:border-[var(--color-primary)] hover:bg-[var(--color-primary)]/5 transition-colors group"
>
<div className="flex items-center justify-center gap-2 text-[var(--color-primary)]">
<svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
</svg>
<span className="font-medium">
Agregar Varios
</span>
</div>
</button>
</div>
)}
{error && (
<div className="bg-[var(--color-error)]/10 border border-[var(--color-error)]/20 rounded-lg p-4">
<p className="text-[var(--color-error)]">{error}</p>
</div>
)}
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
{/* Progress during creation */}
{progressState && (
<div className="bg-[var(--bg-secondary)] rounded-lg p-4">
<div className="flex justify-between text-sm mb-2">
<span className="font-medium">{progressState.message}</span>
<span>{progressState.progress}%</span>
</div>
<div className="w-full bg-[var(--bg-tertiary)] rounded-full h-2">
<div
className="bg-[var(--color-primary)] h-2 rounded-full transition-all duration-300"
style={{ width: `${progressState.progress}%` }}
/>
</div>
</div>
)}
{/* Navigation - Show Next button when minimum requirement met */}
{!isAdding && (
<div className="flex items-center justify-between pt-6 border-t border-[var(--border-secondary)] mt-6">
<div className="flex items-center gap-2">
{canContinue ? (
<div className="flex items-center gap-2 text-sm text-[var(--color-success)]">
<svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
<span>
{inventoryItems.length} ingrediente(s) - ¡Listo para continuar!
</span>
</div>
) : (
<p className="text-sm text-[var(--color-warning)]">
Agrega al menos 1 ingrediente para continuar
</p>
)}
</div>
<button
onClick={handleNext}
disabled={!canContinue || !!progressState}
className="px-6 py-2.5 bg-[var(--color-primary)] text-white rounded-lg hover:bg-[var(--color-primary-dark)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors font-medium flex items-center gap-2"
>
{progressState ? 'Creando...' : 'Siguiente'}
</button>
</div>
)}
Implement 5 UX enhancements for ingredient management This commit implements the requested enhancements for the ingredient quick-add system and batch management: **1. Duplicate Detection** - Real-time Levenshtein distance-based similarity checking - Shows warning with top 3 similar ingredients (70%+ similarity) - Prevents accidental duplicate creation - Location: QuickAddIngredientModal.tsx **2. Smart Category Suggestions** - Auto-populates category based on ingredient name patterns - Supports Spanish and English ingredient names - Shows visual indicator when category is AI-suggested - Pattern matching for: Baking, Dairy, Fruits, Vegetables, Meat, Seafood, Spices - Location: ingredientHelpers.ts **3. Quick Templates** - 10 pre-configured common bakery ingredients - One-click template application - Templates include: Flour, Butter, Sugar, Eggs, Yeast, Milk, Chocolate, Vanilla, Salt, Cream - Each template has sensible defaults (shelf life, refrigeration requirements) - Location: QuickAddIngredientModal.tsx **4. Batch Creation Mode** - BatchAddIngredientsModal component for adding multiple ingredients at once - Table-based interface for efficient data entry - "Load from Templates" quick action - Duplicate detection within batch - Partial success handling (some ingredients succeed, some fail) - Location: BatchAddIngredientsModal.tsx - Integration: UploadSalesDataStep.tsx (2 buttons: "Add One" / "Add Multiple") **5. Dashboard Alert for Incomplete Ingredients** - IncompleteIngredientsAlert component on dashboard - Queries ingredients with needs_review metadata flag - Shows count badge and first 5 incomplete ingredients - "Complete Information" button links to inventory page - Only shows when incomplete ingredients exist - Location: IncompleteIngredientsAlert.tsx - Integration: DashboardPage.tsx **New Files Created:** - ingredientHelpers.ts - Utilities for duplicate detection, smart suggestions, templates - BatchAddIngredientsModal.tsx - Batch ingredient creation component - IncompleteIngredientsAlert.tsx - Dashboard alert component **Files Modified:** - QuickAddIngredientModal.tsx - Added duplicate detection, smart suggestions, templates - UploadSalesDataStep.tsx - Integrated batch creation modal - DashboardPage.tsx - Added incomplete ingredients alert **Technical Highlights:** - Levenshtein distance algorithm for fuzzy name matching - Pattern-based category suggestions (supports 100+ ingredient patterns) - Metadata tracking (needs_review, created_context) - Real-time validation and error handling - Responsive UI with animations - Consistent with existing design system All features built and tested successfully. Build time: 21.29s
2025-11-06 15:39:30 +00:00
{/* Batch Add Modal */}
<BatchAddIngredientsModal
isOpen={showBatchModal}
onClose={() => setShowBatchModal(false)}
onCreated={(ingredients) => {
// Add all created ingredients to the list
const newItems: InventoryItemForm[] = ingredients.map(ing => ({
id: ing.id,
name: ing.name,
product_type: ing.product_type,
category: ing.category,
unit_of_measure: ing.unit_of_measure,
stock_quantity: 0,
cost_per_unit: ing.average_cost || 0,
estimated_shelf_life_days: ing.shelf_life_days || 30,
requires_refrigeration: ing.requires_refrigeration || false,
requires_freezing: ing.requires_freezing || false,
is_seasonal: ing.is_seasonal || false,
low_stock_threshold: ing.low_stock_threshold || 0,
reorder_point: ing.reorder_point || 0,
notes: ing.notes || '',
isSuggested: false,
}));
setInventoryItems([...inventoryItems, ...newItems]);
setShowBatchModal(false);
}}
tenantId={currentTenant?.id || ''}
/>
</div>
);
}
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
// FILE UPLOAD VIEW (initial step)
return (
<div className="space-y-6">
<div className="text-center">
<p className="text-[var(--text-secondary)] mb-6">
Sube tus datos de ventas (formato CSV o JSON) y automáticamente validaremos y generaremos sugerencias de inventario inteligentes.
</p>
</div>
2025-10-19 19:22:37 +02:00
{/* File Format Guide */}
<div className="bg-[var(--color-info)]/10 border border-[var(--color-info)]/20 rounded-lg p-4">
2025-10-19 19:22:37 +02:00
<div className="flex items-start justify-between">
<div className="flex items-center gap-2 mb-2">
<svg className="w-5 h-5 text-[var(--color-info)]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
2025-10-19 19:22:37 +02:00
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
<h3 className="font-semibold text-[var(--text-primary)]">
2025-10-19 19:22:37 +02:00
{t('onboarding:steps.inventory_setup.file_format_guide.title', 'Guía de Formato de Archivo')}
</h3>
</div>
<button
onClick={() => setShowGuide(!showGuide)}
className="text-[var(--color-info)] hover:text-[var(--color-primary)] text-sm font-medium"
2025-10-19 19:22:37 +02:00
>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
{showGuide ? 'Ocultar Guía' : 'Ver Guía Completa'}
2025-10-19 19:22:37 +02:00
</button>
</div>
<div className="text-sm text-[var(--text-secondary)] space-y-1">
2025-10-19 19:22:37 +02:00
<p>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
<strong className="text-[var(--text-primary)]">Formatos Soportados:</strong>{' '}
CSV, JSON, Excel (XLSX) Tamaño máximo: 10MB
2025-10-19 19:22:37 +02:00
</p>
<p>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
<strong className="text-[var(--text-primary)]">Columnas Requeridas:</strong>{' '}
Fecha, Nombre del Producto, Cantidad Vendida
2025-10-19 19:22:37 +02:00
</p>
</div>
{showGuide && (
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
<div className="mt-4 pt-4 border-t border-[var(--border-secondary)] space-y-3 text-sm text-[var(--text-secondary)]">
<p> Detección multiidioma de columnas</p>
<p> Validación automática con reporte detallado</p>
<p> Clasificación de productos con IA</p>
<p> Sugerencias inteligentes de inventario</p>
2025-10-19 19:22:37 +02:00
</div>
)}
</div>
{/* File Upload Area */}
<div
className={`border-2 border-dashed rounded-lg p-8 text-center transition-colors ${
selectedFile
? 'border-[var(--color-success)] bg-[var(--color-success)]/5'
: 'border-[var(--border-secondary)] hover:border-[var(--color-primary)] hover:bg-[var(--color-primary)]/5'
}`}
onDrop={handleDrop}
onDragOver={handleDragOver}
>
<input
ref={fileInputRef}
type="file"
accept=".csv,.json"
onChange={handleFileSelect}
className="hidden"
/>
{selectedFile ? (
<div className="space-y-4">
<div className="text-[var(--color-success)]">
<svg className="mx-auto h-12 w-12 mb-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
<p className="text-lg font-medium">Archivo Seleccionado</p>
<p className="text-[var(--text-secondary)]">{selectedFile.name}</p>
<p className="text-sm text-[var(--text-tertiary)]">
{formatFileSize(selectedFile.size)}
</p>
</div>
<Button
variant="outline"
onClick={() => fileInputRef.current?.click()}
>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
Elegir Archivo Diferente
</Button>
</div>
) : (
<div className="space-y-4">
<svg className="mx-auto h-12 w-12 text-[var(--text-tertiary)]" stroke="currentColor" fill="none" viewBox="0 0 48 48">
<path d="M28 8H12a4 4 0 00-4 4v20m32-12v8m0 0v8a4 4 0 01-4 4H12a4 4 0 01-4-4v-4m32-4l-3.172-3.172a4 4 0 00-5.656 0L28 28M8 32l9.172-9.172a4 4 0 015.656 0L28 28m0 0l4 4m4-24h8m-4-4v8m-12 4h.02" strokeWidth={2} strokeLinecap="round" strokeLinejoin="round" />
</svg>
<div>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
<p className="text-lg font-medium">Arrastra tus datos de ventas aquí</p>
<p className="text-[var(--text-secondary)]">o haz clic para seleccionar archivos</p>
<p className="text-sm text-[var(--text-tertiary)] mt-2">
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
Formatos soportados: CSV, JSON (máx 100MB)<br/>
<span className="text-[var(--color-primary)]">Validación y sugerencias automáticas</span>
</p>
</div>
<Button
variant="outline"
onClick={() => fileInputRef.current?.click()}
>
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
Elegir Archivo
</Button>
</div>
)}
</div>
{/* Progress */}
{progressState && (
<div className="bg-[var(--bg-secondary)] rounded-lg p-4">
<div className="flex justify-between text-sm mb-2">
<span className="font-medium">{progressState.message}</span>
<span>{progressState.progress}%</span>
</div>
<div className="w-full bg-[var(--bg-tertiary)] rounded-full h-2">
<div
className="bg-[var(--color-primary)] h-2 rounded-full transition-all duration-300"
style={{ width: `${progressState.progress}%` }}
/>
</div>
</div>
)}
{/* Validation Results */}
{validationResult && (
<div className="bg-[var(--color-success)]/10 border border-[var(--color-success)]/20 rounded-lg p-4">
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
<h3 className="font-semibold text-[var(--color-success)] mb-2">¡Validación Exitosa!</h3>
<div className="space-y-2 text-sm">
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
<p>Registros totales: {validationResult.total_records}</p>
<p>Registros válidos: {validationResult.valid_records}</p>
{validationResult.invalid_records > 0 && (
<p className="text-[var(--color-warning)]">
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
Registros inválidos: {validationResult.invalid_records}
</p>
)}
</div>
</div>
)}
{/* Error */}
{error && (
<div className="bg-[var(--color-error)]/10 border border-[var(--color-error)]/20 rounded-lg p-4">
<p className="text-[var(--color-error)]">{error}</p>
</div>
)}
{/* Status indicator */}
{selectedFile && !showInventoryStep && (
<div className="flex items-center justify-center px-4 py-2 bg-[var(--bg-secondary)] rounded-lg">
{isValidating ? (
<>
<div className="animate-spin rounded-full h-4 w-4 border-b-2 border-[var(--color-primary)] mr-2"></div>
<span className="text-sm text-[var(--text-secondary)]">Procesando automáticamente...</span>
</>
) : validationResult ? (
<>
<svg className="w-4 h-4 text-[var(--color-success)] mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7" />
</svg>
<span className="text-sm text-[var(--color-success)]">Archivo procesado exitosamente</span>
</>
) : null}
</div>
)}
</div>
);
Complete AI inventory step redesign & add recipes next button ✅ RECIPES STEP FIX: - Add onComplete prop handling to RecipesSetupStep.tsx - Add "Next" button when recipes.length >= 1 - Show success message with recipe count - Button hidden when in adding mode 🎯 AI INVENTORY STEP - COMPLETE REDESIGN: Following suppliers/recipes pattern with list-based management and deferred creation. **NEW DATA MODEL**: - InventoryItemForm interface with isSuggested tracking - Items stored in list (NOT created in database yet) - Support both AI suggestions and manual entries **NEW UI PATTERN**: - List view with expandable cards showing AI confidence badges - Edit/Delete buttons per item (like suppliers) - "Add Ingredient Manually" button with full form - Next button creates ALL items at once (deferred creation) **KEY CHANGES**: 1. Items added to list first (not created immediately) 2. Can edit/delete both AI and manual items before creation 3. Manual ingredient addition form with full validation 4. All items created when clicking "Next" button 5. Progress indicator during creation 6. Sales data import happens after inventory creation **UI IMPROVEMENTS**: - "Why This Matters" info box explaining workflow - Ingredient cards show: name, category, stock, cost, shelf life, sales data - AI confidence badges (e.g., "IA 95%") - Visual success indicator when minimum met - Gradient form section matching recipe template pattern **FILES**: - UploadSalesDataStep.tsx: Completely rewritten (963 lines) - RecipesSetupStep.tsx: Added Next button (2 lines) - REDESIGN_SUMMARY.md: Complete documentation of changes Build: ✅ Success (21.46s) Pattern: Now matches suppliers/recipes workflow exactly Creation: Deferred until "Next" click (user can review/edit first)
2025-11-06 15:09:23 +00:00
};