-
Type:
Story
-
Resolution: Unresolved
-
Priority:
Medium
-
Affects Version/s: None
-
None
-
FLW Mobile App
-
All
User story · Persona: All app users (ASHA, ASHA Supervisor, CHO, ANM). All app users need a single place to see notifications they have received, plus the two most urgent triggers wired up (ASHA rejection feedback and the 2-day Supervisor verification reminder), so that the foundation can be validated end-to-end while the highest-priority operational gaps close on day one.
Ship the full Phase 1 work unit. Build the bell icon and panel, the dispatch engine, and the dispatch log, and wire two triggers (ASHA rejection and Supervisor 2-day reminder) end-to-end so the foundation is provable in production. Hardcoded copy and cadence; no deeplinks; in-app only.
- Foundation UI (bell and panel): Bell icon in the app header, top-right, beside the existing language toggle. Unread-count badge updates on read, dismiss, or clear. Tapping the bell opens the Notification panel listing every notification for the logged-in user in reverse-chronological order, with title, short message, timestamp, and read or unread state per row. Empty state ("No notifications yet") when there are none.
- Foundation interactions: Tap to mark-as-read (persists across sessions). Swipe-to-dismiss removes the row from the panel. "Clear notifications" button pinned at the bottom of the panel; on confirm, soft-clears every notification for the logged-in user. The dispatch log records are not deleted.
- Foundation dispatch engine and logging: Single dispatch service that recipient-specific triggers call. Service takes recipient ID, recipient role, event type, title, and body. Notifications are scoped to the logged-in user (a Supervisor must never see another Supervisor's notifications, and similarly for ASHA, CHO, and ANM). Persist every dispatch (event type, recipient ID and role, channel = in-app, timestamp, delivery status) and every user interaction (viewed, dismissed, cleared) in the notification log. No attribution linkage yet.
- Trigger A · ASHA rejection notification: Fires once per ASHA-month rejection event, the moment any ASHA Supervisor, CHO, or ANM submits a Reject action. Title: "Your monthly claim was rejected". Body: month-year plus selected rejection reasons; full remarks included (or truncated with full text shown on open). Payload carries the chosen reasons (one or more from the 8-reason set) and remarks (mandatory when the reason is Other). In-app only. Event type: "ASHA Claim Rejected". No deeplink in Phase 1; resubmission still happens via existing ASHA app navigation.
- Trigger B · Supervisor 2-day verification reminder: For each ASHA-month claim submitted by an ASHA, schedule a reminder for the mapped Supervisor 2 days after the ASHA's submission timestamp. If the Supervisor verifies or rejects before the 2 days elapse, cancel the scheduled reminder. After the initial reminder fires, if the ASHA-month is still Pending with Supervisor, repeat every 2 days until the Supervisor verifies or rejects, or the configured Supervisor verification cut-off elapses (auto-routing then takes over). Title: "Pending verifications for <Month YYYY>". Body: consolidated count of ASHAs and activities pending verification (one consolidated reminder per cycle, not one per ASHA). In-app only. Event type: "Supervisor Verification Reminder". No deeplink in Phase 1.
- Affected modules: FLW Android app (header bell icon, notification panel). Notification service (dispatch engine, scheduler, two event handlers). Notification log datastore. ASHA-month Reject API (calls dispatch on success).