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