# RF-PROJ-001: Catálogo de Proyectos **Epic:** MAI-002 - Proyectos y Estructura de Obra **Tipo:** Requerimiento Funcional **Prioridad:** Crítica (P0) **Estado:** 📋 Pendiente **Última actualización:** 2025-11-17 --- ## 📋 Descripción El sistema debe permitir la gestión completa de proyectos de construcción inmobiliaria, incluyendo fraccionamientos horizontales, conjuntos habitacionales y edificios verticales. Cada proyecto debe mantener información general, ubicación, datos del cliente, permisos legales y estados del ciclo de vida. --- ## 🎯 Objetivos 1. **Centralizar información:** Consolidar todos los datos del proyecto en un único registro 2. **Trazabilidad:** Rastrear el ciclo de vida completo desde licitación hasta cierre 3. **Multi-proyecto:** Permitir gestión simultánea de múltiples proyectos por constructora 4. **Clasificación:** Organizar proyectos por tipo, tamaño, ubicación y estado 5. **Compliance:** Registrar información legal y permisos requeridos --- ## 📐 Alcance Funcional ### 1. Tipos de Proyectos El sistema debe soportar los siguientes tipos de proyectos inmobiliarios: #### 1.1 Fraccionamiento Horizontal - **Descripción:** Desarrollo de viviendas unifamiliares en terreno extenso - **Características:** - Dividido en etapas y manzanas - Lotes individuales con área de terreno - Viviendas independientes (casas) - Áreas comunes (vialidades, áreas verdes, caseta) - Urbanización completa (agua, luz, drenaje, pavimentación) - **Ejemplo:** Fraccionamiento "Villas del Sol" con 250 viviendas en 15 hectáreas #### 1.2 Conjunto Habitacional - **Descripción:** Desarrollo mixto con viviendas adosadas o en condominio horizontal - **Características:** - Viviendas dúplex, tríplex o adosadas - Régimen de condominio - Amenidades compartidas (alberca, gym, salón de usos múltiples) - Áreas comunes más extensas que fraccionamiento - **Ejemplo:** Conjunto "Residencial Alameda" con 80 dúplex y amenidades #### 1.3 Edificio Vertical - **Descripción:** Torre o edificio multifamiliar de departamentos - **Características:** - Múltiples niveles (pisos) - Departamentos por nivel - Elevadores y cuarto de máquinas - Estacionamiento (subterráneo o en niveles) - Amenidades en azotea o planta baja - **Ejemplo:** Torre "Skyline Residences" con 15 niveles y 120 departamentos #### 1.4 Proyecto Mixto - **Descripción:** Combinación de tipos (ej: torre + casas, comercial + residencial) - **Características:** - Múltiples tipologías en un mismo desarrollo - Zonificación por uso (residencial, comercial, servicios) - Mayor complejidad en permisos y normativa - **Ejemplo:** "Plaza Urbana" con torre de departamentos, casas dúplex y locales comerciales ### 2. Datos Generales del Proyecto Cada proyecto debe registrar la siguiente información: #### 2.1 Información Básica ```yaml Nombre del proyecto: "Fraccionamiento Villas del Sol" Tipo de proyecto: fraccionamiento_horizontal | conjunto_habitacional | edificio_vertical | mixto Código interno: PROJ-2025-001 (generado automáticamente) Descripción: Desarrollo de 250 viviendas de interés social en 15 hectáreas Estado actual: licitacion | adjudicado | ejecucion | entregado | cerrado Constructora: UUID de la constructora responsable ``` #### 2.2 Datos del Cliente ```yaml Tipo de cliente: publico | privado | mixto Nombre del cliente: "INFONAVIT Estatal" RFC del cliente: INFXXXXXX123 Contacto principal: Nombre: "Ing. Roberto Martínez" Email: "rmartinez@infonavit.gob.mx" Teléfono: "+52 55 1234 5678" Tipo de contrato: llave_en_mano | precio_alzado | administracion | mixto Monto contratado: $125,000,000 MXN ``` #### 2.3 Ubicación Geográfica ```yaml Dirección completa: "Carretera Federal 200 Km 45, Municipio de San Juan" Estado: Jalisco Municipio: San Juan del Río Código postal: 76800 Coordenadas GPS: Latitud: 19.4326 Longitud: -99.1332 Superficie total: 150,000 m² (15 hectáreas) Superficie construible: 120,000 m² (80%) ``` #### 2.4 Fechas Clave ```yaml Fecha de licitación: 2024-03-15 Fecha de adjudicación: 2024-04-30 Fecha de inicio contractual: 2024-05-15 Fecha de inicio real: 2024-05-20 Plazo contractual: 24 meses Fecha de terminación programada: 2026-05-15 Fecha de terminación real: null (aún no concluye) Fecha de entrega: null Fecha de cierre administrativo: null ``` #### 2.5 Información Legal y Permisos ```yaml Número de licencia de construcción: LIC-2024-SJR-0456 Fecha de emisión licencia: 2024-04-15 Vigencia de licencia: 2026-04-14 Número de manifestación de impacto ambiental: MIA-2024-045 Uso de suelo aprobado: H4 (Habitacional densidad media) Número de plano autorizado: PLANO-SJR-2024-145 Número INFONAVIT (si aplica): INF-2024-JL-0123 Número FOVISSSTE (si aplica): null ``` ### 3. Estados del Proyecto El proyecto debe transitar por los siguientes estados: #### 3.1 Licitación 📋 - **Descripción:** Proyecto en proceso de concurso o licitación - **Acciones permitidas:** - Crear proyecto - Editar información general - Subir documentación de licitación - Calcular presupuesto preliminar - **Transición:** → Adjudicado (cuando se gana la licitación) #### 3.2 Adjudicado ✅ - **Descripción:** Proyecto ganado, pendiente de inicio de obra - **Acciones permitidas:** - Asignar equipo de obra (residente, ingeniero, supervisores) - Crear estructura jerárquica (etapas, manzanas, lotes) - Cargar presupuesto definitivo - Registrar contrato firmado - Tramitar permisos y licencias - **Transición:** → Ejecución (cuando se arranca obra) #### 3.3 Ejecución 🚧 - **Descripción:** Obra en construcción activa - **Acciones permitidas:** - Registrar avances físicos - Generar estimaciones - Gestionar compras e inventarios - Registrar asistencias de personal - Subir evidencias fotográficas - Gestionar incidencias - Modificar presupuesto (con aprobación) - **Transición:** → Entregado (cuando obra finaliza y se entrega al cliente) #### 3.4 Entregado 📦 - **Descripción:** Obra terminada y entregada al cliente, periodo de garantía - **Acciones permitidas:** - Registrar acta de entrega - Gestionar postventa (garantías, defectos, bitácora) - Generar finiquito - Cerrar presupuesto final - **Transición:** → Cerrado (cuando se cierra administrativamente) #### 3.5 Cerrado 🔒 - **Descripción:** Proyecto cerrado administrativamente, solo consulta - **Acciones permitidas:** - Solo lectura de información histórica - Exportar reportes finales - Consultar lecciones aprendidas - **Transición:** No hay (estado final) ### 4. Métricas y KPIs por Proyecto Cada proyecto debe calcular y mostrar las siguientes métricas: #### 4.1 Métricas Físicas ```yaml Total de viviendas: 250 Viviendas entregadas: 187 (74.8%) Viviendas en proceso: 63 (25.2%) Superficie total construida: 18,750 m² (75 m² × 250) Avance físico general: 78.5% ``` #### 4.2 Métricas Financieras ```yaml Presupuesto total: $125,000,000 Costo ejercido: $97,125,000 (77.7%) Disponible: $27,875,000 (22.3%) Desviación presupuestal: +2.5% (sobre presupuesto) Estimaciones cobradas: $95,000,000 (76%) ``` #### 4.3 Métricas de Tiempo ```yaml Plazo contractual: 24 meses Tiempo transcurrido: 18 meses (75%) Avance programado (curva S): 80% Desviación temporal: -1.5% (atrasado) Días hábiles restantes: 120 ``` #### 4.4 Métricas de Recursos ```yaml Personal asignado: 85 empleados Equipos asignados: 12 (excavadoras, revolvedoras, etc.) Proveedores activos: 32 Órdenes de compra emitidas: 287 ``` ### 5. Documentación del Proyecto El sistema debe permitir gestionar los siguientes documentos: #### 5.1 Documentos Contractuales - Contrato firmado (PDF) - Anexos técnicos - Convenios modificatorios - Fianzas (anticipo, cumplimiento, vicios ocultos) #### 5.2 Documentos Técnicos - Proyecto ejecutivo (planos arquitectónicos, estructurales, instalaciones) - Especificaciones técnicas - Catálogo de conceptos - Estudios de mecánica de suelos #### 5.3 Documentos Legales - Licencia de construcción - Manifestación de impacto ambiental - Uso de suelo - Permisos de CONAGUA, CFE, etc. - Escrituras del terreno #### 5.4 Documentos de Cierre - Actas de entrega-recepción - Finiquito - Planos as-built (como quedó construido) - Manuales de operación y mantenimiento ### 6. Relaciones del Proyecto Un proyecto se relaciona con las siguientes entidades: #### 6.1 Estructura Jerárquica (RF-PROJ-002) - **Etapas:** Proyecto dividido en fases constructivas - **Manzanas:** Agrupación de lotes (solo fraccionamientos) - **Lotes:** Terrenos individuales con viviendas - **Viviendas:** Unidades habitacionales (basadas en prototipos) #### 6.2 Equipo Asignado (RF-PROJ-004) - **Director de Obra:** Responsable general del proyecto - **Residente de Obra:** Supervisor en sitio - **Ingenieros:** Especialistas (estructural, instalaciones, etc.) - **Personal RRHH:** Cuadrillas asignadas al proyecto #### 6.3 Presupuesto (MAI-003) - **Presupuesto maestro:** Costo total del proyecto - **Presupuestos por etapa:** Desglose por fase - **Precios unitarios:** Matriz de insumos por concepto #### 6.4 Compras e Inventarios (MAI-004) - **Almacén del proyecto:** Inventario en obra - **Requisiciones:** Solicitudes de materiales - **Órdenes de compra:** Compras autorizadas #### 6.5 Control de Obra (MAI-005) - **Avances físicos:** Progreso de actividades - **Estimaciones:** Generación de cobros - **Incidencias:** Problemas registrados --- ## 🔄 Flujo de Vida del Proyecto ```mermaid stateDiagram-v2 [*] --> Licitacion: Crear proyecto Licitacion --> Adjudicado: Ganar licitación Licitacion --> [*]: Perder licitación (eliminar) Adjudicado --> Ejecucion: Arrancar obra Ejecucion --> Entregado: Finalizar y entregar Entregado --> Cerrado: Cierre administrativo Cerrado --> [*] ``` --- ## 💼 Casos de Uso ### CU-PROJ-001: Crear Proyecto de Fraccionamiento **Actor:** Director de Constructora **Precondiciones:** - Usuario autenticado con rol `director` - Constructora activa en el sistema **Flujo Principal:** 1. Usuario accede a "Proyectos" > "Nuevo Proyecto" 2. Selecciona tipo: "Fraccionamiento Horizontal" 3. Ingresa datos generales: - Nombre: "Villas del Sol Etapa 2" - Cliente: INFONAVIT Estatal - Ubicación: Jalisco, San Juan del Río - Superficie: 10 hectáreas 4. Carga documentos contractuales: - Contrato firmado (PDF, 2.5 MB) - Licencia de construcción 5. Define fechas clave: - Inicio: 2025-06-01 - Plazo: 18 meses - Fin programado: 2026-11-30 6. Asigna monto contratado: $85,000,000 MXN 7. Guarda proyecto con estado: "Adjudicado" 8. Sistema genera código: PROJ-2025-002 9. Usuario recibe confirmación: "Proyecto creado exitosamente" **Resultado:** Proyecto creado, visible en catálogo, listo para configuración de estructura jerárquica ### CU-PROJ-002: Transitar Proyecto a Ejecución **Actor:** Residente de Obra **Precondiciones:** - Proyecto en estado "Adjudicado" - Equipo de obra asignado - Presupuesto cargado - Permisos completos **Flujo Principal:** 1. Usuario accede a proyecto "Villas del Sol Etapa 2" 2. Verifica checklist de pre-arranque: - ✅ Equipo asignado - ✅ Presupuesto aprobado - ✅ Licencia vigente - ✅ Estructura jerárquica definida - ✅ Contrato firmado 3. Hace clic en "Iniciar Obra" 4. Sistema solicita confirmación con fecha de inicio real 5. Usuario confirma: 2025-06-15 (5 días después del contractual) 6. Sistema cambia estado a "Ejecución" 7. Activa módulos de obra: - Control de avances - Compras e inventarios - Asistencias de personal 8. Genera primera estimación: #001 **Resultado:** Proyecto en ejecución, módulos activos, listo para operación diaria ### CU-PROJ-003: Consultar Dashboard del Proyecto **Actor:** Ingeniero Residente **Precondiciones:** - Proyecto en estado "Ejecución" - Avances registrados **Flujo Principal:** 1. Usuario accede a proyecto 2. Ve dashboard con: - **Avance físico:** 78.5% (curva S vs plan) - **Avance financiero:** 77.7% ejercido - **Personal:** 85 empleados activos - **Alertas:** - 🔴 3 partidas con desviación > 15% - 🟡 5 materiales con stock bajo - 🟢 Estimación #12 cobrada 3. Hace clic en "Curva S" 4. Ve gráfica comparativa: - Línea azul: Programado (80%) - Línea verde: Real (78.5%) - Línea roja: Proyección (97% al cierre) 5. Identifica retraso de -1.5% 6. Genera reporte semanal en PDF **Resultado:** Información clave del proyecto visualizada, reporte generado ### CU-PROJ-004: Cerrar Proyecto Administrativamente **Actor:** Director de Constructora **Precondiciones:** - Proyecto en estado "Entregado" - Acta de entrega firmada - Finiquito generado - Sin pendientes legales o financieros **Flujo Principal:** 1. Usuario accede a proyecto "Villas del Sol Etapa 2" 2. Verifica checklist de cierre: - ✅ Todas las viviendas entregadas (250/250) - ✅ Acta de entrega firmada - ✅ Finiquito generado y firmado - ✅ Garantías activadas (12 meses) - ✅ Sin adeudos con proveedores - ✅ Personal desasignado 3. Hace clic en "Cerrar Proyecto" 4. Sistema solicita confirmación 5. Usuario confirma con contraseña 6. Sistema: - Cambia estado a "Cerrado" - Congela todos los datos (no editables) - Genera reporte final automático - Archiva documentos en storage - Libera recursos (almacén, equipo) 7. Envía notificación a equipo de proyecto **Resultado:** Proyecto cerrado, datos históricos preservados, recursos liberados --- ## 🧪 Casos de Prueba ### TC-PROJ-001: Crear Proyecto de Fraccionamiento ✅ **Entrada:** ```json { "name": "Fraccionamiento Jardines del Norte", "projectType": "fraccionamiento_horizontal", "clientName": "INFONAVIT Jalisco", "clientRFC": "INF850101ABC", "contractAmount": 95000000, "surfaceArea": 120000, "address": "Carretera a Tesistán Km 12", "state": "Jalisco", "municipality": "Zapopan", "startDate": "2025-07-01", "contractDuration": 20 } ``` **Salida Esperada:** ```json { "id": "uuid-generated", "projectCode": "PROJ-2025-003", "status": "adjudicado", "createdAt": "2025-11-17T10:30:00Z", "message": "Proyecto creado exitosamente" } ``` ### TC-PROJ-002: Validar Transición de Estados ✅ **Escenario 1:** Licitación → Adjudicado - **Input:** Estado actual = "licitacion", Acción = "adjudicar" - **Output:** Estado = "adjudicado" ✅ **Escenario 2:** Adjudicado → Licitación (inválido) - **Input:** Estado actual = "adjudicado", Acción = "regresar a licitacion" - **Output:** Error 400 "Transición no permitida" ❌ **Escenario 3:** Ejecución → Cerrado (inválido, falta estado Entregado) - **Input:** Estado actual = "ejecucion", Acción = "cerrar" - **Output:** Error 400 "Debe entregar el proyecto antes de cerrar" ❌ ### TC-PROJ-003: Validar Campos Obligatorios ❌ **Entrada:** ```json { "name": "", "projectType": "fraccionamiento_horizontal", "contractAmount": -5000 } ``` **Salida Esperada:** ```json { "errors": [ { "field": "name", "message": "El nombre del proyecto es obligatorio" }, { "field": "contractAmount", "message": "El monto contratado debe ser mayor a 0" }, { "field": "clientName", "message": "El nombre del cliente es obligatorio" } ] } ``` ### TC-PROJ-004: Cálculo de Métricas ✅ **Entrada:** - Viviendas totales: 200 - Viviendas entregadas: 150 - Presupuesto: $100,000,000 - Costo ejercido: $78,000,000 **Salida Esperada:** ```json { "metrics": { "physicalProgress": 75.0, "financialProgress": 78.0, "budgetDeviation": 4.0, "status": "green" } } ``` --- ## 🔐 Seguridad y Permisos ### Permisos por Rol | Acción | Director | Engineer | Resident | Purchases | Finance | HR | |--------|----------|----------|----------|-----------|---------|-----| | Crear proyecto | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | | Editar info general | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | | Ver dashboard | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Transitar estados | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | | Subir documentos | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | | Eliminar proyecto | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | | Cerrar proyecto | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ### Row Level Security (RLS) Todos los proyectos deben estar filtrados por `constructoraId`: ```sql CREATE POLICY project_isolation ON projects.projects USING (constructora_id = current_setting('app.current_constructora_id')::uuid); ``` --- ## 📊 Reportes Requeridos ### 1. Catálogo General de Proyectos - Lista paginada con filtros - Ordenable por fecha, estado, monto - Exportable a Excel ### 2. Dashboard Ejecutivo por Proyecto - Resumen de avances físico/financiero - Curva S (plan vs real) - Alertas críticas ### 3. Reporte de Cierre de Proyecto - Datos finales consolidados - Lecciones aprendidas - Comparativo presupuesto vs real --- ## 📋 Validaciones ### Validaciones de Negocio 1. **Nombre único por constructora:** No puede haber dos proyectos con el mismo nombre en la misma constructora 2. **Fecha inicio < fecha fin:** La fecha de inicio debe ser anterior a la fecha programada de terminación 3. **Monto > 0:** El monto contratado debe ser mayor a cero 4. **Superficie > 0:** La superficie total debe ser mayor a cero 5. **Transiciones válidas:** Solo se permiten transiciones de estado según el diagrama de estados ### Validaciones Técnicas 1. **RFC válido:** El RFC del cliente debe tener formato válido (12-13 caracteres) 2. **Coordenadas GPS:** Latitud entre -90 y 90, Longitud entre -180 y 180 3. **Código postal:** 5 dígitos numéricos 4. **Archivos:** PDF, JPG, PNG, DWG permitidos, máximo 10 MB por archivo --- ## 🔗 Dependencias ### Dependencias de Otros RFs - **RF-AUTH-002:** Sistema de roles y permisos (MAI-001) - **RF-AUTH-003:** Multi-tenancy por constructora (MAI-001) - **RF-PROJ-002:** Estructura jerárquica de obra (siguiente RF) - **RF-BUD-001:** Presupuesto maestro (MAI-003) ### Dependencias Técnicas - PostgreSQL 15+ con soporte de JSONB para metadata - S3-compatible storage para documentos - PostGIS para coordenadas geográficas (opcional) --- ## 📈 Métricas de Éxito - ✅ 100% de proyectos con información completa (0 campos nulos en obligatorios) - ✅ Tiempo promedio de creación de proyecto: < 10 minutos - ✅ 95% de transiciones de estado exitosas en primer intento - ✅ 0 proyectos con datos inconsistentes (validaciones activas) --- **Fecha de creación:** 2025-11-17 **Versión:** 1.0 **Autor:** Equipo de Producto **Revisado por:** Arquitecto de Software