- ProjectDetail: pestañas reducidas a Features | Incidencias (Features por
defecto); PhasesSection eliminada.
- InspectionForm en dos pasos: 1) selector de plantillas asignadas al
proyecto (la de la feature marcada como sugerida ★, opción de inspección
libre), 2) formulario dinámico. Enlace "Cambiar plantilla" para volver.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- feature_types: nueva tabla local + tipo FeatureType + upsert en applyBundle
+ getFeatureTypes(); FeatureDetail muestra badge del tipo con su color.
- feature: columnas feature_type_id + is_active (migración BD v3);
feature.update acepta ambas; toggle "Activa" en el detalle con badge
"inactiva" cuando corresponde.
- templates: ahora catálogo global asignado por pivot — getTemplates() ya no
filtra por project_id (informativo); phase_id eliminado del tipo y del pick.
- Formulario de inspección: soporta fields[].group (secciones), question
(etiqueta principal), help (texto de ayuda) y required (validación al
guardar con aviso de campos faltantes).
- Bundle: tipa issue_tasks correctamente como IssueTask[].
- docs/: sincronizados openapi.yaml y MOBILE_APP_BRIEF.md v1.1 del backend.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fase 0: config Android (package, permisos, orientación), eas.json (APK), deps
nativas (react-native-maps, image-picker, location), app.config.js para la key
de Google Maps por secreto EAS.
Fase 1: capa responsive (useLayout) + componente MasterDetail (dos paneles en
tablet, navegación en móvil).
Fase 2: pantallas funcionales — detalle de proyecto con secciones Fases/Features/
Incidencias, edición de progreso/estado, formulario de inspección dinámico
desde plantilla, incidencias maestro-detalle (checklist + comentarios), alta de
incidencia; gating por permisos Spatie.
Fase 3: fotos (cámara/galería) → cola de media, con miniaturas pendientes/sync.
Fase 4: mapa de features (Google Maps) con geometría GeoJSON y selección.
Fase 5: auto-sync (foreground/reconexión/intervalo, con candado) + reconciliación
de creaciones offline (id temporal negativo → server_id, remapeo de FKs hijas).
Fase 6: revisión de conflictos/errores del outbox, indicadores y APK preview.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>