Conectatón 2026 Wiki

Racsel logo
Volver al inicio

Tareas · T7

Habilitar APP-mobile

Instalar el ambiente de desarrollo, clonar el proyecto y configurar la app contra el App Backend.

Notas de configuración

Repositorio y runtime

  • Referencia local revisada: ips-lacpass-app.
  • Herramientas requeridas: Flutter SDK >= 3.32.1, Dart SDK >= 3.8.1, Android Studio o Xcode, y un dispositivo o emulador.
  • Para Android, se requiere Java 17.
  • Usar flutter doctor antes de configurar para confirmar que el ambiente local está listo.
flutter doctor
cp .env.sample .env
flutter pub get
flutter gen-l10n
flutter run

Checklist de variables de la app

  • API_ENDPOINT apunta al IPS Lacpass backend. Para backend local desde emulador Android, usar http://10.0.2.2:9081.
  • KEYCLOAK_ENDPOINT apunta a Keycloak. Para Keycloak local desde emulador Android, usar http://10.0.2.2:9083.
  • KEYCLOAK_REALM, KEYCLOAK_CLIENT_ID y KEYCLOAK_REFRESH_TOKEN_KEY deben coincidir con la configuración Keycloak del backend.
  • USE_HTTP=1 permite endpoints no HTTPS para pruebas locales o sin dominio. No usar HTTP en producción.
  • DEBUG_MODE=1 habilita la inspeccion de requests al backend dentro de la app.
  • IPS_EXP_DAYS controla cuánto tiempo se guardan los bundles IPS en el dispositivo; VHL_EXPIRATION_DAYS controla la expiración de QR generados.
  • SHOW_WALLET=1 habilita UI de wallet; USE_MULTIPLE_NODES=1 habilita comportamiento multi-nodo cuando está configurado.

Funcionalidades a verificar

  • Login y registro mediante OAuth/Keycloak.
  • Cargar IPS desde el backend nacional y visualizarlo en el IPS viewer.
  • Seleccionar recursos IPS y generar QR VHL.
  • Mostrar/compartir código QR.
  • Listar registros ICVP y generar QR por inmunización.
  • Tab Medication Overview y generación de QR por medicamento.
  • Los flujos de escaneo QR están presentes en la app; verificarlos contra backend y servicios validadores durante la configuración del país.

Puntos de personalizacion

  • Reemplazar assets/icon/logo.png con un PNG 512x512 y luego ejecutar dart run flutter_launcher_icons.
  • Reemplazar assets/image/landing_bg.png para personalizar la pantalla inicial.
  • Usar Material Theme Builder y reemplazar lib/styles/color_theme.dart para cambios de tema.
  • Agregar locales en lib/l10n con app_<locale>.arb, ejecutar flutter gen-l10n y registrar el idioma en lib/models/language_type.dart.
  • Actualizar países permitidos y regex de validación en lib/constants.dart.
dart run flutter_launcher_icons
flutter gen-l10n

Comandos de test y build

  • El repositorio incluye fixtures mockeados, por lo que los tests basicos no requieren backend.
  • Los tests Patrol Android pueden ejecutarse en emulador/dispositivo para flujos UI.
  • Usar el wrapper de artefactos para investigar fallas Patrol Android intermitentes; los artefactos se guardan en build/patrol_artifacts/<timestamp>/.
flutter analyze
flutter test integration_test/test_bundle.dart
flutter pub global activate patrol_cli
patrol test --target integration_test/test_bundle.dart
patrol test
./scripts/run_patrol_with_artifacts.sh
flutter build apk
flutter build apk --release
flutter build ios
flutter build ipa --release

Requerimientos

Prioridad alta, tarea de seguimiento

Respuesta esperada

App mobile instalada en emulador o smartphone, con login, comunicación con AppBackend y visualización de IPS asociado al paciente logueado.

Evidencia

Capturas de pantalla y flujo.

Observaciones

Los países pueden usar la app PH4H, una versión personalizada u otra app que cumpla las operaciones exigidas por los tracks.

Requests a ejecutar

Colección

App Backend - Lacpass App API

Obtener Bundle IPS con QR VHL válido

curl -X POST "${APP_BACKEND_URL}/qr/fetch" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer ${ACCESS_TOKEN}" \
  -d '{"data":"${QR_CONTENT}","pass_code":"0000"}'

Respuesta esperada

HTTP 200 con el Bundle IPS asociado al QR VHL válido.

Colección

App Backend - Lacpass App API

Generar certificado ICVP desde IPS

curl -X GET "${APP_BACKEND_URL}/ips/icvp?bundleId=${BUNDLE_ID}&immunizationId=${IMMUNIZATION_ID}" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer ${ACCESS_TOKEN}"

Respuesta esperada

HTTP 200 con datos del certificado ICVP generado.

Colección

App Backend - Lacpass App API

Generar link para wallet

curl -X POST "${APP_BACKEND_URL}/wallet/generate-link" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer ${ACCESS_TOKEN}" \
  -d '{"claims":{"1":"XCL","6":1798675199,"-260":{"-6":{"dob":"1905-08-23","n":"Aulo Agerio","ndt":"NI","nid":"16337361-9","s":"male","v":{"dt":"2017-12-11","vls":"2017-12-11"}}}},"credentialType":"ICVP"}'

Respuesta esperada

HTTP 200 con coUrl, location, preAuthorizedCode y qrUrl.