2025-11-26 10:41:30 +01:00
2025-11-26 17:22:05 +01:00
2025-10-15 09:41:47 +02:00
2025-10-22 10:38:38 +02:00
2025-10-15 09:41:47 +02:00
2025-10-15 09:41:47 +02:00
2025-10-15 09:41:47 +02:00
2025-10-15 09:41:47 +02:00
2025-10-15 09:41:47 +02:00
2025-10-15 09:41:47 +02:00
2025-10-15 09:41:47 +02:00
2025-11-25 15:35:14 +01:00
2025-11-26 13:19:11 +01:00
2025-10-15 09:41:47 +02:00

Asistente BRAVIOO

Diagnóstico inteligente de sostenibilidad empresarial

Asistente BRAVIOO es una herramienta interactiva desarrollada con Vue/Nuxt 3 que permite a las empresas realizar un diagnóstico guiado de sostenibilidad, ofreciendo resultados automáticos por bloques y un informe final con recomendaciones accionables.

👉 Puedes ver la versión desplegada aquí: http://bravioo.enreda.coop/

¿Qué es el Asistente BRAVIOO?

Se trata de un formulario dinámico, flexible y totalmente configurable, diseñado para acompañar a organizaciones en un proceso de evaluación interna. El asistente guía al usuario a través de distintas pantallas (slices), recopila respuestas, calcula puntuaciones y genera un diagnóstico final.

Características principales

  • Navegación por pantallas tipo welcome, question, feedback y end.

  • Cálculo automático de:

  • Resultados por bloque temático.

  • Resultado global.

  • Recomendaciones asociadas.

  • Guardado de progreso y respuestas en localStorage.

  • Posibilidad de: Flujo lineal y Flujo condicional según respuestas.

  • Configuración 100% mediante un archivo surveyData.js.

  • Generación de informe final descargable en PDF (pdfMake).

🧩 Arquitectura general del proyecto

El asistente se sostiene sobre tres pilares fundamentales:

1. index.vue — Motor del asistente

Controla:

  • Flujo entre pantallas,
  • Almacenamiento de respuestas,
  • Cálculo de puntuaciones por bloque,
  • Diagnóstico final.

Principales estados manejados:

data() {
  return {
    surveyData,
    currentSliceId: surveyData.slices[0].id,
    answers: [],
    score: null,
    results: null
  }
}

2. surveyData.js — Configuración del diagnóstico

Define:

  • Todas las pantallas del asistente,
  • Reglas de evaluación de cada bloque,
  • Reglas del diagnóstico global,
  • Textos, títulos y contenidos visibles para el usuario.

3. Componentes visuales (slices)

Representan cada tipo de pantalla:

  • SliceWelcome.vue
  • SliceQuestion.vue
  • SliceFeedback.vue
  • SliceEnd.vue

Cada slice se renderiza según el valor type presente en surveyData.slices.

🔄 Flujo del usuario

  • Pantalla de bienvenida
  • Bloque de preguntas
  • Pantalla de feedback parcial con recomendaciones
  • Repetición del patrón para los distintos bloques
  • Resumen final con diagnóstico global y descarga de informe

🧮 Cálculo y lógica interna

1. Navegación

Cada slice define su siguiente paso mediante la propiedad next, que puede ser:

Lineal:

"next": "B1-02"

Condicional:

"next": { yes: "Q2", no: "Q3" }

index.vue gestiona:

  • Avanzar (goToNext(event)),
  • Retroceder (goToPrevious()),
  • Almacenar historial en localStorage.

2. Registro de respuestas

Las respuestas se almacenan con estructura:

{
  sectionId,
  sectionTitle,
  sliceId,
  value,
  score,
  questionTotalPoints
}

3. Resultados por bloque

Cuando el usuario alcanza una pantalla tipo feedback, se ejecuta:

  • Filtrado de respuestas por bloque,
  • Cómputo de puntos obtenidos,
  • Cálculo de puntos máximos del bloque,
  • Evaluación según surveyData.rules[sectionId].

Ejemplo:

{
  sectionId: "B1",
  sectionTitle: "Impacto social",
  sectionPossibleTotalPoints: 20,
  score: 14,
  result: "Recomendación específica..."
}

4. Resultado global

En el último slice (end):

  • Se suman los resultados parciales,
  • Se calcula el máximo total,
  • Se aplica surveyData.finalRecommendations.total(score).

Ejemplo:

{
  totalPossiblePoints: 80,
  score: 52,
  recommendations: "ISO 14001, B Corp..."
}

📂 Estructura del archivo surveyData.js

1. Cabecera

export const surveyData = {
  title: "Asistente BRAVIOO",
  slices: [ ... ],
  rules: { ... },
  finalRecommendations: { ... }
}

2. Tipos de slices

Tipo Descripción
welcome Introducción y presentación del bloque
question Pregunta de diagnóstico con opciones
feedback Resultados parciales por bloque
end Diagnóstico general + descarga PDF

📝 Ejemplo de slice tipo pregunta

{
  id: "B2-01",
  type: "question",
  section: { id: "B2", title: "Transparencia y reporte" },
  question: {
    title: "¿Publica informes de sostenibilidad?",
    description: "1 es el nivel más bajo y 5 el más alto."
  },
  input: {
    type: "range",
    options: [
      { value: "1", label: "1", score: 1 },
      { value: "2", label: "2", score: 2 },
      ...
    ]
  },
  questionTotalPoints: 5,
  next: "B2-02"
}

🧠 Reglas de puntuación

  • Por bloque:
rules: {
  B0: (score) => score < 8 
    ? "Necesita mejoras estructurales..."
    : "Buen nivel de madurez.",
  ...
}
  • Final:
finalRecommendations: {
  total: (score) => {
    if (score < 30) return "Acciones básicas recomendadas";
    if (score < 50) return "Certificaciones iniciales sugeridas";
    return "Lista para certificaciones avanzadas";
  }
}

📦 Generación de PDF

En la pantalla final, el usuario puede descargar un informe PDF generado con:

  • pdfMake
  • Fuentes integradas manualmente
  • Logo de Bravio
  • Resultados por bloque
  • Diagnóstico global

🛠️ Tecnologías utilizadas

  • Vue 3 + Composition API
  • Nuxt 3
  • TailwindCSS
  • pdfMake
  • localStorage
  • Renderizado dinámico basado en configuración
Description
No description provided
Readme 6.4 MiB
Languages
JavaScript 71.5%
Vue 24.7%
CSS 2.6%
TypeScript 1.2%