Files
Krow-workspace/docs/MOBILE/04-use-case-completion-audit.md

30 KiB
Raw Blame History

📊 Use Case Completion Audit

Generated: 2026-02-23
Auditor Role: System Analyst / Flutter Architect
Source of Truth: docs/ARCHITECTURE/client-mobile-application/use-case.md, docs/ARCHITECTURE/staff-mobile-application/use-case.md, docs/ARCHITECTURE/system-bible.md, docs/ARCHITECTURE/architecture.md
Codebase Checked: apps/mobile/packages/features/ (real app) vs apps/mobile/prototypes/ (prototypes)


📌 How to Read This Document

Symbol Meaning
Fully implemented in the real app
🟡 Partially implemented — UI or domain exists but logic is incomplete
Defined in docs but entirely missing in the real app
⚠️ Exists in prototype but has not been migrated to the real app
🚫 Exists in real app code but is not documented in use cases

🧑‍💼 CLIENT APP

Feature Module: authentication

Use Case Sub-Use Case Prototype Real App Status Notes
1.1 Initial Startup & Auth Check System checks session on launch Completed client_get_started_page.dart handles auth routing via Modular.
1.1 Initial Startup & Auth Check Route to Home if authenticated Completed Navigation guard implemented in auth module.
1.1 Initial Startup & Auth Check Route to Get Started if unauthenticated Completed client_intro_page.dart + client_get_started_page.dart both exist.
1.2 Register Business Account Enter company name & industry Completed client_sign_up_page.dart fully implemented.
1.2 Register Business Account Enter contact info & password Completed Real app BLoC-backed form with validation.
1.2 Register Business Account Registration success → Main App Completed Post-registration redirection intact.
1.3 Business Sign In Enter email & password Completed client_sign_in_page.dart fully implemented.
1.3 Business Sign In System validates credentials Completed Auth BLoC with error states present.
1.3 Business Sign In Grant access to dashboard Completed Redirects to client_main shell on success.

Feature Module: orders (Order Management)

Use Case Sub-Use Case Prototype Real App Status Notes
2.1 Rapid Order Tap RAPID → Select Role → Set Qty → Post 🟡 Partial rapid_order_page.dart & RapidOrderBloc exist with full view. Voice recognition is simulated (UI only, no actual voice API).
2.2 Scheduled Orders — One-Time Create single shift (date, time, role, location) Completed one_time_order_page.dart fully implemented with BLoC.
2.2 Scheduled Orders — Recurring Create recurring shifts (e.g., every Monday) Completed recurring_order_page.dart fully implemented.
2.2 Scheduled Orders — Permanent Long-term staffing placement Completed permanent_order_page.dart fully implemented.
2.2 Scheduled Orders Review cost before posting 🟡 Partial Order summary shown, but real-time cost calculation depends on backend.
(undocumented) View & Browse Posted Orders 🚫 Undocumented view_orders_page.dart exists with ViewOrderCard. Added eventName visibility.
(undocumented) Cancel/Modify posted order 🚫 Undocumented A cancel reference appears only in view_order_card.dart. No dedicated cancel flow in docs or real app.

Feature Module: client_coverage (Operations & Workforce Management)

Use Case Sub-Use Case Prototype Real App Status Notes
3.1 Monitor Today's Coverage View coverage tab Completed coverage_page.dart exists with coverage header and shift list.
3.1 Monitor Today's Coverage View percentage filled Completed coverage_header.dart shows fill rate.
3.1 Monitor Today's Coverage Identify open gaps Completed Open/filled shift list in coverage_shift_list.dart.
3.1 Monitor Today's Coverage Re-post unfilled shifts Not Implemented Prototype has re-post UI. Real app coverage_page.dart has no re-post action.
3.2 Live Activity Tracking Real-time feed of worker clock-ins 🟡 Partial live_activity_widget.dart exists in home module. Backend real-time feed not confirmed wired.
3.3 Verify Worker Attire Select active shift → Select worker → Check attire Not Implemented verify_worker_attire_screen.dart exists only in prototype. No equivalent in real app packages.
3.4 Review & Approve Timesheets Navigate to Timesheets section Not Implemented client_timesheets_screen.dart in prototype only. No timesheets package in real app client feature modules.
3.4 Review & Approve Timesheets Review actual vs. scheduled hours ⚠️ Prototype Only Fully mocked in prototype. Missing from real app.
3.4 Review & Approve Timesheets Tap Approve / Dispute ⚠️ Prototype Only Approve/Dispute actions only in prototype flow.

