Guía de Desarrollo e Integración Técnica¶
Esta guía documenta el stack tecnológico de Nexus Energy, el aprovisionamiento de bases de datos locales, el flujo de ingesta de mediciones de campo y los comandos para el despliegue en producción.
🛠️ Stack Tecnológico y Arquitectura¶
- Fullstack Framework: SvelteKit con Svelte 5 (uso nativo de runas
$state,$derived,$props). - Hosting y Edge Runtime: Cloudflare Pages para respuestas de bajísima latencia distribuidas globalmente.
- Base de Datos: Cloudflare D1 (Motor SQLite nativo en el Edge).
- Autenticación: Clerk (con flujos de inicialización locales sincronizados por webhook).
- Estilos: Tailwind CSS con un sistema de tokens de diseño semánticos en
app.css.
🐍 Entorno de Desarrollo Python (uv)¶
Para el soporte de generación de datos y compilación de manuales estáticos, el proyecto requiere de un entorno Python aislado. Hemos simplificado y optimizado este proceso utilizando uv, el resolvedor y compilador de Python ultra-rápido escrito en Rust.
Creación e Instalación del Entorno:¶
# 1. Crear el entorno virtual .venv
uv venv
# 2. Instalar todas las dependencias declaradas en el requirements.txt
uv pip install -r requirements.txt
🗄️ Aprovisionamiento y Migraciones de Base de Datos (D1)¶
El esquema de base de datos se consolida en schema.sql y evoluciona incrementalmente a través de scripts en migrations/.
Comandos de Base de Datos:¶
# Crear base de datos en desarrollo local (Wrangler local)
pnpm exec wrangler d1 create nexus-db
# Aplicar las migraciones incrementales en base local
pnpm db:migrate:local
# Aplicar las migraciones en la base de datos remota de producción
pnpm db:migrate
[!WARNING] En la base de datos local emulada y en producción, siempre vincula la base de datos D1 a la constante
DBdentro de tu configuración de entorno (wrangler.toml).
📈 Generación de Mediciones Sintéticas (generate_measurements.py)¶
Para probar la robustez de los gráficos y cálculos analíticos sin requerir hardware físico, el proyecto incluye un generador de telemetría de alta fidelidad física.
El script generate_measurements.py simula curvas de irradiancia solar realistas (siguiendo curvas de Gauss), consumos distribuidos lógicos de oficina/industria, carga/descarga de baterías según el excedente solar y cálculo preciso de contadores monótonamente crecientes (kWh).
Pasos para Poblar tu Base de Datos Local:¶
# 1. Ejecutar el generador para crear el archivo de transacciones SQL
python generate_measurements.py
# 2. Ingestar el seed resultante en la base local SQLite de Wrangler
npx wrangler d1 execute nexus-db --local --file=./measurements_seed.sql
📡 Pipeline de Ingesta de Mediciones (API)¶
Los dispositivos físicos en campo transmiten lecturas eléctricas en formato JSON al endpoint de ingesta:
Formato Simplificado de Ingesta:¶
{
"device_serial": "INV-DEYE-50KW-004",
"timestamp": "2026-05-23T13:00:00Z",
"inverter_active_power_kw": 42.5,
"battery_soc": 92.0,
"grid_voltage_a": 120.5,
"raw_data": {
"firmware_version": "v3.1.2",
"ambient_temp_c": 28.5
}
}
- Validación: El servidor valida el número de serie en la tabla
devicesy graba la muestra eninverter_measurements. - Backup: Datos específicos no soportados en las columnas tipadas principales se graban de manera flexible en el campo JSON
raw_datapara posterior análisis mediante queriesjson_extract.