Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ariellukezz/admision-web/llms.txt

Use this file to discover all available pages before exploring further.

The Calificación module is the grade-entry interface used by exam scorers after an admission exam session. Calificadores are responsible for inputting raw scores for each applicant by knowledge area and sub-component, verifying those values against vocational exam data, and confirming that the records are ready for publication into the final results. All scoring work happens within the protected /calificacion/* route namespace.
Always double-check entered scores against the physical answer sheet before the results batch is published. Once the ResultadosController publishes a batch, scores become visible to applicants and administrators; corrections require an administrator to manually reopen the process.

Role and Access

The Calificador role (id_rol = 7) is required for all scoring routes. Upon login, users with this role are redirected to /calificacion. Every route under the /calificacion/* prefix is protected by the auth and calificador middleware. A 403 No tienes permisos error is returned for any other role.
Middleware file: app/Http/Middleware/Calificador.php
Route prefix:    /calificacion
Auth redirect:   /calificacion  (after login with id_rol = 7)

Puntaje Model

The puntajes table links an applicant (dni), an admission process (id_proceso), and their computed score (puntaje). Key columns used in the scoring module:
ColumnDescription
dniApplicant document number
id_procesoAdmission process identifier
AREAKnowledge area: BIOMEDICAS, SOCIALES, or INGENIERIAS
puntajeRaw area score
puntaje_vocacionalScore from the vocational orientation exam
aptoEligibility flag (SI / NO)
programaIntended program of study
paterno, materno, nombresApplicant name fields
fechaScore entry date
The combined admission score used for ranking is puntaje + puntaje_vocacional. Maximum scores per area are queried by PuntajeController@getPunajesMaximos (GET /get-puntajes-maximos-proceso/{p}):
// PuntajeController.php
$res = DB::select("
  SELECT pun.AREA, maximos.max_puntaje, pun.dni, pun.paterno, pun.materno, pun.nombres, pun.programa
  FROM (
      SELECT AREA, MAX(puntaje + puntaje_vocacional) AS max_puntaje
      FROM puntajes
      WHERE id_proceso = 10
        AND AREA IN ('BIOMEDICAS', 'SOCIALES', 'INGENIERIAS')
        AND apto = 'SI'
      GROUP BY AREA
  ) AS maximos
  JOIN puntajes pun ON maximos.max_puntaje = (pun.puntaje + pun.puntaje_vocacional)
    AND pun.area = maximos.area
  WHERE pun.id_proceso = 10 AND pun.apto = 'SI'
");

Score Entry Workflow

1

Log in as Calificador — redirected to /calificacion

After successful authentication with a id_rol = 7 account, the system automatically redirects to the Calificación panel (/calificacion). This panel renders the Simulacro/Calificacion/calificacion Inertia view and uses LayoutCalificador.vue as its shell layout.The SubirResultado view (accessible at GET /calificacion/subir-resultado) allows bulk-uploading exam results from an XLSX file before individual score entry begins.
2

Select the process / exam

The Calificador selects the active admission process. The process identifier is scoped per authenticated user via auth()->user()->id_proceso, so each Calificador only sees the exam batch assigned to them. The scoring panel displays the correct set of applicants automatically based on this scoped process.
3

Upload and process answer data (ResultadosController)

Scores are loaded from physical answer sheets through a set of bulk-operation endpoints under the /calificacion prefix, all handled by ResultadosController:
EndpointMethodDescription
POST /calificacion/subir-excel-simulacroSubirResultadoBulk-import scores from XLSX
POST /calificacion/carga-idecargaArchivoIdeLoad IDE identification data
POST /calificacion/actualizar-ideactualizarIdeUpdate existing IDE data
POST /calificacion/carga-ide/{proceso}/{area}cargaArchivoIdeProcess-scoped IDE load (no web middleware)
POST /calificacion/carga-res/{proceso}cargaArchivoResLoad response answer data (no web middleware)
POST /calificacion/carga-pat/{proceso}cargaArchivoPatLoad answer pattern/key (no web middleware)
GET /calificacion/leer-ide/{area}leerIdeValidate uploaded IDE file for an area
GET /calificacion/get-select-puestos/{id_proceso}selectPuestosFetch ranked position list
GET /calificacion/descargar-exceldescargarExcelFull results XLSX download
POST /get-puntaje-simulacrogetResultadosRetrieve computed scores
4

Manage cash payments (PagoSimulacroController)

The scoring panel also provides payment reconciliation for applicants who paid in-person. These three root-level endpoints are handled by PagoSimulacroController:
  • GET /get-pagos-dni/{dni} — retrieve confirmed payments for a given applicant
  • POST /insertar-pago — manually insert a cash-payment record into pagos_general
  • GET /eliminar-pago/{dni}/{operacion} — remove a mistakenly recorded payment
// PagoSimulacroController@insertarPago
DB::table('pagos_general')->insert([
    'dni'      => $req['dni'],
    'operacion'=> $req['operacion'],
    'fecha'    => $req['fecha'],
    'monto'    => $req['monto'],
    'medio'    => 'Caja',
    'proceso'  => auth()->user()->id_proceso,
]);
The proceso column is automatically scoped to the Calificador’s current process, preventing cross-process data leaks.
5

View and verify vocational exam details (DetalleExamenVocacionalController)

Alongside the main exam score, each applicant completes a vocational orientation test. Calificadores can view and record these results through two root-level endpoints managed by DetalleExamenVocacionalController:
POST /save-respuesta   → saveRespuesta  — saves a single vocational exam answer
POST /save-vocacional  → saveVocacional — saves the full vocational profile record
Both methods write to the detalle_examen_vocacional table, linking the applicant’s response to the vocational exam item. The resulting puntaje_vocacional is then combined with the area score to produce the final ranking value.The scoring panel also provides a dedicated calificación sub-view at GET /calificacion/calificacion (rendered as Simulacro/Calificacion/lecturas) and a ponderaciones management view at GET /calificacion/ponderacion (rendered as Simulacro/Calificacion/ponderacion).

Ponderación Management

Scoring weights for each exam area are managed through PonderacionController under the /calificacion prefix:
EndpointMethodDescription
POST /calificacion/save-ponderacionsaveCreate or update a ponderación record
POST /calificacion/get-ponderacionesgetPonderacionesList all ponderación records
POST /calificacion/save-ponderacion-detalleinsertarPonderacionInsert a ponderación detail entry
POST /calificacion/get-ponderaciones-selectgetPonderacionesSelectPonderación options for selectors

Score Download and Reporting

Calificadores can export results in area-segmented files for archival and audit purposes:
EndpointDescription
GET /calificacion/descargar-excelFull results XLSX download
GET /descargar-ingenieriasEngineering area exam data
GET /descargar-biomedicasBiomedical area exam data
GET /descargar-socialesSocial sciences area exam data
These methods on ResultadosController generate downloadable files and are accessible to authenticated users.

How Scores Appear in Final Results

After the Calificador completes entry, scores stored in puntajes are joined with applicant data in ResultadosController@getResultados. The public-facing score lookup (GET /api/v1/resultados_simulacro/{dni}ResCepreController@obtenerInformacionEstudiante) reads this finalized data and returns it without authentication, making it directly available to applicants and integrating university portals. The maximum-score leaders per area (PuntajeController@getPunajesMaximos) are also published on the results announcement view, showing the top score in each knowledge area alongside the name and program of the top-scoring applicant.

Build docs developers (and LLMs) love