30 KiB
📊 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
-
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. -
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. -
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 firesAcceptShiftEventand shows a success snackbar — missing: detecting an eligibility failure and redirecting to compliance upload. -
Staff: Early Pay Flow (
payments)
ThePendingPayCardroutes to/early-paybut noearly_payfeature 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. -
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
-
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. -
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. -
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. -
Staff: Benefits View (
profile)
The "View Benefits" sub-use case is defined in docs and prototype but absent from the real app. -
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.