@@ -64,9 +64,11 @@ Sistema de gestión hospitalaria desarrollado con tecnologías web modernas, dis
6464
6565- 🎨 ** Diseño Profesional** - Interfaz moderna con sidebar colapsable y gradientes
6666- 📱 ** 100% Responsive** - Optimizado para móviles, tablets y desktop
67- - ⚡ ** Rendimiento Optimizado** - Hot Module Replacement con Vite
68- - 🔒 ** Arquitectura Escalable** - Separación de capas (UI, Servicios, Datos)
67+ - ⚡ ** Rendimiento Optimizado** - Sistema de caché con TTL de 30s + Hot Module Replacement
68+ - 🔒 ** Arquitectura Escalable** - Separación de capas (UI, Servicios, Caché, Datos)
6969- 🎭 ** Mock Service Worker** - Backend simulado sin necesidad de servidor real
70+ - 🛡️ ** Manejo Robusto de Errores** - Clase APIError con mensajes contextuales y retry mechanism
71+ - 💾 ** Estados de Carga Granulares** - Feedback visual específico para cada operación
7072- 🎨 ** Tailwind CSS** - Estilos utility-first para desarrollo rápido
7173
7274---
@@ -121,10 +123,15 @@ Sistema de gestión hospitalaria desarrollado con tecnologías web modernas, dis
121123
122124- ✅ ** SPA (Single Page Application)** - Navegación sin recargas de página
123125- ✅ ** API RESTful Mock** - Endpoints completos con MSW
126+ - ✅ ** Sistema de Caché Inteligente** - Caché en memoria con TTL de 30 segundos para optimizar peticiones
127+ - ✅ ** Manejo Robusto de Errores** - Clase APIError personalizada con mensajes user-friendly por código HTTP
128+ - ✅ ** Estados de Carga Granulares** - Indicadores específicos para cada operación (guardando, eliminando, cargando)
129+ - ✅ ** Retry Mechanism** - Botón de reintentar con alternativas de navegación en caso de error
124130- ✅ ** Arquitectura en Capas** - Servicios centralizados y componentes reutilizables
125- - ✅ ** Estado Local** - Gestión de estado con React Hooks
131+ - ✅ ** Estado Local Optimizado ** - Gestión de estado con React Hooks y prevención de re-renders innecesarios
126132- ✅ ** Hot Module Replacement** - Desarrollo con recarga instantánea
127133- ✅ ** ES Modules** - Código moderno con import/export
134+ - ✅ ** Rutas Dinámicas** - Configuración automática para desarrollo y producción (GitHub Pages)
128135
129136---
130137
@@ -295,14 +302,68 @@ Components → Pages → Layout
295302
296303### Capa de Servicios
297304```
298- Pages → API Service → MSW Handlers
305+ Pages → API Service → Cache Layer → MSW Handlers
299306```
300307- ** API Service** (` src/services/api.js ` ): Centraliza todas las llamadas HTTP
308+ - ** Cache Layer** : Sistema de caché en memoria con invalidación automática
301309- ** MSW Handlers** : Intercepta y simula respuestas del backend
302310
311+ ### Sistema de Caché
312+
313+ El proyecto implementa un sistema de caché inteligente:
314+
315+ ``` javascript
316+ // Caché en memoria con TTL de 30 segundos
317+ const cache = {
318+ pacientes: null ,
319+ lastFetch: null ,
320+ CACHE_DURATION : 30000
321+ };
322+ ```
323+
324+ ** Características:**
325+ - ✅ ** Cache hits** : ` getAll() ` usa caché si es válido (< 30s)
326+ - ✅ ** Búsqueda optimizada** : ` getById() ` busca en caché antes de hacer fetch
327+ - ✅ ** Invalidación automática** : Create/Update/Delete limpian el caché
328+ - ✅ ** Force refresh** : Opción ` getAll(true) ` para forzar recarga
329+ - ✅ ** Logs detallados** : Console logs de cache hits/misses
330+
331+ ### Manejo de Errores
332+
333+ Sistema robusto con clase personalizada ` APIError ` :
334+
335+ ``` javascript
336+ class APIError extends Error {
337+ constructor (message , status , details ) {
338+ super (message);
339+ this .status = status;
340+ this .userMessage = getUserFriendlyMessage (status);
341+ }
342+ }
343+ ```
344+
345+ ** Características:**
346+ - ✅ ** Mensajes contextuales** por código HTTP (400, 401, 403, 404, 500, 503)
347+ - ✅ ** Interfaz de error mejorada** con iconos y colores semánticos
348+ - ✅ ** Botón "Reintentar"** con funcionalidad completa
349+ - ✅ ** Soluciones sugeridas** específicas por tipo de error
350+ - ✅ ** Navegación alternativa** (botón "Ir al inicio")
351+
352+ ### Estados de Carga
353+
354+ Indicadores granulares por operación:
355+
356+ - 🔄 ** Loading inicial** : Spinner mientras MSW se inicializa
357+ - 💾 ** Guardando** : Estado específico en formularios
358+ - 🗑️ ** Eliminando** : Feedback visual en botones delete
359+ - 🔍 ** Cargando lista** : Spinner en lista de pacientes
360+ - 🔒 ** Botones deshabilitados** : Previene clicks durante operaciones
361+
303362### Flujo de Datos
304363```
305- User Action → Component → API Service → MSW → Response → State Update → Re-render
364+ User Action → Component → API Service → Cache Check → MSW → Response → State Update → Re-render
365+ ↓ ↓
366+ Cache Hit (return) Cache Invalidation (CUD)
306367```
307368
308369---
0 commit comments