Commit Graph

876 Commits

Author SHA1 Message Date
92063e682f fix(e2e): dismissear PrerequisitesModal en test 'crear parte valida'
En /dashboard/goods/parts/edit/new, +page.svelte abre un AlertDialog
"Aviso" cuando agentsCount === 0 || clientsCount === 0. En CI con DB
limpia (sin agentes ni clientes seedeados) esto es siempre el caso:
el overlay del modal intercepta los clicks del form y "Guardar"
falla por timeout.

El test ahora detecta el modal después de navegar a /new y clickea
"Aceptar" para cerrarlo y continuar con el flujo (Cancelar te saca
del editor, no sirve).

Ver routes/dashboard/goods/parts/edit/[[id]]/+page.svelte:29-38.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 14:32:43 -05:00
1bb3808f72 Merge pull request 'fix/clases-modal-botones-actualizar' (#422) from fix/clases-modal-botones-actualizar into development
Reviewed-on: ADUANASOFT/anexo76#422
2026-05-22 16:17:44 +00:00
a40bfa61b6 Merge pull request 'fix/login-redirect-URL' (#439) from fix/login-redirect-URL into development
Reviewed-on: ADUANASOFT/anexo76#439
2026-05-22 14:24:02 +00:00
4da360e141 fix(deploy): corregir vars de producción que causaban localhost en KC URLs
docker-compose.prod.yml:
- Agrega SITE_URL=https://anexo76-dev.aduanasoft.com hardcodeado (no depende
  del .env raíz). resolveSystemBaseUrl() lo usa como fallback cuando
  ORIGIN tiene un valor localhost que pisó el default del compose.
- Agrega VITE_HUB_URL=https://workspace.aduanasoft.com para que
  getWorkspaceBaseUrl() no dependa de VITE_HUB_URL del .env raíz dev.
- Documenta el problema: root .env con ORIGIN=localhost pisa el default.

Dockerfile.prod:
- Agrega ARG/ENV VITE_KEYCLOAK_REALM (faltaba en los build-args de Jenkins).
- Agrega ARG/ENV VITE_HUB_URL con default workspace.aduanasoft.com.

.env.example raíz:
- Agrega advertencia sobre ORIGIN, VITE_HUB_URL y APP_PUBLIC_URL con
  instrucciones explícitas de cómo corregirlos en producción.
- Extrae estos valores al bloque documentado para que sean visibles.

Root cause: el deploy en producción ejecuta
  docker compose -f docker-compose.prod.yml up
  que carga automáticamente el .env raíz con ORIGIN=http://localhost:5173,
  pisando el default correcto del prod compose.
  url.origin en SvelteKit = localhost:5173 → redirect_uri con localhost.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 08:58:29 -05:00
74282d446f fix(auth): corregir redirect_uri y KC URL con localhost en producción
- workspace-auth.ts: reemplaza isInternalOnlyHost por isDevOnlyUrl que
  incluye localhost/127.0.0.1 e IPs LAN además de hostnames Docker.
  getWorkspaceBaseUrl() y getPublicKeycloakBaseUrl() ya ignoran valores
  dev-only; no usan VITE_KEYCLOAK_URL=http://localhost:... en prod.

- Nuevo resolveSystemBaseUrl(): cuando url.origin es localhost porque
  ORIGIN env var apunta a localhost en producción, busca SITE_URL/APP_URL
  como fallback para construir redirect_uri seguros.

- buildKeycloakAuthorizationUrl() y buildKeycloakLoginUrl() usan
  resolveSystemBaseUrl() para el redirect_uri (evita localhost:5173).

- auth/callback/+page.server.ts: idem para el redirectUri del token exchange.

- auth.ts (cliente): resolveKeycloakUrl() detecta en runtime si
  VITE_KEYCLOAK_URL bakeado apunta a localhost pero el browser NO está
  en localhost → deriva la URL del hostname real del browser.

- .env.example: documenta vars de producción recomendadas (SITE_URL,
  ORIGIN, VITE_HUB_URL) con advertencias sobre el efecto de ORIGIN.

Root cause: el .env de dev (ORIGIN=http://localhost:5173,
VITE_KEYCLOAK_URL=http://localhost:8085/kcauth) se usaba en producción
sin sobrescribir estas variables, causando que KC generara URLs con
localhost como redirect_uri y KC URL.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 08:49:39 -05:00
ae321f5077 feat(jenkins): enhance E2E testing and debugging capabilities
- Updated Jenkinsfile to include Playwright's trace option for better debugging on test failures.
- Added archiving of test results, including trace files, error context, and screenshots for failed tests.
- Enhanced error handling in `auth.setup.ts` to log diagnostic information when authentication fails, improving visibility into issues.

These changes aim to improve the reliability and debuggability of E2E tests.
2026-05-21 17:53:40 -05:00
9cc840da8b feat(e2e): enhance authentication and invoice flow tests
- Updated `auth.setup.ts` to handle multiple app launches in Workspace and ensure proper redirection to the dashboard.
- Improved invoice creation tests in `export-flow.spec.ts` and `invoice-flow.spec.ts` to check for existing exchange rates before creating new ones, and adjusted button names for consistency.
- Refactored selectors to use placeholders for invoice number inputs across multiple test files.
- Enhanced error handling and visibility checks in various test scenarios to improve reliability.
- Removed obsolete `setup-catalogs.spec.ts` file as its functionality is no longer needed.

These changes aim to streamline the testing process and ensure more robust interactions with the application.
2026-05-21 17:43:47 -05:00
6ce3bccf85 refactor(docker): remove Keycloak and PostgreSQL services from production configuration
- Deleted PostgreSQL and Keycloak service definitions from docker-compose.prod.yml to streamline the deployment configuration.
- Updated README.md with new build arguments for API and Keycloak URLs.
- Adjusted Dockerfile.prod to ensure proper ownership for the application directory.

This change simplifies the production setup by removing unnecessary services.
2026-05-21 17:43:25 -05:00
99cc0bc7ef revert(auth): restaurar client_id a anexo76-frontend
Anexo76 debe tener su propio cliente en Keycloak (no compartir hub-frontend).
Misma sesión SSO para el usuario, pero cliente separado por app.

El cliente anexo76-frontend debe crearse en Keycloak con:
  - Valid redirect URIs: https://anexo76-dev.aduanasoft.com/*
  - Web origins: https://anexo76-dev.aduanasoft.com

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 16:36:43 -05:00
60d552da59 Merge pull request 'fix/jenkins-mejora' (#419) from fix/jenkins-mejora into development
Reviewed-on: ADUANASOFT/anexo76#419
2026-05-20 20:53:25 +00:00
557f904af0 fix(auth): cambiar client_id de Keycloak de anexo76-frontend a hub-frontend
Anexo76 no es independiente del Hub/Workspace — comparten el mismo
cliente de Keycloak (hub-frontend). anexo76-frontend no existe en KC.

- Dockerfile.prod: agrega ARG/ENV VITE_KEYCLOAK_CLIENT_ID=hub-frontend
- workspace-auth.ts: actualiza fallback de 'anexo76-frontend' a 'hub-frontend'
- .env.example: actualiza a hub-frontend
- Jenkinsfile: pasa --build-arg VITE_KEYCLOAK_CLIENT_ID=hub-frontend al build

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 15:49:28 -05:00
65de659435 Merge pull request 'fix(e2e): usar usuario de prueba existente en lugar de Admin API' (#425) from fix/jenkins-mejora into development
Reviewed-on: ADUANASOFT/anexo76#425
2026-05-20 19:12:55 +00:00
4a9d4cfcd1 fix(e2e): usar usuario de prueba existente en lugar de Admin API
El usuario en a76-e2e-credentials no tiene permisos de KC admin (403).
En lugar de crear usuario efímero vía Admin API:
- Eliminar global-setup.ts, global-teardown.ts, fixtures/keycloak.ts
- Quitar globalSetup/globalTeardown de playwright.config.ts
- auth.setup.ts ya navega a /login → Workspace → llena form → /dashboard
- a76-e2e-credentials = usuario de prueba existente en Workspace (E2E_USER/E2E_PASS)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 14:10:59 -05:00
0118db2fdf Merge pull request 'fix/jenkins-mejora' (#424) from fix/jenkins-mejora into development
Reviewed-on: ADUANASOFT/anexo76#424
2026-05-20 19:04:55 +00:00
65832a92bc feat(e2e): replicar patrón de autenticación de aduanasoft-hub
- fixtures/keycloak.ts: Admin REST API helpers (createTestUser, assignRoles,
  deleteTestUser) — copia exacta del hub
- global-setup.ts: crea usuario e2e-anexo76 en KC antes de los tests
- global-teardown.ts: elimina el usuario al finalizar
- auth.setup.ts: navega a /login → Workspace → llena form → /dashboard
  (ya no usa password grant ni Direct Access Grants)
- playwright.config.ts: agrega globalSetup y globalTeardown
- Jenkinsfile: a76-e2e-credentials ahora son credenciales de KC admin;
  usuario de prueba es efímero (creado/borrado por global-setup/teardown)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 13:50:39 -05:00
4323ff9ee9 Se deshabilito el evento click que cerraba el modal si se acia fuera del modal, ademas de que se retiro el boton de crear clase en la parte superior 2026-05-20 13:14:54 -05:00
cedad7d066 Merge pull request 'feat(e2e): implement authentication setup for Playwright tests using Keycloak tokens' (#415) from fix/jenkins-mejora into development
Reviewed-on: ADUANASOFT/anexo76#415
2026-05-20 17:30:56 +00:00
844c8c4c6b feat(e2e): implement authentication setup for Playwright tests using Keycloak tokens 2026-05-20 12:27:27 -05:00
687217b345 Merge pull request 'fix(schema): remove unused ENUM types from PostgreSQL during downgrade' (#413) from fix/jenkins-mejora into development
Reviewed-on: ADUANASOFT/anexo76#413
2026-05-20 17:01:54 +00:00
f18532087f fix(schema): remove unused ENUM types from PostgreSQL during downgrade 2026-05-20 11:59:32 -05:00
71c19d28b0 Merge pull request 'feature/hub-admin-global-access' (#410) from feature/hub-admin-global-access into development
Reviewed-on: ADUANASOFT/anexo76#410
2026-05-20 16:31:09 +00:00
eec6ed30d8 Refactor API calls in dashboard components to include company ID for data fetching. Updated methods in reference data files to accept companyId as a parameter, ensuring accurate data retrieval based on the selected company. Enhanced user experience by preventing errors related to missing company context. 2026-05-15 18:05:28 -05:00
02b3ae8334 Add permissions hydration handling to improve user experience and prevent access flash
- Introduced `permissionsHydrated` writable store to track if RBAC permissions are loaded for the active company.
- Added `markPermissionsHydrated` function to set the hydration state.
- Updated dashboard components to wait for permissions to be hydrated before rendering restricted content, enhancing user experience by avoiding "Access Denied" flashes.
- Refactored permission checks in `pedimento-permissions.ts` to consistently use `userHasPermission` for clarity and maintainability.
2026-05-15 17:32:08 -05:00
4c7910ab7b Refactor API calls in dashboard components to use active company ID. Updated classification, countries, and invoice types pages to ensure proper data fetching based on the selected company, enhancing user experience and data accuracy. 2026-05-15 17:13:03 -05:00
10e7a2a927 Merge pull request 'Correcion en las inconsisitencias de los permisos en los agentes aduanales' (#406) from fix/agentes-aduanales-correcion into development
Reviewed-on: ADUANASOFT/anexo76#406
2026-05-15 21:16:12 +00:00
2b24e48499 Merge pull request 'Coreecion de error en el item del formulario de bultos, no se generaba un nuevo item cada vez que queriamos ingresar un nuevo bulto, asi que nada mas volvia a brir el mismo item' (#405) from fix/bultos into development
Reviewed-on: ADUANASOFT/anexo76#405
2026-05-15 21:15:36 +00:00
88619e0a12 Merge pull request 'fix(reports): silent refresh y tenant override en descargas blob' (#404) from fix/reports-blob-token-refresh into development
Reviewed-on: ADUANASOFT/anexo76#404
2026-05-15 21:15:14 +00:00
c71b52a4f8 Merge pull request 'Botones de edicion y eliminacion en el footer de la informacion de los secotres y doble click para ver la informacion' (#403) from fix/sectores-corregido2 into development
Reviewed-on: ADUANASOFT/anexo76#403
2026-05-15 21:14:47 +00:00
abc5764b70 Merge pull request 'fix/informacion-empresa' (#402) from fix/informacion-empresa into development
Reviewed-on: ADUANASOFT/anexo76#402
2026-05-15 21:10:46 +00:00
866b25581b Correcion en las inconsisitencias de los permisos en los agentes aduanales 2026-05-15 14:15:29 -05:00
fad784e49f Coreecion de error en el item del formulario de bultos, no se generaba un nuevo item cada vez que queriamos ingresar un nuevo bulto, asi que nada mas volvia a brir el mismo item 2026-05-15 13:23:28 -05:00
73fb03795d fix(reports): silent refresh y tenant override en descargas blob
fetchBlob no implementaba silent refresh ni propagaba X-Tenant-Override,
por lo que reportes que descargan archivo (Descargos, Vencimientos) fallaban
con "token inválido o expirado" cuando el access_token estaba vencido,
mientras el resto del dashboard refrescaba sin problema.

- Extrae buildAuthHeaders compartido por fetchApi y fetchBlob.
- fetchBlob ahora hace silent refresh y reintenta una vez en 401.
- fetchBlob muestra toast consistente en 403.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 12:54:55 -05:00
e919cc60a3 Botones de edicion y eliminacion en el footer de la informacion de los secotres y doble click para ver la informacion 2026-05-15 12:28:23 -05:00
64d81c83f9 feat(company): add tenant_id support for hub_admin in company creation and updates 2026-05-15 10:28:47 -05:00
7118e26933 Botones de edicion y eliminacion en el footer de la informacion de las empresas y doble click para ver la informacion 2026-05-15 08:26:17 -05:00
4f4ca6453d Botones ya visibles 2026-05-14 17:56:37 -05:00
75ea8a347a fix(dashboard): evitar flash de "Acceso Restringido" al refrescar
Sembrar authStore desde data.user en el script de +layout.svelte
(SSR + hidratación) en lugar de en onMount, para que $currentUser
ya esté poblado en el primer render de las páginas hijas. Antes,
canView quedaba en false durante el SSR/hidratación y las páginas
renderizaban ErrorState 403 hasta que onMount llenaba el store.

Aplica al refrescar la página (F5) y al botón "Refrescar" de los
módulos que usan window.location.reload (countries, material_types,
payment_methods, document_types_digitization, clients_and_providers).

No se modificaron permisos, helpers de permisos, ni el patrón
canView/isError de las páginas afectadas.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 13:07:57 -05:00
76b03b2938 Merge pull request 'fix(goods): corregir selección y cuadro informativo en Clases de Activo Fijo' (#400) from fix/clases into development
Reviewed-on: ADUANASOFT/anexo76#400
2026-05-14 17:49:52 +00:00
34bbfff9d2 Merge pull request 'fix/catalogos-fijos' (#399) from fix/catalogos-fijos into development
Reviewed-on: ADUANASOFT/anexo76#399
2026-05-14 17:49:26 +00:00
1c7337915d Merge pull request 'eliminacion y cracion de registros reactivos' (#398) from fix/conversion-unidades into development
Reviewed-on: ADUANASOFT/anexo76#398
2026-05-14 17:48:43 +00:00
2cf3b711f2 Merge pull request 'Mejoramiento de los errores en vehiculos' (#396) from fix/vehiculos into development
Reviewed-on: ADUANASOFT/anexo76#396
2026-05-14 17:47:08 +00:00
fa2f8a587d Merge pull request 'fix/equivalencias' (#395) from fix/equivalencias into development
Reviewed-on: ADUANASOFT/anexo76#395
2026-05-14 17:46:41 +00:00
d739a89d91 Merge pull request 'fix/clientes-provedores-traduccion' (#394) from fix/clientes-provedores-traduccion into development
Reviewed-on: ADUANASOFT/anexo76#394
2026-05-14 17:45:48 +00:00
64f372a335 fix(goods): corregir selección y cuadro informativo en Clases de Activo Fijo
- Clic en fila hace toggle multi-select; el registro clickeado queda primero en el array para que el cuadro informativo siempre muestre su info
- Clic en checkbox mantiene comportamiento independiente para selección múltiple (eliminar)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 12:33:12 -05:00
924030e268 Merge pull request 'fix/logout-anexo' (#393) from fix/logout-anexo into development
Reviewed-on: ADUANASOFT/anexo76#393
2026-05-14 17:19:53 +00:00
7a7e8a67a3 fix(auth): ensure id_token is cleared and set during SSO exchange for Keycloak logout 2026-05-14 12:15:37 -05:00
0ed350ca11 fix(auth): enhance logout and login flow with Keycloak integration and cookie management 2026-05-14 12:07:10 -05:00
054130f78a fix(catalogos-referencia): habilitar menú de acciones para usuarios sin permisos de edición 2026-05-14 12:02:24 -05:00
3f55d19ce6 fix(catalogos-referencia): corregir etiqueta "Modos" a "Métodos de Transporte" 2026-05-14 12:02:06 -05:00
23ae03343b eliminacion y cracion de registros reactivos 2026-05-14 11:28:09 -05:00