Commit Graph

279 Commits

Author SHA1 Message Date
Urtzi Alfaro
6c6be6f5a5 Improve public pages 2026-01-05 19:51:28 +01:00
Urtzi Alfaro
18627f02d4 Fix onboarding UI 2026-01-05 19:42:35 +01:00
Urtzi Alfaro
429e724a2c Improve onboarding flow 2026-01-04 21:37:44 +01:00
Urtzi Alfaro
47ccea4900 Imporve the UI 5 2026-01-03 15:55:24 +01:00
Urtzi Alfaro
db12c57b0b Imporve the UI 4 2026-01-02 22:03:25 +01:00
Urtzi Alfaro
ddf95958d2 fix demo session 3 2026-01-02 13:27:48 +01:00
Urtzi Alfaro
0a1951051f fix demo session 2 2026-01-02 12:18:46 +01:00
Urtzi Alfaro
93c9475239 fix UI 1 2026-01-01 19:01:33 +01:00
Urtzi Alfaro
d6728b4bd8 fix traslations 2026-01-01 14:09:59 +01:00
Urtzi Alfaro
cba55c2805 Improve UI and traslations 2026-01-01 13:36:45 +01:00
Urtzi Alfaro
0dc5f76938 Improve unified wizard 2025-12-30 20:51:03 +01:00
Urtzi Alfaro
c07df124fb Improve UI 2025-12-30 14:40:20 +01:00
Urtzi Alfaro
e494ea8635 Fix UI issues 2 2025-12-29 21:52:53 +01:00
Urtzi Alfaro
02f0c91a15 Fix UI issues 2025-12-29 19:33:35 +01:00
Urtzi Alfaro
c1dedfa44f Fix childer tennats 2025-12-29 17:25:20 +01:00
Urtzi Alfaro
96d8576103 Add frontend loading imporvements 2 2025-12-28 22:29:27 +01:00
Urtzi Alfaro
54662dde79 Add frontend loading imporvements 2025-12-27 21:30:42 +01:00
Urtzi Alfaro
6e3a6590d6 add traslations 2 2025-12-25 20:51:03 +01:00
Urtzi Alfaro
8a585058ed Add traslations 2 2025-12-25 18:59:56 +01:00
Urtzi Alfaro
b95b86ee2c Add traslations 2025-12-25 18:35:37 +01:00
Urtzi Alfaro
bfa5ff0637 Imporve onboarding UI 2025-12-19 13:10:24 +01:00
Urtzi Alfaro
71ee2976a2 Update readmes and imporve UI 2025-12-19 09:28:36 +01:00
Urtzi Alfaro
acb3a40844 Add traslations 2025-12-18 20:12:32 +01:00
Urtzi Alfaro
f10a2b92ea Improve onboarding 2025-12-18 13:26:32 +01:00
Urtzi Alfaro
f8591639a7 Imporve enterprise 2025-12-17 20:50:22 +01:00
Urtzi Alfaro
e3ef47b879 Fix demo session exit redirecting to unauthorized page
Clear auth store when exiting demo session to prevent unauthorized page redirect.

## Problem

When users clicked "Salir" (Exit) from the demo session, they were redirected to the unauthorized page (`/unauthorized`) instead of the demo landing page (`/demo`).

## Root Cause

The `handleExpiration()` function in DemoBanner.tsx was clearing localStorage and navigating to `/demo`, but was NOT clearing the auth store. This created an inconsistent state:

- `isDemoMode = false` (localStorage cleared)
- `demoSessionId = null` (localStorage cleared)
- `isAuthenticated = true` (auth store NOT cleared - still has demo user)

The `useHasAccess()` hook checks:
```typescript
return isAuthenticated || (isDemoMode && !!demoSessionId);
```

After clearing localStorage but not auth:
- `isAuthenticated = true` but the demo session is invalid
- `isDemoMode = false` and `demoSessionId = null`
- Result: `useHasAccess()` returns `false`

When navigating to `/demo`, the ProtectedRoute checked access and found it was `false`, redirecting to `/unauthorized`.

## Solution

Call `logout()` on the auth store before navigating to clear the demo user session completely. This ensures:
- Auth store is cleared (`isAuthenticated = false`)
- User is properly logged out from demo session
- Navigation to `/demo` succeeds without authentication check

## Additional Improvements

- Also clear `virtual_tenant_id` and `subscription_tier` from localStorage
- Updated comment to clarify navigation intent

## Files Changed

