--- # BACKEND INVENTORY - Template SaaS # Version: 4.1.0 # Ultima actualizacion: 2026-01-25 # Nota: Portfolio module (SAAS-019) added # AUDITORIA DE COHERENCIA - Sincronizado con codigo real metadata: proyecto: "template-saas" tipo: "BACKEND" version: "4.2.0" updated: "2026-02-03" framework: "NestJS 11.1.8" orm: "TypeORM 0.3.22" testing: "Jest" estado: "completo" nota_auditoria: "Inventario actualizado con tests P2 - 2026-02-03" modulos: - nombre: "auth" estado: "completado" services: - "auth.service.ts" - "token.service.ts" - "oauth.service.ts" - "mfa.service.ts" controllers: - "auth.controller.ts" entities: - "user.entity.ts" - "session.entity.ts" - "token.entity.ts" - "oauth-connection.entity.ts" dtos: - "login.dto.ts" - "register.dto.ts" - "refresh-token.dto.ts" guards: - "jwt-auth.guard.ts" - "local-auth.guard.ts" tests: 57 cobertura: 100 - nombre: "tenants" estado: "completado" services: - "tenants.service.ts" controllers: - "tenants.controller.ts" entities: - "tenant.entity.ts" - "tenant-settings.entity.ts" dtos: - "create-tenant.dto.ts" - "update-tenant.dto.ts" tests: 25 cobertura: 100 - nombre: "users" estado: "completado" services: - "users.service.ts" - "invitation.service.ts" controllers: - "users.controller.ts" entities: - "role.entity.ts" - "invitation.entity.ts" dtos: - "create-user.dto.ts" - "update-user.dto.ts" - "invite-user.dto.ts" tests: 42 cobertura: 98 - nombre: "billing" estado: "completado" services: - "billing.service.ts" - "stripe.service.ts" - "subscription.service.ts" - "invoice.service.ts" - "plans.service.ts" controllers: - "billing.controller.ts" - "stripe-webhook.controller.ts" - "plans.controller.ts" entities: - "subscription.entity.ts" - "invoice.entity.ts" - "payment.entity.ts" - "payment-method.entity.ts" - "plan.entity.ts" - "plan-feature.entity.ts" dtos: - "create-subscription.dto.ts" - "update-subscription.dto.ts" - "plan-response.dto.ts" tests: 160 cobertura: 100 - nombre: "onboarding" estado: "completado" services: - "onboarding.service.ts" controllers: - "onboarding.controller.ts" entities: [] dtos: - "onboarding-status.dto.ts" - "complete-onboarding.dto.ts" tests: 16 cobertura: 97 - nombre: "notifications" estado: "completado" services: - "notifications.service.ts" - "push-notification.service.ts" - "notification-queue.service.ts" - "devices.service.ts" controllers: - "notifications.controller.ts" - "devices.controller.ts" gateways: - "notifications.gateway.ts" entities: - "notification.entity.ts" - "template.entity.ts" - "user-preferences.entity.ts" - "user-device.entity.ts" - "notification-queue.entity.ts" - "notification-log.entity.ts" tests: 45 cobertura: 98 - nombre: "feature-flags" estado: "completado" services: - "feature-flags.service.ts" controllers: - "feature-flags.controller.ts" entities: - "flag.entity.ts" - "tenant-flag.entity.ts" - "user-flag.entity.ts" - "flag-evaluation.entity.ts" tests: 35 cobertura: 95 - nombre: "audit" estado: "completado" services: - "audit.service.ts" controllers: - "audit.controller.ts" entities: - "audit-log.entity.ts" - "activity-log.entity.ts" tests: 28 cobertura: 95 - nombre: "ai-integration" estado: "completado" services: - "ai.service.ts" - "openrouter.service.ts" controllers: - "ai.controller.ts" entities: - "ai-config.entity.ts" - "ai-usage.entity.ts" tests: 32 cobertura: 95 - nombre: "storage" estado: "completado" services: - "storage.service.ts" - "s3.provider.ts" controllers: - "storage.controller.ts" entities: - "file.entity.ts" - "pending-upload.entity.ts" - "storage-usage.entity.ts" tests: 113 cobertura: 96 - nombre: "webhooks" estado: "completado" services: - "webhooks.service.ts" - "webhook-processor.service.ts" controllers: - "webhooks.controller.ts" entities: - "webhook.entity.ts" - "webhook-delivery.entity.ts" tests: 42 cobertura: 98 - nombre: "email" estado: "completado" services: - "email.service.ts" - "sendgrid.provider.ts" - "ses.provider.ts" - "smtp.provider.ts" controllers: [] entities: [] tests: 35 cobertura: 92 - nombre: "whatsapp" estado: "completado" services: - "whatsapp.service.ts" controllers: - "whatsapp.controller.ts" - "whatsapp-webhook.controller.ts" entities: - "whatsapp-config.entity.ts" - "whatsapp-message.entity.ts" tests: 22 cobertura: 90 - nombre: "rbac" estado: "completado" services: - "rbac.service.ts" guards: - "roles.guard.ts" - "permissions.guard.ts" decorators: - "roles.decorator.ts" - "permissions.decorator.ts" tests: 25 cobertura: 95 - nombre: "superadmin" estado: "completado" services: - "superadmin.service.ts" controllers: - "superadmin.controller.ts" guards: - "superadmin.guard.ts" tests: 40 cobertura: 90 - nombre: "health" estado: "completado" controllers: - "health.controller.ts" tests: 8 cobertura: 100 - nombre: "analytics" estado: "completado" nota: "MODULO EXISTENTE - NO DOCUMENTADO previamente. Agregado en auditoria 2026-01-24" services: - "analytics.service.ts" controllers: - "analytics.controller.ts" entities: [] dtos: - "analytics-query.dto.ts" tests: 0 cobertura: 0 - nombre: "sales" estado: "completado" nota: "SAAS-018 - Tests completados 2026-02-03" services: - "leads.service.ts" - "opportunities.service.ts" - "pipeline.service.ts" - "activities.service.ts" - "sales-dashboard.service.ts" controllers: - "leads.controller.ts" - "opportunities.controller.ts" - "pipeline.controller.ts" - "activities.controller.ts" - "dashboard.controller.ts" entities: - "lead.entity.ts" - "opportunity.entity.ts" - "pipeline-stage.entity.ts" - "activity.entity.ts" dtos: - "lead.dto.ts" - "opportunity.dto.ts" - "activity.dto.ts" - "pipeline.dto.ts" - "dashboard.dto.ts" tests: 150 cobertura: 75 - nombre: "commissions" estado: "completado" nota: "SAAS-020 - Tests completados 2026-02-03" services: - "schemes.service.ts" - "assignments.service.ts" - "entries.service.ts" - "periods.service.ts" - "commissions-dashboard.service.ts" controllers: - "schemes.controller.ts" - "assignments.controller.ts" - "entries.controller.ts" - "periods.controller.ts" - "dashboard.controller.ts" entities: - "commission-scheme.entity.ts" - "commission-assignment.entity.ts" - "commission-entry.entity.ts" - "commission-period.entity.ts" dtos: - "scheme.dto.ts" - "assignment.dto.ts" - "entry.dto.ts" - "period.dto.ts" - "dashboard.dto.ts" tests: 145 cobertura: 75 - nombre: "portfolio" estado: "completado" nota: "SAAS-019 - Tests completados 2026-02-03" services: - "categories.service.ts" - "products.service.ts" controllers: - "categories.controller.ts" - "products.controller.ts" entities: - "category.entity.ts" - "product.entity.ts" - "variant.entity.ts" - "price.entity.ts" dtos: - "category.dto.ts" - "product.dto.ts" tests: 85 cobertura: 70 shared: guards: - nombre: "JwtAuthGuard" estado: "completado" - nombre: "TenantGuard" estado: "completado" - nombre: "RolesGuard" estado: "completado" - nombre: "PermissionsGuard" estado: "completado" - nombre: "SuperadminGuard" estado: "completado" decorators: - nombre: "CurrentUser" estado: "completado" - nombre: "CurrentTenant" estado: "completado" - nombre: "RequirePermission" estado: "completado" - nombre: "Roles" estado: "completado" - nombre: "Public" estado: "completado" interceptors: - nombre: "TenantContextInterceptor" estado: "completado" - nombre: "TransformInterceptor" estado: "completado" resumen: nota_auditoria: "METRICAS ACTUALIZADAS 2026-02-03 - P2 tests completados" total_modulos_implementados: 23 total_modulos_no_implementados: 0 total_services: 46 total_controllers: 41 total_endpoints: 195 total_entities: 64 total_dtos: 57 total_tests: 830 total_test_suites: 39 cobertura_tests: 72.5 planificado: services_estimados: 42 controllers_estimados: 33 endpoints_estimados: 153 entities_estimados: 45 tests_estimados: 900 nota: "CORRECCION: Sales y Commissions SI implementados. Objetivo alcanzado." gaps_identificados: criticos: [] altos: [] medios: - "Modulo analytics: Tests pendientes" - "MLM y Goals: Tests unitarios pendientes" resueltos_2026_01_24: - "Modulo sales (SAAS-018): Ahora completado" - "Modulo commissions (SAAS-020): Ahora completado" resueltos_2026_01_25: - "Modulo portfolio (SAAS-019): Implementado" resueltos_2026_02_03: - "Sales, Commissions, Portfolio: Tests unitarios completados (~380 tests)" - "4 controller tests recreados (39 tests)" - "DDL roles: campos code, is_active, metadata agregados" - nombre: "mlm" estado: "completado" nota: "SAAS-021 - Backend 100%, UI completada 2026-02-03" services: - "structures.service.ts" - "ranks.service.ts" - "nodes.service.ts" - "commissions.service.ts" controllers: - "structures.controller.ts" - "ranks.controller.ts" - "nodes.controller.ts" - "commissions.controller.ts" entities: - "structure.entity.ts" - "rank.entity.ts" - "node.entity.ts" - "commission.entity.ts" - "rank-history.entity.ts" - "bonus.entity.ts" dtos: - "structure.dto.ts" - "rank.dto.ts" - "node.dto.ts" - "commission.dto.ts" tests: 0 cobertura: 0 pendiente: "Tests unitarios" - nombre: "goals" estado: "completado" nota: "SAAS-022 - Backend 100%, UI completada 2026-02-03" services: - "definitions.service.ts" - "assignments.service.ts" controllers: - "definitions.controller.ts" - "assignments.controller.ts" entities: - "definition.entity.ts" - "assignment.entity.ts" - "progress-log.entity.ts" - "milestone-notification.entity.ts" dtos: - "definition.dto.ts" - "assignment.dto.ts" tests: 0 cobertura: 0 pendiente: "Tests unitarios" dependencias_npm: core: - "@nestjs/core@10.x" - "@nestjs/common@10.x" - "@nestjs/platform-express@10.x" - "typeorm@0.3.x" - "@nestjs/typeorm@10.x" auth: - "@nestjs/jwt@10.x" - "@nestjs/passport@10.x" - "passport-jwt" - "passport-local" - "bcrypt" billing: - "stripe" notifications: - "web-push" - "@nestjs/websockets" - "@nestjs/platform-socket.io" - "socket.io" queue: - "@nestjs/bullmq" - "bullmq" - "ioredis" storage: - "@aws-sdk/client-s3" - "@aws-sdk/s3-request-presigner" email: - "@sendgrid/mail" - "@aws-sdk/client-ses" - "nodemailer" ultima_actualizacion: "2026-02-03" actualizado_por: "Claude Opus 4.5 (P2/P3 - Tests y DDL)" historial_cambios: - fecha: "2026-02-03" tipo: "actualizacion" descripcion: "P2/P3 completados: Tests para Sales/Commissions/Portfolio (~380), 4 controller tests recreados (39), DDL roles actualizado (code, is_active, metadata)." agente: "Claude Opus 4.5 (P2/P3 Tasks)" - fecha: "2026-01-25" tipo: "implementacion" descripcion: "SAAS-019 Portfolio module implementado. 4 entities, 2 services, 2 controllers, 2 DTOs." agente: "Claude Opus 4.5 (SAAS-019 Portfolio)" - fecha: "2026-01-24" tipo: "correccion_critica" descripcion: "CORRECCION: Sales y Commissions SI implementados. Verificado en app.module.ts (imports lineas 31-32, modules lineas 93-94). 25 archivos por modulo." agente: "Claude Opus 4.5 (Validacion de Coherencia)"