Add notification service using Google ADK #22

Merged
A8065384 merged 1 commits from feature/notification into main 2026-03-05 05:21:37 +00:00
Member

🎯 Resumen

Se notifica automáticamente a los usuarios sobre mensajes pendientes almacenados en Firestore, utilizando el patrón de Static/Dynamic Instructions del Google ADK.


📦 Cambios

1. Gestión de Notificaciones (notifications.py)

  • Servicio para consultar notificaciones pendientes desde Firestore
  • Filtrado por campo notified_by_agent para evitar duplicados entre sesiones
  • Ordenamiento por timestamp_creacion (más recientes primero)
  • Marcado automático como notificadas al entregarlas al usuario
  • Límite configurable de notificaciones por consulta (default: 5)

2. Dynamic Instructions (dynamic_instruction.py)

  • Provider que inyecta contexto de notificaciones pendientes al agente
  • Se ejecuta en cada mensaje (modo testing) o solo en el primero (producción)
  • Extrae phone_number del session.user_id para consultar Firestore
  • Genera instrucción dinámica con detalles de las notificaciones
  • Marca notificaciones como entregadas tras generar la instrucción

3. Actualización del Agente (agent.py)

  • Migración de instruction simple a patrón Static + Dynamic Instructions
  • static_instruction: Personalidad base de VAia (cacheable)
  • instruction: Provider dinámico con notificaciones (runtime)
  • Cliente Firestore compartido entre session service y notification service
  • Uso de functools.partial para pre-cargar dependencias

4. Configuración (config.py / config.yaml)

  • notifications_collection_path: Ruta de colección en Firestore
  • notifications_max_to_notify: Límite de notificaciones a mostrar
  • Valores por defecto configurables y modificables sin tocar código

📁 Archivos Modificados

Modificados

  • ✏️ src/va_agent/agent.py - Integración Static/Dynamic Instructions
  • ✏️ src/va_agent/config.py - Configuración de notificaciones
  • ✏️ config.yaml - Valores de configuración

Nuevos

  • src/va_agent/notifications.py - Servicio de notificaciones
  • src/va_agent/dynamic_instruction.py - Provider de instrucciones dinámicas

Ejemplo

## 🎯 Resumen Se notifica automáticamente a los usuarios sobre mensajes pendientes almacenados en Firestore, utilizando el patrón de Static/Dynamic Instructions del Google ADK. --- ## 📦 Cambios ### 1. **Gestión de Notificaciones** (`notifications.py`) - Servicio para consultar notificaciones pendientes desde Firestore - Filtrado por campo `notified_by_agent` para evitar duplicados entre sesiones - Ordenamiento por `timestamp_creacion` (más recientes primero) - Marcado automático como notificadas al entregarlas al usuario - Límite configurable de notificaciones por consulta (default: 5) ### 2. **Dynamic Instructions** (`dynamic_instruction.py`) - Provider que inyecta contexto de notificaciones pendientes al agente - Se ejecuta en cada mensaje (modo testing) o solo en el primero (producción) - Extrae `phone_number` del `session.user_id` para consultar Firestore - Genera instrucción dinámica con detalles de las notificaciones - Marca notificaciones como entregadas tras generar la instrucción ### 3. **Actualización del Agente** (`agent.py`) - Migración de `instruction` simple a patrón Static + Dynamic Instructions - `static_instruction`: Personalidad base de VAia (cacheable) - `instruction`: Provider dinámico con notificaciones (runtime) - Cliente Firestore compartido entre session service y notification service - Uso de `functools.partial` para pre-cargar dependencias ### 4. **Configuración** (`config.py` / `config.yaml`) - `notifications_collection_path`: Ruta de colección en Firestore - `notifications_max_to_notify`: Límite de notificaciones a mostrar - Valores por defecto configurables y modificables sin tocar código --- ## 📁 Archivos Modificados ### Modificados - ✏️ `src/va_agent/agent.py` - Integración Static/Dynamic Instructions - ✏️ `src/va_agent/config.py` - Configuración de notificaciones - ✏️ `config.yaml` - Valores de configuración ### Nuevos - ➕ `src/va_agent/notifications.py` - Servicio de notificaciones - ➕ `src/va_agent/dynamic_instruction.py` - Provider de instrucciones dinámicas --- ## Ejemplo
A8072846 added 1 commit 2026-03-04 16:50:28 +00:00
Owner

@A8072846 Puedes checar el merge conflict?

@A8072846 Puedes checar el merge conflict?
A8072846 force-pushed feature/notification from 5a353f9582 to 12c91b7c25 2026-03-05 00:02:20 +00:00 Compare
A8065384 merged commit bc23ca27e4 into main 2026-03-05 05:21:37 +00:00
A8065384 deleted branch feature/notification 2026-03-05 05:21:37 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: va/agent#22