HOCO B2B
Team tasksImad

MRA-08 — Reseller app — notifications & support

Notification inbox with deep links and badge, announcements, tickets and after-sales claims (order items, issue, photos), conversation, and the regional WhatsApp support button.

FieldDetails
Task codeMRA-08
PhaseP1 — V1 build & integration
Product scopeV1
StatusPlanned
StartThu 19 Nov 2026
DueSun 22 Nov 2026
ResponsibleImad — Mobile developer (Flutter)
Co-responsible—
Effort1.25 person-day(s) planned · 4 from scratch · size S
Area · appReseller app · mobile
Depends onMOB-08, DES-10
UnblocksMRA-11
Milestones—

Summary

Notification inbox with deep links and badge, announcements, tickets and after-sales claims (order items, issue, photos), conversation, and the regional WhatsApp support button.

Description

Resellers need one place for what HOCO tells them and one place to ask for help; the 17 Oct decisions add after-sales claims with photos in V1 (SUP-04) and a fixed WhatsApp button that opens the support number of the user's region (SUP-05). Scope: notification inbox RA-26 with announcements, deep links and badge; support hub RA-32 (tickets, contacts and FAQ, WhatsApp); new ticket or after-sales claim RA-33 (order, affected lines and quantities, AfterSalesIssue, photos); ticket conversation RA-34 with the claim's resolution; and the regional WhatsApp button used across the app. Region resolution follows decision 8: the declared wilaya's region when signed in, otherwise the device location, otherwise a wilaya picker or the default number — all resolved by support.whatsapp (auth optional). It needs notifications.*, announcements.*, tickets.*, support.contacts, support.whatsapp (SRV-24, SRV-20) and Akram's DES-10 frames. Returns are MRA-10; live ticket replies arrive through MRA-10's SSE client and MOB-08 push.

Subtasks

#SubtaskOwner
1NotificationsScreen RA-26: GET /notifications (cursor, « Non lues » filter), tap → markRead + deep link, « Tout marquer comme lu » (POST /notifications/read-all), badge provider shared with the home bellImad
2Announcements tab « Annonces » (GET /announcements, POST /announcements/{id}/read) with rich text and imagesImad
3SupportHubScreen RA-32: my tickets (GET /tickets) with TicketStatus pills (« Ouverte », « En cours de traitement », « En attente de votre réponse », « Résolue »…), contacts and FAQ (GET /support/contacts), WhatsApp cardImad
4WhatsAppSupportButton (fixed FAB on home, catalog, product, order detail and support): GET /support/whatsapp → number, wa.me link and hours; prefilled message with store name, REV number and the current order or product; hours notice outside opening hoursImad
5Region resolution for guests and missing wilaya: ask location only on tap (coarse fix sent as lat/lng), on denial a wilaya picker (wilayaCode), else the default number; resolved region cached for the sessionImad
6NewTicketScreen RA-33: TicketType picker (« Service après-vente (SAV) », « Problème de commande », « Problème de livraison », « Facturation », « Question », « Autre »), subject, message, related order, attachments → POST /tickets with an Idempotency-KeyImad
7After-sales claim flow (type AFTER_SALES): pick a delivered order, select affected lines with quantity steppers capped at the delivered quantity, issue per line (« Produit défectueux », « Produit endommagé », « Mauvais article », « Article manquant », « Non conforme », « Autre »), description, photos via MOB-11 (TICKET_ATTACHMENT)Imad
8TicketConversationScreen RA-34: GET /tickets/{id} public messages, reply with attachments (POST /tickets/{id}/messages), close with rating (POST /tickets/{id}/close)Imad
9Claim resolution card: AfterSalesResolution « Remplacement » (link to the free replacement order), « Retour » (link to the return RET-…), « Avoir » (credit note PDF), « Réparation », « Refusée » with the reasonImad
10Entry points: « Signaler un problème » on RA-22 opens RA-33 prefilled with the order; claim photo requirements per issue confirmed with AnisImad

Deliverables

  • apps/reseller/lib/src/features/notifications/ (inbox, announcements)
  • apps/reseller/lib/src/features/support/ (hub, new ticket, after-sales claim, conversation)
  • packages/hoco_catalog/lib/src/widgets/whatsapp_support_button.dart (shared with any future reseller surface)
  • Widget tests for the claim line selector and the region-resolution fallbacks

Acceptance criteria

  • Unread badge, inbox and « Tout marquer comme lu » stay consistent across the bell and the inbox (NOT-01)
  • A signed-in reseller from Oran gets the West region's number; a guest who grants location gets the number of the nearest wilaya's region; a guest who refuses picks a wilaya; with nothing, the default number opens (SUP-05)
  • The WhatsApp button opens WhatsApp (or wa.me in the browser) with a prefilled message, from every screen where it is shown
  • An after-sales claim cannot be sent without at least one line and quantity within the delivered quantity, and it reaches the back-office with lines, issues and photos (SUP-04)
  • The claim's resolution is shown with a link to the replacement order, the return or the credit note
  • A retried ticket creation does not create two tickets (Idempotency-Key)

Requirements covered

RequirementTitleRelease
NOT-01In-app notification inbox with read/unread in every appV1
NOT-07Announcements from the back-office to delegates or resellers by target ('Messages')V1
SUP-01Reseller tickets: type, related order, message, attachments, conversation, statusesV1
SUP-03Support contacts and FAQV1
SUP-04After-sales service (SAV): a reseller opens a claim on an order (items, quantities, issue, photos); the back-office handles it from diagnosis to resolution (replacement, return, credit note, rejection)V1
SUP-05Regional WhatsApp support: a fixed WhatsApp button in both reseller apps opens the support number of the user's region — declared region when signed in, device location otherwiseV1

Screens

ScreenNameApp
RA-26NotificationsRA
RA-32Support: tickets, after-sales claims & WhatsAppRA
RA-33New ticket / after-sales claimRA
RA-34Ticket conversationRA

API surface

Test measures

  • Unit tests of the WhatsApp region resolution order (signed-in, location, picker, default)
  • Widget tests of the after-sales line selector (caps, required issue, photo requirement)
  • Integration test: order detail → « Signaler un problème » → claim with 2 photos → ticket visible in RA-32

Risks

  • Asking guests for location just to route WhatsApp feels intrusive — request it only on tap and always offer the wilaya picker
  • Photo-heavy claims on weak networks — compress via MOB-11 and show per-photo upload progress before enabling « Envoyer »

KPI

  • Delivered by Sun 22 Nov 2026 within 1.25 person-day(s).
  • Every acceptance criterion above demonstrated before hand-off; linked requirements' acceptance criteria pass.
  • Zero open critical defects, permission gaps or data-integrity regressions at sign-off.

Generated from content/plan/tasks.json by scripts/generate-team-tasks.mjs. Dates are computed by the scheduler (Sunday–Thursday weeks, holidays excluded) — change the plan, not this page.

On this page