# WalkGuide Final Readiness TODO Last audit date: 2026-05-17 Source documents checked: `FULL_FLOW_ARCHITECTURE.md`, `FINAL_EXAM_GUIDE.md`, repository files. ## Legend - ✅ Done / evidence exists in repository - ⚠️ Partial / implemented but incomplete, demo-mode, or missing final evidence - ❌ Missing / no repository evidence found - 🔎 Verify locally / cannot be proven from files alone --- ## Current Verification Status - ✅ Git status was clean and synced before this TODO audit. - ✅ Backend Flyway migrations exist from `V1` through `V16`. - ✅ OOAD diagram files exist in `ooad-docs/diagrams`. - ✅ Backend k6 result files exist in `walkguide-backend/demo/k6-tests/k6-results`. - ⚠️ k6 local smoke evidence exists, but strict production benchmark targets are not met under the current local-backend + remote-PostgreSQL setup. - ❌ Flutter analyzer could not be verified inside this Codex environment because `flutter` is not available on PATH here. - 🔎 Run this locally to confirm Dart errors: ```powershell cd "D:\CodeSpace\Final Project Gabungan - Broken Test\walkguide-mobile\walkguide_app" flutter pub get flutter analyze ``` - 🔎 Run this locally to confirm backend tests: ```powershell cd "D:\CodeSpace\Final Project Gabungan - Broken Test\walkguide-backend\demo" mvn test ``` --- ## Full Flow Architecture Checklist ### Backend Architecture - ✅ Spring Boot backend structure exists: `controller`, `service`, `repository`, `entity`, `dto`, `config`, `security`, `exception`. - ✅ PostgreSQL is configured through Flyway migrations. - ✅ `spring.jpa.hibernate.ddl-auto=validate` is configured. - ✅ JWT access-token flow exists. - ✅ Refresh token entity/repository/migration exists. - ✅ RBAC roles exist for `ROLE_USER` and `ROLE_GUARDIAN`. - ✅ Consistent API response envelope exists through `ApiResponse`. - ✅ OpenAPI YAML exists at `walkguide-backend/demo/src/main/resources/openapi.yaml`. - ✅ Swagger dependency/config exists. - ✅ WebSocket/STOMP config exists. - ✅ Location broadcaster exists. - ✅ Call controller/service/token response exists. - ✅ Pairing, activity log, obstacle log, location, notification, SOS, settings, AI config, voice command, hardware shortcut, and geofence backend classes exist. - ✅ Unit and integration test classes exist. - ✅ JaCoCo report exists in `walkguide-backend/demo/target/site/jacoco`. - ✅ k6 scripts and result reports exist. - ⚠️ Firebase push notification is still log-only in `FcmService`; real Firebase Admin SDK sending is commented out. - ⚠️ Agora token support exists, but `agora.app-id` and `agora.app-certificate` are empty in `application.properties`. - ⚠️ Actuator metrics evidence is incomplete; k6 parsed reports show JVM heap as `N/A`. - ⚠️ k6 evidence exists, but the current local smoke profile is relaxed because remote PostgreSQL makes auth/location latency too high for the strict target. - ❌ Environment-separated configs are missing: no `application-dev.yml` / `application-prod.yml` evidence found. - ❌ Secrets are still hardcoded in `application.properties` (`spring.datasource.password`, `jwt.secret`). - ❌ Firebase Admin credential file is missing: `src/main/resources/firebase/google-services-admin.json`. ### Flutter Architecture - ✅ Flutter project exists with core app, router, injection container, services, and feature screens. - ✅ Dynamic server URL support exists through `SharedPreferences`. - ✅ GoRouter is present. - ✅ Dio dependency is present. - ✅ `flutter_bloc` dependency is present. - ✅ Secure storage dependency and service files exist. - ✅ TTS, STT, camera, tflite, Agora, Firebase Messaging, local notifications, map, geolocation, STOMP, connectivity, vibration, audio, and recording dependencies exist. - ✅ More than 6 screens exist. - ✅ Widget, unit, and integration test files exist. - ⚠️ Clean Architecture is only partially applied. Some features use `domain/data/presentation`, but many screens still live as direct StatefulWidget/service-driven screens. - ⚠️ State management is mixed. BLoC/Cubit exists, but many screens still use direct `StatefulWidget` state and service calls. - ⚠️ Typed failure support exists, but raw UI/service `try/catch` usage still appears in presentation-facing code and should be reviewed against the exam penalty. - ⚠️ Offline queue service exists, but full Drift offline-first cache/sync for core entities is not proven by file structure. - ⚠️ Integration tests exist, but comments indicate stub/self-contained flows; the exam requires E2E against the live Spring Boot API. - ❌ YOLO model file is missing: `assets/models/yolov8n.tflite`. - ❌ Formal i18n files are missing: no `.arb` localization files found. - ❌ Firebase app config is missing: no `google-services.json` / `GoogleService-Info.plist` found. - ❌ Flutter Agora App ID is still placeholder: `YOUR_AGORA_APP_ID`. - ❌ Release APK artifact was not found in the repository. - ❌ Flutter physical-device benchmark evidence is missing. ### End-to-End Feature Flows - ✅ Register and login flow is implemented in backend and Flutter screens. - ✅ Pairing invite/respond/status backend and Flutter screens exist. - ✅ WalkGuide screen and obstacle analyzer code exist. - ⚠️ WalkGuide real AI detection is incomplete until `yolov8n.tflite` is added and verified on device. - ⚠️ Location update flow exists, but k6 evidence shows high latency with remote DB. - ⚠️ Guardian dashboard exists, including location/status-style UI, but full live realtime validation still needs manual demo evidence. - ⚠️ Call Guardian flow exists at code/API level, but real call requires Agora credentials and device testing. - ⚠️ Guardian notification flow exists, but real push delivery requires Firebase Admin + mobile Firebase config. - ⚠️ SOS flow exists, but urgent real push is still log-only until Firebase is enabled. - ⚠️ Geofence backend/service/UI elements exist, but final live geofence-exit notification evidence is still needed. - ❌ Voice note storage/upload pipeline is not proven. Notification DTO supports voice note fields, but no durable audio upload/storage evidence was found. --- ## Final Exam Guide Checklist ### Pillar 1: OOAD - ✅ Use case diagram file exists. - ✅ Class diagram file exists. - ✅ ERD diagram file exists. - ✅ Component diagram file exists. - ✅ At least 3 sequence diagrams exist: login, pairing, SOS. - ✅ State machine diagram exists for SOS event. - ✅ Design pattern document exists: `ooad-docs/DESIGN_PATTERNS.md`. - ✅ Traceability audit document exists: `ooad-docs/TRACEABILITY_AUDIT.md`. - ⚠️ Pattern documentation should still be checked for exact code line references and per-pattern UML context diagrams. - ⚠️ Class diagram vs final code alignment should be reviewed once all missing/demo-mode features are finalized. ### Pillar 2: Flutter Mobile - ✅ Flutter 3.x project structure exists. - ✅ Navigation with GoRouter exists. - ✅ JWT login/register API consumption exists. - ✅ Dynamic backend URL entry exists. - ✅ Custom/reusable shared widgets exist. - ✅ Advanced feature evidence exists for real-time/WebSocket and push-notification plumbing. - ⚠️ Clean Architecture is not strict across all features. - ⚠️ BLoC is not consistently used throughout the UI. - ⚠️ Offline local persistence is dependency-level/partial, not fully proven as an offline-first entity cache. - ⚠️ Error handling is not fully isolated from UI; raw `try/catch` usage should be audited. - ⚠️ Unit tests exist, but coverage of all use cases/repositories should be verified. - ⚠️ Widget tests exist for at least 5 screens/components, but they should be run locally. - ⚠️ Integration tests exist, but they appear stub-based instead of live-backend E2E. - ❌ Physical Android profile-mode benchmark package is missing: - Memory baseline - Memory leak check - Frame rate/jank - CPU profile/flame graph - Client-side API latency logs - Cold start trace - APK size analysis - ❌ Mid-sprint vs final Flutter benchmark delta table is missing. - ❌ Release APK file with required naming is missing. ### Pillar 3: Spring Boot Backend - ✅ Java/Spring Boot backend exists. - ✅ Controller-Service-Repository layering exists. - ✅ PostgreSQL and Flyway migrations exist. - ✅ Spring Security/JWT/RBAC exists. - ✅ Versioned `/api/v1/...` endpoints exist. - ✅ Bean Validation DTOs exist. - ✅ Global exception handler exists. - ✅ OpenAPI YAML exists. - ✅ Swagger UI config exists. - ✅ More than 10 REST endpoints exist. - ✅ Unit test files exist for service layer. - ✅ Controller/integration test files exist. - ✅ JaCoCo report exists. - ✅ k6 scripts and exported results exist. - ⚠️ Testcontainers dependency and integration base exist, but final `mvn test` should be run locally before claiming green. - ⚠️ k6 local smoke reports exist, but strict exam load benchmark target is not met in the current environment: - Target: 50 concurrent users, 5 minutes - Target throughput: at least 100 req/s - Target p95 latency: less than 500 ms - Target error rate: less than 1% - ⚠️ DB query time and JVM heap are not fully captured in k6 reports; parsed results show JVM heap as `N/A`. - ❌ Environment-separated config files are missing. - ❌ Hardcoded secrets remain in config. - ❌ Real Firebase Admin push notification is not enabled. ### Repository / Submission Deliverables - ⚠️ Repository appears to be a combined workspace, while the guide asks for separate Flutter and Spring Boot repositories. - ⚠️ GitHub workflow exists, but only `update-badge.yml` was found; Flutter/backend CI workflow evidence is missing. - ❌ Branch protection / 3+ merged PR evidence is not in repository. - ❌ APK artifact was not found. - ❌ Written report PDF of 25+ pages was not found. - ❌ Presentation deck/video link evidence was not found. - ❌ Team contribution table verified against commit history was not found. - ❌ README still needs final submission polish: setup, environment variables, APK link, benchmark links, and known limitations. --- ## Dart Analyzer / Red Problem Checklist Because `flutter analyze` cannot run in this Codex environment, treat this as the required local verification checklist: - 🔎 Run `flutter analyze` from `walkguide-mobile/walkguide_app`. - 🔎 If analyzer reports zero issues, update this section to ✅. - 🔎 If analyzer reports red errors, fix those first before lint/style warnings. - 🔎 Re-run `flutter analyze` after every fix. - 🔎 Run Flutter tests after analyzer is clean: ```powershell cd "D:\CodeSpace\Final Project Gabungan - Broken Test\walkguide-mobile\walkguide_app" flutter test ``` Current evidence-based status: - ⚠️ Cannot honestly claim zero Dart analyzer errors from this environment. - ✅ Previous known blocking Dart errors were addressed in source files before this audit. - 🔎 Final analyzer proof must come from your local Flutter SDK terminal output. --- ## Highest Priority Fix Order 1. ❌ Add missing `assets/models/yolov8n.tflite` and verify WalkGuide AI inference on a physical Android device. 2. ❌ Replace Flutter Agora placeholder and backend empty Agora credentials, then test real call flow. 3. ❌ Enable real Firebase push notification: - Add Firebase mobile config. - Add Firebase Admin config. - Replace log-only backend sending with real `FirebaseMessaging`. 4. ⚠️ Run and save final `flutter analyze` output. 5. ⚠️ Run and save final backend `mvn test` / JaCoCo output. 6. ❌ Produce Flutter physical-device benchmark evidence and delta table. 7. ⚠️ Improve k6 evidence: - Keep local smoke results as implementation evidence. - Add a note explaining remote DB latency. - If required by lecturer, run strict benchmark on deployed backend with realistic infra. 8. ❌ Build final APK with required naming. 9. ❌ Finish final report PDF and presentation evidence. 10. ⚠️ Update README files with final setup, environment, APK, Swagger, benchmark, and known limitation links.