Make backend robust with comprehensive onboarding steps

Backend Changes (services/auth/app/api/onboarding_progress.py):
- Expanded ONBOARDING_STEPS to include all 19 frontend steps
  - Phase 0: user_registered (system)
  - Phase 1: bakery-type-selection, data-source-choice (discovery)
  - Phase 2: setup, smart-inventory-setup, product-categorization, initial-stock-entry (core setup & AI path)
  - Phase 2b: suppliers-setup, inventory-setup, recipes-setup, production-processes (manual path)
  - Phase 3: quality-setup, team-setup (advanced config)
  - Phase 4: ml-training, setup-review, completion (finalization)

- Updated STEP_DEPENDENCIES with granular requirements
  - AI path: smart-inventory-setup → product-categorization → initial-stock-entry
  - Manual path: Independent setup for suppliers, inventory, recipes, processes
  - Flexible ML training: accepts either AI or manual inventory path

- Enhanced ML training validation
  - Supports both AI-assisted path (sales data) and manual inventory path
  - More flexible validation logic for multi-path onboarding

Frontend Changes (UnifiedOnboardingWizard.tsx):
- Fixed auto-complete step name: 'suppliers' → 'suppliers-setup'
- All step IDs now match backend ONBOARDING_STEPS exactly
- Removed temporary step mapping workarounds

Frontend Changes (apiClient.ts):
- Fixed tenant ID requirement warnings for onboarding endpoints
- Added noTenantEndpoints list for user-level endpoints:
  - /auth/me/onboarding (tenant created during onboarding)
  - /auth/me (user profile)
  - /auth/register, /auth/login
- Eliminated false warnings during onboarding flow

This makes the onboarding system fully functional with:
 Backend validates all 19 onboarding steps
 Proper dependency tracking for multi-path onboarding
 No more "Invalid step name" errors
 No more tenant ID warnings for onboarding
 Robust state tracking for complete user journey
This commit is contained in:
Claude
2025-11-06 13:38:06 +00:00
parent fb07107baa
commit b22634388d
3 changed files with 107 additions and 39 deletions

View File

@@ -81,20 +81,33 @@ class ApiClient {
'/demo/session/create',
];
// Endpoints that require authentication but not a tenant ID (user-level endpoints)
const noTenantEndpoints = [
'/auth/me/onboarding', // Onboarding endpoints - tenant is created during onboarding
'/auth/me', // User profile endpoints
'/auth/register', // Registration
'/auth/login', // Login
];
const isPublicEndpoint = publicEndpoints.some(endpoint =>
config.url?.includes(endpoint)
);
const isNoTenantEndpoint = noTenantEndpoints.some(endpoint =>
config.url?.includes(endpoint)
);
// Only add auth token for non-public endpoints
if (this.authToken && !isPublicEndpoint) {
config.headers.Authorization = `Bearer ${this.authToken}`;
}
if (this.tenantId && !isPublicEndpoint) {
// Add tenant ID only for endpoints that require it
if (this.tenantId && !isPublicEndpoint && !isNoTenantEndpoint) {
config.headers['X-Tenant-ID'] = this.tenantId;
console.log('🔍 [API Client] Adding X-Tenant-ID header:', this.tenantId, 'for URL:', config.url);
} else if (!isPublicEndpoint) {
console.warn('⚠️ [API Client] No tenant ID set for non-public endpoint:', config.url);
} else if (!isPublicEndpoint && !isNoTenantEndpoint) {
console.warn('⚠️ [API Client] No tenant ID set for endpoint:', config.url);
}
// Check demo session ID from memory OR localStorage