Commit Graph

29 Commits

Author SHA1 Message Date
Urtzi Alfaro
5642b5a0c0 demo seed change 7 2025-12-15 13:39:33 +01:00
Urtzi Alfaro
ff830a3415 demo seed change 2025-12-13 23:57:54 +01:00
Urtzi Alfaro
667e6e0404 New alert service 2025-12-05 20:07:01 +01:00
Urtzi Alfaro
e902419b6e New alert system and panel de control page 2025-11-27 15:52:40 +01:00
Claude
3f8c269de4 Fix template variable interpolation issues in dashboard
This commit fixes the template interpolation issues where variables like
{{supplier_name}}, {{product_names_joined}}, {{current_stock}}, etc. were
showing as literal strings instead of being replaced with actual values.

Changes made:

1. **Dashboard Service (Orchestrator):**
   - Added missing `current_stock` parameter to default reasoning_data for
     production batches
   - This ensures all required template variables are present when batches
     don't have proper reasoning_data from the database

2. **Production Service:**
   - Updated batch creation to properly populate `product_name` field
   - Improved product name resolution to check forecast data and stock_info
     before falling back to placeholder
   - Added missing `product_id` field to batch_data
   - Added required `planned_duration_minutes` field to batch_data
   - Ensures reasoning_data has all required parameters (product_name,
     predicted_demand, current_stock, confidence_score)

The root cause was that the default reasoning_data used by the dashboard
service when database records lacked proper reasoning_data was missing
required parameters. This resulted in i18n template variables being
displayed as literal {{variable}} strings instead of interpolated values.

Fixes dashboard display issues for:
- Purchase order cards showing {{supplier_name}}, {{product_names_joined}},
  {{days_until_stockout}}
- Production plan items showing {{product_name}}, {{predicted_demand}},
  {{current_stock}}, {{confidence_score}}
2025-11-20 19:14:50 +00:00
Urtzi Alfaro
9bc048d360 Add whatsapp feature 2025-11-13 16:01:08 +01:00
Claude
79399294d5 feat: Add automatic template code generation to quality templates
BACKEND IMPLEMENTATION: Implemented template code auto-generation for quality
check templates following the proven pattern from orders and inventory services.

IMPLEMENTATION DETAILS:

**New Method: _generate_template_code()**
Location: services/production/app/services/quality_template_service.py:447-513

Format: TPL-{TYPE}-{SEQUENCE}
- TYPE: 2-letter prefix based on check_type
- SEQUENCE: Sequential 4-digit number per type per tenant
- Examples:
  - Product Quality → TPL-PQ-0001, TPL-PQ-0002, etc.
  - Process Hygiene → TPL-PH-0001, TPL-PH-0002, etc.
  - Equipment → TPL-EQ-0001
  - Safety → TPL-SA-0001
  - Cleaning → TPL-CL-0001
  - Temperature Control → TPL-TC-0001
  - Documentation → TPL-DC-0001

**Type Mapping:**
- product_quality → PQ
- process_hygiene → PH
- equipment → EQ
- safety → SA
- cleaning → CL
- temperature → TC
- documentation → DC
- Fallback: First 2 chars of template name or "TP"

**Generation Logic:**
1. Map check_type to 2-letter prefix
2. Query database for count of existing codes with same prefix
3. Increment sequence number (count + 1)
4. Format as TPL-{TYPE}-{SEQUENCE:04d}
5. Fallback to UUID-based code if any error occurs

**Integration:**
- Updated create_template() method (lines 42-50)
- Auto-generates template code ONLY if not provided
- Maintains support for custom codes from users
- Logs generation for audit trail

**Benefits:**
 Database-enforced uniqueness per tenant per type
 Meaningful codes grouped by quality check type
 Follows established pattern (orders, inventory)
 Thread-safe with async database context
 Graceful fallback to UUID on errors
 Full audit logging

**Technical Details:**
- Uses SQLAlchemy select with func.count for efficient counting
- Filters by tenant_id and template_code prefix
- Uses LIKE operator for prefix matching (TPL-{type}-%)
- Executed within service's async db session

**Testing Suggestions:**
1. Create template without code → should auto-generate
2. Create template with custom code → should use provided code
3. Create multiple templates of same type → should increment
4. Create templates of different types → separate sequences
5. Verify tenant isolation

This completes the quality template backend auto-generation,
matching the frontend changes in QualityTemplateWizard.tsx
2025-11-10 12:22:53 +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
Urtzi Alfaro
394ad3aea4 Improve AI logic 2025-11-05 13:34:56 +01:00
Urtzi Alfaro
269d3b5032 Add user delete process 2025-10-31 11:54:19 +01:00
Urtzi Alfaro
63f5c6d512 Improve the frontend 3 2025-10-30 21:08:07 +01:00
Urtzi Alfaro
36217a2729 Improve the frontend 2 2025-10-29 06:58:05 +01:00
Urtzi Alfaro
61376b7a9f Improve the frontend and fix TODOs 2025-10-24 13:05:04 +02:00
Urtzi Alfaro
07c33fa578 Improve the frontend and repository layer 2025-10-23 07:44:54 +02:00
Urtzi Alfaro
05da20357d Improve teh securty of teh DB 2025-10-19 19:22:37 +02:00
Urtzi Alfaro
b420af32c5 REFACTOR production scheduler 2025-10-09 18:01:24 +02:00
Urtzi Alfaro
a27f159e24 Fix few issues 2025-09-26 12:12:17 +02:00
Urtzi Alfaro
cf4405b771 Fix production deadlock 2025-09-25 21:00:40 +02:00
Urtzi Alfaro
c75aed9dfe Fix schedulers of teh production service 2025-09-25 14:49:42 +02:00
Urtzi Alfaro
89b75bd7af Support subcription payments 2025-09-25 14:30:47 +02:00
Urtzi Alfaro
dc6c6f213f Fix some UI issues 2 2025-09-24 21:54:49 +02:00
Urtzi Alfaro
2de1e6ce40 Add quality template logic 2025-09-24 16:42:23 +02:00
Urtzi Alfaro
7892c5a739 Add improved production UI 3 2025-09-23 19:24:22 +02:00
Urtzi Alfaro
4ae8e14e55 Add improved production UI 2025-09-23 12:49:35 +02:00
Urtzi Alfaro
13ca3e90b4 Improve the production frontend 2025-09-21 07:45:19 +02:00
Urtzi Alfaro
b7eb4888a6 Update frontend 2025-08-23 16:30:45 +02:00
Urtzi Alfaro
4b4268d640 Add new alert architecture 2025-08-23 10:19:58 +02:00
Urtzi Alfaro
90100a66c6 Delete legacy alerts 2025-08-22 15:31:52 +02:00
Urtzi Alfaro
c6dd6fd1de Add more services 2025-08-21 20:28:14 +02:00