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 runChecklist 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-l10nComandos 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 --releaseRequerimientos
Prioridad alta, tarea de seguimiento
Enlaces
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.
