Commit Graph

1600 Commits

Author SHA1 Message Date
f1b58334e8 fix/quitar-e2e 2026-05-27 11:06:08 -06:00
dbb44499fc fix/test-jenkins-skip 2026-05-27 10:51:32 -06:00
adb0b5e4d7 fix/test-jenkins-fixed-asset-boton 2026-05-27 10:08:41 -06:00
d0cba78f83 fix/test-jenkins-fixed-asset 2026-05-27 09:54:37 -06:00
660820735b fix/test-jenkins 2026-05-27 09:40:05 -06:00
2e3d0a55fd feature/app-selector-menu 2026-05-27 08:38:14 -06:00
accc78eb2e feature/ver-app-activa 2026-05-27 07:35:53 -06:00
dbf68986da feature/app-selector 2026-05-26 16:59:32 -06:00
904fa965c8 Merge pull request 'feature/funcionalidades-click-derecho-facturas' (#451) from feature/funcionalidades-click-derecho-facturas into development
Reviewed-on: ADUANASOFT/anexo76#451
2026-05-26 16:39:05 +00:00
e3205880d7 feature/funcionalidades-click-derecho-facturas 2026-05-26 10:02:17 -06:00
703bb68a04 Merge pull request 'feature/cambio-de-regimen' (#448) from feature/cambio-de-regimen into development
Reviewed-on: ADUANASOFT/anexo76#448
2026-05-25 17:05:59 +00:00
19d4b4435b Merge pull request 'feature/seed-digitalizacion' (#449) from feature/seed-digitalizacion into development
Reviewed-on: ADUANASOFT/anexo76#449
2026-05-25 17:05:41 +00:00
676a6fe413 feature/seed-digitalizacion 2026-05-25 11:03:24 -06:00
bc991acd6a feature/cambio-de-regimen 2026-05-25 10:27:49 -06:00
9cb77d6e16 Merge pull request 'Arreglo de filtros, click con compoartmiento de exit, reactividad al ingresar un registro, ademmsa del docble click' (#433) from fix/prevalidadores into development
Reviewed-on: ADUANASOFT/anexo76#433
2026-05-22 22:46:47 +00:00
c0f20bd1f9 fix: resolver conflicto de merge en signatures.ts
Restaura la construcción correcta de URLSearchParams en getSignatures,
eliminando el spread de filters inválido y el cierre de objeto roto.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 17:42:35 -05:00
b7d1f38671 Merge pull request 'Se arreglo la inestabilidad de del formulario al hacer clock' (#438) from fix/doda into development
Reviewed-on: ADUANASOFT/anexo76#438
2026-05-22 21:40:49 +00:00
41c87f5078 Merge pull request 'correcion de boton de eliminacion, reactividad para nuevos registros, estabilidad del formulario' (#437) from fix/fracciones-historicas into development
Reviewed-on: ADUANASOFT/anexo76#437
2026-05-22 21:40:42 +00:00
2a8cc0448a Merge pull request 'Habilitar la busqueda por descripcion' (#436) from fix/busqueda-fracciones into development
Reviewed-on: ADUANASOFT/anexo76#436
2026-05-22 21:40:36 +00:00
85c00e0d40 Merge pull request 'Actualziacion reactiva en datos, estabilidad del formulario de creacion, cambio del nombre en los filtros' (#435) from fix/avisos-electronicos into development
Reviewed-on: ADUANASOFT/anexo76#435
2026-05-22 21:40:29 +00:00
54334a40e5 Merge pull request 'eliminacion masiva y selector mas inteligente para mostrar informacion y deseleccionarse' (#434) from fix/clases-selector-delete into development
Reviewed-on: ADUANASOFT/anexo76#434
2026-05-22 21:40:12 +00:00
14dfa63a1c Merge pull request 'Arreglo de filtros, click con compoartmiento de exit, reactividad al ingresar un registro' (#432) from fix/firmas-electronicas into development
Reviewed-on: ADUANASOFT/anexo76#432
2026-05-22 21:39:54 +00:00
3531c673ba Merge pull request 'Arreglo de filtros, acomodo de fechas y se agrego catalogos' (#431) from fix/multimoneda into development
Reviewed-on: ADUANASOFT/anexo76#431
2026-05-22 21:39:47 +00:00
380c63cf23 Merge pull request 'Se quito el boton de consulta DOF, ademas de utilizar el boton de actualizar' (#430) from fix/tipo-cambio into development
Reviewed-on: ADUANASOFT/anexo76#430
2026-05-22 21:39:40 +00:00
a4a2803e35 Merge pull request 'placholder cambiado y boton de actualziar con funcionamiento con animacion' (#429) from fix/identificadores into development
Reviewed-on: ADUANASOFT/anexo76#429
2026-05-22 21:39:32 +00:00
7a0211aea4 Merge pull request 'fix/clasificacion-conceptos' (#428) from fix/clasificacion-conceptos into development
Reviewed-on: ADUANASOFT/anexo76#428
2026-05-22 21:39:25 +00:00
071c086ddc Merge pull request 'fix/agentes-aduanales-cache' (#426) from fix/agentes-aduanales-cache into development
Reviewed-on: ADUANASOFT/anexo76#426
2026-05-22 21:39:17 +00:00
8932744467 Merge pull request 'fix: update health check URL in Jenkinsfile and reduce wait times in e2e tests' (#447) from feature/fast-test-e2e into development
Reviewed-on: ADUANASOFT/anexo76#447
2026-05-22 21:23:57 +00:00
1249c54738 fix: update health check URL in Jenkinsfile and reduce wait times in e2e tests
- Changed health check URL from localhost:8000 to localhost:3467 in Jenkinsfile.
- Reduced wait times in various e2e tests to improve performance and responsiveness.
- Cleaned up logging in middleware.py by removing unnecessary log statement.

These changes aim to enhance the CI pipeline efficiency and streamline the testing process.
2026-05-22 16:23:29 -05:00
b10e6be860 Merge pull request 'Se configuro el side bar para que mantenga abierto los catalogos fijos' (#423) from fix/catalogos-fijos-lista into development
Reviewed-on: ADUANASOFT/anexo76#423
2026-05-22 20:52:24 +00:00
a9a9a67db4 Merge pull request 'feature/ci-pipeline-speedup' (#446) from feature/ci-pipeline-speedup into development
Reviewed-on: ADUANASOFT/anexo76#446
2026-05-22 20:31:11 +00:00
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
9d3e74d415 fix(ci): mostrar progreso de tests Playwright en consola de Jenkins
Con --reporter=junit,html el output a stdout era vacío (junit escribe a
archivo, html a carpeta) — la consola se quedaba colgada en "Running 48
tests" hasta que terminaba toda la suite.

Cambios:
- Agregar 'list' al --reporter para imprimir una línea por test conforme
  corren. Visible en Jenkins live.
- stdbuf -oL -eL fuerza line-buffering para evitar que pnpm/playwright
  acumulen el output hasta el final.
- FORCE_COLOR=0 evita ANSI escapes que se ven feo en logs de Jenkins.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 14:24:47 -05:00
870d91d8f3 perf(ci): paralelizar tests/security/builds y cachear deps entre runs
Optimizaciones aplicadas al pipeline para reducir tiempo total ~5-10 min:

1. Tests + Security Scan fusionados en un único stage paralelo de 4
   substages: Test Backend, Test Frontend Vitest, pip-audit, npm audit.
   Antes secuencial (Tests → Security): ahora máximo de los 4 en vez de
   la suma. Ahorro: ~30-60s.

2. Docker Build de backend y frontend paralelizado en substages propios.
   Antes secuencial (~6-10 min totales), ahora ~max(3-5min). Cada substage
   hace su propio docker login (cheap, ~1s). Ahorro: ~3-5 min.

3. --cache-from + BUILDKIT_INLINE_CACHE=1 en ambos builds de Harbor.
   docker pull ${IMG}:latest antes del build alimenta el cache. Las
   layers de pip install / pnpm install se reusan cuando los lockfiles
   no cambian. Ahorro: ~1-3 min por imagen.

4. Volumes Docker nombrados (jenkins-a76-pip-cache, jenkins-a76-pnpm-store)
   en los contenedores de Test Backend, Test Frontend Vitest y pip-audit.
   Persisten entre builds en el mismo agente Jenkins; primer build los
   puebla, siguientes reusan paquetes/wheels. Ahorro: ~30-60s por stage.

Estimado total: pipeline pasa de ~25-30min a ~15-20min.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 14:20:01 -05:00
6e4e5d58ef Merge pull request 'fix(ci): actualizar credenciales SITAR en Jenkinsfile y mejorar Docker build' (#445) from feature/ci-cd into development
Reviewed-on: ADUANASOFT/anexo76#445
2026-05-22 19:10:20 +00:00
e9fdda96da fix(ci): actualizar credenciales SITAR en Jenkinsfile y mejorar Docker build
Se han actualizado los IDs de las credenciales SITAR en el Jenkinsfile para reflejar los cambios en la configuración. Además, se ha modificado el comando de construcción de Docker en el README para utilizar la URL de la API de desarrollo en lugar de la anterior, asegurando que el entorno de construcción apunte correctamente a los servicios adecuados.

Cambios:
- Jenkinsfile: actualizado a 'sitar-api-url' y 'sitar-credentials'.
- README.md: ajustado el comando de construcción de Docker para usar la nueva URL de la API y Keycloak.

Estos cambios son necesarios para garantizar que el entorno de integración continua funcione correctamente con las credenciales actualizadas y las configuraciones de construcción adecuadas.
2026-05-22 14:09:56 -05:00
bf8f315a9c Merge pull request 'fix(ci): pasar credenciales SITAR al backend del stack E2E' (#444) from feature/ci-cd into development
Reviewed-on: ADUANASOFT/anexo76#444
2026-05-22 19:03:26 +00:00
5a4bbfd739 fix(ci): pasar credenciales SITAR al backend del stack E2E
Sin SITAR_API_URL/USER/PASSWORD, el botón "Consultar DOF" del dialog
ExchangeRateGuard nunca llena el input (el backend no tiene cómo pedir
el TC) y auth.setup.ts:72 falla con timeout. En el E2E viejo no salía
porque apuntaba a dev en vivo, donde ya había TC para hoy y el dialog
ni se abría.

Cambios:
- docker-compose.e2e.yml: backend recibe SITAR_API_URL/USER/PASSWORD
  por env var passthrough con defaults vacíos.
- Jenkinsfile: lee a76-sitar-api-url (string) y a76-sitar-credentials
  (usernamePassword) vía withCredentials y los inyecta.
- Cleanup ahora dumpea las últimas 200 líneas del backend cuando el
  stack está arriba, para diagnosticar fallas opacas (auth, SITAR,
  migraciones, etc.) sin tener que repetir el build.

Requiere en Jenkins:
- a76-sitar-api-url       (Secret Text)
- a76-sitar-credentials   (Username with password)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 14:02:09 -05:00
d760736076 Merge pull request 'fix(ci): corregir mount de tmpfs para postgres:18-alpine en E2E' (#443) from feature/ci-cd into development
Reviewed-on: ADUANASOFT/anexo76#443
2026-05-22 18:50:00 +00:00
fad8bd7b84 fix(ci): corregir mount de tmpfs para postgres:18-alpine en E2E
postgres:18-alpine cambió la convención: el mount debe ir en
/var/lib/postgresql (padre), no en /var/lib/postgresql/data (subdir).
Con la convención vieja la imagen detecta el mount como "unused" y aborta
con error antes de inicializar el cluster.

Ver https://github.com/docker-library/postgres/pull/1259

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 13:47:59 -05:00
52c03fe827 Merge pull request 'feat(ci): validar imagen nueva en E2E antes del deploy a dev' (#442) from feature/ci-cd into development
Reviewed-on: ADUANASOFT/anexo76#442
2026-05-22 18:42:53 +00:00
c60533eb3a feat(ci): validar imagen nueva en E2E antes del deploy a dev
El stage E2E corría contra A76_URL (versión viva en dev), así que detectaba
regresiones un build tarde: el código roto ya estaba desplegado cuando el
siguiente pipeline lo encontraba. Ahora E2E levanta un stack efímero con la
imagen del backend recién pusheada a Harbor y una imagen del frontend
buildeada localmente con VITE_API_URL=http://localhost:8000/api/ (la imagen
de prod tiene la URL de dev bakeada en el bundle). Si E2E falla, el deploy
no ocurre — el guardrail actúa sobre lo que se va a desplegar.

Cambios:
- docker-compose.e2e.yml (nuevo): postgres + minio + valkey + backend +
  frontend efímeros, sin volúmenes persistidos, image tags vía env vars.
- Jenkinsfile: stage E2E reescrito. Build temp frontend en paralelo con
  startup DB+alembic; preparación Playwright en paralelo con health wait
  de backend/frontend. --cache-from de la imagen prod para reusar layer
  de pnpm install. Cleanup garantizado vía trap EXIT.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 13:41:31 -05:00
e7ece2a2a3 Merge pull request 'fix(auth): apuntar Keycloak al Workspace como fuente única de autenticación' (#441) from fix/keycloak-workspace-auth into development
Reviewed-on: ADUANASOFT/anexo76#441
2026-05-22 17:23:15 +00:00
22d66a06a4 fix(auth): apuntar Keycloak al Workspace como fuente única de autenticación
Backend:
- KEYCLOAK_SERVER_URL: http://keycloak:8080/kcauthhttps://workspace.aduanasoft.com/kcauth
- KEYCLOAK_CLIENT_ID: anexo76-backend → anexo76-frontend

Frontend (runtime):
- VITE_KEYCLOAK_URL: https://anexo76-dev.aduanasoft.com/kcauth/https://workspace.aduanasoft.com/kcauth
- KEYCLOAK_URL: http://keycloak:8080/kcauthhttps://workspace.aduanasoft.com/kcauth
- KEYCLOAK_CLIENT_ID: anexo76-backend → anexo76-frontend

Frontend (build):
- Jenkinsfile: VITE_KEYCLOAK_URL build-arg usa KC_URL en lugar de ${A76_URL}/kcauth/

Red:
- auth-net eliminada del servicio frontend y de la definición de networks
  (solo existía para comunicación con el Keycloak local ya removido)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 12:16:56 -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