erp-construccion/docs/02-definicion-modulos/MAI-005-control-obra-avances/requerimientos/RF-PROG-003-evidencias-checklists.md

529 lines
24 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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