Feature Module: reports (Reports & Analytics)

Use Case Sub-Use Case Prototype Real App Status Notes
4.1 Business Intelligence Reporting Daily Ops Report Completed daily_ops_report_page.dart fully implemented.
4.1 Business Intelligence Reporting Spend Report Completed spend_report_page.dart fully implemented.
4.1 Business Intelligence Reporting Forecast Report Completed forecast_report_page.dart fully implemented.
4.1 Business Intelligence Reporting Performance Report Completed performance_report_page.dart fully implemented.
4.1 Business Intelligence Reporting No-Show Report Completed no_show_report_page.dart fully implemented.
4.1 Business Intelligence Reporting Coverage Report Completed coverage_report_page.dart fully implemented.

Feature Module: billing (Billing & Administration)

Use Case Sub-Use Case Prototype Real App Status Notes
5.1 Financial Management View current balance Completed billing_page.dart shows currentBill and period billing.
5.1 Financial Management View pending invoices Completed PendingInvoicesSection widget fully wired via BillingBloc.
5.1 Financial Management Download past invoices 🟡 Partial InvoiceHistorySection exists but download action is not confirmed wired to a real download handler.
5.1 Financial Management Update credit card / ACH info 🟡 Partial PaymentMethodCard widget exists but update/add payment method form is not present in real app pages.

Feature Module: hubs (Manage Business Locations)

Use Case Sub-Use Case Prototype Real App Status Notes
5.2 Manage Business Locations View list of client hubs Completed client_hubs_page.dart fully implemented.
5.2 Manage Business Locations Add new hub (location + address) Completed edit_hub_page.dart serves create + edit.
5.2 Manage Business Locations Edit existing hub Completed edit_hub_page.dart + hub_details_page.dart both present.

Feature Module: settings (Profile & Settings)

Use Case Sub-Use Case Prototype Real App Status Notes
5.3 Profile & Settings Management Edit personal contact info 🟡 Partial client_settings_page.dart and settings_actions.dart exist, but a dedicated edit-profile form page is absent.
5.3 Profile & Settings Management Toggle notification preferences Not Implemented Notification settings exist in prototype (client_settings_screen.dart). Real app settings module only shows basic actions — no notification toggle implemented.

Feature Module: home (Home Tab)

Use Case Sub-Use Case Prototype Real App Status Notes
Home — Create Order entry point Select order type and launch flow Completed shift_order_form_sheet.dart (47KB) orchestrates all order types from the home tab.
Home — Quick Actions Widget Display quick action shortcuts Completed actions_widget.dart present.
Home — Navigate to Settings Settings shortcut from Home Completed client_home_header.dart has settings navigation.
Home — Navigate to Hubs Hub shortcut from Home Completed actions_widget.dart navigates to hubs.
(undocumented) Draggable/reorderable Home Dashboard 🚫 Undocumented draggable_widget_wrapper.dart + reorder_widget.dart + dashboard_widget_builder.dart exist in real app. Not in use-case docs.
(undocumented) Spending Widget on Home 🚫 Undocumented spending_widget.dart on home dashboard. Not documented.
(undocumented) Coverage Dashboard widget on Home 🚫 Undocumented coverage_dashboard.dart widget embedded on home. Not in use-case docs.
(undocumented) View Workers List ⚠️ Prototype Only client_workers_screen.dart in prototype. No workers feature package in real app.


👷 STAFF APP

Feature Module: authentication

