# Reasoning i18n Audit Report ## Files with Hardcoded English Reasoning Text ### ✅ Already Fixed 1. **services/orchestrator/app/services/dashboard_service.py** - Now returns reasoning_data 2. **services/procurement/app/services/procurement_service.py** - Generates structured reasoning_data 3. **services/production/app/services/production_service.py** - Generates structured reasoning_data ### ❌ Needs Fixing #### 1. Demo Seed Scripts **File:** `services/procurement/scripts/demo/seed_demo_purchase_orders.py` - Line 126: `"Low stock detected for {supplier.name} items..."` - Line 127: `"Stock-out risk in {days_until_delivery + 2} days..."` - Line 135: `"Auto-approved based on supplier trust score..."` **File:** `services/production/scripts/demo/seed_demo_batches.py` - Similar hardcoded text (needs check) **Fix:** Use `create_po_reasoning_*()` helper functions #### 2. Safety Stock Calculator **File:** `services/procurement/app/services/safety_stock_calculator.py` - Line 111: `'Lead time or demand std dev is zero or negative'` - Line 163: `'Insufficient historical demand data (need at least 2 data points)'` **Fix:** Return structured error codes instead of English text #### 3. Replenishment Planning Service **File:** `services/procurement/app/services/replenishment_planning_service.py` - Line 376: `'Insufficient data for safety stock calculation'` **Fix:** Return structured error codes #### 4. ML Services **File:** `services/procurement/app/ml/price_forecaster.py` - Needs audit for hardcoded reasoning text #### 5. Frontend Components **File:** `frontend/src/components/dashboard/OrchestrationSummaryCard.tsx` - Hardcoded English text: "Last Night I Planned Your Day", "All caught up!", etc. **File:** `frontend/src/components/dashboard/HealthStatusCard.tsx` - Hardcoded English text **File:** `frontend/src/components/dashboard/ActionQueueCard.tsx` - Hardcoded English text: "What Needs Your Attention", "Why this is needed:", etc. **File:** `frontend/src/components/dashboard/ProductionTimelineCard.tsx` - Hardcoded English text **File:** `frontend/src/components/dashboard/InsightsGrid.tsx` - Uses backend labels (good) but needs i18n setup ## Strategy ### Backend - Return structured error codes: `{"type": "error", "code": "INSUFFICIENT_DATA", "params": {...}}` - Frontend translates based on code ### Frontend - Setup `react-i18next` - Create translation files for EN, ES, CA - Update all dashboard components to use `t()` function