Commit Graph

4 Commits

Author SHA1 Message Date
Claude
b85e8d760b feat: Add remaining production batch reasoning helper functions
Added missing helper functions for all production batch reasoning types:
- create_batch_reasoning_stock_replenishment: Inventory replenishment
- create_batch_reasoning_seasonal_preparation: Seasonal demand prep
- create_batch_reasoning_promotion_event: Promotional events
- create_batch_reasoning_urgent_order: Urgent customer orders

This completes the full set of reasoning helper functions for both
purchase orders and production batches, preventing future import errors
in demo seed scripts and other services.

All helpers now provide structured reasoning_data for i18n translation.
2025-11-07 19:47:12 +00:00
Claude
0a2982d22f feat: Add complete set of PO reasoning helper functions
Added missing helper functions for all purchase order reasoning types:
- create_po_reasoning_supplier_contract: Contract-based orders
- create_po_reasoning_safety_stock: Safety stock replenishment
- create_po_reasoning_seasonal_demand: Seasonal preparation
- create_po_reasoning_production_requirement: Production needs
- create_po_reasoning_manual_request: Manual orders

These functions generate structured reasoning_data for i18n translation
and provide consistent reasoning structure across all PO types.

Fixes ImportError in demo-seed-purchase-orders pod.
2025-11-07 19:46:27 +00:00
Claude
0fb519f0c4 fix: Add missing create_batch_reasoning_regular_schedule helper function
Demo seed script was failing with ImportError because the
create_batch_reasoning_regular_schedule function was referenced
but not implemented in reasoning_types.py.

Added the missing helper function to support REGULAR_SCHEDULE
batch reasoning type for regular scheduled production batches.

Fixes container restart loop in demo-seed-production-batches pod.
2025-11-07 19:35:51 +00:00
Claude
ddc4928d78 feat: Implement structured reasoning_data generation for i18n support
Implemented proper reasoning data generation for purchase orders and
production batches to enable multilingual dashboard support.

Backend Strategy:
- Generate structured JSON with type codes and parameters
- Store only reasoning_data (JSONB), not hardcoded text
- Frontend will translate using i18n libraries

Changes:
1. Created shared/schemas/reasoning_types.py
   - Defined reasoning types for POs and batches
   - Created helper functions for common reasoning patterns
   - Supports multiple reasoning types (low_stock, forecast_demand, etc.)

2. Production Service (services/production/app/services/production_service.py)
   - Generate reasoning_data when creating batches from forecast
   - Include parameters: product_name, predicted_demand, current_stock, etc.
   - Structure supports frontend i18n interpolation

3. Procurement Service (services/procurement/app/services/procurement_service.py)
   - Implemented actual PO creation (was placeholder before!)
   - Groups requirements by supplier
   - Generates reasoning_data based on context (low_stock vs forecast)
   - Creates PO items automatically

Example reasoning_data:
{
  "type": "low_stock_detection",
  "parameters": {
    "supplier_name": "Harinas del Norte",
    "product_names": ["Flour Type 55", "Flour Type 45"],
    "days_until_stockout": 3,
    "current_stock": 45.5,
    "required_stock": 200
  },
  "consequence": {
    "type": "stockout_risk",
    "severity": "high",
    "impact_days": 3
  }
}

Frontend will translate:
- EN: "Low stock detected for Harinas del Norte. Stock runs out in 3 days."
- ES: "Stock bajo detectado para Harinas del Norte. Se agota en 3 días."
- CA: "Estoc baix detectat per Harinas del Norte. S'esgota en 3 dies."

Next steps:
- Remove TEXT fields (reasoning, consequence) from models
- Update dashboard service to use reasoning_data
- Create frontend i18n translation keys
- Update dashboard components to translate dynamically
2025-11-07 18:16:44 +00:00