vivienda_sdk

SDK Flutter de Genesis Vivienda AR — plataforma de Fundación Génesis Empresarial para visualizar, simular y cotizar remodelaciones de viviendas asistidas por IA.

El paquete entrega el flujo completo listo para usar: registro de solicitud por DPI, captura de foto, rediseño con IA, resultado y cotización.


Características

  • Flujo guiado tipo stepper de 5 pasos, sin AppBar, con botón "Continuar" persistente en la parte inferior de cada pantalla.
  • Pantalla de inicio con DPI + términos y condiciones (validación de 13 dígitos y aceptación obligatoria de los T&C legales de Genesis Vivienda AR).
  • Captura/selección de foto con validación de formato y tamaño, y manejo de permisos.
  • Rediseño con IA a partir de opciones de catálogo (KPIs).
  • Resultado con comparación antes/después y ajuste de dimensiones del área.
  • Cotización generada por la API con detalle de materiales y costos.
  • Capa de red centralizada (ViviendaApiService + ApiEndpoints) fácil de configurar por entorno.
  • Tema y tokens de diseño propios (RoomReviveTheme, RoomReviveTokens).

Requisitos

  • Flutter >= 1.17.0, Dart SDK ^3.9.2.
  • Permisos de cámara y galería configurados en la app host (Android/iOS).

Dependencias principales

google_fonts, http, http_parser, image_picker, permission_handler.


Instalación

dart pub add vivienda_sdk

Importar:

import 'package:vivienda_sdk/vivienda_sdk.dart';

Uso

RoomReviveScreen es el punto de entrada del flujo. El resto de las pantallas se navegan internamente.

import 'package:flutter/material.dart';
import 'package:vivienda_sdk/vivienda_sdk.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Genesis Vivienda',
      theme: RoomReviveTheme.lightTheme(),
      home: RoomReviveScreen(
        numeroPromotor: 4543,               // proviene del padre / sesión
        sourceApp: 'genesis-vivienda-app',  // proviene del padre
        onDpiSubmitted: (dpi) => debugPrint('DPI: $dpi'),
        onSolicitudCreated: (id) => debugPrint('Solicitud: $id'),
        onPhotoSelected: (path) => debugPrint('Foto galería: $path'),
        onPhotoCaptured: (path) => debugPrint('Foto cámara: $path'),
      ),
    );
  }
}

Ver un ejemplo ejecutable en example/main.dart.


Flujo de pantallas

Paso Pantalla Acción del botón inferior
1 RoomReviveScreen (DPI + términos) Registra la solicitud (POST /solicitudes) y avanza
2 RoomReviveScreen (Foto) Analiza la foto (detect-kpis) y navega
3 RoomRedesignStepScreen Genera imagen con IA (images/generate)
4 RoomRedesignResultScreen Genera cotización (analyze-improvement)
5 QuotationResultScreen — (pantalla final)

El id de la solicitud se propaga como solicitudId a través de todo el flujo.


Servicios y endpoints

Toda la lógica HTTP vive en lib/src/services/.

  • ApiEndpoints (api_endpoints.dart): punto único de configuración de URLs y defaultApiKey. Cambia baseUrl para apuntar a dev/staging/prod.
  • ViviendaApiService (vivienda_api_service.dart): métodos del flujo, cada uno con apiKey y endpoint opcionales:
    • createSolicitud({ dpi, numeroPromotor, sourceApp }) → POST /solicitudes
    • detectKpis({ imagePath }) → POST /vision/detect-kpis
    • generateImage({ prompt, imagePath }) → POST /images/generate
    • requestQuotation({ ... }) → POST /agent/analyze-improvement

Para más detalle de integración ver INTEGRACION.md.


Estructura del proyecto

lib/
  vivienda_sdk.dart            # Exports públicos
  src/
    components/                # UI reutilizable (FlowStepper, modales, cards…)
    screens/                   # Pantallas del flujo
    services/                  # Capa de red (endpoints + servicio)
    models/                    # Modelos de datos
    data/                      # Catálogos estáticos
    theme/                     # Tema y tokens de diseño
assets/images/                 # Imágenes del catálogo
example/                       # App de ejemplo

Configuración

  • Entorno: ajustar ApiEndpoints.baseUrl o sobreescribir cada endpoint por parámetro en las pantallas/servicios.
  • API key: reemplazar ApiEndpoints.defaultApiKey o inyectarla vía parámetros según las políticas de seguridad del equipo.
  • Datos del padre: numeroPromotor y sourceApp se pasan desde la app host a RoomReviveScreen.

Información adicional

Desarrollado y administrado por Fundación Génesis Empresarial.

Libraries

vivienda_sdk