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.