- TypeScript 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
se implementa la funcionaldiad para la generacion de nuevas notificacioenes en los procesos judicialess en segunda isntancia se actualiza dockers para desarrollo y produccion |
||
| prisma | ||
| src | ||
| .env.example | ||
| .gitignore | ||
| dockerfile.dev | ||
| dockerfile.prod | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
# 🧠 Sistema de Actualización Judicial Automática
Este proyecto implementa un servicio de tareas programadas (cron jobs) en Node.js + TypeScript, diseñado para sincronizar automáticamente la información judicial desde la API oficial de la Rama Judicial de Colombia con una base de datos local administrada por Prisma ORM.
La aplicación consulta los procesos judiciales registrados en la base de datos, obtiene sus actuaciones más recientes desde la API pública y actualiza o inserta la información en la base de datos todos los días a la medianoche.
🚀 Características principales
- 🔄 Tareas programadas automáticas: se ejecutan sin intervención humana, gracias al uso de
node-cron. - ⚙️ Arquitectura MVC adaptada a servicios: separa claramente la lógica de sincronización, la conexión con la API judicial y la persistencia con Prisma.
- 🧩 Integración con API externa: obtiene el
idProcesoy las actuaciones de cada radicado desde la API de la Rama Judicial. - 🗃️ Sincronización incremental: solo inserta o actualiza actuaciones nuevas o modificadas.
- 🧱 Uso de Prisma ORM: para una interacción eficiente y segura con la base de datos.
- 🧵 Procesamiento por tandas: permite manejar grandes volúmenes de procesos (por lotes) para evitar saturar la API externa.
- 🕛 Ejecución diaria automática: el sistema se ejecuta cada día a las 12:00 a.m.
📂 Estructura del proyecto
src/
├── config/
│ └── config.ts # Variables de entorno y configuración general
├── services/
│ ├── prisma.services.ts # Inicialización de Prisma ORM
│ ├── judicialBranch.services.ts# Conexión con la API de la Rama Judicial
│ └── cronUpdate.services.ts # Lógica de tareas automáticas y sincronización
├── utils/
│ └── retry.ts # Funcionalidad para reintentar las consultal
├── types/
│ └── judicialBranch.types.ts # Tipos TypeScript para las actuaciones y procesos
├── jobs/
│ └── updateProcesses.job.ts # Definición de la tarea programada con node-cron
├── app.ts # Punto de entrada de la aplicación
└── prisma/
└── schema.prisma # Definición del modelo de base de datos
⚙️ Instalación y configuración
1. Clonar el repositorio
git clone https://github.com/GOBERNACION-PROYECTO/TAREAS_GOBERNACION.git
cd TAREAS_GOBERNACION
2. Instalar dependencias
npm install
3. Configurar variables de entorno
Crea un archivo .env en la raíz del proyectoa partir del .env.example copialo y pegalo
4. Ejecutar migraciones de Prisma
npx prisma migrate dev
5. Ejecutar la aplicación
npm run dev
La aplicación se ejecutará en el puerto configurado (por defecto
6590).
🕐 Programación del cron job
El cron job está definido para ejecutarse todos los días a medianoche:
const CRON_TIME = '0 0 * * *'; // 12:00 AM todos los días
Cada ejecución:
- Obtiene todos los procesos guardados (
procesoJudicial). - Los procesa en tandas (por defecto, de 3 procesos a la vez).
- Consulta el
idProcesode cada radicado en la API externa. - Descarga las actuaciones y las sincroniza con la base de datos.
- Registra en consola un resumen de las inserciones y actualizaciones.
🧩 Ejemplo de salida en consola
🌙 Ejecutando tarea programada de actualización a medianoche...
🚀 Iniciando tarea automática de actualización judicial...
🕒 Ejecutando tanda 1 de 3...
✔ 66001333300120230043501: 14 insertadas, 0 actualizadas.
✔ 66001333300420240000600: 40 insertadas, 1 actualizadas.
⏳ Tiempo de tanda 1: 1.68s
🕒 Ejecutando tanda 2 de 3...
✔ 66001333300620240000401: 25 insertadas, 2 actualizadas.
⏳ Tiempo de tanda 2: 792ms
✅ Tarea automática completada.