Use Case Sub-Use Case Prototype Real App Status Notes
1.1 App Initialization Check auth token on startup Completed intro_page.dart + get_started_page.dart handle routing.
1.1 App Initialization Route to Home if valid Completed Navigation guard in staff_authentication_module.dart.
1.1 App Initialization Route to Get Started if invalid Completed Implemented.
1.2 Onboarding & Registration Enter phone number Completed phone_verification_page.dart fully implemented.
1.2 Onboarding & Registration Receive & verify SMS OTP Completed OTP verification BLoC wired to real auth backend.
1.2 Onboarding & Registration Check if profile exists Completed Routing logic in auth module checks profile completion.
1.2 Onboarding & Registration Profile Setup Wizard — Personal Info Completed profile_info section: personal_info_page.dart fully implemented.
1.2 Onboarding & Registration Profile Setup Wizard — Role & Experience Completed experience section: experience_page.dart implemented.
1.2 Onboarding & Registration Profile Setup Wizard — Attire Sizes Completed attire section: attire_page.dart implemented via profile_sections/onboarding/attire.
1.2 Onboarding & Registration Enter Main App after profile setup Completed Wizard completion routes to staff main shell.
(undocumented) Emergency Contact Setup 🚫 Undocumented emergency_contact_screen.dart in both prototype and real app. Not mentioned in use cases.

Feature Module: home (Job Discovery)

Use Case Sub-Use Case Prototype Real App Status Notes
2.1 Browse & Filter Jobs View available jobs list Completed find_shifts_tab.dart in shifts renders all available jobs. Fully localized via core_localization.
2.1 Browse & Filter Jobs Filter by Role 🟡 Partial Search by title/location/client name is implemented. Filter by role (as in job category) uses type-based tabs (one-day, multi-day, long-term) rather than role selection.
2.1 Browse & Filter Jobs Filter by Distance Not Implemented Distance filter present in prototype (jobs_screen.dart). Real app has no distance-based filter.
2.1 Browse & Filter Jobs View job card details (Pay, Location, Requirements) Completed MyShiftCard + shift_details_page.dart with full shift info. Added endDate support for multi-day shifts.
2.3 Set Availability Select dates/times → Save preferences Completed availability_page.dart fully implemented with AvailabilityBloc.
(undocumented) View Upcoming Shifts shortcut on Home 🚫 Undocumented worker_home_page.dart shows upcoming shifts. Not documented as a home-tab sub-use case.

Feature Module: shifts (Find Shifts + My Schedule)

Use Case Sub-Use Case Prototype Real App Status Notes
2.2 Claim Open Shift Tap "Claim Shift" from Job Details 🟡 Partial AcceptShiftEvent in ShiftsBloc is fired correctly. Backend eligibility validation (checking certificates, conflicts) is not confirmed in current BLoC — no eligibility pre-check visible in the shift acceptance flow.
2.2 Claim Open Shift System validates eligibility (certs, conflicts) Not Implemented Eligibility validation expected server-side, but client-side prompt to upload compliance docs if ineligible is not implemented.
2.2 Claim Open Shift Prompt to Upload Compliance Docs if missing Not Implemented Prototype shows a PromptUpload flow. Real app find_shifts_tab.dart shows a success snackbar regardless. No redirect to compliance upload.
3.1 View Schedule View list of claimed shifts (My Shifts tab) Completed my_shifts_tab.dart fully implemented with shift cards.
3.1 View Schedule View Shift Details Completed shift_details_page.dart with header, location map, schedule summary, stats. Corrected weekday mapping and added endDate.
(undocumented) History of Past Shifts (History tab) 🚫 Undocumented history_shifts_tab.dart exists and is wired in the shifts_page.dart. Not mentioned in use-case docs.
(undocumented) Shift Assignment Card with multi-day grouping 🚫 Undocumented Multi-day grouping logic in _groupMultiDayShifts() within find_shifts_tab.dart. Supports endDate.

Feature Module: clock_in (Shift Execution)

