# RF-PROG-003: Evidencias Fotográficas y Checklists **Épica:** MAI-005 - Control de Obra y Avances **Versión:** 1.0 **Fecha:** 2025-11-17 --- ## 1. Descripción General Sistema de captura, almacenamiento y organización de evidencias fotográficas georeferenciadas con marcas de agua. Incluye checklists de calidad por etapa constructiva para asegurar cumplimiento normativo y contractual. --- ## 2. Objetivos de Negocio - **Evidencia:** Respaldo visual de cada etapa constructiva - **Calidad:** Verificación de cumplimiento mediante checklists - **Trazabilidad:** Vinculación foto-concepto-vivienda-fecha - **Cumplimiento:** Documentación para INFONAVIT, cliente y auditorías --- ## 3. Alcance Funcional ### 3.1 Captura de Evidencias Fotográficas **Formulario de Carga:** ``` ┌──────────────────────────────────────────────────────┐ │ SUBIR EVIDENCIAS FOTOGRÁFICAS │ ├──────────────────────────────────────────────────────┤ │ Proyecto: Fracc. Los Pinos │ │ Fecha: 15/Feb/2025 14:30 │ │ │ │ Ubicación: │ │ Etapa: [1 ▼] │ │ Frente: [B ▼] │ │ Lote/vivienda: [23 ▼] (opcional) │ │ │ │ Concepto/Actividad: [02.03 Cimentación ▼] │ │ Subconcepto: [Colado de zapatas ▼] (opcional) │ │ │ │ Tipo de foto: │ │ (●) Avance ( ) Incidencia ( ) Acabado final │ │ │ │ Fotos (arrastrar o click): │ │ ┌─────────┬─────────┬─────────┬─────────┐ │ │ │ [FOTO1] │ [FOTO2] │ [FOTO3] │ [FOTO4] │ │ │ │ 2.1 MB │ 1.8 MB │ 2.5 MB │ 1.9 MB │ │ │ │ ✓ │ ✓ │ ✓ │ ✓ │ │ │ └─────────┴─────────┴─────────┴─────────┘ │ │ │ │ ☑ Agregar marca de agua automática │ │ (Proyecto, Fecha, Lote, Concepto) │ │ │ │ ☑ Georreferenciar (ubicación GPS) │ │ 📍 Lat: 25.6866, Lng: -100.3161 │ │ Verificado: Dentro de obra ✓ │ │ │ │ Descripción: │ │ [Colado de zapatas en lotes 20-23. Concreto 250 ]│ │ [kg/cm². Rev isión de acero previa. ]│ │ │ │ Tags: #cimentación #zapatas #colado #calidad │ │ │ │ [Cancelar] [Subir Evidencias] │ └──────────────────────────────────────────────────────┘ Validaciones: - Formato: JPG, PNG, HEIC (max 10MB c/u) - Máximo: 20 fotos por carga - Geolocalización dentro de radio de 500m de obra - Fecha foto no puede ser futura ``` ### 3.2 Galería de Evidencias **Vista por Vivienda:** ``` EVIDENCIAS - Lote 23 (Prototipo Tipo A) Filtros: [Todas las partidas ▼] [Últimos 30 días ▼] [🔍] ┌──────────────────────────────────────────────────────┐ │ 15/Feb/2025 - Cimentación (4 fotos) │ │ ┌───────┬───────┬───────┬───────┐ │ │ │ │ │ │ │ │ │ │ IMG1 │ IMG2 │ IMG3 │ IMG4 │ │ │ │ │ │ │ │ │ │ │ Zapata│ Acero │ Colado│ Acabado │ │ │ Z-01 │corrido│ muros │ │ │ │ └───────┴───────┴───────┴───────┘ │ │ Por: Ing. Pedro Ramírez │ │ 📍 Verificado en sitio │ │ │ │ 10/Feb/2025 - Preliminares (3 fotos) │ │ ┌───────┬───────┬───────┐ │ │ │ Trazo │Nivel 0│Plantil│ │ │ └───────┴───────┴───────┘ │ │ │ │ 05/Feb/2025 - Excavación (2 fotos) │ │ ┌───────┬───────┐ │ │ │ Excav │ Fondo │ │ │ └───────┴───────┘ │ └──────────────────────────────────────────────────────┘ Total: 87 fotos | Última: 15/Feb/2025 [📷 Agregar Fotos] [📊 Vista Timeline] [⬇️ Descargar Todo] ``` ### 3.3 Vista de Foto Individual **Detalle Completo:** ``` ╔══════════════════════════════════════════════════════╗ ║ EVIDENCIA FOTOGRÁFICA ║ ╠══════════════════════════════════════════════════════╣ ║ ║ ║ [IMAGEN] ║ ║ Colado de zapatas Lote 23 ║ ║ ║ ║ Marca de agua visible: ║ ║ "Fracc. Los Pinos | Lote 23 | 15/Feb/2025 14:32" ║ ╠══════════════════════════════════════════════════════╣ ║ Información ║ ║ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ║ ║ Proyecto: Fracc. Los Pinos - Etapa 1 ║ ║ Lote: 23 (Prototipo Tipo A) ║ ║ Partida: 02.03 Cimentación ║ ║ Subconcepto: Colado de zapatas ║ ║ ║ ║ Fecha captura: 15/Feb/2025 14:32 ║ ║ Capturado por: Ing. Pedro Ramírez ║ ║ Dispositivo: iPhone 13 Pro ║ ║ Origen: App móvil ║ ║ ║ ║ Geolocalización: ║ ║ 📍 25.6866° N, 100.3161° W ║ ║ Verificado: ✓ Dentro de obra (45m del centroide) ║ ║ [Ver en mapa →] ║ ║ ║ ║ Descripción: ║ ║ "Colado de zapatas en lotes 20-23. Concreto 250 ║ ║ kg/cm². Revisión de acero previa." ║ ║ ║ ║ Tags: #cimentación #zapatas #colado #calidad ║ ║ ║ ║ Metadata EXIF: ║ ║ Resolución: 4032 × 3024 (12.2 MP) ║ ║ Tamaño: 2.3 MB ║ ║ Hash SHA256: a3f5...8b2c (integridad verificada) ║ ╠══════════════════════════════════════════════════════╣ ║ [⬅ Anterior] [Editar Info] [Siguiente ➡] ║ ╚══════════════════════════════════════════════════════╝ ``` ### 3.4 Checklists de Calidad **Checklist por Etapa Constructiva:** ``` ┌──────────────────────────────────────────────────────┐ │ CHECKLIST DE CALIDAD - CIMENTACIÓN │ │ Lote: 23 | Prototipo: Tipo A │ │ Fecha: 15/Feb/2025 │ │ Inspector: Ing. Carlos Méndez (Control de Calidad) │ ├──────────────────────────────────────────────────────┤ │ │ │ ■ EXCAVACIÓN Y NIVELACIÓN │ │ ☑ Excavación a profundidad de proyecto (1.20m) │ │ Evidencia: [📷 2 fotos] │ │ ☑ Nivel de fondo de excavación verificado │ │ Tolerancia: ±2cm ✓ │ │ ☑ Limpieza de fondo (sin tierra suelta) │ │ ☐ Compactación de fondo (No aplica para este proto) │ │ │ │ ■ ACERO DE REFUERZO │ │ ☑ Diámetro de varillas según plano (#3, #4) │ │ Medido: ✓ Conforme │ │ ☑ Separación de varillas (20cm) │ │ Tolerancia: ±1cm ✓ │ │ ☑ Recubrimiento mínimo (5cm) │ │ Medido: 6cm ✓ │ │ ☑ Traslapes y anclajes correctos │ │ Longitud traslape: 40 diámetros ✓ │ │ ☑ Silletas/espaciadores colocados │ │ Evidencia: [📷 3 fotos] │ │ │ │ ■ CIMBRA (Si aplica) │ │ ☑ Nivel y plomada de cimbra │ │ ☑ Rigidez adecuada │ │ ☑ Desmoldante aplicado │ │ │ │ ■ CONCRETO │ │ ☑ Resistencia especificada (f'c=250 kg/cm²) │ │ Cilindros tomados: 3 (Lab: XYZ) │ │ Ticket de entrega: #12345 │ │ ☑ Revenimiento en especificación (10-12 cm) │ │ Medido: 11 cm ✓ │ │ ☑ Colado continuo sin juntas frías │ │ ☑ Vibrado adecuado │ │ Evidencia: [📷 1 foto] │ │ ☑ Curado iniciado (agua/membrana) │ │ Método: Riego cada 4h por 7 días │ │ │ │ ■ GEOMETRÍA Y DIMENSIONES │ │ ☑ Dimensiones de zapatas (1.20 x 1.20 x 0.30m) │ │ Tolerancia: ±2cm ✓ │ │ ☑ Espesor de losa (10cm) │ │ Tolerancia: ±1cm ✓ │ │ │ │ ■ NO CONFORMIDADES │ │ ⚠️ NC-001: Segregación leve en esquina SE zapata Z3 │ │ Severidad: Menor │ │ Acción: Resane con mortero epóxico │ │ Responsable: Maestro Juan Pérez │ │ Fecha límite: 18/Feb/2025 │ │ Status: Pendiente │ │ │ │ ■ APROBACIÓN │ │ Cumplimiento: 95% (19 de 20 items OK) │ │ Status: ✅ APROBADO CON OBSERVACIONES │ │ │ │ Firma Inspector: _______________________ │ │ Fecha: 15/Feb/2025 │ │ │ │ [Guardar] [Generar PDF] [Enviar] │ └──────────────────────────────────────────────────────┘ ``` ### 3.5 Catálogo de Checklists **Templates por Partida:** ``` CATÁLOGO DE CHECKLISTS DE CALIDAD ┌──────────────────────────────────────────────────────┐ │ Partida │ Items │ Oblig. │ Template ││ ├────────────────────────┼───────┼────────┼───────────┤│ │ 01-Preliminares │ 8 │ 100% │ [Usar] ││ │ 02-Cimentación │ 20 │ 90% │ [Usar] ││ │ 03-Estructura │ 25 │ 95% │ [Usar] ││ │ 03.01 Muros │ 15 │ 90% │ [Usar] ││ │ 03.02 Losas │ 18 │ 95% │ [Usar] ││ │ 04-Instalaciones │ 35 │ 100% │ [Usar] ││ │ 04.01 Hidráulicas │ 12 │ 100% │ [Usar] ││ │ 04.02 Sanitarias │ 10 │ 100% │ [Usar] ││ │ 04.03 Eléctricas │ 13 │ 100% │ [Usar] ││ │ 05-Acabados │ 30 │ 95% │ [Usar] ││ │ 05.01 Yesos │ 8 │ 90% │ [Usar] ││ │ 05.02 Pisos │ 10 │ 100% │ [Usar] ││ │ 05.03 Azulejos │ 7 │ 100% │ [Usar] ││ │ 05.04 Pintura │ 5 │ 95% │ [Usar] ││ │ 06-Urbanización │ 15 │ 90% │ [Usar] ││ │ 07-Entrega Final │ 40 │ 100% │ [Usar] ││ └──────────────────────────────────────────────────────┘ [+ Crear Checklist Personalizado] ``` ### 3.6 Reportes de Evidencias **Reporte por Período:** ``` REPORTE DE EVIDENCIAS FOTOGRÁFICAS Proyecto: Fracc. Los Pinos - Etapa 1 Período: Febrero 2025 ┌──────────────────────────────────────────────────────┐ │ ■ Resumen Ejecutivo │ │ Total de fotos: 1,247 │ │ Viviendas con evidencias: 50 (100%) │ │ Partidas documentadas: 6 de 6 (100%) │ │ Fotos geolocalizadas: 1,189 (95.3%) │ │ Promedio fotos/vivienda: 24.9 │ │ │ │ ■ Distribución por Partida │ │ 01-Preliminares: 98 fotos ( 7.9%) │ │ 02-Cimentación: 287 fotos (23.0%) │ │ 03-Estructura: 412 fotos (33.0%) │ │ 04-Instalaciones: 298 fotos (23.9%) │ │ 05-Acabados: 142 fotos (11.4%) │ │ 06-Urbanización: 10 fotos ( 0.8%) │ │ │ │ ■ Checklists de Calidad │ │ Checklists aplicados: 150 │ │ Cumplimiento promedio: 97.2% ✓ │ │ No conformidades: 12 (8%) │ │ Menores: 10 │ │ Mayores: 2 │ │ Todas resueltas: ✓ │ │ │ │ ■ Almacenamiento │ │ Espacio utilizado: 4.8 GB │ │ Respaldo en nube: ✓ Sincronizado │ │ Integridad: 100% verificada (SHA256) │ └──────────────────────────────────────────────────────┘ [Exportar PDF] [Descargar ZIP] [Enviar a Cliente] ``` ### 3.7 Búsqueda Avanzada **Filtros Múltiples:** ``` ┌──────────────────────────────────────────────────────┐ │ BÚSQUEDA DE EVIDENCIAS │ ├──────────────────────────────────────────────────────┤ │ Proyecto: [Fracc. Los Pinos ▼] │ │ Etapa: [Todas ▼] │ │ │ │ Rango de fechas: │ │ Desde: [01/Feb/2025] Hasta: [28/Feb/2025] │ │ │ │ Ubicación: │ │ Frente: [Todos ▼] │ │ Lote/vivienda: [Todos ▼] │ │ │ │ Concepto/Partida: │ │ [02 - Cimentación ▼] │ │ Subconcepto: [Todos ▼] │ │ │ │ Tipo de foto: │ │ ☑ Avance ☑ Incidencia ☑ Acabado final │ │ │ │ Capturado por: │ │ [Todos los usuarios ▼] │ │ │ │ Tags: [#cimentación #calidad +] │ │ │ │ ☑ Solo con geolocalización │ │ ☐ Solo con marca de agua │ │ │ │ Búsqueda en descripción: │ │ [zapatas 🔍] │ │ │ │ [Limpiar Filtros] [Buscar] │ └──────────────────────────────────────────────────────┘ Resultados: 23 fotos encontradas ``` --- ## 4. Modelo de Datos ```typescript // photos (evidencias fotográficas) { id: UUID, projectId: UUID, stageId: UUID NULLABLE, workfrontId: UUID NULLABLE, unitId: UUID NULLABLE, // lote/vivienda activityId: UUID NULLABLE, budgetItemId: UUID NULLABLE, photoType: ENUM('progress', 'incident', 'final', 'quality_check'), originalFilename: VARCHAR(255), storedFilename: VARCHAR(255), filePath: VARCHAR(512), fileSize: INTEGER, // bytes mimeType: VARCHAR(50), width: INTEGER, height: INTEGER, resolution: VARCHAR(20), // "4032x3024" captureDate: TIMESTAMP, uploadDate: TIMESTAMP DEFAULT CURRENT_TIMESTAMP, hasWatermark: BOOLEAN DEFAULT false, watermarkText: TEXT, geolocation: POINT, // PostGIS geoVerified: BOOLEAN DEFAULT false, distanceFromSite: DECIMAL(8,2), // metros description: TEXT, tags: VARCHAR[], uploadedBy: UUID, uploadedVia: ENUM('web', 'mobile', 'api'), // EXIF metadata deviceModel: VARCHAR(100), exifData: JSONB, // Hash para verificar integridad sha256Hash: VARCHAR(64), // Vinculación opcional progressRecordId: UUID NULLABLE, checklistId: UUID NULLABLE, isDeleted: BOOLEAN DEFAULT false, deletedAt: TIMESTAMP NULLABLE, deletedBy: UUID NULLABLE } // quality_checklists (checklists de calidad) { id: UUID, projectId: UUID, unitId: UUID NULLABLE, templateId: UUID, // checklist template templateVersion: INTEGER, partida: VARCHAR(50), subpartida: VARCHAR(50) NULLABLE, inspectionDate: DATE, inspectorId: UUID, items: JSONB, /* [{ itemId: string, question: string, isCompliant: boolean, measurement: number (optional), tolerance: string, notes: string, photoIds: UUID[] }] */ totalItems: INTEGER, compliantItems: INTEGER, compliancePercent: DECIMAL(5,2) GENERATED, nonConformities: JSONB, /* [{ ncId: string, severity: 'minor'|'major'|'critical', description: string, correctiveAction: string, responsibleId: UUID, dueDate: DATE, status: 'open'|'closed', closedDate: DATE }] */ status: ENUM('draft', 'completed', 'approved', 'rejected'), approvalStatus: ENUM('approved', 'approved_with_observations', 'rejected'), approvedBy: UUID NULLABLE, approvedAt: TIMESTAMP NULLABLE, signatureData: TEXT, // base64 de firma digital signedAt: TIMESTAMP NULLABLE, pdfGenerated: BOOLEAN DEFAULT false, pdfPath: VARCHAR(512), createdAt: TIMESTAMP DEFAULT CURRENT_TIMESTAMP } // checklist_templates (templates de checklists) { id: UUID, code: VARCHAR(20), name: VARCHAR(255), partida: VARCHAR(50), subpartida: VARCHAR(50) NULLABLE, items: JSONB, /* [{ itemId: string, order: number, question: string, type: 'boolean'|'measurement'|'selection', isRequired: boolean, tolerance: string (optional), options: string[] (for selection type) }] */ version: INTEGER DEFAULT 1, isActive: BOOLEAN DEFAULT true, createdAt: TIMESTAMP, updatedAt: TIMESTAMP } // photo_albums (álbumes para organización) { id: UUID, projectId: UUID, name: VARCHAR(255), description: TEXT, albumType: ENUM('by_unit', 'by_activity', 'by_date', 'custom'), photoIds: UUID[], // array de photo IDs coverPhotoId: UUID NULLABLE, createdBy: UUID, createdAt: TIMESTAMP } ``` --- ## 5. Criterios de Aceptación - [ ] Carga de fotos desde web y app móvil - [ ] Marcas de agua automáticas configurables - [ ] Geolocalización automática con validación - [ ] Organización por proyecto/etapa/lote/concepto - [ ] Galería con filtros y búsqueda - [ ] Metadata EXIF completa - [ ] Hash SHA256 para verificar integridad - [ ] Catálogo de checklists por partida - [ ] Checklists con fotos vinculadas - [ ] Registro de no conformidades - [ ] Exportación de reportes (PDF, ZIP) - [ ] Búsqueda avanzada con múltiples filtros - [ ] Álbumes personalizados --- **Estado:** ✅ Ready for Development