Quiero rehacer desde cero la API ADS.Apis.Gps con orden limpio (Domain / Application / Infrastructure / Controllers) y multi-tenant por headers internos desde el Host. Contexto: - El Host (gateway) resuelve tenant y manda headers internos firmados (InternalRouting). - En el micro GPS ya uso UseInternalTenantDb() para validar firma y poblar TenantContext. - TenantContext tiene: EmpresaId, ClienteId, TenantId (string), Culture, Theme, Database { Provider, ConnectionString }, CustomSettings. - GPS NO debe leer appsettings para tenants ni duplicar config del Host. NO usar ITenantStore en GPS. - La conexión a BD siempre sale de TenantContext.Database.ConnectionString y se abre vía ITenantDbConnectionFactory (ADS.Helpers.Data). Objetivo inmediato: 1) Definir la estructura de carpetas y proyectos dentro de ADS.Apis.Gps: - Domain: modelos/puertos (interfaces) sin SQL ni Dapper. - Application: casos de uso/servicios y orquestación. - Infrastructure: Dapper/SQL repos/stores. - Controllers: endpoints. 2) Implementar autenticación Sicrep en GPS: - Endpoint POST /gps/sicrep/auth/token - Antes de generar JWT, ejecutar el SP [dbo].[PA_Sis_UsuarioValidacionGet] con @Usuario, @Contraseña (varchar(32)), @CveEmpresa (del tenant), y validar que CveUsuario > 0 y Acceso = 1. - Luego emitir JWT usando ADS.Helpers.Auth (IAdsTokenService) con TenantId string y claims (CveUsuario, CveEmpresa, CveCliente, CveRol, etc.) 3) Entregarme: - Árbol final de carpetas. - Código completo de: puertos (interfaces), modelos domain, repos Infrastructure (Dapper + SP), servicio Application (caso de uso), controller, y registros DI en Program.cs. - NOTA: No uses GetConnectionString("...") ni appsettings para la DB del micro. Datos extra: - Confirmar si la contraseña en BD ya viene en MD5 hex 32 o si debo hashear antes de llamar al SP. (Si no sabes, deja helper para MD5 y comenta dónde se decide). IMPORTANTE: No inventes métodos que no existan; si necesitas agregar algo a ADS.Helpers.Auth o ADS.Helpers.MultiTenant/Helpers.Data, dilo explícitamente y dame el código exacto del archivo a modificar. pasame un script para la generacion de archivos y carpetas tampoco te inventes rutas nuevas las apis las estoy guardando en la carpeta de apis la ruta del proyecto debe ser exatamente la misma para que funciione con ADS.Apis.slnx