Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/danitocsc/transporte-unrc-web-public/llms.txt

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

El archivo web/types/transport.ts centraliza todas las definiciones de tipos del dominio de transporte. Los tipos se dividen en dos categorías: tipos públicos de API que viajan del servidor al cliente (y pueden aparecer en JSON serializado), y tipos internos que representan registros de la base de datos del sistema de administración y no se exponen en la vista pública.
Ningún tipo de este archivo debe importarse en componentes con 'use client' usando import type — las importaciones de tipo son borradas en tiempo de compilación y no generan código en el bundle del cliente.

Archivo fuente completo

export type Turno = 'Matutino' | 'Intermedio' | 'Vespertino';

export interface PublicPoint {
  punto_id: string;
  colonia: string;
  turno: string;
  dias: string;
  licenciatura: string;
  lat_publica: number;
  lon_publica: number;
  fuente_coordenada_publica: string;
  sugerencia_publica: string;
}

export interface MapPayload {
  generatedAt: string;
  center: [number, number];
  focusBounds: [[number, number], [number, number]];
  points: PublicPoint[];
}

export interface SuggestionWord {
  text: string;
  weight: number;
  [k: string]: string | number;
}

export interface SuggestionHighlight {
  text: string;
  colonia: string;
  turno: string;
  [k: string]: string;
}

export interface SummaryPayload {
  recipientInstitution: string;
  reportTitle: string;
  generatedAt: string;
  author: { name: string; email: string; [k: string]: string };
  hosting: { brand: string; url: string; logo: string; label: string; [k: string]: string };
  downloads: { pdf: string; csv: string; [k: string]: string };
  metrics: {
    totalResponses: number;
    geolocated: number;
    geolocatedPct: number;
    comments: number;
    commentsPct: number;
    uniqueColonias: number;
    topColonia: string;
    topTurno: string;
    [k: string]: string | number;
  };
  map: { count: number; [k: string]: unknown };
  series: {
    turnos: SeriesRow[];
    dias: SeriesRow[];
    colonias: SeriesRow[];
    [k: string]: SeriesRow[];
  };
  suggestions: {
    fareSummary: string;
    themes: Array<{ icon: string; label: string; count: number; [k: string]: unknown }>;
    topFareValues: Array<{ value: number | string; [k: string]: unknown }>;
    highlights: Array<{ text: string; [k: string]: unknown }>;
    [k: string]: unknown;
  };
  [key: string]: unknown;
}

export interface SeriesRow {
  Categoria: string;
  Cantidad: number;
  Porcentaje: number;
  [key: string]: string | number;
}

export interface SurveyRecord {
  matricula: string;
  turno: Turno | null;
  dias_asistencia: string | null;
  licenciatura: string | null;
  lugar_origen: string | null;
  lat: number | null;
  lng: number | null;
  // Future fields
  hora_toma_transporte?: string;
  tipo_transporte?: string;
  tiempo_trayecto?: string;
  hora_ideal_parada?: string;
  preferencia_servicio?: string;
}

Referencia detallada

Turno

export type Turno = 'Matutino' | 'Intermedio' | 'Vespertino';
Unión de literales que representa los tres turnos académicos de UNRC Tijuana. Usado como tipo de SurveyRecord.turno para garantizar que solo se almacenen valores válidos. En PublicStop.turno y PublicPoint.turno se usa string en su lugar para mayor flexibilidad en la serialización JSON.

PublicPoint

Representa un punto geolocalizados anonimizado de un estudiante encuestado. Los campos con el sufijo _publica contienen coordenadas aproximadas (desplazadas o redondeadas) para proteger la privacidad del domicilio real del estudiante.
punto_id
string
Identificador único del punto. No corresponde directamente a la matrícula del estudiante — es un ID generado durante el proceso de anonimización.
colonia
string
Nombre de la colonia de origen declarada por el estudiante.
turno
string
Turno académico del estudiante. Puede ser 'Matutino', 'Intermedio' o 'Vespertino'.
dias
string
Cadena con los días de asistencia declarados (por ejemplo, "Lunes, Miércoles, Viernes").
licenciatura
string
Nombre de la carrera que cursa el estudiante.
lat_publica
number
Latitud pública (anonimizada) del punto de origen.
lon_publica
number
Longitud pública (anonimizada) del punto de origen. Usada por DashboardMap para construir el GeoJSON del heatmap.
fuente_coordenada_publica
string
Método de geocodificación utilizado para obtener las coordenadas (por ejemplo, "colonia_centroid" o "manual").
sugerencia_publica
string
Comentario o sugerencia del estudiante, ya procesado para anonimización (sin información personal identificable).

MapPayload

