# _MAP: MAI-001 - Fundamentos **Épica:** MAI-001 **Nombre:** Fundamentos **Fase:** 1 - Alcance Inicial **Presupuesto:** $25,000 MXN **Story Points:** 50 SP **Estado:** 🚧 Planificado **Sprint:** Sprint 0-2 (Semanas 1-2) **Última actualización:** 2025-11-17 --- ## 📋 Propósito Establecer las bases técnicas y funcionales del Sistema de Administración de Obra: - Autenticación y autorización (JWT, RBAC para construcción) - Infraestructura base (DB, API, frontend) migrada de GAMILIT - Perfiles de usuario con 7 roles específicos - Dashboard principal por rol - Multi-tenancy por constructora **Reutilización GAMILIT:** 90% de componentes de infraestructura --- ## 📁 Contenido ### Requerimientos Funcionales (3) | ID | Archivo | Título | Estado | |----|---------|--------|--------| | RF-AUTH-001 | [RF-AUTH-001-roles-construccion.md](./requerimientos/RF-AUTH-001-roles-construccion.md) | Sistema de Roles de Construcción | 🚧 Planificado | | RF-AUTH-002 | [RF-AUTH-002-estados-cuenta.md](./requerimientos/RF-AUTH-002-estados-cuenta.md) | Estados de Cuenta de Usuario | 🚧 Planificado | | RF-AUTH-003 | [RF-AUTH-003-multi-tenancy.md](./requerimientos/RF-AUTH-003-multi-tenancy.md) | Multi-tenancy por Constructora | 🚧 Planificado | ### Especificaciones Técnicas (3) | ID | Archivo | Título | RF | Estado | |----|---------|--------|-------|--------| | ET-AUTH-001 | [ET-AUTH-001-rbac.md](./especificaciones/ET-AUTH-001-rbac.md) | RBAC Implementation | RF-AUTH-001 | 🚧 Planificado | | ET-AUTH-002 | [ET-AUTH-002-estados-cuenta.md](./especificaciones/ET-AUTH-002-estados-cuenta.md) | Estados de Cuenta | RF-AUTH-002 | 🚧 Planificado | | ET-AUTH-003 | [ET-AUTH-003-multi-tenancy.md](./especificaciones/ET-AUTH-003-multi-tenancy.md) | Multi-tenancy Implementation | RF-AUTH-003 | 🚧 Planificado | ### Historias de Usuario (8) | ID | Archivo | Título | SP | Estado | |----|---------|--------|----|--------| | US-FUND-001 | [US-FUND-001-autenticacion-basica-jwt.md](./historias-usuario/US-FUND-001-autenticacion-basica-jwt.md) | Autenticación Básica JWT | 8 | 🚧 Planificado | | US-FUND-002 | [US-FUND-002-perfiles-usuario-construccion.md](./historias-usuario/US-FUND-002-perfiles-usuario-construccion.md) | Perfiles de Usuario de Construcción | 5 | 🚧 Planificado | | US-FUND-003 | [US-FUND-003-dashboard-por-rol.md](./historias-usuario/US-FUND-003-dashboard-por-rol.md) | Dashboard Principal por Rol | 8 | 🚧 Planificado | | US-FUND-004 | [US-FUND-004-infraestructura-base.md](./historias-usuario/US-FUND-004-infraestructura-base.md) | Infraestructura Técnica Base | 12 | 🚧 Planificado | | US-FUND-005 | [US-FUND-005-sistema-sesiones.md](./historias-usuario/US-FUND-005-sistema-sesiones.md) | Sistema de Sesiones y Estado | 6 | 🚧 Planificado | | US-FUND-006 | [US-FUND-006-api-restful-base.md](./historias-usuario/US-FUND-006-api-restful-base.md) | API RESTful Básica | 8 | 🚧 Planificado | | US-FUND-007 | [US-FUND-007-navegacion-routing.md](./historias-usuario/US-FUND-007-navegacion-routing.md) | Navegación y Routing | 5 | 🚧 Planificado | | US-FUND-008 | [US-FUND-008-ui-ux-base.md](./historias-usuario/US-FUND-008-ui-ux-base.md) | UI/UX Base (migrada de GAMILIT) | 3 | 🚧 Planificado | **Total Story Points:** 50 SP (reducidos vs 60 SP de GAMILIT por reutilización) ### Implementación 📊 **Inventarios de trazabilidad:** - [TRACEABILITY.yml](./implementacion/TRACEABILITY.yml) - Matriz completa de trazabilidad - [DATABASE.yml](./implementacion/DATABASE.yml) - Objetos de base de datos - [BACKEND.yml](./implementacion/BACKEND.yml) - Módulos backend - [FRONTEND.yml](./implementacion/FRONTEND.yml) - Componentes frontend ### Pruebas 📋 Documentación de testing: - [TEST-PLAN.md](./pruebas/TEST-PLAN.md) - Plan de pruebas - [TEST-CASES.md](./pruebas/TEST-CASES.md) - Casos de prueba --- ## 🔗 Referencias - **README:** [README.md](./README.md) - Descripción detallada de la épica - **Fase 1:** [../README.md](../README.md) - Información de la fase completa - **Catálogo Auth:** `shared/catalog/auth/` *(componentes reutilizables de autenticación)* --- ## 📊 Métricas | Métrica | Valor | |---------|-------| | **Presupuesto estimado** | $25,000 MXN | | **Presupuesto target** | $25,000 MXN ±5% | | **Story Points estimados** | 50 SP | | **Duración estimada** | 10 días (vs 11 días GAMILIT) | | **Reutilización GAMILIT** | 90% | | **Ahorro estimado** | ~2.5 semanas vs desarrollo desde cero | | **RF a implementar** | 3/3 | | **ET a implementar** | 3/3 | | **US a completar** | 8/8 | --- ## 🎯 Módulos Afectados ### Base de Datos - **Schemas:** `auth`, `auth_management`, `audit_logging`, `public` - **Tablas:** ~18 tablas (auth, profiles, constructoras, audit_logs, etc.) - **Funciones:** Funciones de RBAC, verificación de permisos por constructora - **ENUMs:** - `construction_role` (director, engineer, resident, purchases, finance, hr, post_sales) - `account_status` (active, suspended, banned, pending_verification) ### Backend - **Módulo:** `auth` - **Path:** `apps/backend/src/modules/auth/` - **Services:** AuthService, JwtService, ConstructoraService - **Guards:** JwtAuthGuard, RolesGuard, ConstructoraGuard - **Middlewares:** ValidationMiddleware, ErrorMiddleware, LoggingMiddleware ### Frontend - **Features:** `auth`, `dashboard` - **Path:** `apps/frontend/src/features/` - **Componentes:** Login, Register, Dashboard (7 variantes por rol), Profile - **Guards:** AuthGuard, RoleGuard, ConstructoraGuard - **Stores:** authStore, constructoraStore --- ## 🚀 Roles Específicos de Construcción A diferencia de GAMILIT (student, admin_teacher, super_admin), este sistema tiene 7 roles: | Rol | Código | Descripción | Permisos Clave | |-----|--------|-------------|----------------| | **Director** | `director` | Director general/proyectos | Visión global, márgenes, riesgos | | **Ingeniero** | `engineer` | Ingeniería/Planeación | Presupuestos, programación, control | | **Residente** | `resident` | Residente de obra/Supervisor | Avances, incidencias, checklists | | **Compras** | `purchases` | Compras/Almacén | Órdenes de compra, inventarios | | **Finanzas** | `finance` | Administración/Finanzas | Presupuestos, pagos, flujo | | **RRHH** | `hr` | Recursos Humanos | Asistencias, costeo mano de obra | | **Postventa** | `post_sales` | Postventa/Garantías | Incidencias, seguimiento clientes | --- ## 🔄 Migración desde GAMILIT ### Componentes a Migrar (Sprint 0) **Backend:** - [x] Sistema de autenticación JWT - [x] Middleware de autenticación y autorización - [x] Guards (JwtAuthGuard, RolesGuard) - [x] Error handlers y validadores - [x] Sistema de logging estructurado - [x] Sistema de auditoría **Frontend:** - [x] Componentes UI base (Buttons, Inputs, Modales) - [x] Layouts principales - [x] Sistema de formularios (React Hook Form + Zod) - [x] Hooks personalizados (useAuth, useApi) - [x] Sistema de notificaciones **Database:** - [x] Schemas modulares - [x] Funciones comunes (now_mexico, get_current_user_id) - [x] Triggers de auditoría - [x] Políticas RLS base ### Adaptaciones Requeridas | Componente | Adaptación | Esfuerzo | |------------|------------|----------| | **Roles ENUM** | Cambiar 3 roles → 7 roles construcción | Bajo | | **RLS Policies** | Adaptar filtros por constructora | Medio | | **Dashboard** | Crear 7 variantes por rol | Medio | | **Permisos** | Matriz de permisos por módulo | Alto | --- ## 💡 Lessons Learned (de GAMILIT) 1. **RLS desde día 1:** Implementar Row Level Security desde el inicio evita refactoring 2. **Tests rigurosos:** Coverage >80% = deployment tranquilo 3. **Modularización temprana:** Facilita desarrollo paralelo 4. **Documentación previa:** Especificar antes de implementar reduce cambios --- ## 🎯 Siguiente Paso Completar Sprint 0 con migración de componentes GAMILIT, luego iniciar implementación de MAI-001. --- **Generado:** 2025-11-17 **Mantenedores:** @tech-lead @backend-team @frontend-team @database-team **Estado:** 🚧 Planificado