{
  "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."
  }
}