Payload completo del mapa de calor, generado en el servidor y servido como public/data/map_points.json.
export interface MapPayload {
  generatedAt: string;
  center: [number, number];
  focusBounds: [[number, number], [number, number]];
  points: PublicPoint[];
}
generatedAt
string
Timestamp ISO 8601 de cuándo se generó el archivo. Útil para mostrar la fecha de actualización del informe.
center
[number, number]
Coordenadas del centro del mapa en formato [lat, lng]. DashboardMap las invierte a [lng, lat] al inicializar MapLibre GL.
focusBounds
[[number, number], [number, number]]
Bounding box sugerido para encuadrar todos los puntos: [[latSur, lngOeste], [latNorte, lngEste]]. Disponible para futuras implementaciones de fitBounds.
points
PublicPoint[]
Arreglo de puntos geolocalizados anonimizados. En producción contiene aproximadamente 190 puntos de los 192 registros totales con coordenadas válidas.

SummaryPayload

Payload completo del informe de demanda, generado en el servidor y servido como public/data/summary.json. Es el tipo de retorno principal de loadSiteData().
recipientInstitution
string
Nombre de la institución destinataria del informe.
reportTitle
string
Título del informe para los encabezados de la página /informe.
generatedAt
string
Timestamp ISO 8601 de generación.
author
{ name: string; email: string }
Datos del autor del informe.
hosting
{ brand: string; url: string; logo: string; label: string }
Información del proveedor de hosting de la plataforma.
downloads
{ pdf: string; csv: string }
URLs de descarga del informe en formato PDF y CSV.
metrics.totalResponses
number
Total de respuestas recopiladas en la encuesta (192 en la iteración actual).
metrics.geolocated
number
Número de respuestas con coordenadas válidas para el mapa de calor.
metrics.geolocatedPct
number
Porcentaje de respuestas geolocalizadas sobre el total.
metrics.uniqueColonias
number
Número de colonias únicas representadas en la muestra.
metrics.topColonia
string
Nombre de la colonia con mayor número de estudiantes encuestados.
metrics.topTurno
string
Turno con mayor número de estudiantes encuestados.
series.turnos
SeriesRow[]
Distribución de respuestas por turno académico. Alimenta el ChartCard de turnos.
series.dias
SeriesRow[]
Distribución de respuestas por días de asistencia. Alimenta el ChartCard de días.
series.colonias
SeriesRow[]
Top colonias de origen. Alimenta el ChartCard de colonias con layout="vertical".
suggestions.fareSummary
string
Resumen narrativo de las respuestas sobre tarifa sugerida.
suggestions.themes
Array<{ icon, label, count }>
Temas principales identificados en los comentarios abiertos, con icono emoji, etiqueta y conteo.

SeriesRow

export interface SeriesRow {
  Categoria: string;
  Cantidad: number;
  Porcentaje: number;
  [key: string]: string | number;
}
Fila de datos de una serie estadística. El índice de firma [key: string] permite campos adicionales sin romper la compatibilidad de tipos. Usado directamente por ChartCard como tipo de su prop data.
Categoria
string
Etiqueta de la categoría (nombre del turno, día o colonia).
Cantidad
number
Número absoluto de respuestas en esta categoría.
Porcentaje
number
Porcentaje relativo sobre el total de respuestas. ChartCard lo muestra con toFixed(1).

SurveyRecord

export interface SurveyRecord {
  matricula: string;
  turno: Turno | null;
  dias_asistencia: string | null;
  licenciatura: string | null;
  lugar_origen: string | null;
  lat: number | null;
  lng: number | null;
  hora_toma_transporte?: string;
  tipo_transporte?: string;
  tiempo_trayecto?: string;
  hora_ideal_parada?: string;
  preferencia_servicio?: string;
}
Tipo interno que representa un registro sin procesar de la encuesta estudiantil. No se expone en la vista pública — los datos de SurveyRecord se transforman en PublicPoint y SummaryPayload en el proceso de generación de los archivos JSON estáticos. Los campos opcionales marcados con ? están reservados para iteraciones futuras de la encuesta.
SurveyRecord solo existe en el sistema de administración. La aplicación pública (web/) nunca importa ni lee registros de este tipo — solo consume los payloads ya procesados MapPayload y SummaryPayload.

SuggestionWord y SuggestionHighlight

export interface SuggestionWord {
  text: string;
  weight: number;
  [k: string]: string | number;
}

export interface SuggestionHighlight {
  text: string;
  colonia: string;
  turno: string;
  [k: string]: string;
}
Tipos auxiliares para la sección de sugerencias del informe. SuggestionWord alimenta visualizaciones de nube de palabras. SuggestionHighlight representa citas destacadas de comentarios abiertos con su colonia y turno de contexto.

Build docs developers (and LLMs) love