2026-05-17 20:42:35 +07:00

12 KiB

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:
cd "D:\CodeSpace\Final Project Gabungan - Broken Test\walkguide-mobile\walkguide_app"
flutter pub get
flutter analyze
  • 🔎 Run this locally to confirm backend tests:
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:
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.