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

230 lines
12 KiB
Markdown

# 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.