refactor: Remove TEXT fields and use only reasoning_data for i18n
Completed the migration to structured reasoning_data for multilingual
dashboard support. Removed hardcoded TEXT fields (reasoning, consequence)
and updated all related code to use JSONB reasoning_data.
Changes:
1. Models Updated (removed TEXT fields):
- PurchaseOrder: Removed reasoning, consequence TEXT columns
- ProductionBatch: Removed reasoning TEXT column
- Both now use only reasoning_data (JSONB/JSON)
2. Dashboard Service Updated:
- Changed to return reasoning_data instead of TEXT fields
- Creates default reasoning_data if missing
- PO actions: reasoning_data with type and parameters
- Production timeline: reasoning_data for each batch
3. Unified Schemas Updated (no separate migration):
- services/procurement/migrations/001_unified_initial_schema.py
- services/production/migrations/001_unified_initial_schema.py
- Removed reasoning/consequence columns from table definitions
- Updated comments to reflect i18n approach
Database Schema:
- purchase_orders: Only reasoning_data (JSONB)
- production_batches: Only reasoning_data (JSON)
Backend now generates:
{
"type": "low_stock_detection",
"parameters": {
"supplier_name": "Harinas del Norte",
"days_until_stockout": 3,
...
},
"consequence": {
"type": "stockout_risk",
"severity": "high"
}
}
Next Steps:
- Frontend: Create i18n translation keys
- Frontend: Update components to translate reasoning_data
- Test multilingual support (ES, EN, CA)
This commit is contained in:
@@ -5,7 +5,7 @@ Revises:
|
||||
Create Date: 2025-11-07
|
||||
|
||||
Complete production service schema including:
|
||||
- Production batches (with reasoning fields for JTBD dashboard and waste tracking)
|
||||
- Production batches (with reasoning_data for i18n JTBD dashboard and waste tracking)
|
||||
- Production schedules
|
||||
- Production capacity
|
||||
- Equipment
|
||||
@@ -90,7 +90,7 @@ def upgrade() -> None:
|
||||
)
|
||||
op.create_index(op.f('ix_equipment_tenant_id'), 'equipment', ['tenant_id'], unique=False)
|
||||
|
||||
# Create production_batches table (with all fields including reasoning and waste tracking)
|
||||
# Create production_batches table (with reasoning_data for i18n and waste tracking)
|
||||
op.create_table('production_batches',
|
||||
sa.Column('id', sa.UUID(), nullable=False),
|
||||
sa.Column('tenant_id', sa.UUID(), nullable=False),
|
||||
@@ -135,8 +135,7 @@ def upgrade() -> None:
|
||||
sa.Column('quality_notes', sa.Text(), nullable=True),
|
||||
sa.Column('delay_reason', sa.String(length=255), nullable=True),
|
||||
sa.Column('cancellation_reason', sa.String(length=255), nullable=True),
|
||||
# JTBD Dashboard fields (from 20251107 migration)
|
||||
sa.Column('reasoning', sa.Text(), nullable=True),
|
||||
# JTBD Dashboard: Structured reasoning for i18n support
|
||||
sa.Column('reasoning_data', sa.JSON(), nullable=True),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
|
||||
sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
|
||||
|
||||
Reference in New Issue
Block a user