Skip to content

Commit 367d079

Browse files
📝 Update README with technical improvements
- Add cache system documentation (30s TTL) - Document APIError class with context-aware messages - Add granular loading states section - Include retry mechanism details - Add cache invalidation flow diagram - Document error handling interface improvements - Update highlights with new features - Add technical architecture details
1 parent b39099a commit 367d079

File tree

1 file changed

+66
-5
lines changed

1 file changed

+66
-5
lines changed

README.md

Lines changed: 66 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)