# TRACEABILITY - MAI-002: Proyectos y Estructura de Obra metadata: modulo: MAI-002 nombre: Proyectos y Estructura de Obra version: 1.0.0 fecha: 2025-12-06 reutilizacion_core: 40% descripcion: > Sistema de gestión de proyectos de construcción inmobiliaria con estructura jerárquica (Fraccionamiento → Etapa → Manzana → Lote → Vivienda), prototipos de vivienda, asignación de equipo y calendario de obra. requerimientos: - id: RF-PROJ-001 titulo: Catálogo de Proyectos descripcion: > Gestión completa de proyectos de construcción inmobiliaria incluyendo fraccionamientos, conjuntos habitacionales y edificios verticales con información general, ubicación, datos del cliente, permisos legales y estados del ciclo de vida. especificaciones: - ET-PROJ-001-implementacion-catalogo-proyectos - ET-PROJ-001-rls-policies historias_usuario: - US-PROJ-001-catalogo-proyectos - US-PROJ-002-transiciones-estado tablas: - project_management.projects - project_management.project_documents - project_management.project_metrics endpoints: - POST /api/v1/projects - GET /api/v1/projects - GET /api/v1/projects/:id - PATCH /api/v1/projects/:id - POST /api/v1/projects/:id/change-status - GET /api/v1/projects/:id/metrics - GET /api/v1/projects/:id/dashboard - POST /api/v1/projects/:id/documents - GET /api/v1/projects/:id/documents componentes_ui: - ProjectList - ProjectCard - ProjectForm - ProjectDetail - ProjectDashboard - ProjectMetrics - ProjectStatusBadge - ProjectDocuments estado: pendiente prioridad: P0 dependencias: - RF-AUTH-002 (Roles y permisos) - RF-AUTH-003 (Multi-tenancy por constructora) validaciones: - Nombre único por constructora - Transiciones de estado válidas - Monto contratado > 0 - Fecha inicio < fecha fin - RFC válido (12-13 caracteres) - id: RF-PROJ-002 titulo: Estructura Jerárquica de Obra descripcion: > Definición y gestión de la estructura jerárquica de proyectos de construcción organizando el desarrollo en Etapas → Manzanas (opcional) → Lotes → Viviendas. Permite rastrear avances físicos, asignar presupuestos y gestionar entregas de forma granular. especificaciones: - ET-PROJ-002-implementacion-estructura-jerarquica - ET-PROJ-002-rls-policies historias_usuario: - US-PROJ-003-estructura-fraccionamiento - US-PROJ-004-estructura-torre-vertical tablas: - project_management.stages - project_management.blocks - project_management.lots - project_management.housing_units - project_management.unit_progress endpoints: - POST /api/v1/projects/:projectId/stages - GET /api/v1/projects/:projectId/stages - GET /api/v1/stages/:id - PATCH /api/v1/stages/:id - DELETE /api/v1/stages/:id - POST /api/v1/stages/:stageId/blocks - GET /api/v1/stages/:stageId/blocks - POST /api/v1/blocks/:blockId/lots - GET /api/v1/blocks/:blockId/lots - PATCH /api/v1/lots/:id - POST /api/v1/lots/:lotId/housing - GET /api/v1/housing-units/:id - PATCH /api/v1/housing-units/:id/status - GET /api/v1/projects/:id/hierarchy componentes_ui: - StageList - StageForm - BlockList - BlockForm - LotList - LotForm - HousingUnitCard - HousingUnitDetail - ProjectHierarchyTree - ProgressTracker estado: pendiente prioridad: P0 dependencias: - RF-PROJ-001 (Catálogo de proyectos) - RF-PROJ-003 (Prototipos - para asignación) validaciones: - Códigos únicos dentro del proyecto - Jerarquía válida (lote → manzana → etapa) - Suma de lotes = total declarado en etapa - Área de lote > 0 - Estado secuencial (no saltar estados) - id: RF-PROJ-003 titulo: Prototipos de Vivienda descripcion: > Creación y gestión de prototipos de vivienda estandarizados (casas, departamentos, dúplex) que sirven como plantillas para asignación a lotes. Define características arquitectónicas, áreas, distribución, acabados estándar y costos estimados. especificaciones: - ET-PROJ-003-implementacion-prototipos historias_usuario: - US-PROJ-005-gestion-prototipos - US-PROJ-006-asignacion-prototipos-lotes tablas: - project_management.housing_prototypes - project_management.prototype_versions - project_management.prototype_documents - project_management.prototype_costs endpoints: - POST /api/v1/prototypes - GET /api/v1/prototypes - GET /api/v1/prototypes/:id - PATCH /api/v1/prototypes/:id - DELETE /api/v1/prototypes/:id - POST /api/v1/prototypes/:id/versions - GET /api/v1/prototypes/:id/versions - POST /api/v1/prototypes/:id/documents - POST /api/v1/lots/bulk-assign-prototypes componentes_ui: - PrototypeList - PrototypeCard - PrototypeForm - PrototypeDetail - PrototypeVersionHistory - PrototypeCostCalculator - BulkPrototypeAssignment - PrototypeComparison estado: pendiente prioridad: P1 dependencias: - RF-PROJ-002 (Para asignación a lotes) validaciones: - Código único por constructora - Área construida > 0 - Costo por m² > 0 - Versiones secuenciales - Archivos válidos (PDF, JPG, PNG, DWG) - id: RF-PROJ-004 titulo: Asignación de Equipo y Calendario descripcion: > Asignación de personal clave al proyecto (director, residentes, ingenieros, supervisores) y gestión del calendario general de obra con hitos, fases constructivas y fechas críticas para facilitar organización y seguimiento. especificaciones: - ET-PROJ-004-implementacion-equipo-calendario historias_usuario: - US-PROJ-007-asignacion-equipo - US-PROJ-008-calendario-hitos - US-PROJ-009-alertas-fechas-criticas tablas: - project_management.project_team_assignments - project_management.project_milestones - project_management.construction_phases - project_management.critical_dates - project_management.milestone_dependencies endpoints: - POST /api/v1/projects/:id/team-assignments - GET /api/v1/projects/:id/team-assignments - PATCH /api/v1/team-assignments/:id - DELETE /api/v1/team-assignments/:id - GET /api/v1/users/:userId/workload - POST /api/v1/projects/:id/milestones - GET /api/v1/projects/:id/milestones - PATCH /api/v1/milestones/:id/complete - POST /api/v1/projects/:id/phases - GET /api/v1/projects/:id/phases - POST /api/v1/projects/:id/critical-dates - GET /api/v1/projects/:id/critical-dates - GET /api/v1/projects/:id/calendar componentes_ui: - TeamAssignmentList - TeamAssignmentForm - WorkloadChart - MilestoneList - MilestoneForm - MilestoneTimeline - PhaseList - PhaseGantt - CriticalDatesList - ProjectCalendar - AlertsPanel estado: pendiente prioridad: P1 dependencias: - RF-AUTH-002 (Usuarios y roles) - RF-HR-001 (Empleados - para cuadrillas) validaciones: - Director único por proyecto - Residente obligatorio en ejecución - Límite de carga de trabajo por rol - Fechas lógicas (inicio < fin) - Dependencias de hitos válidas cobertura: rf_total: 4 rf_con_et: 4 rf_con_us: 9 rf_implementados: 0 porcentaje: 0% metricas_desarrollo: tablas_total: 17 endpoints_total: 52 componentes_ui_total: 43 validaciones_total: 20 dependencias_externas: 4 integracion: modulos_core: - MAI-001 (Autenticación y Multi-tenancy) modulos_verticales: - MAI-003 (Presupuesto - vinculación por etapa) - MAI-004 (Compras e Inventarios - almacén por proyecto) - MAI-005 (Control de Obra - avances por vivienda) - MAI-007 (RRHH - cuadrillas asignadas) stack_tecnologico: backend: - NestJS + TypeORM - PostgreSQL 15+ - Event-driven architecture frontend: - React + TypeScript - React Query (TanStack) - Zod validation - Shadcn/UI components storage: - S3-compatible para documentos - PostGIS para coordenadas (opcional) estados_entidades: proyecto: - licitacion - adjudicado - ejecucion - entregado - cerrado etapa: - planeada - en_proceso - terminada - entregada lote: - disponible - vendido - en_construccion - terminado - entregado vivienda: - disponible - en_proceso - terminada - entregada hito: - pending - in_progress - completed - delayed notas_implementacion: - Implementar Row-Level Security (RLS) por constructoraId en todas las tablas - Código de proyecto autogenerado: PROJ-{YEAR}-{SEQUENCE} - Validar transiciones de estado con máquina de estados - Calcular métricas de forma asíncrona (avances, costos) - Emitir eventos para notificaciones (project.created, status_changed, etc.) - Soportar versionado de prototipos sin afectar construcciones existentes - Validar límites de carga de trabajo al asignar personal - Implementar alertas automáticas para fechas críticas (cron job) - Permitir estructura flexible (con/sin manzanas para edificios verticales) - Mantener historial de asignaciones de equipo con fechas de inicio/fin estimaciones: esfuerzo_total: 8 semanas desarrolladores: 2 full-stack desglose: - RF-PROJ-001: 2 semanas - RF-PROJ-002: 3 semanas - RF-PROJ-003: 1.5 semanas - RF-PROJ-004: 1.5 semanas