- frontend/src/components/layout/DemoBanner/DemoBanner.tsx:73-74
  - Added auth store logout before navigation
  - Added clearing of virtual_tenant_id and subscription_tier
  - Updated comment for clarity

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-17 17:37:46 +01:00
Urtzi Alfaro
8bfe4f2dd7 Fix Demo enterprise 2025-12-17 13:03:52 +01:00
Urtzi Alfaro
c566967bea Add AI insights feature 2025-12-15 21:14:22 +01:00
Urtzi Alfaro
82f9622411 demo seed change 4 2025-12-14 19:05:37 +01:00
Urtzi Alfaro
a030bd14c8 demo seed change 2 2025-12-14 11:58:14 +01:00
Urtzi Alfaro
ff830a3415 demo seed change 2025-12-13 23:57:54 +01:00
Urtzi Alfaro
e116ac244c Fix and UI imporvements 3 2025-12-10 11:23:53 +01:00
Urtzi Alfaro
46f5158536 Fix and UI imporvements 2 2025-12-09 13:45:09 +01:00
Urtzi Alfaro
508f4569b9 Fix and UI imporvements 2025-12-09 10:21:41 +01:00
Urtzi Alfaro
667e6e0404 New alert service 2025-12-05 20:07:01 +01:00
Urtzi Alfaro
972db02f6d New enterprise feature 2025-11-30 09:12:40 +01:00
Urtzi Alfaro
e902419b6e New alert system and panel de control page 2025-11-27 15:52:40 +01:00
Urtzi Alfaro
a6c513579b style(dashboard): Align visual hierarchy across cards
UnifiedActionQueueCard changes:
- Update container: shadow-xl, border-2, hover:shadow-2xl
- Add large hero icon (w-16 h-16 md:w-20 md:h-20) with AlertCircle
- Colored background based on queue urgency (red/blue)
- Upgrade title to text-2xl md:text-3xl font-bold
- Move total actions and SSE status to inline metric badges

ExecutionProgressTracker changes:
- Update container: shadow-xl, border-2, hover:shadow-2xl
- Add large hero icon (w-16 h-16 md:w-20 md:h-20) with TrendingUp
- Primary color background for hero icon
- Upgrade title to text-2xl md:text-3xl font-bold

Both cards now match the visual weight and hero pattern of
GlanceableHealthHero and IntelligentSystemSummaryCard for
consistent dashboard hierarchy and improved scannability.

Fixes: Issue #1 - Style alignment

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 07:42:14 +01:00
Urtzi Alfaro
407429d50a feat(dashboard): Add i18n support for action buttons
- Create getActionLabelKey() mapper function for action types
- Map action types (approve_po, call_supplier, etc.) to i18n keys
- Extract parameters from metadata (amount, supplier, customer, hours)
- Update button rendering to use translations instead of backend strings

Translation updates:
- Add missing action keys: reject_po, complete_receipt, mark_received
- Spanish translations: "Rechazar pedido", "Completar recepción", etc.
- Basque translations: "Baztertu eskaera", "Osatu stockaren harrera", etc.

Action buttons now respect user's language preference (EN/ES/EU)
instead of showing hardcoded backend strings.

Fixes: Issue #4 - Missing i18n for action buttons

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 07:40:12 +01:00
Urtzi Alfaro
70931cb4fd feat(dashboard): Add production batch details to execution progress
Backend changes (dashboard_service.py):
- Collect in-progress batch details with id, batchNumber, productName, etc.
- Add inProgressBatches array to production progress response

Frontend changes (ExecutionProgressTracker.tsx):
- Update ProductionProgress interface to include inProgressBatches array
- Display batch names and numbers under "En Progreso" count
- Show which specific batches are currently running

Users can now see which production batches are in progress
instead of just a count (e.g., "• Pan (BATCH-001)").

Fixes: Issue #5 - Missing production batch details

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 07:37:50 +01:00
Urtzi Alfaro
b2bde32502 feat(dashboard): Add reasoning modal for action buttons
- Create ReasoningModal component with AI reasoning display
- Add business impact section (financial impact, affected orders)
- Add urgency context display (time remaining)
- Wire up 'reasoning:show' event listener in UnifiedActionQueueCard
- Export ReasoningModal from domain/dashboard index

The smartActionHandlers already emit the 'reasoning:show' event,
this adds the missing listener and modal to display the AI reasoning
when users click "See Full Reasoning" on alerts.

Fixes: Issue #2 - "See Full Reasoning" button not working

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 07:36:06 +01:00
Urtzi Alfaro
2ee94fb4b1 Improve frontend panel de control 2025-11-20 22:10:16 +01:00
Claude
8aa1b0d859 Fix dashboard translation issues and template variable interpolation
This commit resolves three critical translation/localization issues in the bakery dashboard:

1. **Health Status Translation Keys**: Fixed HealthStatusCard's translateKey function to properly handle `dashboard.health.*` keys by correctly stripping the `dashboard.` prefix while preserving the `health.` namespace path. This ensures checklist items like "production_on_schedule" and "all_ingredients_in_stock" display correctly in Spanish.

2. **Reasoning Translation Keys**: Updated backend dashboard_service.py to use the correct i18n key prefixes:
   - Purchase orders now use `reasoning.purchaseOrder.*` instead of `reasoning.types.*`
   - Production batches now use `reasoning.productionBatch.*`
   - Added context parameter to `_get_reasoning_type_i18n_key()` method for proper namespace routing

3. **Template Variable Interpolation**: Fixed template variable replacement in action cards:
   - Added array preprocessing logic in both backend and frontend to convert `product_names` arrays to `product_names_joined` strings
   - Updated ActionQueueCard's translateKey to preprocess array parameters before i18n interpolation
   - Fixed ProductionTimelineCard to properly handle reasoning namespace prefix removal

