Los formatos que se aceptan

Lo que exporta examia se puede volver a importar tal cual. Y al importar se acepta bastante más que eso: la idea es que un banco que ya tengas -o el JSON que te dé cualquier modelo- entre sin que tengas que reescribirlo.

Lo mínimo que funciona

Un array de preguntas. Sin título, sin temas, sin nada más.

[
  {
    "pregunta": "¿Qué servicio de AWS entrega credenciales temporales a una EC2?",
    "opciones": ["IAM Role", "IAM User", "KMS", "Secrets Manager"],
    "correcta": "a"
  }
]

El formato completo

{
  "titulo": "AWS Solutions Architect Associate",
  "proveedor": "AWS",
  "codigo": "SAA-C03",
  "descripcion": "Simulacro de repaso",
  "idioma": "es",
  "puntaje_aprobacion": 72,
  "tiempo_min": 130,
  "preguntas": [
    {
      "tipo": "multiple",
      "pregunta": "Elige DOS formas de reducir el costo de una carga por lotes tolerante a fallos.",
      "opciones": [
        { "id": "a", "texto": "Instancias Spot" },
        { "id": "b", "texto": "Instancias On-Demand" },
        { "id": "c", "texto": "Savings Plans" },
        { "id": "d", "texto": "Instancias Dedicadas" }
      ],
      "correcta": ["a", "c"],
      "explicacion": "Spot aprovecha capacidad sobrante y encaja con cargas que toleran interrupciones; Savings Plans baja la tarifa con compromiso de uso.",
      "tema": "Costos",
      "dificultad": "media",
      "referencia": "https://docs.aws.amazon.com/..."
    }
  ]
}

El banco del motor estilo Brightspace

Si ya tienes preguntas escritas en un preguntas.js, súbelo tal cual. No hay que convertirlo a JSON ni quitarle nada: se entiende la asignación de arriba, las comillas simples, las claves sin comillas, las comas sobrantes y el código que venga detrás del array.

let RAW = [
  { id: 'P1-01', parcial: 'p1', text: '¿Cuál fue el objetivo de la sesión?', options: [
    ['A','Explicar cómo construir el artefacto desde cero'],
    ['B','Explicar una matriz para operacionalizar variables'],
    ['C','Enseñar a programar pruebas unitarias'],
  ], correct: ['B'] },

  { id: 'P1-02', parcial: 'p1', text: 'Las fases de validación son:', subtitle: '(Seleccione todas las correctas)', options: [
    ['A','Validación en la academia'],
    ['B','Validación estática'],
    ['C','Validación dinámica'],
    ['D','Validación financiera'],
  ], correct: ['A','B','C'] },
];
  • El enunciado en `text`, y el `subtitle` se añade detrás. En ese formato es donde dice "(Seleccione todas las correctas)", que no es adorno: le dice al candidato cuántas marcar.
  • Las opciones como pares ["A", "texto"]. La primera posición es el id de la opción, así que `correct: ['B']` sigue apuntando a donde debe.
  • El `parcial` se guarda como tema, y sirve para filtrar y para las estadísticas por tema.

Lo que se acepta al importar

  • Claves en español o inglés. `preguntas` o `questions`, `opciones` u `options`, `correcta` o `answer`, `explicacion` o `explanation`, `tema`, `topic` o `dominio`.
  • Opciones de dos formas. Texto suelto (`"Usar un NAT Gateway"`) u objeto (`{ "id": "a", "texto": "…" }`). Si el texto ya viene con prefijo (`"b) …"`), esa letra se usa como id.
  • La respuesta, como te quede más fácil. Letra (`"b"`), índice (`1`), el texto completo de la opción, o una lista para las de varias respuestas. También vale marcar `"correcta": true` dentro de la opción.
  • El tipo se infiere. Dos respuestas correctas es `multiple`; dos opciones verdadero/falso es `true_false`. Declararlo es opcional.

Lo que NO se perdona

Una pregunta sin enunciado, con menos de dos opciones, o cuya respuesta correcta no señale a ninguna opción existente, se omite y se te dice cuál. Guardarla sería sembrar un examen que califica mal, y un simulacro que miente es peor que no tenerlo.

Importar un banco ahora