Use Case Sub-Use Case Prototype Real App Status Notes
3.2 GPS-Verified Clock In Navigate to Clock In tab Completed clock_in_page.dart is a dedicated tab.
3.2 GPS-Verified Clock In System checks GPS location vs job site 🟡 Partial commute_tracker.dart handles distance & ETA. GPS consent is checked (hasLocationConsent). However, the hard "block if off-site" enforcement is not confirmed — location check gates the check-in window (15-min rule), but not a strict GPS radius gate as described in docs.
3.2 GPS-Verified Clock In "Swipe to Clock In" active when On Site Completed SwipeToCheckIn widget activates when time window is valid.
3.2 GPS-Verified Clock In Show error if Off Site 🟡 Partial Location error state exists conceptually, but off-site blocking is based on time window (15 min pre-shift), not GPS radius check.
3.2 GPS-Verified Clock In NFC Clock-In mode 🚫 Undocumented _showNFCDialog() and NFC check-in mode implemented in real app. Not mentioned in use-case docs.
3.3 Submit Timesheet Swipe to Clock Out Completed SwipeToCheckIn toggles to clock-out mode. CheckOutRequested event fires.
3.3 Submit Timesheet Confirm total hours & break times 🟡 Partial LunchBreakDialog exists as a confirmation step before clock-out. Full hours display is shown post-checkout. However, worker cannot manually edit/confirm exact break time duration — modal is a simple confirmation flow.
3.3 Submit Timesheet Submit timesheet for client approval Not Implemented Clock-out fires CheckOutRequested → updates attendance record. A formal "submit timesheet" action pending client approval is not implemented. The timesheet approval workflow is entirely absent on the staff side.

Feature Module: payments (Financial Management)

Use Case Sub-Use Case Prototype Real App Status Notes
4.1 Track Earnings View Pending Pay (unpaid earnings) Completed PendingPayCard in payments_page.dart shows pendingEarnings.
4.1 Track Earnings View Total Earned (paid earnings) Completed PaymentsLoaded.summary.totalEarnings displayed on header.
4.1 Track Earnings View Payment History Completed PaymentHistoryItem list rendered from state.history.
4.2 Request Early Pay Tap "Request Early Pay" 🟡 Partial PendingPayCard has onCashOut → navigates to /early-pay. The early pay page is routed but relies on a path. Early pay package not found in packages/features/staff/. Route target likely navigates to an unimplemented page.
4.2 Request Early Pay Select amount to withdraw Not Implemented early_pay_screen.dart exists only in prototype. No early_pay package in real app.
4.2 Request Early Pay Confirm transfer fee Not Implemented Prototype only.
4.2 Request Early Pay Funds transferred to bank account Not Implemented Prototype only. No real payment integration found.

Feature Module: profile + profile_sections (Profile & Compliance)

Use Case Sub-Use Case Prototype Real App Status Notes
5.1 Manage Compliance Documents Navigate to Compliance Menu Completed ComplianceSection in staff_profile_page.dart links to sub-modules.
5.1 Manage Compliance Documents Upload Certificates (take photo / submit) Completed certificates_page.dart + certificate_upload_modal.dart fully implemented.
5.1 Manage Compliance Documents View/Manage Identity Documents Completed documents_page.dart with documents_progress_card.dart.
5.2 Manage Tax Forms Complete W-4 digitally & submit Completed form_w4_page.dart + FormW4Cubit fully implemented.
5.2 Manage Tax Forms Complete I-9 digitally & submit Completed form_i9_page.dart + FormI9Cubit fully implemented.
5.3 Krow University Training Navigate to Krow University Not Implemented krow_university_screen.dart exists only in prototype. No krow_university or training package in real app feature modules.
5.3 Krow University Training Select Module → Watch Video / Take Quiz ⚠️ Prototype Only Fully prototyped (courses, categories, XP tracking). Not migrated at all.
5.3 Krow University Training Earn Badge ⚠️ Prototype Only Prototype only.
5.4 Account Settings Update Bank Details Completed bank_account_page.dart + BankAccountCubit in profile_sections/finances/staff_bank_account.
5.4 Account Settings View Benefits ⚠️ Prototype Only benefits_screen.dart exists only in prototype. No benefits package in real app.
5.4 Account Settings Access Support / FAQs Completed faqs_page.dart with FAQsBloc and search in profile_sections/support/faqs.
(undocumented) View Time Card (Staff Timesheet History) 🚫 Undocumented time_card_page.dart in profile_sections/finances/time_card. Fully implemented. Not in staff use-case doc.
(undocumented) Privacy & Security Settings 🚫 Undocumented privacy_security_page.dart in profile_sections/support/privacy_security. Not in use-case docs.
(undocumented) Leaderboard ⚠️ Prototype Only leaderboard_screen.dart in prototype. No real app equivalent.
(undocumented) In-App Messaging / Support Chat ⚠️ Prototype Only messages_screen.dart in prototype. Not in real app.


