71 lines
3.4 KiB
JSON
71 lines
3.4 KiB
JSON
{
|
|
"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."
|
|
}
|
|
}
|