From 312e36c8933a5c9f01ed75efd3d4db25d720356b Mon Sep 17 00:00:00 2001 From: Urtzi Alfaro Date: Fri, 17 Oct 2025 23:09:40 +0200 Subject: [PATCH] Update requirements and insfra versions --- config/docker-compose.yml | 48 ++++++------ .../components/domain/auth/PilotBanner.tsx | 2 +- frontend/src/locales/en/landing.json | 8 +- frontend/src/locales/es/landing.json | 12 +-- frontend/src/locales/eu/landing.json | 8 +- frontend/src/locales/eu/weather.json | 2 +- frontend/src/pages/public/AboutPage.tsx | 2 +- frontend/src/pages/public/BlogPage.tsx | 6 +- frontend/src/pages/public/FeedbackPage.tsx | 2 +- frontend/src/pages/public/HelpCenterPage.tsx | 6 +- frontend/src/pages/public/LandingPage.tsx | 61 ++++++++------- gateway/app/main.py | 7 +- gateway/requirements.txt | 33 +++++---- .../alert-processor-service.yaml | 2 +- .../base/components/auth/auth-service.yaml | 2 +- .../databases/alert-processor-db.yaml | 2 +- .../base/components/databases/auth-db.yaml | 2 +- .../components/databases/external-db.yaml | 2 +- .../components/databases/forecasting-db.yaml | 2 +- .../components/databases/inventory-db.yaml | 2 +- .../components/databases/notification-db.yaml | 2 +- .../base/components/databases/orders-db.yaml | 2 +- .../base/components/databases/pos-db.yaml | 2 +- .../databases/postgres-template.yaml | 2 +- .../components/databases/production-db.yaml | 2 +- .../base/components/databases/rabbitmq.yaml | 2 +- .../base/components/databases/recipes-db.yaml | 2 +- .../base/components/databases/redis.yaml | 2 +- .../base/components/databases/sales-db.yaml | 2 +- .../components/databases/suppliers-db.yaml | 2 +- .../base/components/databases/tenant-db.yaml | 2 +- .../components/databases/training-db.yaml | 2 +- .../components/demo-session/database.yaml | 6 +- .../components/external/external-service.yaml | 2 +- .../forecasting/forecasting-service.yaml | 2 +- .../inventory/inventory-service.yaml | 2 +- .../base/components/monitoring/grafana.yaml | 2 +- .../components/monitoring/prometheus.yaml | 2 +- .../notification/notification-service.yaml | 2 +- .../components/orders/orders-service.yaml | 2 +- .../base/components/pos/pos-service.yaml | 2 +- .../production/production-service.yaml | 2 +- .../components/recipes/recipes-service.yaml | 2 +- .../base/components/sales/sales-service.yaml | 2 +- .../suppliers/suppliers-service.yaml | 2 +- .../components/tenant/tenant-service.yaml | 2 +- .../components/training/training-service.yaml | 2 +- .../base/jobs/external-data-init-job.yaml | 2 +- .../alert-processor-migration-job.yaml | 2 +- .../base/migrations/auth-migration-job.yaml | 2 +- .../demo-session-migration-job.yaml | 2 +- .../migrations/external-migration-job.yaml | 2 +- .../migrations/forecasting-migration-job.yaml | 2 +- .../migrations/inventory-migration-job.yaml | 2 +- .../notification-migration-job.yaml | 2 +- .../base/migrations/orders-migration-job.yaml | 2 +- .../base/migrations/pos-migration-job.yaml | 2 +- .../migrations/production-migration-job.yaml | 2 +- .../migrations/recipes-migration-job.yaml | 2 +- .../base/migrations/sales-migration-job.yaml | 2 +- .../migrations/suppliers-migration-job.yaml | 2 +- .../base/migrations/tenant-migration-job.yaml | 2 +- .../tenant-seed-pilot-coupon-job.yaml | 2 +- .../migrations/training-migration-job.yaml | 2 +- scripts/docker-compose.yml | 6 +- services/alert_processor/requirements.txt | 30 ++++---- services/auth/requirements.txt | 74 ++++++++++--------- services/demo_session/requirements.txt | 29 +++++--- services/external/requirements.txt | 52 ++++++------- services/forecasting/requirements.txt | 52 +++++++------ services/inventory/requirements.txt | 40 +++++----- services/notification/requirements.txt | 47 ++++++------ services/orders/requirements.txt | 40 +++++----- services/pos/requirements.txt | 35 +++++---- services/production/requirements.txt | 38 +++++----- services/recipes/requirements.txt | 61 ++++++++------- services/sales/requirements.txt | 40 +++++----- services/suppliers/requirements.txt | 40 +++++----- services/tenant/requirements.txt | 35 +++++---- services/training/requirements.txt | 58 +++++++-------- shared/database/base.py | 20 ++--- 81 files changed, 524 insertions(+), 476 deletions(-) diff --git a/config/docker-compose.yml b/config/docker-compose.yml index 215a0b1b..b46261ff 100644 --- a/config/docker-compose.yml +++ b/config/docker-compose.yml @@ -49,13 +49,13 @@ services: # ================================================================ redis: - image: redis:7-alpine + image: redis:7.4-alpine container_name: bakery-redis restart: unless-stopped # ONLY use environment substitution from .env command: > - redis-server - --appendonly yes + redis-server + --appendonly yes --requirepass ${REDIS_PASSWORD} --maxmemory ${REDIS_MAX_MEMORY:-512mb} --databases 16 @@ -73,7 +73,7 @@ services: retries: 3 rabbitmq: - image: rabbitmq:4.0-management-alpine + image: rabbitmq:4.1-management-alpine container_name: bakery-rabbitmq restart: unless-stopped # ONLY use environment substitution from .env @@ -101,7 +101,7 @@ services: # ================================================================ auth-db: - image: postgres:15-alpine + image: postgres:17-alpine container_name: bakery-auth-db restart: unless-stopped # ONLY reference .env variables @@ -123,7 +123,7 @@ services: retries: 5 training-db: - image: postgres:15-alpine + image: postgres:17-alpine container_name: bakery-training-db restart: unless-stopped environment: @@ -144,7 +144,7 @@ services: retries: 5 forecasting-db: - image: postgres:15-alpine + image: postgres:17-alpine container_name: bakery-forecasting-db restart: unless-stopped environment: @@ -165,7 +165,7 @@ services: retries: 5 sales-db: - image: postgres:15-alpine + image: postgres:17-alpine container_name: bakery-sales-db restart: unless-stopped environment: @@ -186,7 +186,7 @@ services: retries: 5 external-db: - image: postgres:15-alpine + image: postgres:17-alpine container_name: bakery-external-db restart: unless-stopped environment: @@ -207,7 +207,7 @@ services: retries: 5 tenant-db: - image: postgres:15-alpine + image: postgres:17-alpine container_name: bakery-tenant-db restart: unless-stopped environment: @@ -228,7 +228,7 @@ services: retries: 5 notification-db: - image: postgres:15-alpine + image: postgres:17-alpine container_name: bakery-notification-db restart: unless-stopped environment: @@ -249,7 +249,7 @@ services: retries: 5 inventory-db: - image: postgres:15-alpine + image: postgres:17-alpine container_name: bakery-inventory-db restart: unless-stopped environment: @@ -270,7 +270,7 @@ services: retries: 5 recipes-db: - image: postgres:15-alpine + image: postgres:17-alpine container_name: bakery-recipes-db restart: unless-stopped environment: @@ -291,7 +291,7 @@ services: retries: 5 suppliers-db: - image: postgres:15-alpine + image: postgres:17-alpine container_name: bakery-suppliers-db restart: unless-stopped environment: @@ -312,7 +312,7 @@ services: retries: 5 pos-db: - image: postgres:15-alpine + image: postgres:17-alpine container_name: bakery-pos-db restart: unless-stopped environment: @@ -333,7 +333,7 @@ services: retries: 5 orders-db: - image: postgres:15-alpine + image: postgres:17-alpine container_name: bakery-orders-db restart: unless-stopped environment: @@ -354,7 +354,7 @@ services: retries: 5 production-db: - image: postgres:15-alpine + image: postgres:17-alpine container_name: bakery-production-db restart: unless-stopped environment: @@ -375,7 +375,7 @@ services: retries: 5 alert-processor-db: - image: postgres:15-alpine + image: postgres:17-alpine container_name: bakery-alert-processor-db restart: unless-stopped environment: @@ -401,7 +401,7 @@ services: # ================================================================ nominatim-db: - image: postgis/postgis:15-3.3 # Use PostGIS enabled PostgreSQL image + image: postgis/postgis:17-3.5 container_name: bakery-nominatim-db restart: unless-stopped environment: @@ -409,14 +409,14 @@ services: - POSTGRES_USER=${NOMINATIM_DB_USER} - POSTGRES_PASSWORD=${NOMINATIM_DB_PASSWORD} - PGDATA=/var/lib/postgresql/data/pgdata - - POSTGRES_INITDB_ARGS="--auth-host=scram-sha-256" # Recommended for PostGIS + - POSTGRES_INITDB_ARGS="--auth-host=scram-sha-256" volumes: - nominatim_db_data:/var/lib/postgresql/data profiles: - development networks: bakery-network: - ipv4_address: 172.20.0.30 # Assign a static IP for Nominatim to find it + ipv4_address: 172.20.0.30 healthcheck: test: ["CMD-SHELL", "pg_isready -U ${NOMINATIM_DB_USER} -d ${NOMINATIM_DB_NAME}"] interval: 10s @@ -1023,7 +1023,7 @@ services: # ================================================================ prometheus: - image: prom/prometheus:v2.45.0 + image: prom/prometheus:v3.0.1 container_name: bakery-prometheus restart: unless-stopped command: @@ -1041,7 +1041,7 @@ services: ipv4_address: 172.20.0.200 grafana: - image: grafana/grafana:10.0.0 + image: grafana/grafana:12.3.0 container_name: bakery-grafana restart: unless-stopped environment: @@ -1101,7 +1101,7 @@ services: # ================================================================ pgadmin: - image: dpage/pgadmin4:7.4 + image: dpage/pgadmin4:8.14 container_name: bakery-pgadmin restart: unless-stopped environment: diff --git a/frontend/src/components/domain/auth/PilotBanner.tsx b/frontend/src/components/domain/auth/PilotBanner.tsx index ca7530d3..78e7b50a 100644 --- a/frontend/src/components/domain/auth/PilotBanner.tsx +++ b/frontend/src/components/domain/auth/PilotBanner.tsx @@ -59,7 +59,7 @@ export const PilotBanner: React.FC = ({
- 40% descuento de por vida + 20% descuento de por vida
diff --git a/frontend/src/locales/en/landing.json b/frontend/src/locales/en/landing.json index 0a68741e..edb2eebb 100644 --- a/frontend/src/locales/en/landing.json +++ b/frontend/src/locales/en/landing.json @@ -10,7 +10,7 @@ "badge_sustainability": "Food Waste Reduction", "title_line1": "Increase Profits,", "title_line2": "Reduce Waste", - "subtitle": "AI platform for bakeries that want to produce exactly what they'll sell. Reduce food waste, improve margins, and save time on planning. 100% Spanish, your data is yours.", + "subtitle": "AI platform for bakeries that want to produce exactly what they'll sell. Reduce food waste, improve margins, and save time on planning. Your data is 100% yours.", "pilot_banner": { "title": "Pilot Launch!", "offer": "3 MONTHS FREE", @@ -38,7 +38,7 @@ "benefits": { "founders_beta": { "title": "Founders Beta", - "description": "Lifetime access with 40% discount" + "description": "Lifetime access with 20% discount" }, "influence_product": { "title": "Influence the Product", @@ -165,7 +165,7 @@ "what_you_get": { "title": "What You Get", "free_trial": "3 completely free months to test all features", - "lifetime_discount": "40% lifetime discount if you continue after the pilot", + "lifetime_discount": "20% lifetime discount if you continue after the pilot", "founder_support": "Direct support from founding team - we respond in hours, not days", "priority_features": "Your ideas implemented first - we build what you really need", "cancel_anytime": "Cancel anytime without explanations or penalties" @@ -231,7 +231,7 @@ "why_now": { "title": "Why act now?", "lifetime_discount": { - "title": "40% lifetime discount", + "title": "20% lifetime discount", "subtitle": "First 20 only" }, "influence": { diff --git a/frontend/src/locales/es/landing.json b/frontend/src/locales/es/landing.json index 65c67d49..434bfeab 100644 --- a/frontend/src/locales/es/landing.json +++ b/frontend/src/locales/es/landing.json @@ -10,7 +10,7 @@ "badge_sustainability": "Reducción de Desperdicio Alimentario", "title_line1": "Aumenta Ganancias,", "title_line2": "Reduce Desperdicios", - "subtitle": "Plataforma de IA para panaderías que quieren producir exactamente lo que van a vender. Reduce desperdicio alimentario, mejora márgenes y ahorra tiempo en planificación. 100% española, tus datos son tuyos.", + "subtitle": "Plataforma de IA para panaderías que quieren producir exactamente lo que van a vender. Reduce desperdicio alimentario, mejora márgenes y ahorra tiempo en planificación. Tus datos son 100% tuyos.", "pilot_banner": { "title": "¡Lanzamiento Piloto!", "offer": "3 MESES GRATIS", @@ -38,7 +38,7 @@ "benefits": { "founders_beta": { "title": "Founders Beta", - "description": "Acceso de por vida con 40% descuento" + "description": "Acceso de por vida con 20% descuento" }, "influence_product": { "title": "Influye el Producto", @@ -57,7 +57,7 @@ "subtitle": "Sistema de alta tecnología que utiliza algoritmos de IA avanzados para optimizar tu producción, reducir residuos alimentarios y mantener tus datos 100% seguros y bajo tu control.", "ai_prediction": { "title": "IA Avanzada de Predicción", - "description": "Algoritmos de machine learning de última generación analizan patrones históricos, clima, eventos y tendencias para predecir demanda con precisión quirúrgica.", + "description": "Algoritmos de Inteligencia Artificial de última generación analizan patrones históricos, clima, eventos y tendencias para predecir demanda con precisión quirúrgica.", "features": { "accuracy": "Precisión del 92% en predicciones", "learning": "Aprendizaje continuo y adaptativo", @@ -165,7 +165,7 @@ "what_you_get": { "title": "Lo Que Obtienes", "free_trial": "3 meses completamente gratis para probar todas las funcionalidades", - "lifetime_discount": "40% de descuento de por vida si decides continuar después del piloto", + "lifetime_discount": "20% de descuento de por vida si decides continuar después del piloto", "founder_support": "Soporte directo del equipo fundador - respondemos en horas, no días", "priority_features": "Tus ideas se implementan primero - construimos lo que realmente necesitas", "cancel_anytime": "Cancelas cuando quieras sin explicaciones ni penalizaciones" @@ -191,7 +191,7 @@ }, "team": { "title": "Equipo Experto", - "description": "Fundadores con experiencia en IA + hostelería. Conocemos el sector de dentro." + "description": "Fundadores con experiencia en proyectos de alto valor tecnológico + proyectos internacionales" } } }, @@ -231,7 +231,7 @@ "why_now": { "title": "¿Por qué actuar ahora?", "lifetime_discount": { - "title": "40% descuento de por vida", + "title": "20% descuento de por vida", "subtitle": "Solo primeros 20" }, "influence": { diff --git a/frontend/src/locales/eu/landing.json b/frontend/src/locales/eu/landing.json index eb6e9234..259290cc 100644 --- a/frontend/src/locales/eu/landing.json +++ b/frontend/src/locales/eu/landing.json @@ -10,7 +10,7 @@ "badge_sustainability": "Elikagai Hondakinen Murrizketa", "title_line1": "Handitu Irabaziak,", "title_line2": "Murriztu Hondakinak", - "subtitle": "AA plataforma okindegiek saldu behar duten zehatz-mehatz ekoizteko. Murriztu elikagai hondakinak, hobetu marjinak eta aurreztu denbora plangintzan. 100% espainiarra, zure datuak zureak dira.", + "subtitle": "AA plataforma okindegiek saldu behar duten zehatz-mehatz ekoizteko. Murriztu elikagai hondakinak, hobetu marjinak eta aurreztu denbora plangintzan. Zure datuak 100% zureak dira.", "pilot_banner": { "title": "Pilotu Abiapena!", "offer": "3 HILABETE DOAN", @@ -38,7 +38,7 @@ "benefits": { "founders_beta": { "title": "Sortzaileen Beta", - "description": "Bizitza osoko sarbidea %40 deskontuarekin" + "description": "Bizitza osoko sarbidea %20 deskontuarekin" }, "influence_product": { "title": "Eragin Produktuan", @@ -165,7 +165,7 @@ "what_you_get": { "title": "Zer Lortzen Duzu", "free_trial": "3 hilabete guztiz doan funtzionalitate guztiak probatzeko", - "lifetime_discount": "%40ko bizitza osoko deskontua pilotuaren ondoren jarraitzea erabakitzen baduzu", + "lifetime_discount": " pilotuaren ondoren jarraitzea erabakitzen baduzu", "founder_support": "Sortzaile taldearen laguntza zuzena - orduetan erantzuten dugu, ez egunetan", "priority_features": "Zure ideiak lehenik gauzatzen dira - benetan behar duzuna eraikitzen dugu", "cancel_anytime": "Edozein unetan ezeztatu azalpenik edo zigorrekin" @@ -231,7 +231,7 @@ "why_now": { "title": "Zergatik jardun orain?", "lifetime_discount": { - "title": "%40 bizitza osoko deskontua", + "title": "%20 bizitza osoko deskontua", "subtitle": "Lehenengo 20entzat bakarrik" }, "influence": { diff --git a/frontend/src/locales/eu/weather.json b/frontend/src/locales/eu/weather.json index 4f05044f..116e8de3 100644 --- a/frontend/src/locales/eu/weather.json +++ b/frontend/src/locales/eu/weather.json @@ -53,7 +53,7 @@ }, "rainy_day": { "condition": "Euri Eguna", - "impact": "%40ko igoera produktu beroetan", + "impact": "%20ko igoera produktu beroetan", "recommendations": [ "Zopa eta saltsa gehiago", "Txokolate beroak", diff --git a/frontend/src/pages/public/AboutPage.tsx b/frontend/src/pages/public/AboutPage.tsx index 6483b086..64c15c8f 100644 --- a/frontend/src/pages/public/AboutPage.tsx +++ b/frontend/src/pages/public/AboutPage.tsx @@ -252,7 +252,7 @@ const AboutPage: React.FC = () => {

Estamos buscando 20 panaderías pioneras para nuestro programa piloto. - 3 meses gratis, 40% descuento de por vida, y la oportunidad de moldear el producto. + 3 meses gratis, 20% descuento de por vida, y la oportunidad de moldear el producto.

{ content: ` # Cómo Reducir el Desperdicio Alimentario en tu Panadería -El desperdicio alimentario es uno de los mayores desafíos para las panaderías artesanales. Cada día, miles de euros en producto terminan en la basura porque no se vendieron. Pero no tiene que ser así. +El desperdicio alimentario es uno de los mayores desafíos para las panaderías. Cada día, miles de euros en producto terminan en la basura porque no se vendieron. Pero no tiene que ser así. ## El Problema Real @@ -91,7 +91,7 @@ El desperdicio alimentario no solo afecta tu rentabilidad, también el medioambi id: '2', slug: 'ia-predecir-demanda-panaderia', title: 'Cómo la IA Predice la Demanda en Panaderías con 92% de Precisión', - excerpt: 'La inteligencia artificial ha revolucionado la predicción de demanda. Descubre cómo funcionan los algoritmos de ML aplicados a panaderías artesanales.', + excerpt: 'La inteligencia artificial ha revolucionado la predicción de demanda. Descubre cómo funcionan los algoritmos de ML aplicados a panaderías', content: ` # Cómo la IA Predice la Demanda en Panaderías @@ -733,7 +733,7 @@ El RGPD no es opcional. Pero tampoco es complicado si usas las herramientas corr ¿Listo para Optimizar tu Panadería?

- Únete al programa piloto y obtén 3 meses gratis + 40% descuento de por vida + Únete al programa piloto y obtén 3 meses gratis + 20% descuento de por vida

{ Panadería IA

- Tu feedback es fundamental para construir el mejor producto para panaderías artesanales + Tu feedback es fundamental para construir el mejor producto para panaderías

diff --git a/frontend/src/pages/public/HelpCenterPage.tsx b/frontend/src/pages/public/HelpCenterPage.tsx index d89e00c5..2946e5b4 100644 --- a/frontend/src/pages/public/HelpCenterPage.tsx +++ b/frontend/src/pages/public/HelpCenterPage.tsx @@ -90,7 +90,7 @@ const HelpCenterPage: React.FC = () => { { category: 'general', question: '¿Qué es Panadería IA y cómo funciona?', - answer: 'Panadería IA es una plataforma de gestión inteligente para panaderías artesanales. Utiliza inteligencia artificial para predecir la demanda de tus productos, optimizar la producción, reducir desperdicios y aumentar la rentabilidad. Conectas tus datos de ventas históricas y el sistema aprende tus patrones para hacer predicciones precisas.', + answer: 'Panadería IA es una plataforma de gestión inteligente para panaderías. Utiliza inteligencia artificial para predecir la demanda de tus productos, optimizar la producción, reducir desperdicios y aumentar la rentabilidad. Conectas tus datos de ventas históricas y el sistema aprende tus patrones para hacer predicciones precisas.', }, { category: 'general', @@ -105,7 +105,7 @@ const HelpCenterPage: React.FC = () => { { category: 'pricing', question: '¿Cuánto cuesta el programa piloto?', - answer: 'El programa piloto es GRATIS durante los primeros 3 meses. Después, pagas solo €49/mes con un 40% de descuento de por vida (precio normal: €79/mes). Sin contratos de permanencia, cancela cuando quieras. Las primeras 20 panaderías obtienen este beneficio.', + answer: 'El programa piloto es GRATIS durante los primeros 3 meses. Después, pagas solo €49/mes con un 20% de descuento de por vida (precio normal: €79/mes). Sin contratos de permanencia, cancela cuando quieras. Las primeras 20 panaderías obtienen este beneficio.', }, { category: 'pricing', @@ -115,7 +115,7 @@ const HelpCenterPage: React.FC = () => { { category: 'pricing', question: '¿Qué pasa después de los 3 meses gratis?', - answer: 'Tienes 3 opciones: 1) Continuar con el plan Basic (€49/mes con tu descuento del 40%), 2) Actualizar a un plan superior, 3) Cancelar sin penalización. Te avisaremos 7 días antes de que termine tu periodo gratuito.', + answer: 'Tienes 3 opciones: 1) Continuar con el plan Basic (€49/mes con tu descuento del 20%), 2) Actualizar a un plan superior, 3) Cancelar sin penalización. Te avisaremos 7 días antes de que termine tu periodo gratuito.', }, { category: 'technical', diff --git a/frontend/src/pages/public/LandingPage.tsx b/frontend/src/pages/public/LandingPage.tsx index 0ee5a25d..0d562bdf 100644 --- a/frontend/src/pages/public/LandingPage.tsx +++ b/frontend/src/pages/public/LandingPage.tsx @@ -76,7 +76,7 @@ const LandingPage: React.FC = () => {

- {t('landing:hero.subtitle', 'Plataforma de IA diseñada para panaderías artesanales que quieren producir exactamente lo que van a vender. Reduce desperdicio alimentario, mejora márgenes y ahorra tiempo en planificación. 100% española, tus datos son tuyos.')} + {t('landing:hero.subtitle', 'Plataforma de IA diseñada para panaderías que quieren producir exactamente lo que van a vender. Reduce desperdicio alimentario, mejora márgenes y ahorra tiempo en planificación. 100% española, tus datos son tuyos.')}

{/* Pilot Launch Banner */} @@ -202,7 +202,7 @@ const LandingPage: React.FC = () => {
Founders Beta
-
Acceso de por vida con 40% descuento
+
Acceso de por vida con 20% descuento
@@ -353,7 +353,7 @@ const LandingPage: React.FC = () => {

IA Avanzada de Predicción

- Algoritmos de machine learning de última generación analizan patrones históricos, clima, eventos y tendencias para predecir demanda con precisión quirúrgica. + Algoritmos de Inteligencia Artificial de última generación analizan patrones históricos, clima, eventos y tendencias para predecir demanda con precisión quirúrgica.

@@ -550,7 +550,7 @@ const LandingPage: React.FC = () => {

El Problema Que Resolvemos - Para Panaderías Artesanales + Para Panaderías

Sabemos lo frustrante que es tirar pan al final del día, o quedarte sin producto cuando llegan clientes. @@ -687,7 +687,7 @@ const LandingPage: React.FC = () => { Sin Riesgo. Sin Ataduras.

- Somos transparentes: esto es un piloto. Estamos construyendo la mejor herramienta para panaderías artesanales, y necesitamos tu ayuda. + Somos transparentes: esto es un piloto. Estamos construyendo la mejor herramienta para panaderías, y necesitamos tu ayuda.

@@ -707,7 +707,7 @@ const LandingPage: React.FC = () => {
  • - 40% de descuento de por vida si decides continuar después del piloto + 20% de descuento de por vida si decides continuar después del piloto
  • @@ -797,7 +797,7 @@ const LandingPage: React.FC = () => {
  • Equipo Experto

    - Fundadores con experiencia en IA + hostelería. Conocemos el sector de dentro. + Fundadores con experiencia en proyectos de alto valor tecnológico + proyectos internacionales.

    @@ -896,30 +896,35 @@ const LandingPage: React.FC = () => { En Probar Esta Tecnología

    - No es para todo el mundo. Buscamos panaderías artesanales que quieran reducir desperdicios y aumentar ganancias + No es para todo el mundo. Buscamos panaderías que quieran reducir desperdicios y aumentar ganancias con ayuda de IA, a cambio de feedback honesto.

    - - - - - - + + + + + +
    {/* Social Proof Alternative - Loss Aversion */} @@ -930,7 +935,7 @@ const LandingPage: React.FC = () => {
    -
    40% descuento de por vida
    +
    20% descuento de por vida
    Solo primeros 20
    diff --git a/gateway/app/main.py b/gateway/app/main.py index 0a4f19f8..46251589 100644 --- a/gateway/app/main.py +++ b/gateway/app/main.py @@ -311,6 +311,7 @@ async def websocket_training_progress(websocket: WebSocket, tenant_id: str, job_ try: # Connect to training service WebSocket import websockets + from websockets.protocol import State training_ws = await websockets.connect( training_ws_url, @@ -325,7 +326,7 @@ async def websocket_training_progress(websocket: WebSocket, tenant_id: str, job_ async def forward_frontend_to_training(): """Forward messages from frontend to training service""" try: - while training_ws and training_ws.open: + while training_ws and training_ws.state == State.OPEN: data = await websocket.receive() if data.get("type") == "websocket.receive": @@ -342,7 +343,7 @@ async def websocket_training_progress(websocket: WebSocket, tenant_id: str, job_ """Forward messages from training service to frontend""" message_count = 0 try: - while training_ws and training_ws.open: + while training_ws and training_ws.state == State.OPEN: message = await training_ws.recv() await websocket.send_text(message) message_count += 1 @@ -369,7 +370,7 @@ async def websocket_training_progress(websocket: WebSocket, tenant_id: str, job_ logger.error("WebSocket proxy error", job_id=job_id, error=str(e)) finally: # Cleanup - if training_ws and not training_ws.closed: + if training_ws and training_ws.state == State.OPEN: try: await training_ws.close() except: diff --git a/gateway/requirements.txt b/gateway/requirements.txt index 9bc15706..044db0f4 100644 --- a/gateway/requirements.txt +++ b/gateway/requirements.txt @@ -1,19 +1,20 @@ -fastapi==0.104.1 -uvicorn[standard]==0.24.0 -httpx==0.25.2 -redis==5.0.1 -pydantic==2.5.0 -pydantic-settings==2.1.0 +fastapi==0.119.0 +uvicorn[standard]==0.32.1 +httpx==0.28.1 +redis==6.4.0 +pydantic==2.12.3 +pydantic-settings==2.7.1 python-jose[cryptography]==3.3.0 -PyJWT==2.8.0 +PyJWT==2.10.1 python-multipart==0.0.6 -prometheus-client==0.17.1 -python-json-logger==2.0.4 -email-validator==2.0.0 -aio-pika==9.3.0 -pytz==2023.3 +prometheus-client==0.23.1 +python-json-logger==3.3.0 +email-validator==2.2.0 +aio-pika==9.4.3 +pytz==2024.2 python-logstash==0.4.8 -structlog==23.2.0 -websockets==12.0 -sqlalchemy==2.0.23 -asyncpg==0.29.0 \ No newline at end of file +structlog==25.4.0 +websockets==14.1 +sqlalchemy==2.0.44 +asyncpg==0.30.0 +cryptography==44.0.0 diff --git a/infrastructure/kubernetes/base/components/alert-processor/alert-processor-service.yaml b/infrastructure/kubernetes/base/components/alert-processor/alert-processor-service.yaml index 5b180809..2f17f075 100644 --- a/infrastructure/kubernetes/base/components/alert-processor/alert-processor-service.yaml +++ b/infrastructure/kubernetes/base/components/alert-processor/alert-processor-service.yaml @@ -21,7 +21,7 @@ spec: spec: initContainers: - name: wait-for-migration - image: postgres:15-alpine + image: postgres:17-alpine command: - sh - -c diff --git a/infrastructure/kubernetes/base/components/auth/auth-service.yaml b/infrastructure/kubernetes/base/components/auth/auth-service.yaml index 43040426..c6e1b6ee 100644 --- a/infrastructure/kubernetes/base/components/auth/auth-service.yaml +++ b/infrastructure/kubernetes/base/components/auth/auth-service.yaml @@ -21,7 +21,7 @@ spec: spec: initContainers: - name: wait-for-migration - image: postgres:15-alpine + image: postgres:17-alpine command: - sh - -c diff --git a/infrastructure/kubernetes/base/components/databases/alert-processor-db.yaml b/infrastructure/kubernetes/base/components/databases/alert-processor-db.yaml index 3bb65e5a..26b0b5bd 100644 --- a/infrastructure/kubernetes/base/components/databases/alert-processor-db.yaml +++ b/infrastructure/kubernetes/base/components/databases/alert-processor-db.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: postgres - image: postgres:15-alpine + image: postgres:17-alpine ports: - containerPort: 5432 name: postgres diff --git a/infrastructure/kubernetes/base/components/databases/auth-db.yaml b/infrastructure/kubernetes/base/components/databases/auth-db.yaml index 6528232a..8ee07305 100644 --- a/infrastructure/kubernetes/base/components/databases/auth-db.yaml +++ b/infrastructure/kubernetes/base/components/databases/auth-db.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: postgres - image: postgres:15-alpine + image: postgres:17-alpine ports: - containerPort: 5432 name: postgres diff --git a/infrastructure/kubernetes/base/components/databases/external-db.yaml b/infrastructure/kubernetes/base/components/databases/external-db.yaml index a091b9a6..5d06516d 100644 --- a/infrastructure/kubernetes/base/components/databases/external-db.yaml +++ b/infrastructure/kubernetes/base/components/databases/external-db.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: postgres - image: postgres:15-alpine + image: postgres:17-alpine ports: - containerPort: 5432 name: postgres diff --git a/infrastructure/kubernetes/base/components/databases/forecasting-db.yaml b/infrastructure/kubernetes/base/components/databases/forecasting-db.yaml index 069a854d..0328e0c3 100644 --- a/infrastructure/kubernetes/base/components/databases/forecasting-db.yaml +++ b/infrastructure/kubernetes/base/components/databases/forecasting-db.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: postgres - image: postgres:15-alpine + image: postgres:17-alpine ports: - containerPort: 5432 name: postgres diff --git a/infrastructure/kubernetes/base/components/databases/inventory-db.yaml b/infrastructure/kubernetes/base/components/databases/inventory-db.yaml index f7f110fb..918a38c5 100644 --- a/infrastructure/kubernetes/base/components/databases/inventory-db.yaml +++ b/infrastructure/kubernetes/base/components/databases/inventory-db.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: postgres - image: postgres:15-alpine + image: postgres:17-alpine ports: - containerPort: 5432 name: postgres diff --git a/infrastructure/kubernetes/base/components/databases/notification-db.yaml b/infrastructure/kubernetes/base/components/databases/notification-db.yaml index c9cc013d..bed6a69a 100644 --- a/infrastructure/kubernetes/base/components/databases/notification-db.yaml +++ b/infrastructure/kubernetes/base/components/databases/notification-db.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: postgres - image: postgres:15-alpine + image: postgres:17-alpine ports: - containerPort: 5432 name: postgres diff --git a/infrastructure/kubernetes/base/components/databases/orders-db.yaml b/infrastructure/kubernetes/base/components/databases/orders-db.yaml index 1a2931fe..04a5e293 100644 --- a/infrastructure/kubernetes/base/components/databases/orders-db.yaml +++ b/infrastructure/kubernetes/base/components/databases/orders-db.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: postgres - image: postgres:15-alpine + image: postgres:17-alpine ports: - containerPort: 5432 name: postgres diff --git a/infrastructure/kubernetes/base/components/databases/pos-db.yaml b/infrastructure/kubernetes/base/components/databases/pos-db.yaml index dff8ca1a..b6b45794 100644 --- a/infrastructure/kubernetes/base/components/databases/pos-db.yaml +++ b/infrastructure/kubernetes/base/components/databases/pos-db.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: postgres - image: postgres:15-alpine + image: postgres:17-alpine ports: - containerPort: 5432 name: postgres diff --git a/infrastructure/kubernetes/base/components/databases/postgres-template.yaml b/infrastructure/kubernetes/base/components/databases/postgres-template.yaml index 6001c41d..e27e2200 100644 --- a/infrastructure/kubernetes/base/components/databases/postgres-template.yaml +++ b/infrastructure/kubernetes/base/components/databases/postgres-template.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: postgres - image: postgres:15-alpine + image: postgres:17-alpine ports: - containerPort: 5432 name: postgres diff --git a/infrastructure/kubernetes/base/components/databases/production-db.yaml b/infrastructure/kubernetes/base/components/databases/production-db.yaml index f22776b9..b6a329d2 100644 --- a/infrastructure/kubernetes/base/components/databases/production-db.yaml +++ b/infrastructure/kubernetes/base/components/databases/production-db.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: postgres - image: postgres:15-alpine + image: postgres:17-alpine ports: - containerPort: 5432 name: postgres diff --git a/infrastructure/kubernetes/base/components/databases/rabbitmq.yaml b/infrastructure/kubernetes/base/components/databases/rabbitmq.yaml index 7284b60f..d40bb92e 100644 --- a/infrastructure/kubernetes/base/components/databases/rabbitmq.yaml +++ b/infrastructure/kubernetes/base/components/databases/rabbitmq.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: rabbitmq - image: rabbitmq:4.0-management-alpine + image: rabbitmq:4.1-management-alpine ports: - containerPort: 5672 name: amqp diff --git a/infrastructure/kubernetes/base/components/databases/recipes-db.yaml b/infrastructure/kubernetes/base/components/databases/recipes-db.yaml index 3983ab30..647be822 100644 --- a/infrastructure/kubernetes/base/components/databases/recipes-db.yaml +++ b/infrastructure/kubernetes/base/components/databases/recipes-db.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: postgres - image: postgres:15-alpine + image: postgres:17-alpine ports: - containerPort: 5432 name: postgres diff --git a/infrastructure/kubernetes/base/components/databases/redis.yaml b/infrastructure/kubernetes/base/components/databases/redis.yaml index 0d5db079..a18b1965 100644 --- a/infrastructure/kubernetes/base/components/databases/redis.yaml +++ b/infrastructure/kubernetes/base/components/databases/redis.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: redis - image: redis:7-alpine + image: redis:7.4-alpine ports: - containerPort: 6379 name: redis diff --git a/infrastructure/kubernetes/base/components/databases/sales-db.yaml b/infrastructure/kubernetes/base/components/databases/sales-db.yaml index bf2071b4..950fe44a 100644 --- a/infrastructure/kubernetes/base/components/databases/sales-db.yaml +++ b/infrastructure/kubernetes/base/components/databases/sales-db.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: postgres - image: postgres:15-alpine + image: postgres:17-alpine ports: - containerPort: 5432 name: postgres diff --git a/infrastructure/kubernetes/base/components/databases/suppliers-db.yaml b/infrastructure/kubernetes/base/components/databases/suppliers-db.yaml index 584020b4..69236bda 100644 --- a/infrastructure/kubernetes/base/components/databases/suppliers-db.yaml +++ b/infrastructure/kubernetes/base/components/databases/suppliers-db.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: postgres - image: postgres:15-alpine + image: postgres:17-alpine ports: - containerPort: 5432 name: postgres diff --git a/infrastructure/kubernetes/base/components/databases/tenant-db.yaml b/infrastructure/kubernetes/base/components/databases/tenant-db.yaml index 9508afd1..0f9c38d6 100644 --- a/infrastructure/kubernetes/base/components/databases/tenant-db.yaml +++ b/infrastructure/kubernetes/base/components/databases/tenant-db.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: postgres - image: postgres:15-alpine + image: postgres:17-alpine ports: - containerPort: 5432 name: postgres diff --git a/infrastructure/kubernetes/base/components/databases/training-db.yaml b/infrastructure/kubernetes/base/components/databases/training-db.yaml index a345e725..38f00683 100644 --- a/infrastructure/kubernetes/base/components/databases/training-db.yaml +++ b/infrastructure/kubernetes/base/components/databases/training-db.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: postgres - image: postgres:15-alpine + image: postgres:17-alpine ports: - containerPort: 5432 name: postgres diff --git a/infrastructure/kubernetes/base/components/demo-session/database.yaml b/infrastructure/kubernetes/base/components/demo-session/database.yaml index 74366e9e..542b14ce 100644 --- a/infrastructure/kubernetes/base/components/demo-session/database.yaml +++ b/infrastructure/kubernetes/base/components/demo-session/database.yaml @@ -38,7 +38,7 @@ spec: spec: containers: - name: postgres - image: postgres:15-alpine + image: postgres:17-alpine ports: - containerPort: 5432 name: postgres @@ -62,8 +62,8 @@ spec: mountPath: /var/lib/postgresql/data resources: requests: - memory: "256Mi" - cpu: "250m" + memory: "128Mi" + cpu: "100m" limits: memory: "512Mi" cpu: "500m" diff --git a/infrastructure/kubernetes/base/components/external/external-service.yaml b/infrastructure/kubernetes/base/components/external/external-service.yaml index a45cc9e3..c6f32951 100644 --- a/infrastructure/kubernetes/base/components/external/external-service.yaml +++ b/infrastructure/kubernetes/base/components/external/external-service.yaml @@ -25,7 +25,7 @@ spec: spec: initContainers: - name: check-data-initialized - image: postgres:15-alpine + image: postgres:17-alpine command: - sh - -c diff --git a/infrastructure/kubernetes/base/components/forecasting/forecasting-service.yaml b/infrastructure/kubernetes/base/components/forecasting/forecasting-service.yaml index 7ef78ac9..7b458d9d 100644 --- a/infrastructure/kubernetes/base/components/forecasting/forecasting-service.yaml +++ b/infrastructure/kubernetes/base/components/forecasting/forecasting-service.yaml @@ -21,7 +21,7 @@ spec: spec: initContainers: - name: wait-for-migration - image: postgres:15-alpine + image: postgres:17-alpine command: - sh - -c diff --git a/infrastructure/kubernetes/base/components/inventory/inventory-service.yaml b/infrastructure/kubernetes/base/components/inventory/inventory-service.yaml index e3330bfa..f0fdd57e 100644 --- a/infrastructure/kubernetes/base/components/inventory/inventory-service.yaml +++ b/infrastructure/kubernetes/base/components/inventory/inventory-service.yaml @@ -21,7 +21,7 @@ spec: spec: initContainers: - name: wait-for-migration - image: postgres:15-alpine + image: postgres:17-alpine command: - sh - -c diff --git a/infrastructure/kubernetes/base/components/monitoring/grafana.yaml b/infrastructure/kubernetes/base/components/monitoring/grafana.yaml index 00395f71..1b36d5e0 100644 --- a/infrastructure/kubernetes/base/components/monitoring/grafana.yaml +++ b/infrastructure/kubernetes/base/components/monitoring/grafana.yaml @@ -55,7 +55,7 @@ spec: spec: containers: - name: grafana - image: grafana/grafana:10.2.2 + image: grafana/grafana:12.3.0 ports: - containerPort: 3000 name: http diff --git a/infrastructure/kubernetes/base/components/monitoring/prometheus.yaml b/infrastructure/kubernetes/base/components/monitoring/prometheus.yaml index ecbbc364..19720d50 100644 --- a/infrastructure/kubernetes/base/components/monitoring/prometheus.yaml +++ b/infrastructure/kubernetes/base/components/monitoring/prometheus.yaml @@ -135,7 +135,7 @@ spec: serviceAccountName: prometheus containers: - name: prometheus - image: prom/prometheus:v2.48.0 + image: prom/prometheus:v3.0.1 args: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' diff --git a/infrastructure/kubernetes/base/components/notification/notification-service.yaml b/infrastructure/kubernetes/base/components/notification/notification-service.yaml index 5f7c142b..5a477438 100644 --- a/infrastructure/kubernetes/base/components/notification/notification-service.yaml +++ b/infrastructure/kubernetes/base/components/notification/notification-service.yaml @@ -21,7 +21,7 @@ spec: spec: initContainers: - name: wait-for-migration - image: postgres:15-alpine + image: postgres:17-alpine command: - sh - -c diff --git a/infrastructure/kubernetes/base/components/orders/orders-service.yaml b/infrastructure/kubernetes/base/components/orders/orders-service.yaml index 84017d0a..e6f1c060 100644 --- a/infrastructure/kubernetes/base/components/orders/orders-service.yaml +++ b/infrastructure/kubernetes/base/components/orders/orders-service.yaml @@ -21,7 +21,7 @@ spec: spec: initContainers: - name: wait-for-migration - image: postgres:15-alpine + image: postgres:17-alpine command: - sh - -c diff --git a/infrastructure/kubernetes/base/components/pos/pos-service.yaml b/infrastructure/kubernetes/base/components/pos/pos-service.yaml index 913b3403..477824b8 100644 --- a/infrastructure/kubernetes/base/components/pos/pos-service.yaml +++ b/infrastructure/kubernetes/base/components/pos/pos-service.yaml @@ -21,7 +21,7 @@ spec: spec: initContainers: - name: wait-for-migration - image: postgres:15-alpine + image: postgres:17-alpine command: - sh - -c diff --git a/infrastructure/kubernetes/base/components/production/production-service.yaml b/infrastructure/kubernetes/base/components/production/production-service.yaml index 1f80c1e7..02e0dbc1 100644 --- a/infrastructure/kubernetes/base/components/production/production-service.yaml +++ b/infrastructure/kubernetes/base/components/production/production-service.yaml @@ -21,7 +21,7 @@ spec: spec: initContainers: - name: wait-for-migration - image: postgres:15-alpine + image: postgres:17-alpine command: - sh - -c diff --git a/infrastructure/kubernetes/base/components/recipes/recipes-service.yaml b/infrastructure/kubernetes/base/components/recipes/recipes-service.yaml index ecf22644..c482f3a0 100644 --- a/infrastructure/kubernetes/base/components/recipes/recipes-service.yaml +++ b/infrastructure/kubernetes/base/components/recipes/recipes-service.yaml @@ -21,7 +21,7 @@ spec: spec: initContainers: - name: wait-for-migration - image: postgres:15-alpine + image: postgres:17-alpine command: - sh - -c diff --git a/infrastructure/kubernetes/base/components/sales/sales-service.yaml b/infrastructure/kubernetes/base/components/sales/sales-service.yaml index d62388d8..01c57f6c 100644 --- a/infrastructure/kubernetes/base/components/sales/sales-service.yaml +++ b/infrastructure/kubernetes/base/components/sales/sales-service.yaml @@ -21,7 +21,7 @@ spec: spec: initContainers: - name: wait-for-migration - image: postgres:15-alpine + image: postgres:17-alpine command: - sh - -c diff --git a/infrastructure/kubernetes/base/components/suppliers/suppliers-service.yaml b/infrastructure/kubernetes/base/components/suppliers/suppliers-service.yaml index 6fa93767..4c52b48c 100644 --- a/infrastructure/kubernetes/base/components/suppliers/suppliers-service.yaml +++ b/infrastructure/kubernetes/base/components/suppliers/suppliers-service.yaml @@ -21,7 +21,7 @@ spec: spec: initContainers: - name: wait-for-migration - image: postgres:15-alpine + image: postgres:17-alpine command: - sh - -c diff --git a/infrastructure/kubernetes/base/components/tenant/tenant-service.yaml b/infrastructure/kubernetes/base/components/tenant/tenant-service.yaml index 5c37c104..92f6bbb8 100644 --- a/infrastructure/kubernetes/base/components/tenant/tenant-service.yaml +++ b/infrastructure/kubernetes/base/components/tenant/tenant-service.yaml @@ -21,7 +21,7 @@ spec: spec: initContainers: - name: wait-for-migration - image: postgres:15-alpine + image: postgres:17-alpine command: - sh - -c diff --git a/infrastructure/kubernetes/base/components/training/training-service.yaml b/infrastructure/kubernetes/base/components/training/training-service.yaml index 5f502d6f..f5126211 100644 --- a/infrastructure/kubernetes/base/components/training/training-service.yaml +++ b/infrastructure/kubernetes/base/components/training/training-service.yaml @@ -21,7 +21,7 @@ spec: spec: initContainers: - name: wait-for-migration - image: postgres:15-alpine + image: postgres:17-alpine command: - sh - -c diff --git a/infrastructure/kubernetes/base/jobs/external-data-init-job.yaml b/infrastructure/kubernetes/base/jobs/external-data-init-job.yaml index 621b9c91..9565ad68 100644 --- a/infrastructure/kubernetes/base/jobs/external-data-init-job.yaml +++ b/infrastructure/kubernetes/base/jobs/external-data-init-job.yaml @@ -21,7 +21,7 @@ spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: - sh - -c diff --git a/infrastructure/kubernetes/base/migrations/alert-processor-migration-job.yaml b/infrastructure/kubernetes/base/migrations/alert-processor-migration-job.yaml index f1c1bc10..5cdd3cba 100644 --- a/infrastructure/kubernetes/base/migrations/alert-processor-migration-job.yaml +++ b/infrastructure/kubernetes/base/migrations/alert-processor-migration-job.yaml @@ -18,7 +18,7 @@ spec: spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: ["sh", "-c", "until pg_isready -h alert-processor-db-service -p 5432; do sleep 2; done"] resources: requests: diff --git a/infrastructure/kubernetes/base/migrations/auth-migration-job.yaml b/infrastructure/kubernetes/base/migrations/auth-migration-job.yaml index bb81df56..e4895301 100644 --- a/infrastructure/kubernetes/base/migrations/auth-migration-job.yaml +++ b/infrastructure/kubernetes/base/migrations/auth-migration-job.yaml @@ -18,7 +18,7 @@ spec: spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: ["sh", "-c", "until pg_isready -h auth-db-service -p 5432; do sleep 2; done"] resources: requests: diff --git a/infrastructure/kubernetes/base/migrations/demo-session-migration-job.yaml b/infrastructure/kubernetes/base/migrations/demo-session-migration-job.yaml index 21b28a2e..23f14296 100644 --- a/infrastructure/kubernetes/base/migrations/demo-session-migration-job.yaml +++ b/infrastructure/kubernetes/base/migrations/demo-session-migration-job.yaml @@ -17,7 +17,7 @@ spec: spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: ["sh", "-c", "until pg_isready -h demo-session-db-service -p 5432; do sleep 2; done"] resources: requests: diff --git a/infrastructure/kubernetes/base/migrations/external-migration-job.yaml b/infrastructure/kubernetes/base/migrations/external-migration-job.yaml index b063cc21..83df583e 100644 --- a/infrastructure/kubernetes/base/migrations/external-migration-job.yaml +++ b/infrastructure/kubernetes/base/migrations/external-migration-job.yaml @@ -18,7 +18,7 @@ spec: spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: ["sh", "-c", "until pg_isready -h external-db-service -p 5432; do sleep 2; done"] resources: requests: diff --git a/infrastructure/kubernetes/base/migrations/forecasting-migration-job.yaml b/infrastructure/kubernetes/base/migrations/forecasting-migration-job.yaml index 7764ec43..e8bc3691 100644 --- a/infrastructure/kubernetes/base/migrations/forecasting-migration-job.yaml +++ b/infrastructure/kubernetes/base/migrations/forecasting-migration-job.yaml @@ -18,7 +18,7 @@ spec: spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: ["sh", "-c", "until pg_isready -h forecasting-db-service -p 5432; do sleep 2; done"] resources: requests: diff --git a/infrastructure/kubernetes/base/migrations/inventory-migration-job.yaml b/infrastructure/kubernetes/base/migrations/inventory-migration-job.yaml index f99d9f2a..3de9908a 100644 --- a/infrastructure/kubernetes/base/migrations/inventory-migration-job.yaml +++ b/infrastructure/kubernetes/base/migrations/inventory-migration-job.yaml @@ -18,7 +18,7 @@ spec: spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: ["sh", "-c", "until pg_isready -h inventory-db-service -p 5432; do sleep 2; done"] resources: requests: diff --git a/infrastructure/kubernetes/base/migrations/notification-migration-job.yaml b/infrastructure/kubernetes/base/migrations/notification-migration-job.yaml index 6a1ea250..5ea65941 100644 --- a/infrastructure/kubernetes/base/migrations/notification-migration-job.yaml +++ b/infrastructure/kubernetes/base/migrations/notification-migration-job.yaml @@ -18,7 +18,7 @@ spec: spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: ["sh", "-c", "until pg_isready -h notification-db-service -p 5432; do sleep 2; done"] resources: requests: diff --git a/infrastructure/kubernetes/base/migrations/orders-migration-job.yaml b/infrastructure/kubernetes/base/migrations/orders-migration-job.yaml index c55b3a7d..cad6070b 100644 --- a/infrastructure/kubernetes/base/migrations/orders-migration-job.yaml +++ b/infrastructure/kubernetes/base/migrations/orders-migration-job.yaml @@ -18,7 +18,7 @@ spec: spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: ["sh", "-c", "until pg_isready -h orders-db-service -p 5432; do sleep 2; done"] resources: requests: diff --git a/infrastructure/kubernetes/base/migrations/pos-migration-job.yaml b/infrastructure/kubernetes/base/migrations/pos-migration-job.yaml index d82b2531..a91c5d24 100644 --- a/infrastructure/kubernetes/base/migrations/pos-migration-job.yaml +++ b/infrastructure/kubernetes/base/migrations/pos-migration-job.yaml @@ -18,7 +18,7 @@ spec: spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: ["sh", "-c", "until pg_isready -h pos-db-service -p 5432; do sleep 2; done"] resources: requests: diff --git a/infrastructure/kubernetes/base/migrations/production-migration-job.yaml b/infrastructure/kubernetes/base/migrations/production-migration-job.yaml index 263ba1d6..cca45614 100644 --- a/infrastructure/kubernetes/base/migrations/production-migration-job.yaml +++ b/infrastructure/kubernetes/base/migrations/production-migration-job.yaml @@ -18,7 +18,7 @@ spec: spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: ["sh", "-c", "until pg_isready -h production-db-service -p 5432; do sleep 2; done"] resources: requests: diff --git a/infrastructure/kubernetes/base/migrations/recipes-migration-job.yaml b/infrastructure/kubernetes/base/migrations/recipes-migration-job.yaml index 454e5800..55cbf41c 100644 --- a/infrastructure/kubernetes/base/migrations/recipes-migration-job.yaml +++ b/infrastructure/kubernetes/base/migrations/recipes-migration-job.yaml @@ -18,7 +18,7 @@ spec: spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: ["sh", "-c", "until pg_isready -h recipes-db-service -p 5432; do sleep 2; done"] resources: requests: diff --git a/infrastructure/kubernetes/base/migrations/sales-migration-job.yaml b/infrastructure/kubernetes/base/migrations/sales-migration-job.yaml index 78d5657f..1c151513 100644 --- a/infrastructure/kubernetes/base/migrations/sales-migration-job.yaml +++ b/infrastructure/kubernetes/base/migrations/sales-migration-job.yaml @@ -18,7 +18,7 @@ spec: spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: ["sh", "-c", "until pg_isready -h sales-db-service -p 5432; do sleep 2; done"] resources: requests: diff --git a/infrastructure/kubernetes/base/migrations/suppliers-migration-job.yaml b/infrastructure/kubernetes/base/migrations/suppliers-migration-job.yaml index 802e91e4..eecf59e4 100644 --- a/infrastructure/kubernetes/base/migrations/suppliers-migration-job.yaml +++ b/infrastructure/kubernetes/base/migrations/suppliers-migration-job.yaml @@ -18,7 +18,7 @@ spec: spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: ["sh", "-c", "until pg_isready -h suppliers-db-service -p 5432; do sleep 2; done"] resources: requests: diff --git a/infrastructure/kubernetes/base/migrations/tenant-migration-job.yaml b/infrastructure/kubernetes/base/migrations/tenant-migration-job.yaml index 7a26ed28..a608ac9d 100644 --- a/infrastructure/kubernetes/base/migrations/tenant-migration-job.yaml +++ b/infrastructure/kubernetes/base/migrations/tenant-migration-job.yaml @@ -18,7 +18,7 @@ spec: spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: ["sh", "-c", "until pg_isready -h tenant-db-service -p 5432; do sleep 2; done"] resources: requests: diff --git a/infrastructure/kubernetes/base/migrations/tenant-seed-pilot-coupon-job.yaml b/infrastructure/kubernetes/base/migrations/tenant-seed-pilot-coupon-job.yaml index ddea45ff..327d1800 100644 --- a/infrastructure/kubernetes/base/migrations/tenant-seed-pilot-coupon-job.yaml +++ b/infrastructure/kubernetes/base/migrations/tenant-seed-pilot-coupon-job.yaml @@ -18,7 +18,7 @@ spec: spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: ["sh", "-c", "until pg_isready -h tenant-db-service -p 5432; do sleep 2; done"] resources: requests: diff --git a/infrastructure/kubernetes/base/migrations/training-migration-job.yaml b/infrastructure/kubernetes/base/migrations/training-migration-job.yaml index e8940a82..ad21a751 100644 --- a/infrastructure/kubernetes/base/migrations/training-migration-job.yaml +++ b/infrastructure/kubernetes/base/migrations/training-migration-job.yaml @@ -18,7 +18,7 @@ spec: spec: initContainers: - name: wait-for-db - image: postgres:15-alpine + image: postgres:17-alpine command: ["sh", "-c", "until pg_isready -h training-db-service -p 5432; do sleep 2; done"] resources: requests: diff --git a/scripts/docker-compose.yml b/scripts/docker-compose.yml index 2beb62ff..d26c4ce6 100644 --- a/scripts/docker-compose.yml +++ b/scripts/docker-compose.yml @@ -4,7 +4,7 @@ services: auth-db: - image: postgres:15-alpine + image: postgres:17-alpine container_name: auth-db environment: POSTGRES_DB: auth_db @@ -21,7 +21,7 @@ services: retries: 5 redis: - image: redis:7-alpine + image: redis:7.4-alpine container_name: auth-redis ports: - "6379:6379" @@ -32,7 +32,7 @@ services: retries: 5 rabbitmq: - image: rabbitmq:4.0-management-alpine + image: rabbitmq:4.1-management-alpine container_name: auth-rabbitmq environment: RABBITMQ_DEFAULT_USER: bakery diff --git a/services/alert_processor/requirements.txt b/services/alert_processor/requirements.txt index 30e07a8e..3aed89f3 100644 --- a/services/alert_processor/requirements.txt +++ b/services/alert_processor/requirements.txt @@ -1,14 +1,18 @@ -fastapi==0.104.1 -uvicorn[standard]==0.24.0 -aio-pika==9.3.1 -redis==5.0.1 -asyncpg==0.29.0 -sqlalchemy==2.0.23 -alembic==1.12.1 -psycopg2-binary==2.9.9 -structlog==23.2.0 -prometheus-client==0.19.0 -pydantic-settings==2.1.0 -pydantic==2.5.2 -httpx==0.25.2 +fastapi==0.119.0 +uvicorn[standard]==0.32.1 +aio-pika==9.4.3 +redis==6.4.0 +asyncpg==0.30.0 +sqlalchemy==2.0.44 +alembic==1.17.0 +psycopg2-binary==2.9.10 +structlog==25.4.0 +prometheus-client==0.23.1 +pydantic-settings==2.7.1 +pydantic==2.12.3 +httpx==0.28.1 python-jose[cryptography]==3.3.0 +cryptography==44.0.0 +python-multipart==0.0.6 +email-validator==2.2.0 +pytz==2024.2 diff --git a/services/auth/requirements.txt b/services/auth/requirements.txt index 8f5a668c..ff58b289 100644 --- a/services/auth/requirements.txt +++ b/services/auth/requirements.txt @@ -1,65 +1,69 @@ # services/auth/requirements.txt # FastAPI and ASGI -fastapi==0.104.1 -uvicorn[standard]==0.24.0 -gunicorn==21.2.0 +fastapi==0.119.0 +uvicorn[standard]==0.32.1 +gunicorn==23.0.0 # Database -sqlalchemy==2.0.23 -asyncpg==0.29.0 -alembic==1.12.1 -aiosqlite==0.19.0 +sqlalchemy==2.0.44 +asyncpg==0.30.0 +alembic==1.17.0 +aiosqlite==0.20.0 +psycopg2-binary==2.9.10 # Authentication & Security python-jose[cryptography]==3.3.0 passlib[bcrypt]==1.7.4 python-multipart==0.0.6 -bcrypt==4.0.1 +bcrypt==4.2.1 +cryptography==44.0.0 +PyJWT==2.10.1 # HTTP Client -httpx==0.25.2 -aiohttp==3.9.1 +httpx==0.28.1 +aiohttp==3.11.10 # Data Validation -pydantic==2.5.0 -pydantic-settings==2.0.3 -email-validator==2.1.0 +pydantic==2.12.3 +pydantic-settings==2.7.1 +email-validator==2.2.0 # Environment -python-dotenv==1.0.0 +python-dotenv==1.0.1 # Logging and Monitoring -structlog==23.2.0 -prometheus-client==0.19.0 +structlog==25.4.0 +prometheus-client==0.23.1 # Redis -redis==5.0.1 +redis==6.4.0 + +# Message Queue +aio-pika==9.4.3 # Utilities -python-dateutil==2.8.2 -pytz==2023.3 +python-dateutil==2.9.0.post0 +pytz==2024.2 # Testing Dependencies -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-xdist==3.5.0 -pytest-mock==3.12.0 -pytest-timeout==2.2.0 +pytest==8.3.4 +pytest-asyncio==0.25.2 +pytest-cov==6.0.0 +pytest-xdist==3.6.1 +pytest-mock==3.14.0 +pytest-timeout==2.3.1 pytest-html==4.1.1 pytest-json-report==1.5.0 -aiosqlite==0.19.0 # Test Utilities -factory-boy==3.3.0 -faker==20.1.0 -freezegun==1.2.2 - +factory-boy==3.3.1 +faker==33.1.0 +freezegun==1.5.1 # Development -black==23.11.0 -isort==5.12.0 -flake8==6.1.0 -mypy==1.7.1 -pre-commit==3.6.0 \ No newline at end of file +black==24.10.0 +isort==5.13.2 +flake8==7.1.1 +mypy==1.14.1 +pre-commit==4.0.1 diff --git a/services/demo_session/requirements.txt b/services/demo_session/requirements.txt index 8e96d3c8..fd981229 100644 --- a/services/demo_session/requirements.txt +++ b/services/demo_session/requirements.txt @@ -1,14 +1,19 @@ -fastapi==0.104.1 -uvicorn[standard]==0.24.0 -sqlalchemy[asyncio]==2.0.23 -asyncpg==0.29.0 -psycopg2-binary==2.9.9 -alembic==1.12.1 -redis==5.0.1 -structlog==23.2.0 -pydantic==2.5.0 -pydantic-settings==2.1.0 +fastapi==0.119.0 +uvicorn[standard]==0.32.1 +sqlalchemy[asyncio]==2.0.44 +asyncpg==0.30.0 +psycopg2-binary==2.9.10 +alembic==1.17.0 +redis==6.4.0 +structlog==25.4.0 +pydantic==2.12.3 +pydantic-settings==2.7.1 typing-extensions>=4.5.0 -httpx==0.25.2 -PyJWT==2.8.0 +httpx==0.28.1 +PyJWT==2.10.1 python-multipart==0.0.6 +cryptography==44.0.0 +prometheus-client==0.23.1 +aio-pika==9.4.3 +email-validator==2.2.0 +pytz==2024.2 diff --git a/services/external/requirements.txt b/services/external/requirements.txt index af5ae9ab..35ff8f5e 100644 --- a/services/external/requirements.txt +++ b/services/external/requirements.txt @@ -1,56 +1,56 @@ # services/external/requirements.txt # FastAPI and web framework -fastapi==0.104.1 -uvicorn[standard]==0.24.0 +fastapi==0.119.0 +uvicorn[standard]==0.32.1 # Database -sqlalchemy==2.0.23 -psycopg2-binary==2.9.9 -asyncpg==0.29.0 -aiosqlite==0.19.0 -alembic==1.12.1 +sqlalchemy==2.0.44 +psycopg2-binary==2.9.10 +asyncpg==0.30.0 +aiosqlite==0.20.0 +alembic==1.17.0 # HTTP clients for external APIs -httpx==0.25.2 -aiofiles==23.2.0 -requests==2.31.0 +httpx==0.28.1 +aiofiles==24.1.0 +requests==2.32.3 # Data processing and time series -pandas==2.1.3 -numpy==1.25.2 +pandas==2.2.3 +numpy==2.2.2 # Validation and serialization -pydantic==2.5.0 -pydantic-settings==2.0.3 +pydantic==2.12.3 +pydantic-settings==2.7.1 +email-validator==2.2.0 # Authentication and security python-jose[cryptography]==3.3.0 +cryptography==44.0.0 # Logging and monitoring -structlog==23.2.0 -prometheus-client==0.19.0 +structlog==25.4.0 +prometheus-client==0.23.1 # Message queues -aio-pika==9.3.1 +aio-pika==9.4.3 # Background job processing -redis==5.0.1 +redis==6.4.0 # Date and time handling -pytz==2023.3 -python-dateutil==2.8.2 +pytz==2024.2 +python-dateutil==2.9.0.post0 # XML parsing (for some APIs) -lxml==4.9.3 +lxml==5.3.0 # Geospatial processing -pyproj==3.6.1 - -# Note: pytest and testing dependencies are in tests/requirements.txt +pyproj==3.7.1 # Development python-multipart==0.0.6 # External API specific -beautifulsoup4==4.12.2 # For web scraping if needed -xmltodict==0.13.0 # For XML API responses \ No newline at end of file +beautifulsoup4==4.12.3 +xmltodict==0.14.2 diff --git a/services/forecasting/requirements.txt b/services/forecasting/requirements.txt index b9c5ae08..64def1df 100644 --- a/services/forecasting/requirements.txt +++ b/services/forecasting/requirements.txt @@ -1,47 +1,51 @@ # Core FastAPI dependencies -fastapi==0.104.1 -uvicorn[standard]==0.24.0 -pydantic==2.5.0 -pydantic-settings==2.1.0 +fastapi==0.119.0 +uvicorn[standard]==0.32.1 +pydantic==2.12.3 +pydantic-settings==2.7.1 # Database -sqlalchemy[asyncio]==2.0.23 -asyncpg==0.29.0 -alembic==1.13.1 +sqlalchemy[asyncio]==2.0.44 +asyncpg==0.30.0 +alembic==1.17.0 +psycopg2-binary==2.9.10 # Authentication & Security python-jose[cryptography]==3.3.0 passlib[bcrypt]==1.7.4 python-multipart==0.0.6 +cryptography==44.0.0 # HTTP Client -httpx==0.25.2 -aiohttp==3.9.1 +httpx==0.28.1 +aiohttp==3.11.10 # Date parsing -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 +pytz==2024.2 # Machine Learning -prophet==1.1.4 -scikit-learn==1.3.2 -pandas==2.1.4 -numpy==1.25.2 -joblib==1.3.2 +prophet==1.1.6 +scikit-learn==1.6.1 +pandas==2.2.3 +numpy==2.2.2 +joblib==1.4.2 # Messaging -aio-pika==9.3.1 +aio-pika==9.4.3 # Scheduling APScheduler==3.10.4 # Monitoring & Logging -structlog==23.2.0 -prometheus-client==0.19.0 +structlog==25.4.0 +prometheus-client==0.23.1 + +# Redis +redis==6.4.0 # Development dependencies -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 - -redis==5.0.1 - +pytest==8.3.4 +pytest-asyncio==0.25.2 +pytest-cov==6.0.0 +email-validator==2.2.0 diff --git a/services/inventory/requirements.txt b/services/inventory/requirements.txt index 3b1b1048..9698ed2d 100644 --- a/services/inventory/requirements.txt +++ b/services/inventory/requirements.txt @@ -1,38 +1,40 @@ # services/inventory/requirements.txt # FastAPI and web framework -fastapi==0.104.1 -uvicorn[standard]==0.24.0 +fastapi==0.119.0 +uvicorn[standard]==0.32.1 # Database -sqlalchemy==2.0.23 -psycopg2-binary==2.9.9 -asyncpg==0.29.0 -aiosqlite==0.19.0 -alembic==1.12.1 +sqlalchemy==2.0.44 +psycopg2-binary==2.9.10 +asyncpg==0.30.0 +aiosqlite==0.20.0 +alembic==1.17.0 # Data processing -pandas==2.1.3 -numpy==1.25.2 +pandas==2.2.3 +numpy==2.2.2 # HTTP clients -httpx==0.25.2 -aiofiles==23.2.0 +httpx==0.28.1 +aiofiles==24.1.0 # Validation and serialization -pydantic==2.5.0 -pydantic-settings==2.0.3 +pydantic==2.12.3 +pydantic-settings==2.7.1 +email-validator==2.2.0 # Authentication and security python-jose[cryptography]==3.3.0 passlib[bcrypt]==1.7.4 +cryptography==44.0.0 # Logging and monitoring -structlog==23.2.0 -prometheus-client==0.19.0 +structlog==25.4.0 +prometheus-client==0.23.1 # Message queues and Redis -aio-pika==9.3.1 -redis>=4.0.0 +aio-pika==9.4.3 +redis==6.4.0 # Scheduling APScheduler==3.10.4 @@ -42,4 +44,6 @@ python-barcode==0.15.1 qrcode[pil]==7.4.2 # Development -python-multipart==0.0.6 \ No newline at end of file +python-multipart==0.0.6 +python-dateutil==2.9.0.post0 +pytz==2024.2 diff --git a/services/notification/requirements.txt b/services/notification/requirements.txt index 6808b999..afdaade1 100644 --- a/services/notification/requirements.txt +++ b/services/notification/requirements.txt @@ -1,45 +1,46 @@ # FastAPI and dependencies -fastapi==0.104.1 -uvicorn[standard]==0.24.0 -pydantic==2.5.0 -pydantic-settings==2.1.0 -sse-starlette==1.6.5 +fastapi==0.119.0 +uvicorn[standard]==0.32.1 +pydantic==2.12.3 +pydantic-settings==2.7.1 +sse-starlette==2.2.1 # Database -sqlalchemy==2.0.23 -asyncpg==0.29.0 -alembic==1.13.1 +sqlalchemy==2.0.44 +asyncpg==0.30.0 +alembic==1.17.0 +psycopg2-binary==2.9.10 # Authentication & Security python-jose[cryptography]==3.3.0 passlib[bcrypt]==1.7.4 python-multipart==0.0.6 +cryptography==44.0.0 # HTTP Client -httpx==0.25.2 -aiofiles==23.2.1 +httpx==0.28.1 +aiofiles==24.1.0 # Email -aiosmtplib==3.0.1 -email-validator==2.1.0 +aiosmtplib==3.0.2 +email-validator==2.2.0 # Messaging & Redis -aio-pika==9.3.1 -redis==5.0.1 +aio-pika==9.4.3 +redis==6.4.0 # Template Engine -jinja2==3.1.2 +jinja2==3.1.5 # Monitoring & Logging -structlog==23.2.0 -prometheus-client==0.19.0 +structlog==25.4.0 +prometheus-client==0.23.1 # Utilities -python-dateutil==2.8.2 -pytz==2023.3 +python-dateutil==2.9.0.post0 +pytz==2024.2 # Development & Testing -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-mock==3.12.0 -httpx==0.25.2 \ No newline at end of file +pytest==8.3.4 +pytest-asyncio==0.25.2 +pytest-mock==3.14.0 diff --git a/services/orders/requirements.txt b/services/orders/requirements.txt index 911dd275..92d0ec09 100644 --- a/services/orders/requirements.txt +++ b/services/orders/requirements.txt @@ -1,40 +1,44 @@ # Orders Service Dependencies # FastAPI and web framework -fastapi==0.104.1 -uvicorn[standard]==0.24.0 -pydantic==2.5.0 -pydantic-settings==2.1.0 +fastapi==0.119.0 +uvicorn[standard]==0.32.1 +pydantic==2.12.3 +pydantic-settings==2.7.1 # Database -sqlalchemy==2.0.23 -asyncpg==0.29.0 -alembic==1.13.1 +sqlalchemy==2.0.44 +asyncpg==0.30.0 +alembic==1.17.0 +psycopg2-binary==2.9.10 # HTTP clients -httpx==0.25.2 +httpx==0.28.1 # Redis for caching -redis==5.0.1 +redis==6.4.0 # Message queuing -aio-pika==9.3.1 +aio-pika==9.4.3 # Scheduling -apscheduler==3.10.4 +APScheduler==3.10.4 # Logging and monitoring -structlog==23.2.0 -prometheus-client==0.19.0 +structlog==25.4.0 +prometheus-client==0.23.1 # Date and time utilities -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 +pytz==2024.2 # Validation and utilities -email-validator==2.1.0 +email-validator==2.2.0 # Authentication python-jose[cryptography]==3.3.0 +cryptography==44.0.0 -# Development dependencies (optional) -pytest==7.4.3 -pytest-asyncio==0.21.1 \ No newline at end of file +# Development dependencies +python-multipart==0.0.6 +pytest==8.3.4 +pytest-asyncio==0.25.2 diff --git a/services/pos/requirements.txt b/services/pos/requirements.txt index a8884b6d..9abde45a 100644 --- a/services/pos/requirements.txt +++ b/services/pos/requirements.txt @@ -1,16 +1,21 @@ -fastapi==0.104.1 -uvicorn[standard]==0.24.0 -pydantic==2.5.0 -pydantic-settings==2.1.0 -sqlalchemy==2.0.23 -asyncpg==0.29.0 -alembic==1.13.1 -structlog==23.2.0 -aiohttp==3.9.1 -redis==5.0.1 -celery==5.3.4 -cryptography>=41.0.0 +fastapi==0.119.0 +uvicorn[standard]==0.32.1 +pydantic==2.12.3 +pydantic-settings==2.7.1 +sqlalchemy==2.0.44 +asyncpg==0.30.0 +alembic==1.17.0 +structlog==25.4.0 +aiohttp==3.11.10 +redis==6.4.0 +celery==5.4.0 +cryptography==44.0.0 python-jose[cryptography]==3.3.0 -httpx==0.25.2 -websockets==12.0 -prometheus-client==0.19.0 \ No newline at end of file +httpx==0.28.1 +websockets==14.1 +prometheus-client==0.23.1 +python-multipart==0.0.6 +aio-pika==9.4.3 +email-validator==2.2.0 +psycopg2-binary==2.9.10 +pytz==2024.2 diff --git a/services/production/requirements.txt b/services/production/requirements.txt index 5363529e..180f63d1 100644 --- a/services/production/requirements.txt +++ b/services/production/requirements.txt @@ -1,38 +1,42 @@ # Production Service Dependencies # FastAPI and web framework -fastapi==0.104.1 -uvicorn[standard]==0.24.0 -pydantic==2.5.0 -pydantic-settings==2.1.0 +fastapi==0.119.0 +uvicorn[standard]==0.32.1 +pydantic==2.12.3 +pydantic-settings==2.7.1 # Database -sqlalchemy==2.0.23 -asyncpg==0.29.0 -alembic==1.13.1 +sqlalchemy==2.0.44 +asyncpg==0.30.0 +alembic==1.17.0 +psycopg2-binary==2.9.10 # HTTP clients -httpx==0.25.2 +httpx==0.28.1 # Logging and monitoring -structlog==23.2.0 -prometheus-client==0.19.0 +structlog==25.4.0 +prometheus-client==0.23.1 # Message queues and Redis -aio-pika==9.3.1 -redis>=4.0.0 +aio-pika==9.4.3 +redis==6.4.0 # Scheduling APScheduler==3.10.4 # Date and time utilities -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 +pytz==2024.2 # Validation and utilities -email-validator==2.1.0 +email-validator==2.2.0 # Authentication python-jose[cryptography]==3.3.0 +cryptography==44.0.0 -# Development dependencies (optional) -pytest==7.4.3 -pytest-asyncio==0.21.1 \ No newline at end of file +# Development dependencies +python-multipart==0.0.6 +pytest==8.3.4 +pytest-asyncio==0.25.2 diff --git a/services/recipes/requirements.txt b/services/recipes/requirements.txt index e0b8126a..4f9f6723 100644 --- a/services/recipes/requirements.txt +++ b/services/recipes/requirements.txt @@ -1,63 +1,62 @@ # Recipe Service Dependencies # FastAPI and server -fastapi==0.104.1 -uvicorn==0.24.0 +fastapi==0.119.0 +uvicorn[standard]==0.32.1 python-multipart==0.0.6 # Database -sqlalchemy==2.0.23 -psycopg2-binary==2.9.9 -asyncpg==0.29.0 -alembic==1.12.1 +sqlalchemy==2.0.44 +psycopg2-binary==2.9.10 +asyncpg==0.30.0 +alembic==1.17.0 # Data validation -pydantic==2.5.0 -pydantic-settings==2.0.3 -email-validator==2.1.0 +pydantic==2.12.3 +pydantic-settings==2.7.1 +email-validator==2.2.0 # HTTP requests -httpx==0.25.2 -requests==2.31.0 +httpx==0.28.1 +requests==2.32.3 # Async support -asyncio-mqtt==0.16.1 -aiofiles==23.2.1 +asyncio-mqtt==0.16.2 +aiofiles==24.1.0 # Messaging -aio-pika==9.3.1 +aio-pika==9.4.3 -# Caching (optional) -redis==5.0.1 +# Caching +redis==6.4.0 python-redis-cache==0.1.0 # Monitoring and logging -structlog==23.2.0 -python-json-logger==2.0.4 -prometheus-client==0.19.0 +structlog==25.4.0 +python-json-logger==3.3.0 +prometheus-client==0.23.1 # Date/time handling -python-dateutil==2.8.2 -pytz==2023.3 +python-dateutil==2.9.0.post0 +pytz==2024.2 # Data processing -pandas==2.1.3 -numpy==1.25.2 +pandas==2.2.3 +numpy==2.2.2 # Authentication and security python-jose[cryptography]==3.3.0 -python-multipart==0.0.6 passlib[bcrypt]==1.7.4 +cryptography==44.0.0 # Environment management -python-dotenv==1.0.0 +python-dotenv==1.0.1 # Testing -pytest==7.4.3 -pytest-asyncio==0.21.1 -httpx==0.25.2 +pytest==8.3.4 +pytest-asyncio==0.25.2 # Development -black==23.11.0 -flake8==6.1.0 -mypy==1.7.1 \ No newline at end of file +black==24.10.0 +flake8==7.1.1 +mypy==1.14.1 diff --git a/services/sales/requirements.txt b/services/sales/requirements.txt index bc9eedbc..f2bb4d72 100644 --- a/services/sales/requirements.txt +++ b/services/sales/requirements.txt @@ -1,40 +1,42 @@ # services/sales/requirements.txt # FastAPI and web framework -fastapi==0.104.1 -uvicorn[standard]==0.24.0 +fastapi==0.119.0 +uvicorn[standard]==0.32.1 # Database -sqlalchemy==2.0.23 -psycopg2-binary==2.9.9 -asyncpg==0.29.0 -aiosqlite==0.19.0 -alembic==1.12.1 +sqlalchemy==2.0.44 +psycopg2-binary==2.9.10 +asyncpg==0.30.0 +aiosqlite==0.20.0 +alembic==1.17.0 # Data processing -pandas==2.1.3 -numpy==1.25.2 +pandas==2.2.3 +numpy==2.2.2 # HTTP clients -httpx==0.25.2 -aiofiles==23.2.0 +httpx==0.28.1 +aiofiles==24.1.0 # Validation and serialization -pydantic==2.5.0 -pydantic-settings==2.0.3 +pydantic==2.12.3 +pydantic-settings==2.7.1 +email-validator==2.2.0 # Authentication and security python-jose[cryptography]==3.3.0 passlib[bcrypt]==1.7.4 +cryptography==44.0.0 # Logging and monitoring -structlog==23.2.0 -prometheus-client==0.19.0 +structlog==25.4.0 +prometheus-client==0.23.1 # Message queues -aio-pika==9.3.1 - -# Note: pytest and testing dependencies are in tests/requirements.txt +aio-pika==9.4.3 # Development python-multipart==0.0.6 -redis==5.0.1 +redis==6.4.0 +python-dateutil==2.9.0.post0 +pytz==2024.2 diff --git a/services/suppliers/requirements.txt b/services/suppliers/requirements.txt index 06d88c11..2d6d3ace 100644 --- a/services/suppliers/requirements.txt +++ b/services/suppliers/requirements.txt @@ -1,42 +1,44 @@ # services/suppliers/requirements.txt # FastAPI and web framework -fastapi==0.104.1 -uvicorn[standard]==0.24.0 +fastapi==0.119.0 +uvicorn[standard]==0.32.1 # Database -sqlalchemy==2.0.23 -psycopg2-binary==2.9.9 -asyncpg==0.29.0 -aiosqlite==0.19.0 -alembic==1.12.1 +sqlalchemy==2.0.44 +psycopg2-binary==2.9.10 +asyncpg==0.30.0 +aiosqlite==0.20.0 +alembic==1.17.0 # Data processing -pandas==2.1.3 -numpy==1.25.2 +pandas==2.2.3 +numpy==2.2.2 # HTTP clients -httpx==0.25.2 -aiofiles==23.2.0 +httpx==0.28.1 +aiofiles==24.1.0 # Validation and serialization -pydantic==2.5.0 -pydantic-settings==2.0.3 +pydantic==2.12.3 +pydantic-settings==2.7.1 +email-validator==2.2.0 # Authentication and security python-jose[cryptography]==3.3.0 passlib[bcrypt]==1.7.4 +cryptography==44.0.0 # Logging and monitoring -structlog==23.2.0 -prometheus-client==0.19.0 +structlog==25.4.0 +prometheus-client==0.23.1 # Message queues -aio-pika==9.3.1 +aio-pika==9.4.3 # Additional for supplier management -python-dateutil==2.8.2 -email-validator==2.1.0 +python-dateutil==2.9.0.post0 +pytz==2024.2 # Development python-multipart==0.0.6 -redis==5.0.1 +redis==6.4.0 diff --git a/services/tenant/requirements.txt b/services/tenant/requirements.txt index d3ba5193..b5f9d162 100644 --- a/services/tenant/requirements.txt +++ b/services/tenant/requirements.txt @@ -1,18 +1,21 @@ -fastapi==0.104.1 -uvicorn[standard]==0.24.0 -sqlalchemy==2.0.23 -asyncpg==0.29.0 -alembic==1.12.1 -psycopg2-binary==2.9.9 -pydantic==2.5.0 -pydantic-settings==2.1.0 -httpx==0.25.2 -redis==5.0.1 -aio-pika==9.3.0 -prometheus-client==0.17.1 -python-json-logger==2.0.4 -pytz==2023.3 +fastapi==0.119.0 +uvicorn[standard]==0.32.1 +sqlalchemy==2.0.44 +asyncpg==0.30.0 +alembic==1.17.0 +psycopg2-binary==2.9.10 +pydantic==2.12.3 +pydantic-settings==2.7.1 +httpx==0.28.1 +redis==6.4.0 +aio-pika==9.4.3 +prometheus-client==0.23.1 +python-json-logger==3.3.0 +pytz==2024.2 python-logstash==0.4.8 -structlog==23.2.0 +structlog==25.4.0 python-jose[cryptography]==3.3.0 -stripe==7.4.0 +stripe==11.3.0 +python-multipart==0.0.6 +cryptography==44.0.0 +email-validator==2.2.0 diff --git a/services/training/requirements.txt b/services/training/requirements.txt index 240e4fbb..d6326709 100644 --- a/services/training/requirements.txt +++ b/services/training/requirements.txt @@ -1,54 +1,54 @@ # services/training/requirements.txt # FastAPI and server -fastapi==0.104.1 -uvicorn[standard]==0.24.0 +fastapi==0.119.0 +uvicorn[standard]==0.32.1 python-multipart==0.0.6 # Database -sqlalchemy==2.0.23 -asyncpg==0.29.0 -alembic==1.12.1 -psycopg2-binary==2.9.9 +sqlalchemy==2.0.44 +asyncpg==0.30.0 +alembic==1.17.0 +psycopg2-binary==2.9.10 # ML libraries -prophet==1.1.5 -scikit-learn==1.3.2 -pandas==2.1.3 -numpy==1.24.4 -joblib==1.3.2 +prophet==1.1.6 +scikit-learn==1.6.1 +pandas==2.2.3 +numpy==2.2.2 +joblib==1.4.2 # HTTP client -httpx==0.25.2 +httpx==0.28.1 # Validation -pydantic==2.5.0 -pydantic-settings==2.1.0 +pydantic==2.12.3 +pydantic-settings==2.7.1 +email-validator==2.2.0 # Authentication python-jose[cryptography]==3.3.0 passlib[bcrypt]==1.7.4 -python-multipart==0.0.6 +cryptography==44.0.0 # Messaging -aio-pika==9.3.1 +aio-pika==9.4.3 # Monitoring and logging -structlog==23.2.0 -prometheus-client==0.19.0 +structlog==25.4.0 +prometheus-client==0.23.1 # Development and testing -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-mock==3.12.0 -httpx==0.25.2 -pytest-cov==4.1.0 -coverage==7.3.2 -psutil==5.9.0 +pytest==8.3.4 +pytest-asyncio==0.25.2 +pytest-mock==3.14.0 +pytest-cov==6.0.0 +coverage==7.6.9 +psutil==6.1.1 # Utilities -python-dateutil==2.8.2 -pytz==2023.3 +python-dateutil==2.9.0.post0 +pytz==2024.2 # Hyperparameter optimization -optuna==3.4.0 -redis==5.0.1 +optuna==4.2.0 +redis==6.4.0 diff --git a/shared/database/base.py b/shared/database/base.py index 1232ec33..3a4b0809 100644 --- a/shared/database/base.py +++ b/shared/database/base.py @@ -8,7 +8,7 @@ from typing import Optional, Dict, Any, List from sqlalchemy import create_engine, text from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine, async_sessionmaker from sqlalchemy.orm import sessionmaker, declarative_base -from sqlalchemy.pool import StaticPool, QueuePool +from sqlalchemy.pool import StaticPool from contextlib import asynccontextmanager import structlog import time @@ -48,24 +48,24 @@ class DatabaseManager: self.pool_size = pool_size self.max_overflow = max_overflow - # Configure pool class based on database type - poolclass = QueuePool - if "sqlite" in database_url.lower(): - poolclass = StaticPool - pool_size = 1 - max_overflow = 0 - - # Create async engine with enhanced configuration + # Configure pool for async engines + # Note: SQLAlchemy 2.0 async engines automatically use AsyncAdaptedQueuePool + # We should NOT specify poolclass for async engines unless using StaticPool for SQLite engine_config = { "echo": echo, "pool_pre_ping": pool_pre_ping, "pool_recycle": pool_recycle, "pool_size": pool_size, "max_overflow": max_overflow, - "poolclass": poolclass, "connect_args": {"command_timeout": connect_timeout}, **engine_kwargs } + + # Only set poolclass for SQLite (requires StaticPool for async) + if "sqlite" in database_url.lower(): + engine_config["poolclass"] = StaticPool + engine_config["pool_size"] = 1 + engine_config["max_overflow"] = 0 self.async_engine = create_async_engine(database_url, **engine_config)