{ "context": { "project_name": "Anexo76", "description": "Aplicación SaaS para gestión de comercio exterior conforme a Anexos 24, 30 y 22 del SAT.", "business_goal": "Ofrecer una plataforma multi-tenant para maquilas, IMMEX y agentes aduanales que permita manejar inventarios, pedimentos y facturas de importación/exportación con control de licencias y cumplimiento normativo." }, "architecture": { "frontend": { "framework": "SvelteKit", "auth_integration": "keycloak-js", "ui_goal": "Dashboard moderno, responsivo y rápido para usuarios empresariales." }, "backend": { "framework": "FastAPI", "auth": "Keycloak (OpenID Connect)", "db_model": "Hybrid multi-tenant", "shared_db": "Base de datos central para clientes pequeños y medianos", "dedicated_db": "Bases de datos independientes para clientes grandes o con alta operación", "features": [ "Conexión dinámica a BD según tenant", "Middleware para validar licencias y tenants", "APIs RESTful versionadas (v1, v2...)", "Separación de capas: models (ORM), dto (Pydantic), service y routes" ], "module_structure": { "pattern": "backend/v1/modules/{module_name}/", "files": { "models.py": "Definición ORM con SQLAlchemy", "dto.py": "Definición de Pydantic DTOs para entrada/salida de datos (reemplaza schemas.py)", "service.py": "Lógica de negocio y validaciones específicas del módulo", "routes.py": "Endpoints FastAPI que usan los DTOs y servicios" }, "naming_convention": { "models": "Representan entidades persistentes (Base de datos)", "dto": "Data Transfer Objects para transporte entre capas y API", "service": "Capa de negocio (domain logic)", "routes": "Exposición HTTP / API layer" }, "reasoning": "Se utiliza dto.py en lugar de schemas.py para reflejar un enfoque DDD y estilo arquitectónico similar a NestJS, manteniendo compatibilidad total con FastAPI y Pydantic." } }, "auth_system": { "provider": "Keycloak", "multi_tenant_model": "Un Realm por cliente (tenant)", "roles": ["admin", "user", "auditor", "system"], "license_validation": "Middleware que verifica licencia y plan activo antes de procesar cada request" } }, "license_management": { "strategy": "Control centralizado en core_db", "table_structure": { "tenant_id": "int", "plan": "string", "max_users": "int", "expires_at": "datetime", "status": "active|expired|pending" }, "upgrade_flow": "El cliente puede escalar de BD compartida a BD dedicada manteniendo mismo tenant_id y realm." }, "dev_ops": { "containerization": "Docker / Docker Compose", "orchestration": "Kubernetes (futuro)", "monitoring": ["Prometheus", "Grafana"], "ci_cd": "GitHub Actions o GitLab CI" }, "prompt_usage": { "instruction": "Cuando uses este JSON, pide a la IA que genere o revise la arquitectura, código base o estrategia de despliegue respetando el modelo híbrido multi-tenant con Keycloak y FastAPI.", "example_request": "Diseña un flujo de autenticación multi-tenant con Keycloak y FastAPI que detecte automáticamente el tenant y seleccione la base de datos correcta. Usa dto.py en lugar de schemas.py para mantener una arquitectura estilo DDD." } }