12 KiB
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
V1throughV16. - ✅ 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
flutteris 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=validateis configured. - ✅ JWT access-token flow exists.
- ✅ Refresh token entity/repository/migration exists.
- ✅ RBAC roles exist for
ROLE_USERandROLE_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-idandagora.app-certificateare empty inapplication.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.ymlevidence 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_blocdependency 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
StatefulWidgetstate and service calls. - ⚠️ Typed failure support exists, but raw UI/service
try/catchusage 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
.arblocalization files found. - ❌ Firebase app config is missing: no
google-services.json/GoogleService-Info.plistfound. - ❌ 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.tfliteis 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/catchusage 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 testshould 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.ymlwas 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 analyzefromwalkguide-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 analyzeafter 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
- ❌ Add missing
assets/models/yolov8n.tfliteand verify WalkGuide AI inference on a physical Android device. - ❌ Replace Flutter Agora placeholder and backend empty Agora credentials, then test real call flow.
- ❌ Enable real Firebase push notification:
- Add Firebase mobile config.
- Add Firebase Admin config.
- Replace log-only backend sending with real
FirebaseMessaging.
- ⚠️ Run and save final
flutter analyzeoutput. - ⚠️ Run and save final backend
mvn test/ JaCoCo output. - ❌ Produce Flutter physical-device benchmark evidence and delta table.
- ⚠️ 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.
- ❌ Build final APK with required naming.
- ❌ Finish final report PDF and presentation evidence.
- ⚠️ Update README files with final setup, environment, APK, Swagger, benchmark, and known limitation links.