These fixes ensure that:
- Health status indicators show translated text instead of raw keys (e.g., "Producción a tiempo" vs "dashboard.health.production_on_schedule")
- Purchase order reasoning displays with proper product names and stockout days instead of literal template variables (e.g., "Stock bajo para Harina. El stock se agotará en 7 días" vs "Stock bajo para {{product_name}}")
- All dashboard components consistently handle i18n key namespaces and parameter interpolation

Affected files:
- frontend/src/components/dashboard/HealthStatusCard.tsx
- frontend/src/components/dashboard/ActionQueueCard.tsx
- frontend/src/components/dashboard/ProductionTimelineCard.tsx
- services/orchestrator/app/services/dashboard_service.py
2025-11-20 19:03:39 +00:00
Claude
925dbfb47c Fix translation namespace issues in dashboard components
Fixed translation keys not being resolved properly in the Spanish dashboard by:

1. HealthStatusCard:
   - Added support for multiple namespaces (dashboard, reasoning, production)
   - Created translateKey helper function to map backend keys to correct i18next namespaces
   - Fixed translation of health.headline_yellow_approvals and other dynamic keys

2. ActionQueueCard:
   - Added translateKey helper to properly handle reasoning.types.* keys
   - Fixed namespace resolution for purchase order reasoning and consequences
   - Updated all translation calls to use proper namespace mapping

3. ProductionTimelineCard:
   - Added 'production' namespace to support production.status.pending translations
   - Fixed status translation to detect and use correct namespace

All untranslated keys like "health.headline_yellow_approvals",
"reasoning.types.low_stock_detection", "reasoning.types.forecast_demand",
and "production.status.pending" should now display correctly in Spanish.
2025-11-20 18:43:34 +00:00
Claude
9545cf43b4 Fix loading state in PO details modal
Fixed the loading prop name from 'isLoading' to 'loading' in UnifiedPurchaseOrderModal
to properly display loading state while fetching data from backend. This ensures users
see a loading indicator instead of an empty modal during data fetch.
2025-11-20 18:19:24 +00:00
Urtzi Alfaro
4433b66f25 Improve frontend 5 2025-11-20 19:14:49 +01:00
Urtzi Alfaro
29e6ddcea9 Improve frontend 3 2025-11-19 22:12:51 +01:00
Urtzi Alfaro
938df0866e Implement subscription tier redesign and component consolidation
This comprehensive update includes two major improvements:

## 1. Subscription Tier Redesign (Conversion-Optimized)

Frontend enhancements:
- Add PlanComparisonTable component for side-by-side tier comparison
- Add UsageMetricCard with predictive analytics and trend visualization
- Add ROICalculator for real-time savings calculation
- Add PricingComparisonModal for detailed plan comparisons
- Enhance SubscriptionPricingCards with behavioral economics (Professional tier prominence)
- Integrate useSubscription hook for real-time usage forecast data
- Update SubscriptionPage with enhanced metrics, warnings, and CTAs
- Add subscriptionAnalytics utility with 20+ conversion tracking events

Backend APIs:
- Add usage forecast endpoint with linear regression predictions
- Add daily usage tracking for trend analysis (usage_forecast.py)
- Enhance subscription error responses for conversion optimization
- Update tenant operations for usage data collection

Infrastructure:
- Add usage tracker CronJob for daily snapshot collection
- Add track_daily_usage.py script for automated usage tracking

Internationalization:
- Add 109 translation keys across EN/ES/EU for subscription features
- Translate ROI calculator, plan comparison, and usage metrics
- Update landing page translations with subscription messaging

Documentation:
- Add comprehensive deployment checklist
- Add integration guide with code examples
- Add technical implementation details (710 lines)
- Add quick reference guide for common tasks
- Add final integration summary

Expected impact: +40% Professional tier conversions, +25% average contract value

## 2. Component Consolidation and Cleanup

Purchase Order components:
- Create UnifiedPurchaseOrderModal to replace redundant modals
- Consolidate PurchaseOrderDetailsModal functionality into unified component
- Update DashboardPage to use UnifiedPurchaseOrderModal
- Update ProcurementPage to use unified approach
- Add 27 new translation keys for purchase order workflows

Production components:
- Replace CompactProcessStageTracker with ProcessStageTracker
- Update ProductionPage with enhanced stage tracking
- Improve production workflow visibility

UI improvements:
- Enhance EditViewModal with better field handling
- Improve modal reusability across domain components
- Add support for approval workflows in unified modals

Code cleanup:
- Remove obsolete PurchaseOrderDetailsModal (620 lines)
- Remove obsolete CompactProcessStageTracker (303 lines)
- Net reduction: 720 lines of code while adding features
- Improve maintainability with single source of truth

Build verified: All changes compile successfully
Total changes: 29 files, 1,183 additions, 1,903 deletions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 21:01:06 +01:00
Urtzi Alfaro
1f6a679557 Improve frontend traslations 2 2025-11-19 07:46:40 +01:00
Urtzi Alfaro
bbf6658759 Improve frontend traslations 2025-11-18 22:17:56 +01:00