1 Summary Statistics

Client App

Metric Count
Total documented use cases (sub-use cases) 38
Fully Completed 21
🟡 Partially Implemented 7
Not Implemented 5
⚠️ Prototype Only (not migrated) 3
🚫 Undocumented (code exists, no doc) 5

Client App Completion Rate (fully implemented): ~55%
Client App Implementation Coverage (completed + partial): ~74%


Staff App

Metric Count
Total documented use cases (sub-use cases) 45
Fully Completed 25
🟡 Partially Implemented 7
Not Implemented 8
⚠️ Prototype Only (not migrated) 6
🚫 Undocumented (code exists, no doc) 8

Staff App Completion Rate (fully implemented): ~56%
Staff App Implementation Coverage (completed + partial): ~71%


2 Critical Gaps

The following are high-priority missing flows that block core business value:

🔴 P1 — Blocking Core Business Operations

  1. Client: Review & Approve Timesheets (client_coverage / no feature package)
    The entire timesheet approval flow (Client: Review → Approve / Dispute) is missing in the real app. This is a system-critical function — no timesheet approval means no payment processing pipeline. Only exists in the prototype.

  2. Staff: Submit Timesheet for Client Approval (clock_in)
    Clock-out exists, but the resulting attendance record is never formally submitted as a timesheet for client review. The two sides of the approval loop are disconnected.

  3. Staff: Eligibility Check on Claim Shift (shifts)
    When a worker tries to claim a shift, there is no client-side compliance gate. The use-case defines: "System validates eligibility (Certificates, Conflicts)." The real app fires AcceptShiftEvent and shows a success snackbar — missing: detecting an eligibility failure and redirecting to compliance upload.

  4. Staff: Early Pay Flow (payments)
    The PendingPayCard routes to /early-pay but no early_pay feature package exists in the real app. This is a dead navigation link to a non-existent page. The full flow (select amount → confirm fee → transfer) is Prototype Only.

  5. Client: Verify Worker Attire (client_coverage)
    The attire verification flow (select shift → select worker → submit verification) is documented as a use case and built in the prototype but has no corresponding feature package in the real app.


🟠 P2 — High Business Risk / Key UX Gaps

  1. Client: Notification Preferences Toggle (settings)
    A settings page exists, but notification toggles are absent. This is a core administration concern per the use-case doc.

  2. Staff: Filter Jobs by Distance (home / shifts)
    Prototype has distance filtering. Real app only has text search + type tabs. GPS-based discovery is not wired.

  3. Staff: Krow University Training Module (profile_sections)
    An entire self-improvement and compliance pipeline (training modules, badges, XP, leaderboard) is fully prototyped but has zero migration to the real app.

  4. Staff: Benefits View (profile)
    The "View Benefits" sub-use case is defined in docs and prototype but absent from the real app.

  5. Client: Re-post Unfilled Shifts (client_coverage)
    Coverage tab shows open gaps but lacks the re-post action documented in use case 3.1.


3 Architecture Drift

The following inconsistencies between the system design documents and the actual real app implementation were identified:


AD-01: GPS Clock-In Enforcement vs. Time-Window Gate

Docs Say: system-bible.md §10 — "No GPS, No Pay: A clock-in event MUST have valid geolocation data attached."
Reality: The real clock_in_page.dart enforces a 15-minute pre-shift time window, not a GPS radius check. The CommuteTracker shows distance and ETA, but the SwipeToCheckIn activation is gated on _isCheckInAllowed() which only checks DateTime, not GPS distance. GPS-based blocking is absent from the client enforcement layer.


AD-02: Compliance Gate on Shift Claim

Docs Say: use-case.md (Staff) §2.2 — "System validates eligibility (Certificates, Conflicts). If missing requirements, system prompts to Upload Compliance Docs."
Reality: AcceptShiftEvent is dispatched without eligibility check feedback. No prompt is shown to navigate to the compliance upload. Backend may reject, but the client has no UX handling for this scenario.


