Architecture / Engineering case

DepaVision

Arquitectura para asistir la lectura periódica de remarcadores de agua y calefacción.

Estado
Work in progress
Rol
Definición de producto · arquitectura · dirección técnica
Baseline técnico
Angular · Ionic · Capacitor · NestJS · PostgreSQL · FastAPI · Docker

DepaVision es un producto en desarrollo. Busca asistir el proceso periódico de lectura de remarcadores, reducir la transcripción manual y mejorar la trazabilidad. Hoy existe un baseline técnico materializado; los flujos operacionales y la inferencia visual siguen en desarrollo. Este case trata sobre decisiones de producto y arquitectura, no sobre un producto terminado.

01 /Problema operacional

La lectura de remarcadores de agua y calefacción es un proceso periódico. Cuando cada valor se lee y se transcribe a mano, el proceso acumula trabajo repetitivo y es difícil reconstruir después de dónde viene cada registro.

DepaVision busca asistir ese proceso para reducir la transcripción manual y mejorar la trazabilidad de las lecturas.

02 /Product boundary

Una parte central del trabajo fue delimitar una primera versión (V1): qué problema resuelve, qué queda fuera y qué conviene validar antes de tomar decisiones difíciles de revertir.

DepaVision no se plantea como una automatización completa de la lectura. El objetivo es asistir el proceso sin eliminar el criterio humano.

03 /Human-in-the-loop

El diseño no depende ciegamente de una inferencia visual. Cuando una lectura no puede resolverse de forma suficientemente confiable, una persona puede intervenir.

Es un criterio de diseño. El flujo de captura y la inferencia visual siguen en desarrollo.

04 /Mi rol

Mi responsabilidad principal está en la definición del producto y en la arquitectura:

  • Definición del producto y delimitación de V1.
  • Diseño arquitectónico y decisiones técnicas.
  • Estructura del backend.
  • Separación de responsabilidades entre NestJS y FastAPI.
  • Baseline técnico.
  • Dirección y revisión técnica.

Este case no presenta como trabajo realizado modelos de machine learning, entrenamiento, OCR ni un pipeline de inferencia. Esas capacidades siguen en desarrollo.

05 /Arquitectura del sistema

La arquitectura separa cuatro responsabilidades: el cliente, un backend principal, los datos y un servicio especializado para capacidades de visión.

Diagrama abstracto. El cliente se comunica con un backend principal, que concentra las reglas de negocio y coordina tanto los datos como un servicio especializado de visión.

El servicio de visión existe en el baseline, pero la inferencia visual sigue en desarrollo (borde discontinuo).

El diagrama es conceptual: no representa interfaces ni infraestructura concretas.

06 /Decisiones de ingeniería

Decisión Monolito modular

Problema
En un producto temprano, con flujos aún en definición, los microservicios agregan complejidad operacional antes de que exista una razón para ello.
Decisión
Mantener un backend principal como monolito modular: una frontera coherente, organizada internamente por módulos.
Trade-off
La separación entre módulos depende del diseño y de la revisión; no la impone una frontera de red.

Decisión Backend como boundary de negocio

Problema
Con dos runtimes en el sistema, las reglas de negocio podrían terminar repartidas entre tecnologías.
Decisión
Las reglas de negocio y la coordinación permanecen en el backend principal.
Trade-off
El backend principal concentra más responsabilidad dentro del sistema.

Decisión FastAPI para procesamiento especializado

Problema
Las capacidades de visión se desarrollan naturalmente en Python, un runtime distinto al del backend principal.
Decisión
Aislar Python detrás de un servicio especializado en FastAPI, dedicado a capacidades de visión y sin reglas de negocio.
Trade-off
Hay un segundo runtime y una frontera más que mantener. El servicio es parte del baseline; la inferencia visual sigue en desarrollo.

Decisión No cerrar ML antes de validar datos

Problema
Elegir una técnica de reconocimiento antes de conocer los datos disponibles puede optimizar el sistema para supuestos equivocados.
Decisión
No fijar la arquitectura de reconocimiento hasta comprender la calidad y la naturaleza de los datos disponibles.
Trade-off
Parte del diseño queda abierta a propósito: el servicio de visión está definido como frontera, no como solución cerrada.

07 /Baseline materializado

El baseline técnico está organizado como un monorepo políglota, con un entorno de integración local reproducible basado en Docker que reúne Node, Python y PostgreSQL.

  • Cliente: Angular · Ionic · Capacitor
  • Backend principal: NestJS, con conectividad a PostgreSQL
  • Servicio especializado: FastAPI
  • Integración local: Docker

Que estas tecnologías estén presentes significa que la base existe y se integra. No significa que cada capa tenga ya lógica funcional completa.

08 /Estado actual

Existe un baseline técnico real. El producto, los flujos operacionales y la inferencia visual siguen en desarrollo.

Baseline materializado

  • Angular / Ionic / Capacitor
  • NestJS
  • Conectividad con PostgreSQL
  • Servicio FastAPI
  • Integración local basada en Docker

En desarrollo

  • Flujos operacionales de negocio
  • Flujo de captura
  • Inferencia visual
  • Integración end-to-end del producto

09 /Tecnología

Baseline técnico materializado:

  • Angular
  • Ionic
  • Capacitor
  • NestJS
  • PostgreSQL
  • FastAPI
  • Docker

La lista describe la base técnica existente, no capacidades de producto terminadas.