Tests unitaires, erreurs typees, i18n FR/EN, cadences adaptatives et KDoc - #1
Open
devin-ai-integration[bot] wants to merge 3 commits into
Open
Tests unitaires, erreurs typees, i18n FR/EN, cadences adaptatives et KDoc#1devin-ai-integration[bot] wants to merge 3 commits into
devin-ai-integration[bot] wants to merge 3 commits into
Conversation
Tests JVM sur les calculs geo/GNSS/NTP, le scan 360 et les azimuts ; etats d'erreur types (GNSS, modem, capteur, NTP) affiches avec reessai ; textes externalises en FR et EN ; rafraichissements adaptes au premier plan, a l'arriere plan et a l'economie de batterie ; KDoc sur les classes principales.
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Points 1 à 5 de la revue de code, sans changement fonctionnel visible : la logique métier est
extraite des API Android pour devenir testable, les erreurs deviennent des états typés affichés
dans l'interface, les textes passent en ressources FR/EN, et les cadences de rafraîchissement
s'adaptent au contexte.
Logique pure extraite (nouveaux fichiers, testables sur la JVM) :
SkyAnalysis: meilleur satellite, moyenne vectorielle des azimuts pondérée parcn0DbHzetcos(elevation), élévation moyenne.GnssState.bestSatellite/bestSkyAzimuthDegdélèguent ici.NtpTimestamp: encodage/décodage des horodatages 64 bits RFC 5905.Azimuth: normalisation, secteur cardinal, rotation la plus courte, alignement — utilisé parl'UI à la place des calculs inline.
SntpClientsépare le réseau du calcul :query(host)fait l'I/O et délègue àevaluate(buffer, host, requestTime, requestTicks, responseTicks), qui valide le paquet (modeserveur, stratum 1..15, transmit non nul) et renvoie un
Outcome:Erreurs typées plutôt que chaînes :
GnssIssue(pas de service, permission, récepteurindisponible, localisation désactivée, recherche de fix, signal perdu avec âge du fix),
MobileIssue(pas de téléphonie, permission, aucune cellule, lecture modem échouée) etTimeSyncState.ntpFailure. L'UI traduit ces enums viagnssIssueText,mobileIssueText,ntpFailureText.TimeSyncManagerexposesyncinget espace les réessais NTP :retryDelayMillis(n) = 15 s << (n - 1), borné,MainActivitydétecte le refus définitif depermission et propose l'ouverture des réglages.
Cadences adaptatives dans
MainViewModel: horloge 40 ms au premier plan, 200 ms en économied'énergie (
PowerManager.isPowerSaveMode), 1 s en arrière-plan ; modem 1 s pendant la mesure 360°,5 s au repos ; calculs GNSS/pointage ralentis hors premier plan.
i18n :
values/strings.xml(FR, défaut) etvalues-en/strings.xml, formats paramétrés au lieude concaténations ; les unités et symboles restent
translatable="false".SkyViewreçoit leslabels cardinaux en paramètre au lieu de les coder en dur.
Tests (
./gradlew test, 46 cas) :GeoSatellites(azimut/élévation/skew/distance depuis Paris,satellite sous l'horizon, zénith à l'équateur, tri),
SkyAnalysis,NtpTimestamp,SntpClient.evaluate,resolveTimeSource+ backoff,DirectionScanner(secteurs, couverture,seuil de fiabilité 70 %,
sectorCount <= 0désormais refusé parrequire),Azimuth../gradlew test,./gradlew lintet./gradlew assembleDebugpassent. Les essais terrain (point 6de la revue : plusieurs téléphones, régions et modems) restent à faire sur appareils réels — aucun
appareil Android n'est disponible ici.
Link to Devin session: https://app.devin.ai/sessions/3081a2bc884747b38aa91e46f88ad2bb
Open in Devin Desktop: https://app.devin.ai/desktop/session/3081a2bc884747b38aa91e46f88ad2bb?variant=devin
Requested by: @maythayus