# MAI-001: Fundamentos
## Metadata
| Campo | Valor |
|-------|-------|
| **ID** | MAI-001 |
| **Nombre** | Fundamentos |
| **Vertical** | Construccion |
| **Fase** | 1 - Alcance Inicial |
| **Prioridad** | P0 (Critico) |
| **Story Points** | 50 SP |
| **Presupuesto** | $25,000 MXN |
| **Estado** | Planificado |
| **Sprint** | Sprint 0-2 (Semanas 1-2) |
| **Duracion estimada** | 10 dias |
| **Dependencias** | Ninguna (modulo base) |
---
## Descripcion
**MAI-001 Fundamentos** es el modulo base del Sistema de Administracion de Obra que establece la infraestructura tecnica y funcional para todo el sistema vertical de construccion. Este modulo reutiliza el 95% de los componentes del core ERP (MGN-001, MGN-002, MGN-003) adaptandolos a las necesidades especificas de la industria de la construccion.
### Componentes principales:
- **Autenticacion y Autorizacion:** Sistema de login basado en JWT con OAuth social (Google, Microsoft)
- **Sistema de Roles de Construccion:** 7 roles especializados (Director, Ingeniero, Residente, Compras, Finanzas, RRHH, Postventa)
- **Multi-tenancy:** Aislamiento por constructora con Row-Level Security (RLS)
- **Infraestructura Base:** Backend (NestJS), Frontend (React/Vite), Database (PostgreSQL)
- **Dashboards por Rol:** 7 variantes de dashboard adaptadas a cada perfil de usuario
- **Gestion de Usuarios:** CRUD completo con perfiles extendidos y preferencias
---
## Alcance Funcional
### Incluido en MAI-001
- Sistema de autenticacion JWT (access + refresh tokens)
- Login/logout con email y password
- OAuth con Google y Microsoft
- Recuperacion de password via email
- Registro de usuarios con validacion
- Gestion de perfiles de usuario
- Sistema de roles RBAC con 7 roles de construccion
- Asignacion de permisos granulares
- Multi-tenancy por constructora
- Dashboard principal adaptado por rol
- Sistema de sesiones multiples por usuario
- Proteccion contra brute force
- Auditoria de acciones de usuarios
- API RESTful base con versionado
- Sistema de navegacion y routing
- UI/UX base con componentes reutilizables
- Preferencias de usuario (tema, idioma, notificaciones)
### Excluido de MAI-001
- Modulos funcionales de construccion (proyectos, presupuestos, etc.)
- Gestion de catalogos de construccion
- Reportes especializados de obra
- 2FA/MFA (enhancement futuro)
- Notificaciones push (fase posterior)
- Sistema de archivos/documentos (fase posterior)
---
## Reutilizacion del Core ERP
Este modulo reutiliza el **95%** de los componentes base del ERP Core, especificamente de los modulos:
### MGN-001: Autenticacion (95% de reutilizacion)
**Componentes heredados:**
- Sistema de autenticacion JWT completo
- Manejo de access tokens (15 min) y refresh tokens (7 dias)
- OAuth con Google y Microsoft
- Recuperacion de password via email
- Proteccion contra brute force (rate limiting)
- Bloqueo temporal por intentos fallidos
- Registro de intentos de login
- Manejo de sesiones multiples
**Adaptaciones requeridas:**
- Integracion con 7 roles de construccion (vs 3 roles genericos)
- Validaciones especificas de constructora
- Estados de cuenta extendidos para construccion
**Referencias:**
- [MGN-001 README](/home/isem/workspace/projects/erp-suite/apps/erp-core/docs/01-fase-foundation/MGN-001-auth/README.md)
- [MGN-001 Requerimientos](/home/isem/workspace/projects/erp-suite/apps/erp-core/docs/01-fase-foundation/MGN-001-auth/requerimientos/)
### MGN-002: Usuarios (95% de reutilizacion)
**Componentes heredados:**
- CRUD completo de usuarios
- Gestion de perfiles extendidos
- Sistema de preferencias (tema, idioma, notificaciones)
- Busqueda y filtrado de usuarios
- Soft delete con trazabilidad
- Activacion/desactivacion de cuentas
**Adaptaciones requeridas:**
- Campos adicionales en perfil para construccion
- Vinculacion obligatoria con constructora
- Validaciones de datos especificos de construccion
**Referencias:**
- [MGN-002 README](/home/isem/workspace/projects/erp-suite/apps/erp-core/docs/01-fase-foundation/MGN-002-users/README.md)
- [MGN-002 Requerimientos](/home/isem/workspace/projects/erp-suite/apps/erp-core/docs/01-fase-foundation/MGN-002-users/requerimientos/)
### MGN-003: Roles y Permisos (95% de reutilizacion)
**Componentes heredados:**
- Sistema RBAC (Role-Based Access Control)
- Modelo de permisos granulares (module:action:resource)
- Guards y decoradores (@Roles, @RequirePermission)
- Asignacion multiple de roles a usuarios
- Verificacion de permisos en tiempo de ejecucion
**Adaptaciones requeridas:**
- Definicion de 7 roles especificos de construccion
- Matriz de permisos adaptada a modulos de obra
- Validacion de permisos por constructora
**Referencias:**
- [MGN-003 README](/home/isem/workspace/projects/erp-suite/apps/erp-core/docs/01-fase-foundation/MGN-003-roles/README.md)
- [MGN-003 Requerimientos](/home/isem/workspace/projects/erp-suite/apps/erp-core/docs/01-fase-foundation/MGN-003-roles/requerimientos/)
---
## Requerimientos Funcionales
| ID | Titulo | Prioridad | Estado | Documentacion |
|----|--------|-----------|--------|---------------|
| RF-AUTH-001 | Sistema de Roles de Construccion | P0 | Planificado | [Ver RF](./requerimientos/RF-AUTH-001-roles-construccion.md) |
| RF-AUTH-002 | Estados de Cuenta de Usuario | P0 | Planificado | [Ver RF](./requerimientos/RF-AUTH-002-estados-cuenta.md) |
| RF-AUTH-003 | Multi-tenancy por Constructora | P0 | Planificado | [Ver RF](./requerimientos/RF-AUTH-003-multi-tenancy.md) |
**Total:** 3 Requerimientos Funcionales
---
## Dependencias con Otros Modulos
### Este modulo NO depende de otros modulos
MAI-001 es el modulo base del sistema de construccion y no tiene dependencias externas. Hereda componentes del Core ERP pero no depende de otros modulos verticales.
### Modulos que dependen de MAI-001
Todos los modulos funcionales del sistema de construccion dependen de MAI-001:
| Modulo | Dependencia | Razon |
|--------|-------------|-------|
| **MAI-002 Proyectos** | MAI-001 | Requiere autenticacion y roles |
| **MAI-003 Presupuestos** | MAI-001 | Valida permisos de ingeniero/director |
| **MAI-004 Programacion** | MAI-001 | Auditoria de cambios en cronograma |
| **MAI-005 Avances** | MAI-001 | Rol de residente para registro |
| **MAI-006 Compras** | MAI-001 | Rol de compras y autorizaciones |
| **MAI-007 Almacen** | MAI-001 | Control de acceso a inventarios |
| **MAI-008 Finanzas** | MAI-001 | Rol de finanzas y auditoria |
| **MAI-009 RRHH** | MAI-001 | Rol de RRHH y permisos |
| **MAI-010 Postventa** | MAI-001 | Rol de postventa y seguimiento |
| **Todos los demas** | MAI-001 | Autenticacion y autorizacion base |
---
## Diagrama de Arquitectura
```
┌─────────────────────────────────────────────────────────────────────────┐
│ CAPA DE PRESENTACION │
│ Frontend (React 18 + Vite) │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Login │ │ Dashboard │ │ Profile │ │
│ │ Register │ │ (7 roles) │ │ Settings │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Guards & Routing │ │
│ │ - AuthGuard - RoleGuard - ConstructoraGuard │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ State Management (Zustand) │ │
│ │ - authStore - userStore - constructoraStore │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
└────────────────────────────┬────────────────────────────────────────────┘
│
│ HTTPS / REST API
│
┌────────────────────────────▼────────────────────────────────────────────┐
│ CAPA DE NEGOCIO │
│ Backend (NestJS + TypeScript) │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ AuthModule │ │ UsersModule │ │ RolesModule │ │
│ │ │ │ │ │ │ │
│ │ - AuthSvc │ │ - UsersSvc │ │ - RolesSvc │ │
│ │ - JwtSvc │ │ - ProfileSvc │ │ - PermSvc │ │
│ │ - OAuthSvc │ │ - PrefSvc │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Guards & Middlewares │ │
│ │ - JwtAuthGuard - RolesGuard - PermissionsGuard │ │
│ │ - ValidationMiddleware - ErrorMiddleware │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Shared Services │ │
│ │ - LoggingService - AuditService - CacheService │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
└────────────────────────────┬────────────────────────────────────────────┘
│
│ SQL / TypeORM
│
┌────────────────────────────▼────────────────────────────────────────────┐
│ CAPA DE DATOS │
│ PostgreSQL 15+ │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Schema: auth │ │ Schema: public │ │ Schema: audit │ │
│ ├──────────────────┤ ├──────────────────┤ ├──────────────────┤ │
│ │ - users_auth │ │ - users │ │ - audit_logs │ │
│ │ - sessions │ │ - user_profiles │ │ - login_attempts │ │
│ │ - refresh_tokens │ │ - preferences │ │ │ │
│ │ - password_reset │ │ - roles │ │ │ │
│ │ - oauth_accounts │ │ - permissions │ │ │ │
│ │ │ │ - user_roles │ │ │ │
│ │ │ │ - constructoras │ │ │ │
│ └──────────────────┘ └──────────────────┘ └──────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Row Level Security (RLS) │ │
│ │ - Politicas por constructora │ │
│ │ - Validacion de permisos por rol │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ ENUMS │ │
│ │ - construction_role (7 roles) │ │
│ │ - account_status (active, suspended, etc.) │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ SERVICIOS EXTERNOS │
├─────────────────────────────────────────────────────────────────────────┤
│ - Google OAuth 2.0 │
│ - Microsoft Azure AD │
│ - SMTP (Email de recuperacion) │
└─────────────────────────────────────────────────────────────────────────┘
```
### Flujo de Autenticacion
```
Usuario → Login Form → POST /api/v1/auth/login
↓
[Validate Credentials]
↓
[Check Account Status]
↓
[Check Constructora]
↓
[Generate JWT Tokens]
↓
Access Token (15 min) + Refresh Token (7 dias)
↓
[Store in State]
↓
Redirect to Dashboard (por rol)
```
---
## Sistema de Roles de Construccion
A diferencia del Core ERP que tiene roles genericos, MAI-001 implementa **7 roles especializados** para la industria de la construccion:
| Rol | Codigo | Descripcion | Permisos Clave | Dashboard |
|-----|--------|-------------|----------------|-----------|
| **Director** | `director` | Director General/Proyectos | - Vision global de proyectos
- Margenes y rentabilidad
- Riesgos y alertas
- Aprobaciones criticas | Tablero ejecutivo con KPIs |
| **Ingeniero** | `engineer` | Ingenieria/Planeacion | - Presupuestos de obra
- Programacion de actividades
- Control de avances
- Explosiones de insumos | Tablero de control tecnico |
| **Residente** | `resident` | Residente/Supervisor | - Registro de avances
- Incidencias de obra
- Checklists de calidad
- Solicitudes de material | Tablero operativo de campo |
| **Compras** | `purchases` | Compras/Almacen | - Ordenes de compra
- Cotizaciones
- Inventarios
- Proveedores | Tablero de abastecimiento |
| **Finanzas** | `finance` | Administracion/Finanzas | - Presupuestos financieros
- Flujo de caja
- Pagos y cobranza
- Conciliaciones | Tablero financiero |
| **RRHH** | `hr` | Recursos Humanos | - Asistencias
- Costeo mano de obra
- Nominas
- Capacitacion | Tablero de personal |
| **Postventa** | `post_sales` | Postventa/Garantias | - Incidencias post-entrega
- Seguimiento clientes
- Garantias
- Satisfaccion | Tablero de servicio |
### Matriz de Permisos Base
| Permiso | Director | Ingeniero | Residente | Compras | Finanzas | RRHH | Postventa |
|---------|----------|-----------|-----------|---------|----------|------|-----------|
| **users:read:all** | ✓ | ✓ | - | - | - | ✓ | - |
| **users:write:all** | ✓ | - | - | - | - | - | - |
| **projects:read:all** | ✓ | ✓ | ✓ | ✓ | ✓ | - | ✓ |
| **projects:write:all** | ✓ | ✓ | - | - | - | - | - |
| **budgets:read:all** | ✓ | ✓ | - | - | ✓ | - | - |
| **budgets:write:all** | ✓ | ✓ | - | - | - | - | - |
| **reports:export:all** | ✓ | ✓ | - | - | ✓ | - | - |
**Nota:** La matriz completa se define en [ET-AUTH-001-rbac.md](./especificaciones/ET-AUTH-001-rbac.md)
---
## Stack Tecnologico
### Frontend
| Tecnologia | Version | Proposito |
|------------|---------|-----------|
| **React** | 18.3.x | Framework UI |
| **TypeScript** | 5.6.x | Lenguaje type-safe |
| **Vite** | 6.x | Build tool & dev server |
| **Zustand** | 5.x | State management |
| **React Router** | 7.x | Routing & navegacion |
| **React Hook Form** | 7.x | Manejo de formularios |
| **Zod** | 3.x | Validacion de schemas |
| **Axios** | 1.x | Cliente HTTP |
| **TailwindCSS** | 4.x | Estilos utility-first |
| **Shadcn/ui** | Latest | Componentes UI |
| **Lucide React** | Latest | Iconografia |
### Backend
| Tecnologia | Version | Proposito |
|------------|---------|-----------|
| **NestJS** | 10.x | Framework backend |
| **TypeScript** | 5.6.x | Lenguaje type-safe |
| **TypeORM** | 0.3.x | ORM para PostgreSQL |
| **PostgreSQL** | 15+ | Base de datos |
| **JWT** | 9.x | Autenticacion |
| **Passport** | 0.7.x | Estrategias de auth |
| **Bcrypt** | 5.x | Hashing de passwords |
| **Class Validator** | 0.14.x | Validacion DTOs |
| **Class Transformer** | 0.5.x | Transformacion datos |
| **Winston** | 3.x | Logging estructurado |
### Base de Datos
| Tecnologia | Version | Proposito |
|------------|---------|-----------|
| **PostgreSQL** | 15+ | Base de datos principal |
| **pgcrypto** | Extension | Funciones de encriptacion |
| **uuid-ossp** | Extension | Generacion de UUIDs |
### DevOps & Testing
| Tecnologia | Version | Proposito |
|------------|---------|-----------|
| **Docker** | Latest | Contenedorizacion |
| **Docker Compose** | Latest | Orquestacion local |
| **Jest** | 29.x | Testing framework |
| **Vitest** | 2.x | Testing para Vite |
| **Supertest** | 6.x | Testing API |
| **ESLint** | 9.x | Linting |
| **Prettier** | 3.x | Code formatting |
---
## Estructura de Directorios
```
MAI-001-fundamentos/
├── README.md # Este archivo
├── _MAP.md # Mapa del modulo
│
├── requerimientos/ # Requerimientos Funcionales
│ ├── RF-AUTH-001-roles-construccion.md
│ ├── RF-AUTH-002-estados-cuenta.md
│ └── RF-AUTH-003-multi-tenancy.md
│
├── especificaciones/ # Especificaciones Tecnicas
│ ├── ET-AUTH-001-rbac.md
│ ├── ET-AUTH-002-estados-cuenta.md
│ └── ET-AUTH-003-multi-tenancy.md
│
├── historias-usuario/ # User Stories
│ ├── US-FUND-001-autenticacion-basica-jwt.md
│ ├── US-FUND-002-perfiles-usuario-construccion.md
│ ├── US-FUND-003-dashboard-por-rol.md
│ ├── US-FUND-004-infraestructura-base.md
│ ├── US-FUND-005-sistema-sesiones.md
│ ├── US-FUND-006-api-restful-base.md
│ ├── US-FUND-007-navegacion-routing.md
│ └── US-FUND-008-ui-ux-base.md
│
├── implementacion/ # Inventarios de implementacion
│ ├── TRACEABILITY.yml # Matriz de trazabilidad
│ ├── DATABASE.yml # Objetos de base de datos
│ ├── BACKEND.yml # Modulos backend
│ └── FRONTEND.yml # Componentes frontend
│
└── pruebas/ # Documentacion de testing
├── TEST-PLAN.md # Plan de pruebas
└── TEST-CASES.md # Casos de prueba
```
---
## Enlaces a Documentacion
### Documentacion del Modulo
| Tipo | Documento | Descripcion |
|------|-----------|-------------|
| **Mapa** | [_MAP.md](./_MAP.md) | Indice completo del modulo con metricas |
| **Trazabilidad** | [TRACEABILITY.yml](./implementacion/TRACEABILITY.yml) | Matriz completa de trazabilidad RF→ET→US→DB→BE→FE |
| **Base de Datos** | [DATABASE.yml](./implementacion/DATABASE.yml) | Inventario de schemas, tablas, funciones |
| **Backend** | [BACKEND.yml](./implementacion/BACKEND.yml) | Inventario de modulos, servicios, guards |
| **Frontend** | [FRONTEND.yml](./implementacion/FRONTEND.yml) | Inventario de componentes, hooks, stores |
### Requerimientos Funcionales
| ID | Documento | Titulo |
|----|-----------|--------|
| RF-AUTH-001 | [RF-AUTH-001-roles-construccion.md](./requerimientos/RF-AUTH-001-roles-construccion.md) | Sistema de Roles de Construccion |
| RF-AUTH-002 | [RF-AUTH-002-estados-cuenta.md](./requerimientos/RF-AUTH-002-estados-cuenta.md) | Estados de Cuenta de Usuario |
| RF-AUTH-003 | [RF-AUTH-003-multi-tenancy.md](./requerimientos/RF-AUTH-003-multi-tenancy.md) | Multi-tenancy por Constructora |
### Especificaciones Tecnicas
| ID | Documento | Titulo |
|----|-----------|--------|
| ET-AUTH-001 | [ET-AUTH-001-rbac.md](./especificaciones/ET-AUTH-001-rbac.md) | Implementacion RBAC |
| ET-AUTH-002 | [ET-AUTH-002-estados-cuenta.md](./especificaciones/ET-AUTH-002-estados-cuenta.md) | Estados de Cuenta |
| ET-AUTH-003 | [ET-AUTH-003-multi-tenancy.md](./especificaciones/ET-AUTH-003-multi-tenancy.md) | Multi-tenancy Implementation |
### Historias de Usuario
| ID | Documento | Titulo | SP |
|----|-----------|--------|----|
| US-FUND-001 | [US-FUND-001-autenticacion-basica-jwt.md](./historias-usuario/US-FUND-001-autenticacion-basica-jwt.md) | Autenticacion Basica JWT | 8 |
| US-FUND-002 | [US-FUND-002-perfiles-usuario-construccion.md](./historias-usuario/US-FUND-002-perfiles-usuario-construccion.md) | Perfiles de Usuario de Construccion | 5 |
| US-FUND-003 | [US-FUND-003-dashboard-por-rol.md](./historias-usuario/US-FUND-003-dashboard-por-rol.md) | Dashboard Principal por Rol | 8 |
| US-FUND-004 | [US-FUND-004-infraestructura-base.md](./historias-usuario/US-FUND-004-infraestructura-base.md) | Infraestructura Tecnica Base | 12 |
| US-FUND-005 | [US-FUND-005-sistema-sesiones.md](./historias-usuario/US-FUND-005-sistema-sesiones.md) | Sistema de Sesiones y Estado | 6 |
| US-FUND-006 | [US-FUND-006-api-restful-base.md](./historias-usuario/US-FUND-006-api-restful-base.md) | API RESTful Basica | 8 |
| US-FUND-007 | [US-FUND-007-navegacion-routing.md](./historias-usuario/US-FUND-007-navegacion-routing.md) | Navegacion y Routing | 5 |
| 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 |
### Pruebas
| Documento | Descripcion |
|-----------|-------------|
| [TEST-PLAN.md](./pruebas/TEST-PLAN.md) | Plan de pruebas del modulo |
| [TEST-CASES.md](./pruebas/TEST-CASES.md) | Casos de prueba detallados |
### Referencias al Core ERP
| Modulo | Documento | Descripcion |
|--------|-----------|-------------|
| MGN-001 | [README.md](/home/isem/workspace/projects/erp-suite/apps/erp-core/docs/01-fase-foundation/MGN-001-auth/README.md) | Autenticacion Core |
| MGN-002 | [README.md](/home/isem/workspace/projects/erp-suite/apps/erp-core/docs/01-fase-foundation/MGN-002-users/README.md) | Usuarios Core |
| MGN-003 | [README.md](/home/isem/workspace/projects/erp-suite/apps/erp-core/docs/01-fase-foundation/MGN-003-roles/README.md) | Roles Core |
---
## Metricas del Modulo
### Metricas de Planificacion
| Metrica | Valor | Notas |
|---------|-------|-------|
| **Presupuesto estimado** | $25,000 MXN | Incluye desarrollo + pruebas |
| **Presupuesto target** | $25,000 MXN ±5% | Rango: $23,750 - $26,250 |
| **Story Points estimados** | 50 SP | Reducidos vs 60 SP de GAMILIT |
| **Duracion estimada** | 10 dias | vs 11 dias GAMILIT (90% reutilizacion) |
| **Reutilizacion Core** | 95% | De MGN-001, MGN-002, MGN-003 |
| **Ahorro estimado** | ~2.5 semanas | vs desarrollo desde cero |
### Metricas de Alcance
| Metrica | Cantidad |
|---------|----------|
| **Requerimientos Funcionales** | 3 |
| **Especificaciones Tecnicas** | 3 |
| **User Stories** | 8 |
| **Schemas de BD** | 4 (auth, auth_management, audit, public) |
| **Tablas estimadas** | ~18 |
| **Endpoints API** | ~25 |
| **Componentes Frontend** | ~30 |
| **Roles de sistema** | 7 |
### Metricas de Calidad (Targets)
| Metrica | Target | Estrategia |
|---------|--------|------------|
| **Code Coverage** | >80% | Jest + Vitest |
| **API Response Time** | <200ms | P95 |
| **Frontend Lighthouse** | >90 | Performance score |
| **Security Audit** | 0 vulnerabilities | npm audit |
| **TypeScript Strict** | 100% | strict mode enabled |
| **ESLint Issues** | 0 | Pre-commit hooks |
---
## Seguridad y Cumplimiento
### Medidas de Seguridad
| Area | Implementacion |
|------|----------------|
| **Passwords** | Bcrypt con cost factor 12 |
| **Tokens JWT** | Access (15 min) + Refresh (7 dias) |
| **Rate Limiting** | 5 intentos/minuto por IP |
| **Bloqueo Temporal** | 15 minutos tras 5 intentos fallidos |
| **Reset Password** | Tokens expiran en 1 hora |
| **HTTPS** | Obligatorio en produccion |
| **CORS** | Whitelist de dominios |
| **Helmet.js** | Headers de seguridad |
| **SQL Injection** | TypeORM parametrizado |
| **XSS** | Sanitizacion de inputs |
| **CSRF** | Tokens CSRF en forms |
### Row-Level Security (RLS)
Todas las tablas implementan RLS para aislamiento por constructora:
```sql
-- Ejemplo de politica RLS
CREATE POLICY "users_select_policy"
ON public.users
FOR SELECT
USING (
constructora_id = current_setting('app.current_constructora_id')::uuid
OR
EXISTS (
SELECT 1 FROM public.user_roles ur
JOIN public.roles r ON ur.role_id = r.id
WHERE ur.user_id = auth.uid()
AND r.name = 'super_admin'
)
);
```
### Auditoria
Todas las operaciones criticas se auditan:
- Login/Logout
- Cambios de password
- Asignacion de roles
- Modificacion de permisos
- Acceso a datos sensibles
- Operaciones CRUD de usuarios
---
## Roadmap de Implementacion
### Sprint 0: Migracion (2 dias)
- [x] Migrar componentes de GAMILIT
- [x] Adaptar estructura de carpetas
- [x] Configurar base de datos
- [x] Adaptar variables de entorno
### Sprint 1: Autenticacion (4 dias)
- [ ] Implementar login/logout JWT
- [ ] OAuth con Google/Microsoft
- [ ] Recuperacion de password
- [ ] Sistema de sesiones
- [ ] Rate limiting y bloqueo
### Sprint 2: Usuarios y Roles (4 dias)
- [ ] CRUD de usuarios
- [ ] Perfiles extendidos
- [ ] Sistema RBAC con 7 roles
- [ ] Asignacion de permisos
- [ ] Multi-tenancy por constructora
### Sprint 3: Dashboard y UI (3 dias)
- [ ] Dashboard por rol (7 variantes)
- [ ] Navegacion y routing
- [ ] Componentes UI base
- [ ] Sistema de preferencias
- [ ] Responsive design
### Sprint 4: Testing y QA (2 dias)
- [ ] Tests unitarios (>80% coverage)
- [ ] Tests de integracion API
- [ ] Tests E2E criticos
- [ ] Security audit
- [ ] Performance testing
**Total: 15 dias (10 dias de desarrollo + 5 dias buffer)**
---
## Lecciones Aprendidas (de GAMILIT)
### Best Practices
1. **RLS desde dia 1:** Implementar Row Level Security desde el inicio evita refactoring posterior
2. **Tests rigurosos:** Coverage >80% = deployment mas seguro y tranquilo
3. **Modularizacion temprana:** Facilita desarrollo paralelo de equipos
4. **Documentacion previa:** Especificar antes de implementar reduce cambios y retrabajo
5. **Type Safety:** TypeScript strict mode evita bugs en produccion
6. **API Versionado:** `/api/v1` desde el inicio facilita evolucionar sin breaking changes
### Errores a Evitar
1. **NO** implementar autenticacion custom sin JWT
2. **NO** guardar passwords en texto plano (obvio pero critico)
3. **NO** usar ORMs sin prepared statements
4. **NO** olvidar rate limiting en endpoints publicos
5. **NO** exponer stack traces en produccion
6. **NO** hacer commits sin tests pasando
---
## Contacto y Soporte
### Equipo
| Rol | Responsable | Contacto |
|-----|-------------|----------|
| **Tech Lead** | @tech-lead | tech-lead@example.com |
| **Backend Team** | @backend-team | backend@example.com |
| **Frontend Team** | @frontend-team | frontend@example.com |
| **Database Team** | @database-team | database@example.com |
| **QA Team** | @qa-team | qa@example.com |
### Recursos
- **Wiki del Proyecto:** [Confluence/Wiki URL]
- **Board de Tareas:** [Jira/Linear URL]
- **Repositorio:** [GitHub/GitLab URL]
- **CI/CD:** [Jenkins/GitHub Actions URL]
- **Monitoring:** [Datadog/Grafana URL]
---
## Historial de Cambios
| Fecha | Version | Cambio | Autor |
|-------|---------|--------|-------|
| 2025-12-06 | 1.0 | Creacion del README del modulo MAI-001 | Requirements-Analyst |
| 2025-11-17 | 0.1 | Creacion inicial del modulo con _MAP.md | Requirements-Analyst |
---
**Generado por:** Requirements-Analyst
**Fecha:** 2025-12-06
**Estado:** Planificado
**Proxima revision:** Sprint 1 (inicio de implementacion)