From e16f4585c2ff3e4852ddc0037752f2bd44722c4a Mon Sep 17 00:00:00 2001 From: javier Date: Wed, 1 Jul 2026 10:05:05 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20actualizar=20README=20con=20estado=20re?= =?UTF-8?q?al=20de=20implementaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Elimina la sección "Pendiente" del scaffold inicial (ya todo implementado) y la sustituye por tabla de estado con referencia a cada archivo, más la lista real de próximos pasos (Maps key, test en dispositivo, background sync). También añade .idea/ al .gitignore. Co-Authored-By: Claude Sonnet 4.6 --- .gitignore | 3 +++ README.md | 30 +++++++++++++++++++++++------- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index d914c32..8c8de0d 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,6 @@ yarn-error.* # generated native folders /ios /android + +# IDE +.idea/ diff --git a/README.md b/README.md index 1482403..b36a680 100644 --- a/README.md +++ b/README.md @@ -98,11 +98,27 @@ src/ El servidor SIEMPRE fija `user_id`/`reported_by`/`project_id` y valida permisos: el cliente nunca los envía. -## Pendiente (siguientes tandas) +## Estado de implementación -- Sincronización en segundo plano / al recuperar conexión (hoy es manual con el botón). -- Reconciliación de **creaciones** offline (mapear filas locales temporales al `server_id`). -- Captura de fotos (expo-image-picker) e integración con `enqueueMedia`. -- Pantallas ricas: mapa/GeoJSON de features, formulario de inspección desde plantilla, - detalle de incidencia con checklist + comentarios + fotos. -- Resolución de conflictos en UI. +Todas las funcionalidades están implementadas y el typecheck pasa limpio (`npm run typecheck`). + +| Área | Estado | +|------|--------| +| Auto-sync (red/primer plano/intervalo 60s) | ✓ `src/sync/useAutoSync.ts` | +| Reconciliación de creaciones offline (temp-id → server_id, remap FKs) | ✓ `src/sync/engine.ts` | +| Captura de fotos (cámara/galería) + cola offline | ✓ `src/ui/MediaStrip.tsx` | +| Mapa GeoJSON de features (react-native-maps) | ✓ `src/ui/FeatureMap.tsx` + `src/ui/geojson.ts` | +| Formulario de inspección dinámico desde plantilla | ✓ `src/screens/InspectionFormScreen.tsx` | +| Detalle de incidencia (checklist + comentarios + fotos) | ✓ `src/screens/detail/IssueDetailContent.tsx` | +| Resolución de conflictos en UI (Outbox) | ✓ `src/screens/OutboxScreen.tsx` | +| Maestro-detalle adaptativo (tablet 2 paneles / móvil navegación) | ✓ `src/ui/MasterDetail.tsx` | + +## Pendiente (próximas tandas) + +- **Google Maps API key**: el mapa dibuja la geometría offline, pero los tiles base requieren + una key. Configurar con `GOOGLE_MAPS_API_KEY` (ver sección Mapa arriba). +- **Test en dispositivo real**: ejecutar `npx expo run:android` o distribuir el APK + con `eas build -p android --profile preview` (ver sección Arranque). +- **Sincronización en segundo plano con app cerrada** (requiere `expo-task-manager` + + `expo-background-fetch`): actualmente solo sincroniza con la app en primer plano. +- **Push notifications** para alertas de nuevas incidencias o comentarios.