2.1 KiB
2.1 KiB
WalkGuide Traceability Audit
Use Case To Code
| Use Case | Flutter Entry | Backend Entry | Status |
|---|---|---|---|
| Register/Login | features/auth/* |
AuthController, AuthService |
Implemented |
| Pair Guardian/User | features/pairing/pairing_screens.dart |
PairingController, PairingService |
Implemented |
| Start/Stop WalkGuide | features/walk_guide/walk_guide_screen.dart |
POST /user/walkguide/start, POST /user/walkguide/stop |
Implemented |
| Obstacle Detection | core/ai/*, walk_guide_screen.dart |
POST /user/obstacle |
Partially implemented; real .tflite model file still required |
| Location Tracking | LocationReporterService, navigation/walk screens |
LocationService, LocationBroadcaster |
Implemented |
| SOS | features/sos/sos_screen.dart |
SosService, GuardianController |
Implemented |
| Notifications | features/notifications/notification_screen.dart |
NotificationService, FcmService |
Partially implemented; backend FCM is log-only without credentials |
| Guardian Dashboard | guardian_dashboard_screen.dart |
GuardianDashboardService |
Implemented |
| Call | features/call/call_screen.dart, CallService |
CallController, AgoraTokenService |
Partially implemented; Agora App ID/credential required for live call |
| Geofence | guardian dashboard screens | GeofenceService |
Implemented |
Design Deviations
- Flutter uses a pragmatic mix of BLoC/Cubit, ChangeNotifier, and StatefulWidget. This deviates from strict full-BLoC architecture but keeps feature screens small for the exam demo.
- Offline storage uses
SharedPreferencesqueue instead of a full Drift database for cached entities. The dependency exists, but production-grade SQLite cache is not fully wired. - Backend FCM service is log-only until Firebase Admin credentials are provided.
- Agora call flow is implemented at API and service level, but live RTC depends on a real Agora App ID.
Remaining Evidence
- Export rendered OOAD diagrams from the PlantUML files in this folder.
- Run backend tests and archive JaCoCo/Surefire reports.
- Run Flutter benchmarks on a physical Android device and add screenshots/results.