{
  "producto": "RED FP360",
  "version": "1.0",
  "fecha": "2026-10-18",
  "ambito": "Canarias",
  "estado": "Diseño, no implementado",
  "aplicaciones": [
    {
      "title": "Dirección y cuadro de mando",
      "domain": "ERP empresarial",
      "goal": "Centralizar la información fiable de las áreas empresariales, interpretar indicadores y convertir las alertas en decisiones supervisadas por la dirección de la empresa simulada.",
      "roles": "Dirección de empresa; responsables de departamento; docente supervisor; analista de FP360 SIM",
      "flow": [
        "Consultar el periodo de simulación y confirmar la empresa activa",
        "revisar ventas, compras, margen, tesorería y documentos vencidos",
        "verificar alertas y comprobar el registro de origen de cada indicador",
        "asignar tareas a compras, ventas, almacén o recursos humanos",
        "estudiar alternativas y estimar el impacto sobre liquidez, inventario y beneficio",
        "aprobar decisiones que superen los límites de delegación",
        "comunicar instrucciones y objetivos a los departamentos",
        "comprobar los resultados al cierre de la jornada y archivar evidencias"
      ],
      "views": [
        {
          "nombre": "Inicio ejecutivo",
          "informacion_visible": "KPIs agrupados en tarjetas, curvas de ventas y gastos, actividad de departamentos y vencimientos próximos",
          "acciones": "Cambiar periodo, profundizar en un KPI, abrir alertas y crear tarea",
          "validacion": "Nunca mostrar sumas calculadas fuera de la fuente transaccional."
        },
        {
          "nombre": "Indicadores",
          "informacion_visible": "Panel de ventas, rentabilidad, rotación, deuda comercial, tesorería y productividad por simulación",
          "acciones": "Elegir indicador, filtrar empresa/periodo y exportar",
          "validacion": "Cada indicador muestra fórmula, periodo y datos fuente."
        },
        {
          "nombre": "Alertas y prioridades",
          "informacion_visible": "Bandeja de incidencias con gravedad, departamento, vencimiento y responsable",
          "acciones": "Asignar, aplazar justificadamente, resolver",
          "validacion": "Alertas críticas no se cierran sin evidencia."
        },
        {
          "nombre": "Decisiones",
          "informacion_visible": "Ficha de decisión con alternativas, restricciones y evaluación de consecuencias",
          "acciones": "Simular impacto, aprobar o devolver a revisión",
          "validacion": "Mantener historial de decisiones y motivo."
        },
        {
          "nombre": "Objetivos y planificación",
          "informacion_visible": "Metas de campaña, presupuestos, calendario y progreso de operaciones",
          "acciones": "Crear objetivo, asociar tareas y revisar desviación",
          "validacion": "Los indicadores comparan objetivo frente a real simulado."
        },
        {
          "nombre": "Informes de dirección",
          "informacion_visible": "Resumen de jornada, resultados por departamento y memoria ejecutiva",
          "acciones": "Generar PDF, compartir dentro de la red",
          "validacion": "Filtrado por rol y sin datos ajenos no autorizados."
        }
      ],
      "fields": [
        "empresa_id: referencia",
        "periodo: mes simulado",
        "ventas_netas: importe",
        "coste_ventas: importe",
        "margen_bruto: porcentaje",
        "saldo_disponible: importe",
        "vencimientos_pendientes: lista",
        "objetivos: entidad",
        "alertas: gravedad",
        "decision_id: identificador",
        "aprobador: usuario",
        "auditoria: evento"
      ],
      "rules": [
        "Los KPIs se calculan a partir de apuntes y documentos confirmados",
        "cada dato incluye enlace a su origen",
        "los usuarios sin permiso de dirección no aprueban operaciones extraordinarias",
        "las alertas por stock y liquidez se calculan con umbrales configurables",
        "no debe confundirse fecha real y fecha simulada"
      ],
      "connections": [
        "Ventas y facturación (3)",
        "Compras (4)",
        "Almacén (6)",
        "Contabilidad (8)",
        "Tesorería (9)",
        "Banco FP360 (16)",
        "FP360 SIM (21)"
      ],
      "case": "El gerente observa una previsión de déficit a 15 días, comprueba una factura pendiente, encarga una gestión de cobro y autoriza solicitar condiciones bancarias. El cuadro de mando cambia solo tras confirmarse las operaciones.",
      "assessment": [
        "identificar indicadores y su procedencia",
        "justificar una decisión con evidencias",
        "priorizar tareas empresariales",
        "valorar el efecto de una medida sobre tesorería y márgenes"
      ],
      "exceptions": [
        "indicador sin datos suficientes",
        "cierre contable reabierto",
        "doble contabilización",
        "consulta cruzada entre empresas no autorizada"
      ],
      "id": 1
    },
    {
      "title": "CRM y contactos",
      "domain": "ERP empresarial",
      "goal": "Gestionar relaciones con clientes y proveedores, oportunidades de negocio y comunicaciones comerciales desde un expediente único y trazable.",
      "roles": "Personal comercial; compras; atención al cliente; dirección; docente",
      "flow": [
        "Dar de alta una organización y clasificarla como cliente, proveedor o ambas",
        "incorporar personas de contacto y canales permitidos",
        "comprobar duplicados antes de crear la ficha",
        "registrar la primera interacción y la necesidad comercial",
        "abrir una oportunidad con importe y probabilidad orientativos",
        "preparar seguimiento y generar tarea o presupuesto",
        "actualizar fase comercial después de la respuesta",
        "documentar resultado y analizar la conversión de oportunidades"
      ],
      "views": [
        {
          "nombre": "Directorio",
          "informacion_visible": "Tabla de empresas, contactos, tipo de relación, estado y última interacción; panel lateral con ficha seleccionada",
          "acciones": "Nuevo contacto, buscar, filtrar, fusionar duplicados",
          "validacion": "Diferenciar empresas del mercado simulado de contactos de mentoría real."
        },
        {
          "nombre": "Ficha de empresa",
          "informacion_visible": "Datos identificativos ficticios, direcciones, actividad, condiciones, etiquetas y saldo comercial",
          "acciones": "Editar, añadir contacto, registrar actividad",
          "validacion": "Evitar duplicados por ID de empresa de la red."
        },
        {
          "nombre": "Contactos y personas",
          "informacion_visible": "Lista de interlocutores, puesto, canal interno y preferencias de comunicación",
          "acciones": "Añadir, cambiar responsable y desactivar",
          "validacion": "No publicar teléfonos reales de menores."
        },
        {
          "nombre": "Oportunidades",
          "informacion_visible": "Tablero de fases: nuevo, cualificación, oferta, negociación, ganado/perdido",
          "acciones": "Mover fase, crear presupuesto y programar seguimiento",
          "validacion": "Cambios requieren motivo y son auditables."
        },
        {
          "nombre": "Actividades",
          "informacion_visible": "Llamadas simuladas, reuniones, correos, tareas y recordatorios con responsables",
          "acciones": "Registrar contacto, adjuntar documento",
          "validacion": "Toda actividad mantiene referencia a su oportunidad."
        },
        {
          "nombre": "Historial y análisis",
          "informacion_visible": "Conversaciones, pedidos, reclamaciones y tasas de conversión por campaña",
          "acciones": "Exportar vista, segmentar",
          "validacion": "Acceso limitado a empresa y docentes autorizados."
        }
      ],
      "fields": [
        "cliente_id",
        "empresa_red_id",
        "denominacion_ficticia",
        "nif_sintetico",
        "direccion_ficticia",
        "contacto_id",
        "rol_contacto",
        "clasificacion",
        "responsable_comercial",
        "fase_oportunidad",
        "valor_estimado",
        "fecha_siguiente_accion",
        "canal_comunicacion"
      ],
      "rules": [
        "La identidad principal de una empresa de la red se sincroniza con Mercado FP360",
        "ningún cambio del CRM altera documentos ya emitidos",
        "se muestran los roles cliente y proveedor simultáneamente",
        "el pipeline no crea ventas contables por sí solo",
        "todos los datos de prueba son sintéticos"
      ],
      "connections": [
        "Mercado FP360 (15)",
        "Ventas (3)",
        "Compras (4)",
        "Atención al cliente (12)",
        "Comunicaciones (20)",
        "Dirección (1)"
      ],
      "case": "La empresa identifica un centro comprador de mobiliario, registra la necesidad, programa una presentación, genera un presupuesto y actualiza la oportunidad tras su aceptación o rechazo.",
      "assessment": [
        "clasificar contactos comerciales",
        "registrar interacciones completas",
        "mantener un expediente sin duplicados",
        "justificar la evolución y cierre de una oportunidad"
      ],
      "exceptions": [
        "cliente y proveedor duplicados",
        "interlocutor ausente",
        "empresa desconectada de la campaña",
        "pérdida de oportunidad por vencimiento"
      ],
      "id": 2
    },
    {
      "title": "Ventas y facturación",
      "domain": "ERP empresarial",
      "goal": "Gestionar íntegramente el ciclo de venta B2B simulado: presupuesto, pedido, reserva, albarán, factura, cobro y posibles rectificaciones, con reglas fiscales canarias.",
      "roles": "Equipo comercial; facturación; almacén; contabilidad; tesorería; empresa compradora",
      "flow": [
        "Recibir petición de oferta procedente del mercado o CRM",
        "revisar catálogo, stock, tarifas y condiciones",
        "generar presupuesto con vigencia y condiciones",
        "registrar aceptación y convertir oferta en pedido sin duplicar datos",
        "reservar existencias y solicitar preparación al almacén",
        "confirmar entrega simulada con albarán",
        "emitir factura con desglose de base, IGIC aplicable y total",
        "enviar la factura a la empresa cliente y registrar derecho de cobro",
        "conciliar el pago recibido o tramitar incidencia/rectificativa"
      ],
      "views": [
        {
          "nombre": "Centro de ventas",
          "informacion_visible": "Tarjetas de presupuestos, facturación, cobros pendientes y tabla de documentos",
          "acciones": "Crear presupuesto, pedido o factura; filtrar por estado",
          "validacion": "Los totales dependen de documentos confirmados."
        },
        {
          "nombre": "Presupuestos",
          "informacion_visible": "Editor con cliente, vigencia, productos, cantidades, descuentos, tipos de IGIC y condiciones",
          "acciones": "Guardar borrador, enviar, convertir en pedido",
          "validacion": "Una aceptación identifica versión y fecha."
        },
        {
          "nombre": "Pedidos",
          "informacion_visible": "Listado por cliente, estado de aprobación y disponibilidad de almacén",
          "acciones": "Confirmar, reservar stock, enviar a logística",
          "validacion": "Bloquear la expedición de unidades no disponibles."
        },
        {
          "nombre": "Albaranes",
          "informacion_visible": "Preparación, entregas completas o parciales y justificante de recepción",
          "acciones": "Emitir albarán, marcar recepción, devolver",
          "validacion": "Las cantidades servidas no exceden las del pedido."
        },
        {
          "nombre": "Facturas",
          "informacion_visible": "Formulario de series, fecha, líneas, base, IGIC, vencimiento y referencia al pedido",
          "acciones": "Emitir, guardar borrador, crear rectificativa",
          "validacion": "Numeración única y bloqueo de edición de emitidas."
        },
        {
          "nombre": "Cobros y seguimiento",
          "informacion_visible": "Vencimientos, pagos parciales, reclamaciones y conciliación con Banco FP360",
          "acciones": "Solicitar cobro, conciliar, reclamar",
          "validacion": "No marcar cobrada sin asiento/operación de pago válida."
        },
        {
          "nombre": "Trazabilidad",
          "informacion_visible": "Línea temporal presupuesto → pedido → albarán → factura → cobro",
          "acciones": "Abrir cada documento vinculado",
          "validacion": "Un documento conserva identificadores de toda la cadena."
        }
      ],
      "fields": [
        "serie_factura",
        "numero_factura",
        "cliente_id",
        "presupuesto_id",
        "pedido_id",
        "albaran_id",
        "producto_id",
        "unidades",
        "precio_unitario",
        "descuento",
        "base_igic",
        "tipo_igic",
        "cuota_igic",
        "total",
        "fecha_vencimiento",
        "estado_cobro"
      ],
      "rules": [
        "Numeración de factura única por serie y empresa",
        "IGIC parametrizable según operación simulada",
        "no confundir IVA con IGIC ni usar supuestos peninsulares en el piloto",
        "importes recalculados en servidor",
        "facturas emitidas inmutables salvo procedimientos de rectificación",
        "entregas parciales deben originar documentos coherentes",
        "todas las facturas indican SIMULACIÓN SIN VALIDEZ FISCAL"
      ],
      "connections": [
        "CRM (2)",
        "Productos (5)",
        "Almacén (6)",
        "Logística (7)",
        "Contabilidad (8)",
        "Tesorería (9)",
        "Mercado (15)",
        "Banco (16)",
        "Hacienda (17)"
      ],
      "case": "Un proveedor vende cinco portátiles a una empresa de otro instituto; se aceptan precios, se sirven cuatro unidades y se factura solo la parte entregada. La quinta se despacha posteriormente y genera el documento correspondiente.",
      "assessment": [
        "confeccionar y revisar documentos mercantiles",
        "calcular bases y cuotas de IGIC",
        "mantener trazabilidad documental",
        "analizar consecuencias de retrasos y cobros parciales"
      ],
      "exceptions": [
        "stock insuficiente",
        "cliente rechaza albarán",
        "error de tipo IGIC",
        "cobro parcial",
        "rectificativa",
        "petición duplicada"
      ],
      "id": 3
    },
    {
      "title": "Compras y aprovisionamiento",
      "domain": "ERP empresarial",
      "goal": "Planificar y documentar la adquisición simulada de bienes o servicios, comparando proveedores, aprobando condiciones y verificando la recepción y factura recibida.",
      "roles": "Compras; almacén; dirección; tesorería; proveedores de la red",
      "flow": [
        "Detectar una necesidad de reposición o de servicio",
        "generar solicitud interna con cantidades y fecha límite",
        "buscar proveedores activos en el mercado",
        "pedir y recibir ofertas comparables",
        "valorar precio total, plazo, calidad y condiciones de pago",
        "aprobar proveedor dentro del nivel de autorización",
        "emitir pedido de compra",
        "registrar albarán y conformidad o incidencia a la recepción",
        "contrastar pedido, entrega y factura recibida antes de ordenar su pago"
      ],
      "views": [
        {
          "nombre": "Solicitudes",
          "informacion_visible": "Bandeja con departamento solicitante, urgencia, producto, presupuesto y estado",
          "acciones": "Nueva solicitud, aprobar, solicitar corrección",
          "validacion": "Aprobaciones por umbral y responsable."
        },
        {
          "nombre": "Comparador de ofertas",
          "informacion_visible": "Matriz de proveedores, precio con IGIC, plazo, portes y criterios ponderados",
          "acciones": "Solicitar oferta, seleccionar, justificar elección",
          "validacion": "Comparar magnitudes homogéneas, no solo precio."
        },
        {
          "nombre": "Pedidos",
          "informacion_visible": "Tabla de pedidos, fecha, entrega esperada, importes y estados",
          "acciones": "Crear, confirmar, cancelar con motivo",
          "validacion": "No comprar a proveedor inactivo o no autorizado."
        },
        {
          "nombre": "Recepciones",
          "informacion_visible": "Pantalla de recepción contra pedido; diferencias de unidades y calidad",
          "acciones": "Aceptar, aceptar parcialmente, reclamar",
          "validacion": "Generar entrada de almacén solo por recepción confirmada."
        },
        {
          "nombre": "Facturas recibidas",
          "informacion_visible": "Comparación automática pedido/albarán/factura y vencimiento",
          "acciones": "Conformar, bloquear, solicitar rectificación",
          "validacion": "Diferencias relevantes requieren incidencia."
        },
        {
          "nombre": "Proveedores y análisis",
          "informacion_visible": "Histórico de precios, puntualidad y reclamaciones por proveedor",
          "acciones": "Evaluar, cambiar proveedor",
          "validacion": "Evaluación basada en operaciones registradas."
        }
      ],
      "fields": [
        "solicitud_id",
        "departamento",
        "producto_id",
        "stock_minimo",
        "cantidad_solicitada",
        "proveedor_id",
        "ofertas_comparadas",
        "puntuacion_oferta",
        "autorizador",
        "pedido_compra_id",
        "recepcion_id",
        "factura_recibida_id",
        "coste_total",
        "vencimiento"
      ],
      "rules": [
        "Los pedidos aprobados modifican cantidades en tránsito, no existencias disponibles",
        "recepción y factura no se registran dos veces",
        "se exige motivo de elección de proveedor",
        "se verifican límites de presupuesto",
        "el IGIC se trata conforme al régimen simulado configurado"
      ],
      "connections": [
        "Productos (5)",
        "Almacén (6)",
        "Mercado (15)",
        "Ventas de proveedor (3)",
        "Tesorería (9)",
        "Contabilidad (8)",
        "Atención (12)"
      ],
      "case": "Una empresa detecta insuficiencia de papel A4, solicita ofertas de tres empresas canarias, elige una con precio más alto pero entrega inmediata y justifica documentalmente su decisión.",
      "assessment": [
        "formular solicitudes y pedidos",
        "analizar ofertas comparables",
        "comprobar documentos de recepción",
        "tramitar discrepancias con el proveedor"
      ],
      "exceptions": [
        "oferta caducada",
        "recepción inferior a pedido",
        "duplicado de factura",
        "proveedor sin disponibilidad",
        "falta de tesorería"
      ],
      "id": 4
    },
    {
      "title": "Productos y servicios",
      "domain": "ERP empresarial",
      "goal": "Definir el catálogo comercial y técnico que utilizan compras, ventas, almacén, proyectos y el mercado intercentros.",
      "roles": "Comercial; almacén; dirección; responsable del catálogo; docente",
      "flow": [
        "Definir una familia de productos o servicios",
        "dar de alta una referencia inequívoca",
        "establecer descripción, unidad, naturaleza y categoría",
        "asignar precios de coste y venta, impuestos simulados y descuentos autorizados",
        "configurar si controla existencias o se presta como servicio",
        "publicar la ficha en el catálogo interno",
        "aprobar su publicación opcional en Mercado FP360",
        "revisar cambios de tarifa sin alterar documentos históricos",
        "analizar rotación, márgenes y obsolescencia"
      ],
      "views": [
        {
          "nombre": "Catálogo",
          "informacion_visible": "Buscador por referencia, imagen, familia, estado, margen y disponibilidad",
          "acciones": "Crear producto, duplicar plantilla, archivar",
          "validacion": "Referencia única por empresa."
        },
        {
          "nombre": "Ficha de producto",
          "informacion_visible": "Nombre, imagen, descripción, variantes, unidades y categoría",
          "acciones": "Editar datos maestros y adjuntar ficha",
          "validacion": "Identificar si es bien inventariable o servicio."
        },
        {
          "nombre": "Precios y condiciones",
          "informacion_visible": "Tarifa base, coste, margen, descuentos, vigencia y reglas fiscales",
          "acciones": "Versionar tarifa, simular margen",
          "validacion": "Los cambios no modifican ventas ya emitidas."
        },
        {
          "nombre": "Existencias",
          "informacion_visible": "Stock actual, reservado, disponible, mínimo, almacén y movimientos",
          "acciones": "Ver movimientos, definir reposición",
          "validacion": "No permitir stock negativo salvo caso didáctico autorizado."
        },
        {
          "nombre": "Publicación B2B",
          "informacion_visible": "Ficha y precio ofertados a centros de la red, política de pedido y tiempo de preparación",
          "acciones": "Publicar/despublicar, vista previa",
          "validacion": "Solo campos comerciales autorizados se hacen visibles."
        },
        {
          "nombre": "Análisis de catálogo",
          "informacion_visible": "Productos más vendidos, baja rotación, rentabilidad, incidencias",
          "acciones": "Filtrar, exportar",
          "validacion": "Margen calculado con base documentada."
        }
      ],
      "fields": [
        "sku",
        "nombre",
        "descripcion",
        "familia",
        "unidad_medida",
        "tipo_item",
        "coste_referencia",
        "tarifa_venta",
        "descuento_maximo",
        "tipo_igic",
        "control_stock",
        "stock_minimo",
        "lead_time",
        "estado_publicacion"
      ],
      "rules": [
        "Los artículos retirados se mantienen en documentos históricos",
        "no permitir SKU repetidos",
        "productos sin control de almacén no generan reservas",
        "tipo IGIC se determina con reglas parametrizadas y revisión docente",
        "precios del mercado requieren aprobación de publicación"
      ],
      "connections": [
        "Ventas (3)",
        "Compras (4)",
        "Almacén (6)",
        "Logística (7)",
        "Mercado (15)",
        "Proyectos (13)"
      ],
      "case": "El alumnado crea un catálogo de materiales de oficina, establece costes, márgenes y stock mínimo; publica tres referencias y recibe un pedido real dentro de la simulación.",
      "assessment": [
        "crear fichas técnicamente completas",
        "justificar costes y precios",
        "clasificar correctamente productos/servicios",
        "aplicar control de cambios en tarifas"
      ],
      "exceptions": [
        "producto con historial retirado",
        "fotografía inexistente",
        "cambio de impuesto",
        "precio de venta inferior al coste",
        "referencia duplicada"
      ],
      "id": 5
    },
    {
      "title": "Almacén e inventario",
      "domain": "ERP empresarial",
      "goal": "Controlar las unidades físicamente simuladas, reservas, entradas, salidas, recuentos, ubicaciones y trazabilidad de movimientos vinculados a compras y ventas.",
      "roles": "Almacén; compras; ventas; logística; inventarista; docente",
      "flow": [
        "Consultar existencias disponibles y reservas",
        "identificar pedidos que requieren preparación",
        "recepcionar mercancía conforme a albarán proveedor",
        "asignar ubicación y lote cuando proceda",
        "reservar unidades para pedidos de clientes",
        "preparar salida y registrar expedición",
        "gestionar devoluciones con inspección y retorno a stock cuando sea correcto",
        "realizar inventario periódico y proponer ajustes autorizados",
        "generar alertas de reposición y actualizar costes documentados"
      ],
      "views": [
        {
          "nombre": "Resumen de almacén",
          "informacion_visible": "KPIs de unidades, productos críticos, entradas y salidas; distribución por categorías",
          "acciones": "Filtrar y abrir una alerta",
          "validacion": "Mostrar stock físico, reservado y disponible separados."
        },
        {
          "nombre": "Inventario",
          "informacion_visible": "Tabla SKU, producto, ubicación, mínimo, actual y estado",
          "acciones": "Editar ubicación, ver ficha, iniciar recuento",
          "validacion": "No editar cantidades directamente sin movimiento."
        },
        {
          "nombre": "Movimientos",
          "informacion_visible": "Registro cronológico de entradas, salidas, transferencias y devoluciones",
          "acciones": "Registrar movimiento autorizado, ver documento origen",
          "validacion": "Toda variación debe conservar causal y autor."
        },
        {
          "nombre": "Recepción",
          "informacion_visible": "Escaneo o selección de pedido y control de unidades recibidas",
          "acciones": "Aceptar, rechazar, marcar incidencia",
          "validacion": "No recepcionar más que lo permitido sin autorización."
        },
        {
          "nombre": "Preparación y expedición",
          "informacion_visible": "Lista de picking, reservas, bultos, albaranes y expediciones",
          "acciones": "Confirmar picking, entregar a logística",
          "validacion": "Prevención de doble despacho."
        },
        {
          "nombre": "Inventarios y ajustes",
          "informacion_visible": "Recuento ciego, diferencias, motivo y autorización",
          "acciones": "Iniciar recuento, proponer ajuste, aprobar",
          "validacion": "Se preserva historial antes/después."
        },
        {
          "nombre": "Alertas y reposición",
          "informacion_visible": "Umbrales mínimos, rotura de stock, vencimientos y sobredimensionamientos",
          "acciones": "Generar solicitud de compra",
          "validacion": "Alertas no generan pedidos finales sin control."
        }
      ],
      "fields": [
        "sku",
        "almacen_id",
        "ubicacion_id",
        "stock_fisico",
        "stock_reservado",
        "stock_disponible",
        "stock_en_transito",
        "movimiento_id",
        "origen_documental",
        "cantidad",
        "unidad",
        "fecha_simulada",
        "motivo_ajuste",
        "autorizador"
      ],
      "rules": [
        "La suma de movimientos concilia existencias",
        "no permitir salida superior a disponible",
        "reservas caducan o se liberan",
        "los ajustes requieren doble control",
        "cada recepción debe vincular un pedido o entrada justificada",
        "mercancía dañada se bloquea para venta"
      ],
      "connections": [
        "Compras (4)",
        "Ventas (3)",
        "Productos (5)",
        "Logística (7)",
        "Dirección (1)",
        "FP360 SIM (21)"
      ],
      "case": "El sistema anuncia stock de papel inferior al mínimo; el almacén solicita reposición, recibe una entrega parcial y prepara un pedido que estaba reservado para otro centro.",
      "assessment": [
        "calcular stock disponible correctamente",
        "documentar entrada/salida",
        "detectar diferencias de inventario",
        "organizar ubicaciones y preparación de pedidos"
      ],
      "exceptions": [
        "doble recepción",
        "expedición de reserva ajena",
        "discrepancia de recuento",
        "devolución defectuosa",
        "stock negativo"
      ],
      "id": 6
    },
    {
      "title": "Logística y distribución",
      "domain": "ERP empresarial",
      "goal": "Gestionar la preparación, expedición, transporte ficticio, recepción y seguimiento de entregas entre empresas simuladas dentro de Canarias.",
      "roles": "Logística; almacén; clientes; transporte simulado; atención; docente",
      "flow": [
        "Recibir expedición desde almacén con albarán validado",
        "comprobar dirección y franja de entrega simulada",
        "agrupar bultos y asignar ruta/coste didáctico",
        "generar etiqueta y hoja de ruta sin datos personales reales",
        "comunicar salida a destinatario",
        "registrar hitos de tránsito simulado",
        "solicitar conformidad del receptor",
        "cerrar entrega y transmitir incidencia a atención al cliente",
        "evaluar puntualidad y coste de distribución"
      ],
      "views": [
        {
          "nombre": "Expediciones",
          "informacion_visible": "Listado de órdenes, bultos, destinatario, origen y estado",
          "acciones": "Crear expedición, asignar responsable",
          "validacion": "Exigir albarán y mercancía preparada."
        },
        {
          "nombre": "Planificador de rutas",
          "informacion_visible": "Rutas entre islas/localidades simuladas, prioridades y cargas",
          "acciones": "Asignar ruta y fecha",
          "validacion": "No inferir distancias ni costes reales sin base validada."
        },
        {
          "nombre": "Seguimiento",
          "informacion_visible": "Línea de estados preparado, expedido, en tránsito, entregado, incidencia",
          "acciones": "Actualizar hito, notificar",
          "validacion": "Estados secuenciales y auditados."
        },
        {
          "nombre": "Entregas y conformidad",
          "informacion_visible": "Acta de recepción, cantidades y observaciones de destinatario",
          "acciones": "Confirmar entrega, registrar falta",
          "validacion": "Receptor y emisor obtienen documento compartido."
        },
        {
          "nombre": "Incidencias",
          "informacion_visible": "Roturas, retrasos, dirección errónea y devoluciones",
          "acciones": "Abrir caso, adjuntar evidencia",
          "validacion": "Incidencia debe afectar a estado de pedido y factura cuando proceda."
        },
        {
          "nombre": "Análisis logístico",
          "informacion_visible": "Plazos, entregas correctas, incidencias y coste por operación",
          "acciones": "Comparar periodos y transportistas",
          "validacion": "Indicadores calculados sobre entregas cerradas."
        }
      ],
      "fields": [
        "expedicion_id",
        "albaran_id",
        "pedido_id",
        "empresa_origen",
        "empresa_destino",
        "numero_bultos",
        "transportista_simulado",
        "ruta_id",
        "fecha_salida",
        "fecha_estimada",
        "fecha_entrega",
        "estado_entrega",
        "incidencia_id",
        "conformidad_receptor"
      ],
      "rules": [
        "Solo envíos dentro del ámbito canario del piloto",
        "no generar salida logística sin salida de almacén",
        "registros de entrega aceptados por receptor",
        "gestionar entrega parcial",
        "el transporte es ficticio y no implica movimiento físico real entre centros"
      ],
      "connections": [
        "Ventas (3)",
        "Almacén (6)",
        "Mercado (15)",
        "Atención (12)",
        "Comunicaciones (20)",
        "Contabilidad (8)"
      ],
      "case": "Una empresa logística simulada entrega 15 paquetes a una empresa cliente; cuatro llegan con incidencia y se activa un expediente de devolución y rectificación documental.",
      "assessment": [
        "crear expediciones coherentes",
        "reconocer hitos y documentación",
        "resolver incidencias logísticas",
        "analizar costes y tiempos"
      ],
      "exceptions": [
        "envío duplicado",
        "destinatario ausente",
        "devolución parcial",
        "entrega rechazada",
        "falta de conformidad"
      ],
      "id": 7
    },
    {
      "title": "Contabilidad",
      "domain": "ERP empresarial",
      "goal": "Registrar y revisar operaciones económicas de acuerdo con el plan contable didáctico, elaborar libros y estados y mantener correspondencia con documentos de origen.",
      "roles": "Contabilidad; dirección; tesorería; personal evaluador",
      "flow": [
        "Definir ejercicio y plan de cuentas de la empresa",
        "importar documentos confirmados de compras, ventas y nóminas",
        "proponer asientos automáticos como borrador para su revisión educativa",
        "comprobar cuentas, bases e importes",
        "registrar asiento con equilibrio Debe/Haber",
        "consultar libro diario, mayor y balance de sumas y saldos",
        "realizar periodificaciones y regularización previstas en el caso",
        "cerrar periodo y preparar cuentas o informes",
        "corregir mediante contrasiento o procedimiento autorizado"
      ],
      "views": [
        {
          "nombre": "Cuadro contable",
          "informacion_visible": "Saldo bancos, resultados, asientos pendientes y estado de cierre",
          "acciones": "Nuevo asiento, revisar pendientes",
          "validacion": "Datos derivados del diario confirmado."
        },
        {
          "nombre": "Libro diario",
          "informacion_visible": "Asientos numerados con fecha, concepto, origen y Debe/Haber",
          "acciones": "Registrar, inspeccionar, filtrar",
          "validacion": "No confirmar asientos descuadrados."
        },
        {
          "nombre": "Detalle de asiento",
          "informacion_visible": "Panel con líneas contables, cuenta, concepto y saldo",
          "acciones": "Guardar borrador, revisar, contabilizar",
          "validacion": "Equilibrio al céntimo y cuenta válida."
        },
        {
          "nombre": "Plan contable",
          "informacion_visible": "Árbol de grupos, subgrupos y cuentas configuradas",
          "acciones": "Crear subcuenta, consultar ficha",
          "validacion": "Preservar estructura y naturaleza contable."
        },
        {
          "nombre": "Mayor",
          "informacion_visible": "Movimientos por cuenta y acumulación de cargos y abonos",
          "acciones": "Seleccionar cuenta, navegar origen",
          "validacion": "Debe coincidir con el diario."
        },
        {
          "nombre": "Balances y resultados",
          "informacion_visible": "Sumas y saldos, balance de situación y pérdidas y ganancias didácticas",
          "acciones": "Generar informe, exportar",
          "validacion": "No cerrar si hay asientos obligatorios pendientes."
        },
        {
          "nombre": "Cierre contable",
          "informacion_visible": "Checklist de conciliación, ajustes, regularización y apertura siguiente periodo",
          "acciones": "Validar cierre y generar apertura",
          "validacion": "Cierre reversible solo con autorización docente."
        }
      ],
      "fields": [
        "ejercicio",
        "periodo_contable",
        "asiento_id",
        "fecha_asiento",
        "cuenta_codigo",
        "cuenta_descripcion",
        "debe",
        "haber",
        "documento_origen",
        "tercero_id",
        "estado_asiento",
        "motivo_rectificacion",
        "usuario_validador"
      ],
      "rules": [
        "Igualdad Debe=Haber",
        "números de asiento consecutivos por ejercicio",
        "documentos confirmados no crean asientos duplicados",
        "IGIC soportado y repercutido se registran según plan simulado",
        "ninguna acción permite alterar un asiento confirmado sin traza",
        "anotaciones pedagógicas no constituyen contabilidad real"
      ],
      "connections": [
        "Ventas (3)",
        "Compras (4)",
        "Nóminas (11)",
        "Tesorería (9)",
        "Banco (16)",
        "Hacienda (17)",
        "Evaluación (23)"
      ],
      "case": "La empresa recibe una factura de material y genera un asiento de compra con IGIC; luego registra su pago y comprueba el mayor del proveedor, la conciliación y el balance.",
      "assessment": [
        "identificar cuentas y naturaleza de saldo",
        "registrar asientos equilibrados",
        "vincular hecho y documento",
        "elaborar e interpretar balances"
      ],
      "exceptions": [
        "asiento descuadrado",
        "periodo cerrado",
        "doble asiento de factura",
        "cuenta inexistente",
        "rectificación posterior"
      ],
      "id": 8
    },
    {
      "title": "Tesorería",
      "domain": "ERP empresarial",
      "goal": "Planificar liquidez y gestionar vencimientos, órdenes de cobro y pago, riesgos de impago y conciliaciones con el banco virtual.",
      "roles": "Tesorería; administración; dirección; banco; clientes/proveedores",
      "flow": [
        "Consultar saldo conciliado y saldo disponible",
        "importar vencimientos de facturas y nóminas",
        "elaborar previsión temporal de entradas y salidas",
        "detectar déficit o exceso previsto",
        "proponer actuaciones de cobro, aplazamiento o financiación",
        "solicitar autorización según importe",
        "generar orden de pago o solicitud de cobro",
        "conciliar movimientos devueltos por Banco FP360",
        "ajustar previsión y emitir informe de tesorería"
      ],
      "views": [
        {
          "nombre": "Resumen financiero",
          "informacion_visible": "Saldos, cobros y pagos a 30 días, alertas y curvas por semanas",
          "acciones": "Cambiar horizonte, abrir escenario",
          "validacion": "Saldo bancario y previsión son conceptos distintos."
        },
        {
          "nombre": "Cobros",
          "informacion_visible": "Cartera de facturas, fechas de vencimiento, pagos parciales e incidencias",
          "acciones": "Registrar previsión, reclamar, conciliar",
          "validacion": "Ninguna previsión equivale a cobro efectivo."
        },
        {
          "nombre": "Pagos",
          "informacion_visible": "Calendario de proveedores, nóminas y tributos simulados",
          "acciones": "Preparar remesa, autorizar, enviar al banco",
          "validacion": "Evitar pagos duplicados y fuera de autorización."
        },
        {
          "nombre": "Previsión",
          "informacion_visible": "Calendario de flujo de caja y supuestos de retrasos",
          "acciones": "Simular escenarios, comparar",
          "validacion": "Recalcular sin mutar datos reales hasta aprobar."
        },
        {
          "nombre": "Conciliación",
          "informacion_visible": "Movimientos bancarios versus apuntes y documentos internos",
          "acciones": "Conciliar, investigar diferencia",
          "validacion": "No conciliar importes incompatibles por defecto."
        },
        {
          "nombre": "Financiación",
          "informacion_visible": "Comparador de préstamo, póliza, aplazamiento y descuento",
          "acciones": "Solicitar producto, analizar coste",
          "validacion": "Oferta y aprobación proceden de Banco FP360."
        },
        {
          "nombre": "Informes",
          "informacion_visible": "Riesgo de liquidez, antigüedad de saldos y previsiones",
          "acciones": "Exportar y remitir a dirección",
          "validacion": "Mostrar supuestos utilizados."
        }
      ],
      "fields": [
        "cuenta_virtual_id",
        "saldo_contable",
        "saldo_banco",
        "saldo_disponible",
        "fecha_vencimiento",
        "flujo_tipo",
        "flujo_importe",
        "probabilidad_cobro",
        "orden_pago_id",
        "remesa_id",
        "conciliacion_id",
        "financiacion_id",
        "escenario_id"
      ],
      "rules": [
        "No duplicar órdenes ya procesadas",
        "ningún pago altera saldo sin asiento bancario",
        "flujo proyectado no cambia saldos",
        "detectar saldos negativos según límites bancarios",
        "descuento de efectos solo sobre efectos elegibles",
        "separar calendario fiscal real y simulado"
      ],
      "connections": [
        "Ventas (3)",
        "Compras (4)",
        "Contabilidad (8)",
        "Banco (16)",
        "Hacienda (17)",
        "Seguridad Social (18)",
        "FP360 SIM (21)"
      ],
      "case": "Un cliente se retrasa quince días y quedan 4.500 € por pagar; el alumnado calcula la brecha, solicita una póliza simulada y compara su coste con el aplazamiento al proveedor.",
      "assessment": [
        "interpretar previsiones y saldos",
        "priorizar obligaciones",
        "evaluar costes de financiación",
        "realizar conciliación documentada"
      ],
      "exceptions": [
        "cobro duplicado",
        "transferencia rechazada",
        "vencimiento en festivo simulado",
        "falta de fondos",
        "devolución bancaria"
      ],
      "id": 9
    },
    {
      "title": "Recursos humanos",
      "domain": "ERP empresarial",
      "goal": "Administrar el ciclo laboral simulado: selección, expediente, contratación, condiciones, calendario, incidencias y bajas de personal.",
      "roles": "Recursos humanos; dirección; nóminas; Seguridad Social FP360; Empleo FP360",
      "flow": [
        "Detectar necesidad de personal en una empresa",
        "elaborar descripción del puesto y perfil",
        "registrar candidaturas totalmente ficticias",
        "seleccionar con criterios objetivos y autorización",
        "preparar contrato educativo y condiciones",
        "remitir alta a Seguridad Social FP360 y comunicación a Empleo FP360",
        "administrar jornada, ausencias, vacaciones e incidencias",
        "comunicar variables mensuales a Nóminas",
        "tramitar modificación o baja documentada y conservar expediente"
      ],
      "views": [
        {
          "nombre": "Plantilla",
          "informacion_visible": "Tabla empleados, departamento, puesto, contrato, jornada, alta y estado",
          "acciones": "Nuevo expediente, filtrar y seleccionar",
          "validacion": "Datos personales sintéticos y permisos estrictos."
        },
        {
          "nombre": "Ficha de personal",
          "informacion_visible": "Datos básicos ficticios, categoría, convenio simulado, cuenta virtual y documentos",
          "acciones": "Editar, anexar, consultar historial",
          "validacion": "Cambios efectivos por fecha, no retroactivos sin motivo."
        },
        {
          "nombre": "Selección",
          "informacion_visible": "Vacantes, perfiles, pruebas y resolución motivada",
          "acciones": "Publicar vacante interna, seleccionar",
          "validacion": "Registro de criterios no discriminatorios."
        },
        {
          "nombre": "Contratos",
          "informacion_visible": "Modelos educativos de contratos y modificaciones",
          "acciones": "Generar, revisar, confirmar",
          "validacion": "No utilizar formularios como trámites oficiales."
        },
        {
          "nombre": "Jornada y ausencias",
          "informacion_visible": "Calendarios, vacaciones, permisos, incidencias y responsables",
          "acciones": "Solicitar, aprobar, corregir",
          "validacion": "Solapamientos y límites según reglas didácticas."
        },
        {
          "nombre": "Altas y bajas",
          "informacion_visible": "Expedientes pendientes, comunicaciones y fechas",
          "acciones": "Enviar a SS/Empleo simulados",
          "validacion": "Comprobar coherencia contrato/alta."
        },
        {
          "nombre": "Informes de personal",
          "informacion_visible": "Estructura, rotación, absentismo y vencimientos",
          "acciones": "Exportar, alertar a dirección",
          "validacion": "Acceso restringido a roles permitidos."
        }
      ],
      "fields": [
        "empleado_id",
        "identificador_ficticio",
        "fecha_alta",
        "puesto",
        "departamento",
        "tipo_contrato",
        "jornada",
        "grupo_cotizacion",
        "salario_base",
        "convenio_simulado",
        "cuenta_banco_virtual",
        "incidencia_laboral",
        "fecha_baja"
      ],
      "rules": [
        "No emplear datos reales de estudiantes para expedientes ficticios",
        "contrato y alta deben compartir fecha coherente",
        "cambios laborales producen versiones",
        "ausencias aprobadas alimentan cálculo de nómina",
        "las decisiones sensibles requieren revisión docente cuando el escenario lo establezca"
      ],
      "connections": [
        "Nóminas (11)",
        "Seguridad Social (18)",
        "Empleo (19)",
        "Banco (16)",
        "Comunicaciones (20)",
        "Evaluación (23)"
      ],
      "case": "La empresa obtiene un pedido extraordinario, abre una vacante temporal ficticia, selecciona una candidatura, completa contrato y comunica el alta antes de procesar su primera nómina.",
      "assessment": [
        "preparar documentación laboral",
        "gestionar altas y calendario",
        "registrar incidencias correctamente",
        "cumplir secuencia de operaciones"
      ],
      "exceptions": [
        "contrato incompatible con fecha",
        "solapamiento de vacaciones",
        "alta no confirmada",
        "baja retroactiva",
        "información laboral no autorizada"
      ],
      "id": 10
    },
    {
      "title": "Nóminas",
      "domain": "ERP empresarial",
      "goal": "Calcular, comprobar, emitir y contabilizar nóminas simuladas, incorporando devengos, deducciones, retenciones y cotizaciones aplicables al supuesto.",
      "roles": "Técnico de nóminas; recursos humanos; contabilidad; tesorería; Seguridad Social FP360",
      "flow": [
        "Recibir plantilla laboral y novedades del periodo",
        "verificar jornada, salarios y conceptos pactados",
        "incorporar incidencias de vacaciones, ausencias, anticipos y complementos",
        "calcular devengos y bases configuradas",
        "determinar aportaciones y retenciones con parámetros vigentes del caso",
        "generar recibos de salarios y revisión de diferencias",
        "cerrar la nómina tras aprobación",
        "enviar asiento a contabilidad, transferencia al banco y datos de cotización a Seguridad Social simulada",
        "corregir mediante recalculo versionado o nómina complementaria simulada"
      ],
      "views": [
        {
          "nombre": "Resumen de nóminas",
          "informacion_visible": "Importe bruto, neto, coste empresa, estados y periodo de liquidación",
          "acciones": "Iniciar cálculo, cerrar periodo",
          "validacion": "Mostrar resultados por empleado y totales."
        },
        {
          "nombre": "Nóminas del mes",
          "informacion_visible": "Tabla por empleado con bruto, deducciones, líquido y estado",
          "acciones": "Abrir, recalcular, aprobar",
          "validacion": "Solo personal activo con condiciones válidas."
        },
        {
          "nombre": "Editor de recibo",
          "informacion_visible": "Plantilla didáctica semejante al recibo salarial: devengos, bases, retenciones y firma simulada",
          "acciones": "Editar incidencias, recalcular, descargar",
          "validacion": "Fórmulas deterministas y trazables."
        },
        {
          "nombre": "Conceptos salariales",
          "informacion_visible": "Catálogo de conceptos, frecuencia, tratamiento y límites",
          "acciones": "Alta de concepto, vincular puesto",
          "validacion": "No combinar reglas incompatibles."
        },
        {
          "nombre": "Incidencias y variables",
          "informacion_visible": "Horas, ausencias, anticipos, complementos e inicio/fin de contrato",
          "acciones": "Importar desde RR. HH., validar",
          "validacion": "Cambios tras cierre requieren revisión."
        },
        {
          "nombre": "Seguridad Social y retenciones",
          "informacion_visible": "Resumen de bases, cuotas, cotizaciones y retenciones",
          "acciones": "Generar remesas educativas",
          "validacion": "Parámetros versionados y configurables."
        },
        {
          "nombre": "Emisión y pago",
          "informacion_visible": "Relación de recibos aprobados, órdenes bancarias y asientos",
          "acciones": "Emitir, enviar orden de pago, contabilizar",
          "validacion": "No duplicar pago de nómina."
        }
      ],
      "fields": [
        "periodo_nomina",
        "empleado_id",
        "salario_base",
        "complemento",
        "devengos",
        "contingencias_base",
        "otras_bases",
        "cuota_trabajador",
        "cuota_empresa",
        "retencion_irpf",
        "anticipos",
        "liquido",
        "coste_empresa",
        "recibo_id",
        "estado_cierre"
      ],
      "rules": [
        "Normas y porcentajes deben ser tablas didácticas versionadas y revisables",
        "nunca usar cuentas o nóminas reales del alumnado",
        "fórmulas calculadas en backend y pruebas reproducibles",
        "toda incidencia debe documentarse",
        "nóminas cerradas no se editan directamente"
      ],
      "connections": [
        "Recursos Humanos (10)",
        "Seguridad Social (18)",
        "Hacienda (17)",
        "Banco (16)",
        "Tesorería (9)",
        "Contabilidad (8)"
      ],
      "case": "Una empleada ficticia recibe un complemento y un anticipo; el alumnado revisa bases y deducciones, genera el recibo, ordena el líquido por banco y contabiliza los costes.",
      "assessment": [
        "calcular importes con exactitud",
        "completar recibo laboral",
        "interpretar deducciones",
        "vincular nómina con pago y cotización"
      ],
      "exceptions": [
        "alta a mitad de mes",
        "pagas extraordinarias",
        "error en base",
        "retención recalculada",
        "nómina revisada después del cierre"
      ],
      "id": 11
    },
    {
      "title": "Atención al cliente",
      "domain": "ERP empresarial",
      "goal": "Gestionar reclamaciones, consultas, devoluciones e incidencias comerciales de principio a fin mediante expedientes y plazos simulados.",
      "roles": "Atención al cliente; ventas; logística; compras; dirección; empresa reclamante",
      "flow": [
        "Recibir consulta o reclamación desde el mercado o correo interno",
        "identificar cliente y documento de referencia",
        "clasificar incidencia y prioridad",
        "solicitar evidencias y asignar responsable",
        "investigar albarán, lote, factura y condiciones pactadas",
        "proponer solución comercial dentro de autorización",
        "informar al cliente y registrar aceptación o desacuerdo",
        "tramitar devolución, reposición o factura rectificativa cuando corresponda",
        "cerrar expediente con causa raíz y medidas preventivas"
      ],
      "views": [
        {
          "nombre": "Bandeja de casos",
          "informacion_visible": "Tickets por estado, prioridad, antigüedad y empresa",
          "acciones": "Crear caso, asignar, contestar",
          "validacion": "No eliminar reclamaciones con documentos vinculados."
        },
        {
          "nombre": "Nuevo expediente",
          "informacion_visible": "Formulario cliente, pedido/factura, motivo, gravedad y prueba",
          "acciones": "Registrar, adjuntar evidencias",
          "validacion": "Exigir relación o motivo de incidencia autónoma."
        },
        {
          "nombre": "Detalle de reclamación",
          "informacion_visible": "Línea temporal, comunicaciones, pruebas, propuesta y autorizaciones",
          "acciones": "Responder, escalar, resolver",
          "validacion": "Toda respuesta conserva autor y fecha simulada."
        },
        {
          "nombre": "Devoluciones",
          "informacion_visible": "Autorización de devolución, recepción, estado del producto y abono",
          "acciones": "Aprobar retorno, solicitar rectificativa",
          "validacion": "Comprobar existencia de unidades entregadas."
        },
        {
          "nombre": "Garantías y acuerdos",
          "informacion_visible": "Política pactada de garantía, sustitución y compensación",
          "acciones": "Proponer solución, generar compromiso",
          "validacion": "No usar plazos legales como reglas sin actualización."
        },
        {
          "nombre": "Análisis de calidad",
          "informacion_visible": "Categorías, tiempos de resolución, reincidencia, satisfacción simulada",
          "acciones": "Consultar tendencias, plan de mejora",
          "validacion": "Los KPI distinguen casos abiertos y cerrados."
        }
      ],
      "fields": [
        "caso_id",
        "empresa_cliente_id",
        "documento_origen",
        "categoria",
        "prioridad",
        "fecha_apertura",
        "responsable",
        "evidencia_id",
        "solicitud_cliente",
        "propuesta_solucion",
        "estado",
        "fecha_resolucion",
        "causa_raiz"
      ],
      "rules": [
        "Separación estricta entre casos de empresas",
        "reclamación no modifica stock o importes sin orden aprobada",
        "plazos basados en acuerdos de simulación",
        "las respuestas de IA nunca cierran reclamaciones de alto impacto sin control",
        "conservar historial completo"
      ],
      "connections": [
        "CRM (2)",
        "Ventas (3)",
        "Almacén (6)",
        "Logística (7)",
        "Comunicaciones (20)",
        "FP360 SIM (21)"
      ],
      "case": "Una compradora comunica que recibió cuatro unidades defectuosas; el proveedor identifica albarán y factura, acepta devolución, repone dos y rectifica el resto.",
      "assessment": [
        "redactar comunicaciones profesionales",
        "documentar una reclamación",
        "justificar soluciones",
        "registrar trazabilidad y tiempos"
      ],
      "exceptions": [
        "reclamación sin factura",
        "duplicidad de ticket",
        "desacuerdo persistente",
        "devolución fuera del supuesto",
        "alumno ausente"
      ],
      "id": 12
    },
    {
      "title": "Proyectos y servicios",
      "domain": "ERP empresarial",
      "goal": "Planificar y facturar proyectos y servicios simulados mediante órdenes de trabajo, recursos, entregables, tiempos y control de rentabilidad.",
      "roles": "Director de proyecto; personal de servicios; ventas; compras; contabilidad; cliente de la red",
      "flow": [
        "Recibir encargo de servicio o presupuesto aceptado",
        "definir objetivos, alcance y entregables",
        "descomponer tareas y asignar responsables",
        "estimar horas, materiales y servicios externos",
        "comprobar recursos disponibles y aprobar planificación",
        "ejecutar partes de trabajo y registrar incidencias",
        "entregar hitos y solicitar conformidad del cliente",
        "calcular costes efectivos y emitir factura según hitos",
        "cerrar proyecto y analizar desviaciones"
      ],
      "views": [
        {
          "nombre": "Cartera de proyectos",
          "informacion_visible": "Tablero de proyectos por cliente, responsable, etapa y margen estimado",
          "acciones": "Nuevo proyecto, filtrar y priorizar",
          "validacion": "Diferenciar proyecto interno de encargo externo."
        },
        {
          "nombre": "Ficha del proyecto",
          "informacion_visible": "Objetivos, cliente, alcance, equipo, calendario y presupuesto",
          "acciones": "Editar planificación, crear hito",
          "validacion": "Versionar cambios aprobados."
        },
        {
          "nombre": "Órdenes de trabajo",
          "informacion_visible": "Tareas por fase, dedicación, materiales y estados",
          "acciones": "Asignar, iniciar, cerrar parte",
          "validacion": "No contabilizar horas ficticias fuera del calendario de simulación."
        },
        {
          "nombre": "Recursos y costes",
          "informacion_visible": "Materiales consumidos, compras vinculadas y coste de horas",
          "acciones": "Imputar recurso, revisar desviación",
          "validacion": "Coste solo a partir de registros válidos."
        },
        {
          "nombre": "Entregables y validación",
          "informacion_visible": "Checklist, archivos, conformidad del cliente y revisiones",
          "acciones": "Enviar, solicitar aprobación, devolver",
          "validacion": "Hitos facturables dependen del acuerdo."
        },
        {
          "nombre": "Facturación de servicios",
          "informacion_visible": "Hitos aceptados, tarifas y facturas de prestación",
          "acciones": "Generar factura, verificar",
          "validacion": "No duplicar facturación de hitos."
        },
        {
          "nombre": "Resultados",
          "informacion_visible": "Rentabilidad, retrasos, carga de equipo y lecciones aprendidas",
          "acciones": "Emitir memoria de cierre",
          "validacion": "Conservar métricas de ejecución."
        }
      ],
      "fields": [
        "proyecto_id",
        "cliente_id",
        "orden_servicio_id",
        "alcance",
        "entregable_id",
        "hito_id",
        "responsable",
        "presupuesto_horas",
        "horas_imputadas",
        "coste_material",
        "coste_total",
        "importe_facturable",
        "estado_conformidad"
      ],
      "rules": [
        "No facturar entregable no aprobado si la condición exige conformidad",
        "imputaciones coherentes con calendario de campaña",
        "todo cambio de alcance lleva trazabilidad",
        "no mezclar costes reales con cifras de escenario"
      ],
      "connections": [
        "CRM (2)",
        "Ventas (3)",
        "Compras (4)",
        "Productos y servicios (5)",
        "RRHH (10)",
        "Contabilidad (8)",
        "Mercado (15)"
      ],
      "case": "Una empresa de diseño presta servicios de catálogo digital a otra empresa de FP; registra tareas, horas, materiales, aprobación de hitos y factura final.",
      "assessment": [
        "planificar hitos y recursos",
        "elaborar partes de trabajo",
        "controlar costes",
        "documentar aceptación de entregables"
      ],
      "exceptions": [
        "sobrecoste",
        "alcance ampliado",
        "retraso de cliente",
        "rechazo de entregable",
        "facturación parcial"
      ],
      "id": 13
    },
    {
      "title": "Gestión documental",
      "domain": "ERP empresarial",
      "goal": "Organizar, clasificar, versionar y conservar documentos comerciales, contables, laborales y docentes, con permisos y relación a los expedientes.",
      "roles": "Administración; dirección; responsables departamentales; docente; auditor",
      "flow": [
        "Recibir o generar documento desde otra aplicación",
        "clasificarlo por empresa, expediente, tipo y periodo",
        "comprobar metadatos y nomenclatura",
        "incorporar versión y firma/aprobación simulada",
        "asignar acceso al personal autorizado",
        "localizar documentación por filtros y búsquedas",
        "generar un paquete documental asociado a un procedimiento",
        "archivar tras cierre con conservación definida",
        "registrar accesos, descargas y cambios"
      ],
      "views": [
        {
          "nombre": "Repositorio",
          "informacion_visible": "Listado de documentos, tipo, empresa, expediente, fecha, propietario y estado",
          "acciones": "Subir, buscar, descargar",
          "validacion": "Aislamiento por empresa y expedientes."
        },
        {
          "nombre": "Ficha de documento",
          "informacion_visible": "Vista previa, metadatos, versión, relacionados, permisos e historial",
          "acciones": "Editar metadatos, nueva versión",
          "validacion": "No sobrescribir documentos emitidos."
        },
        {
          "nombre": "Plantillas",
          "informacion_visible": "Formatos de presupuesto, factura, carta, expediente, formulario laboral",
          "acciones": "Elegir plantilla, generar",
          "validacion": "Los modelos oficiales solo se reproducen como material didáctico."
        },
        {
          "nombre": "Bandeja de aprobaciones",
          "informacion_visible": "Documentos pendientes de revisión, firmantes y plazos",
          "acciones": "Aprobar, devolver, comentar",
          "validacion": "La firma es simulada y no equivale a firma electrónica real."
        },
        {
          "nombre": "Archivo por expedientes",
          "informacion_visible": "Árbol de carpetas lógicas, etiquetas y búsqueda transversal",
          "acciones": "Crear expediente, mover con trazabilidad",
          "validacion": "Evitar rutas físicas arbitrarias y permisos heredados inseguros."
        },
        {
          "nombre": "Histórico y auditoría",
          "informacion_visible": "Versiones, acciones, accesos y recuperación autorizada",
          "acciones": "Consultar historial, restaurar copia",
          "validacion": "Política de retención y eliminación configurables."
        }
      ],
      "fields": [
        "documento_id",
        "empresa_id",
        "tipo",
        "numero_expediente",
        "titulo",
        "version",
        "estado",
        "propietario",
        "permisos",
        "etiquetas",
        "fecha_documento",
        "origen_app",
        "origen_id",
        "hash",
        "historial"
      ],
      "rules": [
        "Almacenamiento cifrado y validación de tipos de archivo",
        "prevenir ejecución de adjuntos",
        "versionado no destructivo",
        "logs de acceso",
        "control de visibilidad por perfil",
        "documentación sintética claramente marcada"
      ],
      "connections": [
        "Todas las aplicaciones transaccionales",
        "Comunicaciones (20)",
        "Portafolio (22)",
        "Coordinación (25)",
        "Administración (26)"
      ],
      "case": "El alumnado archiva un expediente completo de compra con solicitud, tres ofertas, pedido, albarán, factura, pago e incidencia; el docente verifica la secuencia sin abrir archivos dispersos.",
      "assessment": [
        "clasificar documentos",
        "mantener control de versiones",
        "recuperar evidencias de un procedimiento",
        "cumplir permisos de acceso"
      ],
      "exceptions": [
        "archivo duplicado",
        "cambio no autorizado",
        "fichero ilegible",
        "documento extraviado",
        "conservación de versión histórica"
      ],
      "id": 14
    },
    {
      "title": "Mercado FP360",
      "domain": "Servicios comunes",
      "goal": "Conectar empresas simuladas de los centros canarios para que actúen como clientes y proveedores dentro de una economía ficticia compartida.",
      "roles": "Responsables comerciales; compras; promotor de red; empresas participantes; docente",
      "flow": [
        "Publicar ficha comercial de empresa y catálogo aprobado",
        "buscar proveedores por producto, capacidad y condiciones",
        "iniciar solicitud de oferta entre centros",
        "negociar mediante comunicaciones registradas",
        "aceptar presupuesto y generar pedido interoperable",
        "seguir preparación, transporte y recepción",
        "intercambiar documentos vinculados sin duplicar datos maestros",
        "cerrar la relación con pago, valoración e incidencias",
        "mantener reglas de actividad cuando cambie la disponibilidad de centros"
      ],
      "views": [
        {
          "nombre": "Escaparate B2B",
          "informacion_visible": "Directorio de empresas de la red, categorías, novedades y búsqueda",
          "acciones": "Buscar proveedor, ver perfil, solicitar oferta",
          "validacion": "Mostrar solo participantes activos y datos publicados."
        },
        {
          "nombre": "Perfil de empresa",
          "informacion_visible": "Presentación, sector, catálogo, condiciones, valoración simulada",
          "acciones": "Contactar, seguir, iniciar negociación",
          "validacion": "No publicar datos privados de menores."
        },
        {
          "nombre": "Catálogo del mercado",
          "informacion_visible": "Productos y servicios cruzados, precio, disponibilidad ofertada y plazo",
          "acciones": "Añadir a solicitud, comparar alternativas",
          "validacion": "Disponibilidad sincronizada o cotizada temporalmente."
        },
        {
          "nombre": "Solicitudes y negociaciones",
          "informacion_visible": "RFI/RFQ, ofertas, contraofertas, mensajes y aprobaciones",
          "acciones": "Aceptar, rechazar, contraofertar",
          "validacion": "Toda oferta mantiene vigencia y versión."
        },
        {
          "nombre": "Operaciones intercentros",
          "informacion_visible": "Pedidos, entregas, facturas, cobros y estado por pareja comercial",
          "acciones": "Abrir cadena, reclamar incidencia",
          "validacion": "Cada empresa ve solo sus propios documentos compartidos."
        },
        {
          "nombre": "Agenda y red",
          "informacion_visible": "Disponibilidad académica, acuerdos, eventos y sustituciones",
          "acciones": "Actualizar ventana de atención, solicitar suplencia",
          "validacion": "La actividad asíncrona evita bloquear clases."
        },
        {
          "nombre": "Análisis de red",
          "informacion_visible": "Volumen simulado, empresas activas, sectores, operaciones completas",
          "acciones": "Consultar impacto, descargar indicadores anonimizados",
          "validacion": "Nunca usar volumen ficticio como cifra económica real."
        }
      ],
      "fields": [
        "red_empresa_id",
        "centro_id",
        "perfil_publico",
        "sector",
        "catalogo_publicado",
        "solicitud_id",
        "negociacion_id",
        "pedido_red_id",
        "empresa_origen_id",
        "empresa_destino_id",
        "estado_operacion",
        "plazo_simulado",
        "ventana_atencion"
      ],
      "rules": [
        "Operaciones únicamente entre empresas autorizadas de Canarias",
        "separación de datos por centro",
        "sincronización idempotente",
        "cambios de disponibilidad no cancelan contratos existentes",
        "todo importe es ficticio",
        "no mezclar datos de entidades reales con contactos docentes"
      ],
      "connections": [
        "CRM (2)",
        "Ventas (3)",
        "Compras (4)",
        "Productos (5)",
        "Logística (7)",
        "Banco (16)",
        "Comunicaciones (20)",
        "FP360 SIM (21)"
      ],
      "case": "Una empresa de Lanzarote solicita una oferta de mobiliario a otra de Tenerife; negocian condiciones, formalizan pedido y gestionan entrega y pago dentro del mercado simulado.",
      "assessment": [
        "analizar proveedores",
        "negociar operaciones B2B",
        "respetar secuencia documental",
        "coordinar trabajos con otro centro"
      ],
      "exceptions": [
        "centro sin sesión",
        "cambio de tarifas",
        "abandono de oferta",
        "empresa suspendida",
        "operación repetida"
      ],
      "id": 15
    },
    {
      "title": "Banco FP360",
      "domain": "Servicios comunes",
      "goal": "Prestar servicios bancarios completamente ficticios: cuentas, transferencias, conciliación, crédito, préstamo y descuento de efectos dentro de la simulación.",
      "roles": "Tesorería de empresas; operador bancario simulado; dirección; personal docente autorizado",
      "flow": [
        "Crear cuenta bancaria sintética vinculada a empresa",
        "consultar saldo contable, retenido y disponible",
        "recibir orden de transferencia con beneficiario de la red",
        "validar autorización y fondos",
        "ejecutar movimiento de doble partida en el libro bancario",
        "notificar al emisor y receptor y actualizar conciliación",
        "recibir solicitudes de préstamo o póliza",
        "calcular ofertas con tablas didácticas de intereses y comisiones",
        "aprobar o rechazar según reglas del escenario",
        "liquidar cuotas, intereses, impagos y cierre del producto"
      ],
      "views": [
        {
          "nombre": "Cuentas y saldos",
          "informacion_visible": "KPIs de saldo, saldo retenido, movimientos y cuenta ficticia",
          "acciones": "Seleccionar cuenta, exportar extracto",
          "validacion": "Identificadores marcados como simulados, no IBAN reales operativos."
        },
        {
          "nombre": "Transferencias",
          "informacion_visible": "Formulario cuenta origen, destinatario, importe, concepto y fecha",
          "acciones": "Crear, validar, autorizar, ejecutar",
          "validacion": "Comprobar fondo, límites y duplicados."
        },
        {
          "nombre": "Movimientos",
          "informacion_visible": "Libro bancario con contraparte, referencia, estado y saldo acumulado",
          "acciones": "Inspeccionar, descargar justificante",
          "validacion": "Cada cargo tiene abono espejo correspondiente."
        },
        {
          "nombre": "Préstamos",
          "informacion_visible": "Solicitudes, tipo de amortización, principal, interés, cuotas y estado",
          "acciones": "Simular oferta, aceptar, gestionar cuotas",
          "validacion": "Separar preoferta y concesión."
        },
        {
          "nombre": "Pólizas de crédito",
          "informacion_visible": "Límite, dispuesto, disponible, comisiones, revisión y liquidación",
          "acciones": "Solicitar, disponer, amortizar",
          "validacion": "No disponer por encima del límite autorizado."
        },
        {
          "nombre": "Descuento de efectos",
          "informacion_visible": "Cartera de efectos elegibles, nominal, descuento, comisiones, líquido",
          "acciones": "Presentar efecto, simular coste, aprobar",
          "validacion": "Efecto no elegible o vencido no se descuenta."
        },
        {
          "nombre": "Riesgo y operaciones",
          "informacion_visible": "Alertas de impago, solvencia didáctica, operaciones pendientes",
          "acciones": "Revisar, rechazar, escalar",
          "validacion": "No automatizar sanciones sin regla educativa."
        }
      ],
      "fields": [
        "cuenta_virtual_id",
        "empresa_id",
        "saldo",
        "retenido",
        "orden_transferencia_id",
        "contraparte",
        "beneficiario_id",
        "importe",
        "estado_bancario",
        "prestamo_id",
        "plazo",
        "tipo_interes",
        "cuota",
        "poliza_id",
        "efecto_id",
        "comision"
      ],
      "rules": [
        "Doble entrada bancario invariante",
        "cero conexión con banca real",
        "números de cuenta claramente ficticios",
        "límites de crédito definidos por escenarios y auditados",
        "operaciones intercentros idempotentes",
        "concesiones extraordinarias con doble autorización",
        "no se descuentan facturas sin efecto/documento definido"
      ],
      "connections": [
        "Tesorería (9)",
        "Contabilidad (8)",
        "Ventas (3)",
        "Compras (4)",
        "Nóminas (11)",
        "Hacienda (17)",
        "Seguridad Social (18)",
        "FP360 SIM (21)"
      ],
      "case": "Una empresa con déficit temporal solicita financiación; el banco propone préstamo y póliza, el alumnado compara costes y plazos y registra la operación elegida con su calendario de pagos.",
      "assessment": [
        "ejecutar transferencias simuladas",
        "interpretar extractos",
        "comparar financiación y coste efectivo",
        "resolver conciliaciones y riesgos"
      ],
      "exceptions": [
        "sin fondos",
        "préstamo vencido",
        "solicitud repetida",
        "beneficiario inexistente",
        "efecto duplicado",
        "cancelación de operación"
      ],
      "id": 16
    },
    {
      "title": "Hacienda FP360",
      "domain": "Servicios comunes",
      "goal": "Simular obligaciones tributarias pertinentes a empresas canarias y reproducir la secuencia documental de autoliquidación, presentación, pago y requerimiento.",
      "roles": "Contabilidad fiscal; tesorería; responsable tributario simulado; docente; dirección",
      "flow": [
        "Configurar régimen tributario educativo de la empresa canaria",
        "importar facturas y nóminas confirmadas",
        "clasificar operaciones y periodos",
        "calcular bases y cuotas de IGIC y retenciones cuando corresponda",
        "preparar borrador de declaración inspirado en los modelos pertinentes",
        "ejecutar revisión de errores e incoherencias",
        "presentar telemáticamente ante sede simulada",
        "generar recibo de presentación y orden de pago o solicitud de devolución ficticios",
        "atender requerimientos y subsanar con trazabilidad",
        "cerrar periodo fiscal y archivar evidencias"
      ],
      "views": [
        {
          "nombre": "Calendario fiscal",
          "informacion_visible": "Obligaciones por empresa, periodo, vencimiento y estado",
          "acciones": "Abrir obligación, programar tarea",
          "validacion": "Fechas de simulación separadas de obligaciones reales."
        },
        {
          "nombre": "IGIC",
          "informacion_visible": "Borradores educativos de autoliquidación y resumen; detalle de cuotas y operaciones",
          "acciones": "Calcular, revisar, presentar",
          "validacion": "Parámetros canarios versionados y validados."
        },
        {
          "nombre": "Retenciones",
          "informacion_visible": "Retenciones de nómina y profesionales según supuestos, declaraciones didácticas",
          "acciones": "Importar bases, revisar, presentar",
          "validacion": "No mezclar IRPF con IGIC."
        },
        {
          "nombre": "Borrador de modelo",
          "informacion_visible": "Formulario inspirado en modelos administrativos, con casillas y validaciones",
          "acciones": "Guardar, comprobar, presentar simulado",
          "validacion": "Marca prominente SIN VALIDEZ OFICIAL."
        },
        {
          "nombre": "Expedientes y requerimientos",
          "informacion_visible": "Bandeja de avisos, subsanaciones, rectificaciones y respuestas",
          "acciones": "Responder, aportar documento",
          "validacion": "Trazabilidad íntegra de presentaciones."
        },
        {
          "nombre": "Pagos y devoluciones",
          "informacion_visible": "Deudas simuladas, justificantes bancarios y devoluciones",
          "acciones": "Ordenar pago, verificar liquidación",
          "validacion": "El estado pagado llega desde Banco FP360."
        },
        {
          "nombre": "Histórico",
          "informacion_visible": "Presentaciones, declaraciones sustituidas y acuses",
          "acciones": "Descargar expediente y comparar",
          "validacion": "No se alteran presentaciones confirmadas."
        }
      ],
      "fields": [
        "empresa_id",
        "regimen_canario",
        "obligacion_id",
        "periodo_tributario",
        "modelo_educativo",
        "facturas_base",
        "base_imponible",
        "cuotas_repercutidas",
        "cuotas_soportadas",
        "resultado",
        "retenciones",
        "justificante_simulado",
        "requerimiento_id"
      ],
      "rules": [
        "Tipos y modelos tributarios revisados por docente",
        "no enviar a sedes públicas reales",
        "todos los documentos identificados como simulados",
        "coherencia con asientos y facturas",
        "las rectificaciones versionan declaraciones",
        "vigencia normativa configurable por curso"
      ],
      "connections": [
        "Ventas (3)",
        "Compras (4)",
        "Contabilidad (8)",
        "Nóminas (11)",
        "Tesorería (9)",
        "Banco (16)",
        "FP360 SIM (21)"
      ],
      "case": "Una empresa prepara su liquidación educativa de IGIC a partir del libro de facturas, detecta una factura rectificativa pendiente y corrige la declaración antes de presentarla en la sede simulada.",
      "assessment": [
        "clasificar operaciones tributarias",
        "completar modelos educativos con casillas coherentes",
        "detectar discrepancias",
        "justificar pago y subsanación"
      ],
      "exceptions": [
        "registro de factura sin impuesto",
        "periodo cerrado",
        "error de casilla",
        "devolución simulada pendiente",
        "declaración duplicada"
      ],
      "id": 17
    },
    {
      "title": "Seguridad Social FP360",
      "domain": "Servicios comunes",
      "goal": "Reproducir de forma didáctica los procedimientos empresariales de inscripción, afiliación simulada, altas, bajas, cotización y liquidación de cuotas.",
      "roles": "Recursos humanos; nóminas; responsable TGSS simulado; dirección; docente",
      "flow": [
        "Crear empresa inscrita de forma simulada con código ficticio",
        "recibir expediente laboral y alta propuesta",
        "validar fecha, grupo y contrato",
        "confirmar movimiento y devolver justificante educativo",
        "recibir bases y datos de cotización del periodo",
        "construir liquidación y relación nominal didácticas",
        "permitir revisión y corrección de discrepancias",
        "confirmar liquidación y emitir recibo",
        "tramitar pago por Banco FP360",
        "gestionar modificaciones, bajas, reclamaciones y archivo"
      ],
      "views": [
        {
          "nombre": "Empresas y CCC",
          "informacion_visible": "Organizaciones registradas, códigos sintéticos, régimen educativo y estado",
          "acciones": "Inscribir, consultar inscripción",
          "validacion": "No emplear identificadores oficiales reales."
        },
        {
          "nombre": "Afiliación y movimientos",
          "informacion_visible": "Personas trabajadoras ficticias, altas, bajas, variaciones y fechas",
          "acciones": "Enviar movimiento, comprobar, confirmar",
          "validacion": "Validar contra contrato y calendario."
        },
        {
          "nombre": "Bases y cotización",
          "informacion_visible": "Tabla de trabajadores, bases, tramos educativos y tipos versionados",
          "acciones": "Importar nóminas, recalcular",
          "validacion": "Fórmulas deterministas revisables."
        },
        {
          "nombre": "Liquidaciones",
          "informacion_visible": "Borrador de relación nominal y recibo educativo, incidencias de cálculo",
          "acciones": "Validar, confirmar, corregir",
          "validacion": "Presentación exclusivamente simulada."
        },
        {
          "nombre": "Recaudación",
          "informacion_visible": "Vencimientos, orden bancaria y resultado del pago",
          "acciones": "Solicitar pago, conciliar",
          "validacion": "No marcar pago antes de confirmación del banco."
        },
        {
          "nombre": "Notificaciones",
          "informacion_visible": "Errores de alta, discrepancias de bases, comunicaciones y subsanación",
          "acciones": "Abrir requerimiento, contestar",
          "validacion": "Preservar historial y plazos del escenario."
        },
        {
          "nombre": "Histórico y auditoría",
          "informacion_visible": "Movimientos y declaraciones cerradas por empresa y periodo",
          "acciones": "Exportar expediente didáctico",
          "validacion": "Permisos restrictivos sobre datos de personal."
        }
      ],
      "fields": [
        "empresa_id",
        "ccc_ficticio",
        "persona_ficticia_id",
        "movimiento_id",
        "fecha_efecto",
        "grupo_cotizacion",
        "base",
        "cuota_empresa",
        "cuota_trabajador",
        "liquidacion_id",
        "rnt_simulada",
        "rlc_simulado",
        "justificante_pago"
      ],
      "rules": [
        "Nunca conectar con TGSS real ni utilizar NAF auténticos",
        "parámetros laborales versionados y validados",
        "no confirmar liquidación sin datos consistentes de nómina",
        "altas y bajas con fechas coherentes",
        "todas las pantallas rotuladas COMO SIMULACIÓN"
      ],
      "connections": [
        "Recursos humanos (10)",
        "Nóminas (11)",
        "Empleo (19)",
        "Contabilidad (8)",
        "Tesorería (9)",
        "Banco (16)"
      ],
      "case": "El alumnado da de alta a dos trabajadores ficticios, verifica bases de cotización, confirma la liquidación didáctica y ordena su pago desde el banco virtual.",
      "assessment": [
        "cumplimentar altas y bajas ficticias",
        "verificar bases de cotización",
        "revisar liquidaciones",
        "justificar pago y subsanaciones"
      ],
      "exceptions": [
        "registro de trabajador duplicado",
        "baja anterior a alta",
        "divergencia con nómina",
        "liquidación fuera de plazo simulado",
        "pago rechazado"
      ],
      "id": 18
    },
    {
      "title": "Empleo FP360",
      "domain": "Servicios comunes",
      "goal": "Simular procedimientos de gestión del empleo, comunicación de contratación y documentación administrativa vinculada a recursos humanos, sin conexión con servicios públicos reales.",
      "roles": "Recursos humanos; gestor de empleo simulado; tutor; empresa ficticia",
      "flow": [
        "Recibir solicitud de cobertura de puesto",
        "crear descripción de oferta y perfil",
        "publicar vacante dentro del entorno educativo",
        "registrar candidaturas ficticias",
        "resolver selección",
        "preparar contrato y condiciones",
        "comunicar contrato simulado al portal de empleo con fecha y modalidad",
        "recibir acuse y controlar posibles subsanaciones",
        "gestionar prórrogas o extinción de acuerdo con el supuesto",
        "archivar expediente y remitir datos a RR. HH. y Seguridad Social"
      ],
      "views": [
        {
          "nombre": "Ofertas y selección",
          "informacion_visible": "Vacantes por empresa, perfil, publicación, respuestas y estado",
          "acciones": "Crear oferta, cerrar vacante",
          "validacion": "Candidaturas sintéticas y criterios formativos."
        },
        {
          "nombre": "Candidaturas",
          "informacion_visible": "Lista con competencias, resultado de selección y observaciones",
          "acciones": "Entrevista simulada, valorar",
          "validacion": "Evitar decisiones automáticas sensibles sin supervisión."
        },
        {
          "nombre": "Comunicación de contratos",
          "informacion_visible": "Formulario didáctico de comunicación, empresa, trabajador, tipo y fecha",
          "acciones": "Generar, comprobar, presentar simulado",
          "validacion": "Ningún trámite sale a sedes oficiales."
        },
        {
          "nombre": "Prórrogas y modificaciones",
          "informacion_visible": "Cronología de cambios contractuales, justificación y fecha efecto",
          "acciones": "Comunicar, corregir",
          "validacion": "Conservar documento original."
        },
        {
          "nombre": "Finalización y certificados",
          "informacion_visible": "Bajas, fin de contrato, certificados educativos e incidencias",
          "acciones": "Cerrar expediente, emitir documento",
          "validacion": "Coherencia con RRHH y SS."
        },
        {
          "nombre": "Bandeja administrativa",
          "informacion_visible": "Acuses, errores de comunicación, notificaciones y tareas",
          "acciones": "Abrir, subsanar y archivar",
          "validacion": "Plazos versionados por escenario."
        }
      ],
      "fields": [
        "oferta_id",
        "centro_trabajo_ficticio",
        "puesto",
        "vacante",
        "candidatura_id",
        "evaluacion",
        "contrato_id",
        "tipo_contrato",
        "fecha_inicio",
        "comunicacion_id",
        "acuse_simulado",
        "prorroga_id",
        "estado"
      ],
      "rules": [
        "Formularios identificados como educativos y no oficiales",
        "datos sintéticos",
        "las comunicaciones exigen contrato confirmado",
        "cambios contractuales generan nueva versión",
        "separación de permisos entre personal y resto de la empresa"
      ],
      "connections": [
        "Recursos humanos (10)",
        "Nóminas (11)",
        "Seguridad Social (18)",
        "Gestión documental (14)",
        "Comunicaciones (20)"
      ],
      "case": "Una empresa publica una vacante por incremento de ventas, selecciona candidato ficticio y comunica el contrato y su prórroga en el entorno simulado.",
      "assessment": [
        "cumplimentar comunicaciones coherentes",
        "registrar selección objetiva",
        "tramitar modificaciones",
        "organizar expediente laboral"
      ],
      "exceptions": [
        "comunicación sin contrato",
        "modalidad incompatible",
        "candidato duplicado",
        "fecha discordante",
        "subsanación"
      ],
      "id": 19
    },
    {
      "title": "Centro de comunicaciones",
      "domain": "Servicios comunes",
      "goal": "Coordinar comunicaciones internas y comerciales entre empresas, centros, mentores y servicios administrativos simulados, sin depender de cuentas personales del alumnado.",
      "roles": "Personal de departamentos; responsable empresa; docente; coordinador; mentor autorizado",
      "flow": [
        "Seleccionar destinatario empresarial o grupo con permisos",
        "elegir asunto y relacionarlo con expediente",
        "redactar comunicación formal en el editor",
        "adjuntar documentos autorizados",
        "enviar en el buzón interno y generar notificación",
        "registrar lectura y respuesta sin convertirla en aceptación comercial",
        "vincular compromisos a tareas y plazos",
        "escalar incidencias o solicitudes a otro departamento",
        "archivar conversación y evidencias"
      ],
      "views": [
        {
          "nombre": "Bandeja de entrada",
          "informacion_visible": "Hilos, remitente, asunto, etiqueta, prioridad, no leídos y plazo",
          "acciones": "Responder, archivar, asignar",
          "validacion": "Visibilidad por empresa, departamento y rol."
        },
        {
          "nombre": "Redactar mensaje",
          "informacion_visible": "Destinatarios autorizados, asunto, contenido, adjuntos y expediente",
          "acciones": "Enviar, guardar borrador",
          "validacion": "Filtro de datos personales y anexos peligrosos."
        },
        {
          "nombre": "Buzones departamentales",
          "informacion_visible": "Ventas, compras, RRHH, fiscalidad y atención con reparto de tareas",
          "acciones": "Asignar responsable, delegar",
          "validacion": "Evitar buzones sin responsable."
        },
        {
          "nombre": "Conversaciones comerciales",
          "informacion_visible": "Hilos vinculados a solicitudes de oferta y reclamaciones",
          "acciones": "Convertir mensaje en tarea/caso",
          "validacion": "Aceptación contractual requiere acción formal específica."
        },
        {
          "nombre": "Avisos y notificaciones",
          "informacion_visible": "Alertas de plazos, cobros, cambios y avisos docentes",
          "acciones": "Marcar leído, abrir tarea",
          "validacion": "Priorizar incidencias críticas sin saturar."
        },
        {
          "nombre": "Plantillas y automatización",
          "informacion_visible": "Respuestas modelo, acuses, convocatorias y notificaciones generadas por IA",
          "acciones": "Usar plantilla, revisar borrador",
          "validacion": "IA no envía comunicaciones externas automáticamente sin autorización."
        },
        {
          "nombre": "Registro y búsqueda",
          "informacion_visible": "Filtros por empresa, asunto, expediente, fecha y estado",
          "acciones": "Localizar, exportar evidencia",
          "validacion": "Auditoría de envío, acceso y modificación."
        }
      ],
      "fields": [
        "mensaje_id",
        "remitente_empresa",
        "destinatario_empresa",
        "buzón_origen",
        "buzon_destino",
        "asunto",
        "expediente_id",
        "contenido",
        "adjuntos",
        "fecha_envio",
        "estado_lectura",
        "responsable",
        "prioridad",
        "canal"
      ],
      "rules": [
        "Mensajería simulada por defecto, no email externo",
        "direcciones institucionales reales solo con autorización",
        "proteger menores y datos confidenciales",
        "respuestas generadas por IA se revisan según política",
        "mensajes no mutan documentos comerciales"
      ],
      "connections": [
        "CRM (2)",
        "Mercado (15)",
        "Atención (12)",
        "Compras (4)",
        "Ventas (3)",
        "Coordinación (25)",
        "FP360 SIM (21)"
      ],
      "case": "Compras solicita una nueva fecha de entrega, proveedor responde, se pacta una modificación y el alumnado actualiza el pedido mediante una acción formal, no solo por escribir un correo.",
      "assessment": [
        "redactar comunicaciones claras",
        "seguir normas de cortesía y archivo",
        "asociar mensajes con expedientes",
        "priorizar y cumplir plazos"
      ],
      "exceptions": [
        "destinatario equivocado",
        "mensaje duplicado",
        "archivo no permitido",
        "lectura tardía",
        "respuesta de IA incorrecta"
      ],
      "id": 20
    },
    {
      "title": "FP360 SIM — Dirección inteligente de simulaciones",
      "domain": "Entorno educativo",
      "goal": "Diseñar, orquestar y evaluar campañas de empresas simuladas conectadas mediante IA, adaptadas a participantes, horario, nivel y estado verificable de cada empresa.",
      "roles": "Promotor; coordinador autonómico; docente de centro; alumnado; mentor; servicios simulados",
      "flow": [
        "Definir duración, centros, grupos, departamentos y competencias",
        "generar empresas, sectores complementarios, recursos iniciales y reglas de campaña",
        "revisar y aprobar el mundo simulado",
        "crear eventos compatibles con inventario, liquidez, calendario y permisos",
        "publicar instrucciones personalizadas por equipo y rol",
        "recibir operaciones reales del ERP y validar sus consecuencias deterministas",
        "generar nuevos acontecimientos encadenados",
        "resolver bloqueos por ausencias o centros sin sesión",
        "evaluar evidencias y ajustar dificultad",
        "cerrar campaña, anonimizar indicadores y producir informe de investigación"
      ],
      "views": [
        {
          "nombre": "Panel de campañas",
          "informacion_visible": "Listado de campañas, centros, estudiantes, modo, calendario y progreso",
          "acciones": "Nueva campaña, pausar, duplicar",
          "validacion": "Campañas no mezclan datos entre cursos."
        },
        {
          "nombre": "Asistente de creación",
          "informacion_visible": "Formulario paso a paso de centros, alumnos, equipos 4–5, niveles, módulos y objetivos",
          "acciones": "Generar propuesta IA, editar, validar",
          "validacion": "IA no activa campaña sin autorización inicial."
        },
        {
          "nombre": "Mapa de empresas",
          "informacion_visible": "Grafo de proveedores/clientes, sectores, saldos, stocks y dependencias",
          "acciones": "Abrir empresa, revisar cadena comercial",
          "validacion": "Ninguna arista sin relación comercial posible."
        },
        {
          "nombre": "Motor de eventos",
          "informacion_visible": "Bandeja de sucesos pendientes: oferta, impago, rotura stock, reclamación, financiación",
          "acciones": "Proponer, aprobar, posponer, cancelar",
          "validacion": "Verificar precondiciones e idempotencia."
        },
        {
          "nombre": "Editor de caso",
          "informacion_visible": "Situación inicial, instrucciones, documentos, secuencia, criterios, duración y respuestas válidas",
          "acciones": "Editar con IA, publicar, versionar",
          "validacion": "Separar texto IA de reglas y cálculos deterministas."
        },
        {
          "nombre": "Jornada de estudiante",
          "informacion_visible": "Tareas por departamento, estado, ayudas, instrucciones y enlaces al ERP",
          "acciones": "Abrir procedimiento, solicitar pista, entregar",
          "validacion": "Las tareas se completan con acciones en ERP, no con botón vacío."
        },
        {
          "nombre": "Supervisor intercentros",
          "informacion_visible": "Carga por empresa, ausencias, bloqueos, alternativas, plazos y colas",
          "acciones": "Asignar suplente, cambiar plazo, desbloquear",
          "validacion": "Nunca forzar operación comercial sin trazabilidad."
        },
        {
          "nombre": "Analítica y cierre",
          "informacion_visible": "Competencias, participación, calidad de documentos, intervenciones docentes",
          "acciones": "Generar informe, exportar",
          "validacion": "Indicadores anonimizados para transferencia."
        }
      ],
      "fields": [
        "campana_id",
        "centro_id",
        "empresa_id",
        "alumno_id",
        "rol_equipo",
        "dia_simulado",
        "estado_empresarial",
        "evento_id",
        "precondiciones",
        "desencadenante",
        "instrucciones_ia",
        "validacion_determinista",
        "evidencias",
        "dificultad",
        "intervencion_docente"
      ],
      "rules": [
        "IA no modifica saldos ni stock directamente",
        "motor transaccional valida cada consecuencia",
        "modos manual/supervisado/autónomo con límites",
        "se exige idempotencia para eventos",
        "ventanas de clases asíncronas",
        "suplencias individuales",
        "evitar monopolio de tareas por un miembro",
        "auditar cada decisión de IA y docente"
      ],
      "connections": [
        "Todas las 25 aplicaciones restantes",
        "especialmente Mercado (15), Banco (16), Hacienda (17), SS (18), Portafolio (22), Evaluación (23), Coordinación (25)"
      ],
      "case": "Una empresa sin liquidez recibe tres opciones condicionadas: reclamar cobros, negociar aplazamiento o solicitar financiación. La historia cambia según costes, compromisos y acciones realmente registradas.",
      "assessment": [
        "participación individual y cooperativa",
        "solución de decisiones justificadas",
        "cumplimiento de procedimientos empresariales",
        "progresión en autonomía",
        "competencias digitales y comunicativas"
      ],
      "exceptions": [
        "evento que contradice el stock",
        "dos centros con horarios incompatibles",
        "miembro ausente",
        "IA propone operación imposible",
        "error de transacción",
        "docente fuerza reinicio"
      ],
      "id": 21
    },
    {
      "title": "Portafolio profesional",
      "domain": "Entorno educativo",
      "goal": "Reunir y organizar evidencias individuales y cooperativas generadas al trabajar en el ERP y asociarlas a resultados y criterios de aprendizaje.",
      "roles": "Estudiante; equipo de empresa; docente; tutor; evaluador autorizado",
      "flow": [
        "Abrir portafolio de campaña y perfil de estudiante",
        "importar automáticamente evidencias desde operaciones del ERP",
        "asociar cada actuación al objetivo didáctico y criterios",
        "incorporar breve reflexión o justificación cuando proceda",
        "revisar pendientes y observaciones",
        "solicitar corrección o entregar actividad",
        "conservar nuevas versiones sin borrar intento anterior",
        "cerrar bloque y generar informe individual y cooperativo",
        "exportar evidencias docentes según permisos"
      ],
      "views": [
        {
          "nombre": "Mi portafolio",
          "informacion_visible": "Resumen de actividades, progreso, evidencias y próximas entregas",
          "acciones": "Abrir tarea, completar reflexión",
          "validacion": "No confundir actividad iniciada con completada."
        },
        {
          "nombre": "Evidencias por criterio",
          "informacion_visible": "Matriz de resultados, criterios, documentos y operaciones vinculadas",
          "acciones": "Filtrar, ver evidencia original",
          "validacion": "Cada evidencia enlaza al evento del ERP."
        },
        {
          "nombre": "Actividad",
          "informacion_visible": "Instrucciones, evidencias esperadas, rúbrica y tiempo orientativo",
          "acciones": "Consultar pistas, enviar, corregir",
          "validacion": "Registro de intentos y ayudas."
        },
        {
          "nombre": "Portafolio cooperativo",
          "informacion_visible": "Actividad de empresa, contribución por estudiante y versión de equipo",
          "acciones": "Ver reparto, solicitar revisión",
          "validacion": "Autoria individual inmutable."
        },
        {
          "nombre": "Retroalimentación",
          "informacion_visible": "Comentarios docentes, errores frecuentes, recomendaciones IA y recuperación",
          "acciones": "Aceptar revisión, rehacer",
          "validacion": "La IA no sustituye decisiones de calificación docente."
        },
        {
          "nombre": "Informes y exportación",
          "informacion_visible": "Resumen por RA/criterio, participación, tiempos y logros",
          "acciones": "Generar PDF/CSV, exportar LMS",
          "validacion": "Datos personales solo para su docente."
        }
      ],
      "fields": [
        "portafolio_id",
        "campana_id",
        "estudiante_id",
        "equipo_id",
        "actividad_id",
        "criterio_id",
        "operacion_origen",
        "evidencia_id",
        "intento",
        "fecha_entrega",
        "estado_revision",
        "comentario",
        "calificacion",
        "contribucion_individual"
      ],
      "rules": [
        "No aceptar capturas manipulables como única evidencia cuando exista dato transaccional",
        "atribución individual mediante auditoría",
        "no cerrar portafolio sin criterios exigidos",
        "distinguir autoevaluación de nota definitiva",
        "control de intentos según modalidad didáctica"
      ],
      "connections": [
        "FP360 SIM (21)",
        "Evaluación (23)",
        "Gestión documental (14)",
        "aplicaciones ERP (1–20)",
        "Coordinación (25)"
      ],
      "case": "Un equipo completa una compra entre centros; el portafolio recoge automáticamente solicitud, ofertas, pedido, recepción, factura y pago, señalando quién ejecutó y revisó cada operación.",
      "assessment": [
        "organizar evidencias",
        "explicar decisiones tomadas",
        "corregir errores con trazabilidad",
        "reconocer contribuciones individuales"
      ],
      "exceptions": [
        "alumno ausente",
        "actividad sin evento registrado",
        "duplicación de evidencia",
        "entrega fuera de plazo",
        "retroalimentación pendiente"
      ],
      "id": 22
    },
    {
      "title": "Evaluación docente",
      "domain": "Entorno educativo",
      "goal": "Configurar, automatizar parcialmente y supervisar la evaluación por resultados y criterios del currículo, sobre acciones verificables del ERP.",
      "roles": "Docente; tutor; coordinador de evaluación; alumnado con acceso a resultados",
      "flow": [
        "Importar programación de módulo y sus criterios",
        "fijar ponderaciones, evidencias mínimas y rúbricas",
        "vincular tareas de FP360 SIM con criterios",
        "recoger resultados de cálculos y documentos evaluables",
        "revisar actuaciones con juicio profesional",
        "registrar calificaciones por criterio y comentarios",
        "permitir recuperación selectiva y recalculo",
        "comprobar equilibrio entre nota de equipo y aportación individual",
        "generar informe y exportación compatible con el LMS",
        "cerrar acta didáctica autorizada"
      ],
      "views": [
        {
          "nombre": "Cuadro del grupo",
          "informacion_visible": "Participantes, progreso, alertas, calificaciones provisionales y actividades",
          "acciones": "Filtrar alumnado, abrir ficha",
          "validacion": "Ocultar notas de otros estudiantes."
        },
        {
          "nombre": "Mapa RA-criterios",
          "informacion_visible": "Jerarquía de RA y CE, pesos, evidencias y cobertura",
          "acciones": "Importar, editar, validar pesos",
          "validacion": "La suma de pesos debe ser coherente."
        },
        {
          "nombre": "Banco de rúbricas",
          "informacion_visible": "Descriptores niveles, indicadores, evidencias y observaciones",
          "acciones": "Crear rúbrica, versionar",
          "validacion": "Rúbricas fijadas antes de evaluar si afecta a igualdad."
        },
        {
          "nombre": "Corrección de operaciones",
          "informacion_visible": "Evidencia transaccional, dato esperado, resultados y errores",
          "acciones": "Aceptar, devolver, justificar corrección",
          "validacion": "Automatizar solo condiciones inequívocas."
        },
        {
          "nombre": "Ficha del estudiante",
          "informacion_visible": "Desempeño por criterio, progreso, intentos, contribución cooperativa",
          "acciones": "Valorar, comentar, recuperar criterio",
          "validacion": "No promediar sin aplicar reglas del módulo."
        },
        {
          "nombre": "Informes y exportación",
          "informacion_visible": "PDF por criterio, CSV y conectores Moodle cuando estén instalados",
          "acciones": "Generar y exportar",
          "validacion": "No afirmar publicación en LMS sin respuesta de confirmación."
        },
        {
          "nombre": "Auditoría de evaluación",
          "informacion_visible": "Cambios de nota, autor, fecha y motivo",
          "acciones": "Revisar, restaurar bajo permiso",
          "validacion": "Prohibida modificación sin registro."
        }
      ],
      "fields": [
        "grupo_id",
        "modulo_id",
        "resultado_aprendizaje",
        "criterio",
        "peso",
        "actividad_id",
        "rubrica_id",
        "evidencia_id",
        "evaluador",
        "puntuacion_automatica",
        "valoracion_docente",
        "nota_final",
        "recuperacion",
        "exportacion_lms"
      ],
      "rules": [
        "Mapeo curricular versionado para Canarias",
        "toda nota trazable a evidencias",
        "impedir filtración entre estudiantes",
        "la IA propone observaciones, no decide sanciones ni notas controvertidas",
        "los intentos se cuentan por criterio y actividad según programación"
      ],
      "connections": [
        "FP360 SIM (21)",
        "Portafolio (22)",
        "Todas las aplicaciones",
        "Coordinación (25)",
        "Administración (26)"
      ],
      "case": "El docente comprueba que dos estudiantes de la misma empresa realizaron diferente trabajo en un pedido; la rúbrica pondera corrección documental y aportación individual y permite recuperación del criterio no alcanzado.",
      "assessment": [
        "definir rúbricas válidas",
        "justificar evaluación objetiva",
        "distinguir aportaciones",
        "elaborar informe por criterios"
      ],
      "exceptions": [
        "evidencia incompleta",
        "equipo sin actividad",
        "criterio sin asignación",
        "error de exportación",
        "discrepancia de nota"
      ],
      "id": 23
    },
    {
      "title": "Mentoría empresarial",
      "domain": "Entorno educativo",
      "goal": "Gestionar la contribución verificable de empresas y colegios profesionales como mentores, validadores de procesos y promotores institucionales.",
      "roles": "Mentor empresarial; colegio profesional; empresa promotora; coordinador; docente",
      "flow": [
        "Registrar entidad colaboradora y acuerdos de participación",
        "delimitar los ámbitos de asesoramiento",
        "proponer reto con datos anonimizados",
        "validar su pertinencia profesional y didáctica",
        "programar sesión y materiales",
        "ejecutar mentoría o revisión documental",
        "registrar evidencias de participación",
        "emitir observaciones técnicas",
        "trasladar mejoras a los casos y las aplicaciones",
        "valorar impacto de la colaboración y entregar informe de transferencia"
      ],
      "views": [
        {
          "nombre": "Entidades colaboradoras",
          "informacion_visible": "Directorio de organizaciones y compromiso documentado",
          "acciones": "Alta, consultar acuerdo, clasificar rol",
          "validacion": "No publicar apoyo no confirmado."
        },
        {
          "nombre": "Agenda de mentorías",
          "informacion_visible": "Calendario de sesiones, grupo, mentor, objetivo y modalidad",
          "acciones": "Convocar, confirmar, reprogramar",
          "validacion": "Comprobar compatibilidad y permisos."
        },
        {
          "nombre": "Banco de retos",
          "informacion_visible": "Problemas empresariales anonimizados, ámbito y nivel",
          "acciones": "Proponer caso, validar, asignar",
          "validacion": "No cargar información comercial confidencial."
        },
        {
          "nombre": "Revisión profesional",
          "informacion_visible": "Expediente de documento o procedimiento para observaciones",
          "acciones": "Comentar, aprobar técnicamente, devolver",
          "validacion": "La validación de mentor no sustituye evaluación docente."
        },
        {
          "nombre": "Evidencias de participación",
          "informacion_visible": "Actas, materiales, asistencia y entregables formativos",
          "acciones": "Adjuntar, certificar presencia",
          "validacion": "Registrar aportaciones verificables."
        },
        {
          "nombre": "Transferencia e impacto",
          "informacion_visible": "Indicadores de colaboración, recomendaciones implantadas y resultados",
          "acciones": "Generar informe, proponer mejora",
          "validacion": "Datos agregados cuando se comparten públicamente."
        }
      ],
      "fields": [
        "entidad_id",
        "tipo_promotor",
        "persona_referente",
        "convenio_id",
        "ambito",
        "mentor_id",
        "sesion_id",
        "fecha",
        "reto_id",
        "revision_id",
        "evidencia",
        "compromiso",
        "autorizacion_publicacion"
      ],
      "rules": [
        "Consentimiento para publicar nombre/logotipo de entidad",
        "acuerdos aprobados antes de acceso",
        "datos de empresas anonimizados",
        "mentor no accede al expediente personal de estudiantes salvo permiso explícito y base legítima",
        "informar de conflictos de interés"
      ],
      "connections": [
        "FP360 SIM (21)",
        "Evaluación (23)",
        "Gestión documental (14)",
        "Coordinación (25)",
        "Comunicaciones (20)"
      ],
      "case": "Un colegio de economistas valida un caso de tesorería y una empresa real aporta una reclamación anonimizada que se adapta a una cadena comercial entre dos centros.",
      "assessment": [
        "evidenciar colaboración externa",
        "aplicar recomendaciones profesionales",
        "valorar autenticidad de casos",
        "comunicar resultados transferibles"
      ],
      "exceptions": [
        "entidad sin convenio",
        "agenda incompatible",
        "comentario no adecuado",
        "material confidencial",
        "baja de mentor"
      ],
      "id": 24
    },
    {
      "title": "Coordinación intercentros",
      "domain": "Entorno de coordinación",
      "goal": "Planificar campañas compartidas entre institutos canarios, distribuir responsabilidades y mantener la comunicación y continuidad académica.",
      "roles": "Coordinador del proyecto; centro líder; responsables de centros; docentes participantes; asesores",
      "flow": [
        "Crear red y registrar centros colaboradores autorizados",
        "confirmar grupos, calendario y compromisos",
        "designar responsables por centro y departamento",
        "acordar campaña, objetivos, recursos y ventanas de interacción",
        "convocar reuniones y distribuir tareas",
        "supervisar operaciones bloqueadas entre institutos",
        "activar sustituciones o soluciones asíncronas",
        "coordinar mentorías y pruebas técnicas",
        "recopilar indicadores y acuerdos",
        "preparar transferencias a la red autonómica y memoria final"
      ],
      "views": [
        {
          "nombre": "Vista de red",
          "informacion_visible": "Mapa/lista de centros, empresas, alumnado, actividad y estado",
          "acciones": "Abrir centro, consultar disponibilidad",
          "validacion": "Acceso global reservado a coordinación."
        },
        {
          "nombre": "Calendario compartido",
          "informacion_visible": "Sesiones, plazos simulados, reuniones, pruebas y vacaciones locales",
          "acciones": "Programar, mover y convocar",
          "validacion": "La fecha real no mueve automáticamente el tiempo simulado."
        },
        {
          "nombre": "Campañas intercentros",
          "informacion_visible": "Configuraciones, responsables, objetivos y dependencias",
          "acciones": "Crear, activar, pausar, cerrar",
          "validacion": "Exigir aprobación de centros implicados."
        },
        {
          "nombre": "Tareas y acuerdos",
          "informacion_visible": "Tablero de acciones pendientes por centro y responsable",
          "acciones": "Asignar, comentar, cerrar con evidencia",
          "validacion": "Histórico de acuerdos y cambios."
        },
        {
          "nombre": "Incidencias de coordinación",
          "informacion_visible": "Bloqueos de proveedor, ausencias, incompatibilidades y conflictos",
          "acciones": "Reasignar, escalar, mediar",
          "validacion": "Nunca borrar responsabilidades individuales."
        },
        {
          "nombre": "Difusión y transferencia",
          "informacion_visible": "Interés de centros, sesiones de formación, kit de implantación y métricas",
          "acciones": "Preparar convocatoria, registrar adopción",
          "validacion": "Distinguir centros destinatarios de participantes activos."
        },
        {
          "nombre": "Memoria y seguimiento",
          "informacion_visible": "Indicadores de proyecto, mentorías, equipos, gasto/evidencias y lecciones",
          "acciones": "Emitir memoria, exportar",
          "validacion": "Control de permisos e información agregada."
        }
      ],
      "fields": [
        "red_id",
        "centro_id",
        "rol_centro",
        "coordinador_id",
        "grupo_id",
        "campana_id",
        "ventana_horaria",
        "sesion_id",
        "incidencia_id",
        "tarea_id",
        "compromiso",
        "acta",
        "centro_destinatario",
        "adopcion"
      ],
      "rules": [
        "Distinguir centros promotores y centros usuarios",
        "no contabilizar como participante quien solo recibe difusión",
        "aprobación de acuerdos por responsables",
        "actividades asíncronas, suplencias y priorización de centros",
        "seguridad multitenant"
      ],
      "connections": [
        "FP360 SIM (21)",
        "Comunicaciones (20)",
        "Mentoría (24)",
        "Evaluación (23)",
        "Administración (26)"
      ],
      "case": "Dos centros coinciden solo una hora semanal; la coordinación programa fechas simuladas, evita bloqueos de pedidos, asigna suplencias y comunica a las jefaturas los resultados agregados.",
      "assessment": [
        "gestionar calendario intercentros",
        "documentar acuerdos",
        "resolver incidencias organizativas",
        "medir transferencia efectiva"
      ],
      "exceptions": [
        "centro cambia docente",
        "solapamiento de sesiones",
        "centro abandona campaña",
        "solicitudes de adopción masivas",
        "discrepancia de permisos"
      ],
      "id": 25
    },
    {
      "title": "Administración del sistema",
      "domain": "Entorno de coordinación",
      "goal": "Configurar, proteger y mantener RED FP360 como plataforma multiempresa alojada en el IES Manuel Martín González, con trazabilidad, copias y soporte.",
      "roles": "Administrador técnico; responsable de protección de datos; coordinador; gestor de centros; docente administrador delegado",
      "flow": [
        "Definir entorno y política de acceso de la red",
        "registrar centro y empresas con aislamiento lógico",
        "dar de alta usuarios o importarlos con validación",
        "asignar roles y permisos mínimos",
        "configurar periodos, tablas didácticas y catálogos comunes",
        "monitorizar servicios ERP, PostgreSQL, colas e IA local",
        "programar copias cifradas y ensayar restauraciones",
        "responder incidencias técnicas y bloquear accesos comprometidos",
        "revisar auditoría, retención y seguridad",
        "versionar despliegues y cerrar cursos mediante archivado controlado"
      ],
      "views": [
        {
          "nombre": "Panel de salud",
          "informacion_visible": "Servicios, CPU, RAM, almacenamiento, colas, API IA y errores recientes",
          "acciones": "Abrir incidencia, consultar métricas",
          "validacion": "No mostrar secretos en panel ni exportaciones."
        },
        {
          "nombre": "Centros y empresas",
          "informacion_visible": "Árbol de tenants, sedes, empresas, licencias educativas y estado",
          "acciones": "Crear, suspender, archivar",
          "validacion": "Aislamiento de datos obligatorio."
        },
        {
          "nombre": "Usuarios y roles",
          "informacion_visible": "Tabla de usuarios, centro, perfiles, último acceso y MFA",
          "acciones": "Alta, editar, desactivar, restablecer",
          "validacion": "No compartir cuentas ni elevar privilegios sin autorización."
        },
        {
          "nombre": "Políticas y permisos",
          "informacion_visible": "Matriz de roles y operaciones con ámbitos de aplicación",
          "acciones": "Asignar, probar permisos, versionar",
          "validacion": "Doble control para permisos globales."
        },
        {
          "nombre": "Configuración de campaña",
          "informacion_visible": "Impuestos, tipos didácticos, calendario, nomenclaturas y parámetros",
          "acciones": "Importar, validar, publicar versión",
          "validacion": "Cambios no reescriben operaciones históricas."
        },
        {
          "nombre": "Auditoría y seguridad",
          "informacion_visible": "Accesos, intentos, cambios, incidencias y eventos sensibles",
          "acciones": "Investigar, exportar evidencia",
          "validacion": "Registro inmutable o protegido contra alteración."
        },
        {
          "nombre": "Copias y recuperación",
          "informacion_visible": "Calendario de backup, verificación, pruebas de restore y retención",
          "acciones": "Ejecutar copia, restauración ensayada",
          "validacion": "Restaurar sin mezclar centros/campañas."
        },
        {
          "nombre": "Integraciones y despliegue",
          "informacion_visible": "Estado Moodle/LTI, SMTP autorizado, API, Replit-export y modelos locales",
          "acciones": "Probar conexión, actualizar versión",
          "validacion": "Claves en bóveda, sin credenciales en código."
        }
      ],
      "fields": [
        "centro_id",
        "tenant_id",
        "usuario_id",
        "rol_id",
        "permisos",
        "mfa_estado",
        "sesion_id",
        "auditoria_id",
        "parametro_version",
        "backup_id",
        "restauracion_id",
        "servicio_estado",
        "api_version",
        "retencion"
      ],
      "rules": [
        "Acceso MFA para administradores",
        "RBAC y autorización por centro/empresa verificadas en backend",
        "contraseñas cifradas, secretos externos a repositorio",
        "límites de subida y archivos",
        "backups fuera del servidor principal",
        "no reutilizar datos de un centro en otro",
        "separación de producción y prueba"
      ],
      "connections": [
        "Todas las aplicaciones",
        "Coordinación (25)",
        "Portafolio (22)",
        "Evaluación (23)",
        "FP360 SIM (21)"
      ],
      "case": "El administrador incorpora un nuevo instituto, crea dos empresas, asigna docente y estudiantes, verifica que no pueden consultar datos de otro centro, realiza copia y ensaya recuperación.",
      "assessment": [
        "configurar usuarios y permisos",
        "documentar cambios",
        "detectar incidencias técnicas",
        "validar restauración y seguridad"
      ],
      "exceptions": [
        "acceso indebido",
        "fallo en almacenamiento",
        "caída de IA",
        "exportación masiva no autorizada",
        "restauración incompleta",
        "duplicado de usuario"
      ],
      "id": 26
    }
  ]
}