AD-03: "Split Brain" Logic Risk — Client-Side Calculations

Docs Say: system-bible.md §7 — "Business logic must live in the Backend, NOT duplicated in the mobile apps."
Reality: _groupMultiDayShifts() in find_shifts_tab.dart and cost calculation logic in shift_order_form_sheet.dart (47KB file) perform grouping/calculation logic on the client. This is a drift from the single-source-of-truth principle. The shift_order_form_sheet.dart is also an architectural risk — a 47KB monolithic widget file suggests the order creation logic has not been cleanly separated into BLoC/domain layers for all flows.


AD-04: Timesheet Lifecycle Disconnected

Docs Say: architecture.md §3 & system-bible.md §5 — Approved timesheets trigger payment scheduling. The cycle is: Clock Out → Timesheet → Client Approve → Payment Processed.
Reality: Staff clock-out fires CheckOutRequested. Client has no timesheet module. The intermediate "Submit Timesheet" + "Client Approval" steps are entirely missing in both apps. The payment lifecycle has a broken chain — the Staff time_card_page.dart (in profile sections) provides a view of past time cards but is not connected to the approval lifecycle.


AD-05: Undocumented Features Creating Scope Drift

Reality: Multiple features exist in real app code with no documentation coverage:

  • Home dashboard reordering / widget management (Client)
  • NFC clock-in mode (Staff)
  • History shifts tab (Staff)
  • Privacy & Security module (Staff)
  • Time Card view under profile (Staff)

These features represent development effort that has gone beyond the documented use-case boundary. Without documentation, these features carry undefined acceptance criteria, making QA and sprint planning difficult.


AD-06: client_workers_screen (View Workers) — Missing Migration

Docs Show: architecture.md §A and the use-case diagram reference ViewWorkers from the Home tab.
Reality: client_workers_screen.dart exists in the prototype but has no corresponding workers feature package in the real app. This breaks a documented Home Tab flow.


AD-07: Benefits Feature — Defined in Docs, Absent in Real App

Docs Say: use-case.md (Staff) §5.4 — "View Benefits" is a sub-use case.
Reality: benefits_screen.dart is fully built in the prototype (insurance, earned time off, etc.) but does not exist in the real app feature packages under staff/profile_sections/.


4 Orphan Prototype Screens (Not Migrated)

The following screens exist only in the prototypes and have no real-app equivalent:

Client Prototype

Screen Path
Timesheets client/client_timesheets_screen.dart
Workers List client/client_workers_screen.dart
Verify Worker Attire client/verify_worker_attire_screen.dart

Staff Prototype

Screen Path
Early Pay worker/early_pay_screen.dart
Benefits worker/benefits_screen.dart
Krow University worker/worker_profile/level_up/krow_university_screen.dart
Leaderboard worker/worker_profile/level_up/leaderboard_screen.dart
Training Modules worker/worker_profile/level_up/trainings_screen.dart
In-App Messages worker/worker_profile/support/messages_screen.dart

5 Recommendations for Sprint Planning

Sprint Focus Areas (Priority Order)

Priority Item Effort Est.
🔴 P1 Implement Client Timesheet Approval module Large
🔴 P1 Implement Staff Submit Timesheet (post clock-out) Medium
🔴 P1 Wire /early-pay route — create early_pay feature package Medium
🔴 P1 Add eligibility check response handling in Claim Shift flow Small
🟠 P2 Implement GPS radius gate for Clock-In (replace time-window only) Medium
🟠 P2 Migrate Krow University training module from prototype Large
🟠 P2 Migrate Benefits view from prototype Medium
🟠 P2 Add Verify Attire client feature package Medium
🟠 P2 Add re-post shift action on Coverage page Small
🟡 P3 Migrate Workers List to real app (client/workers) Medium
🟡 P3 Add distance-based filter in Find Shifts tab Small
🟡 P3 Add notification preference toggles to Settings Small
🟡 P3 Formally document undocumented features (NFC, History tab, etc.) Small

This document was generated by static code analysis of the monorepo at apps/mobile and cross-referenced against all four architecture documents. No runtime behavior was observed. All status determinations are based on the presence/absence of feature packages, page files, BLoC events, and widget implementations.