HOCO B2B
Team tasksImad

MDA-11 — Delegate app — messages, settings & sync centre

Announcements and notifications, settings (language, notifications, location transparency), sync centre with pending/error items and retry.

FieldDetails
Task codeMDA-11
PhaseP1 — V1 build & integration
Product scopeV1
StatusPlanned
StartMon 14 Dec 2026
DueMon 14 Dec 2026
ResponsibleImad — Mobile developer (Flutter)
Co-responsible—
Effort0.75 person-day(s) planned · 3 from scratch · size S
Area · appDelegate app · mobile
Depends onDES-14, MOB-09
UnblocksDQA-03
Milestones—

Summary

Announcements and notifications, settings (language, notifications, location transparency), sync centre with pending/error items and retry.

Description

Delegates need the office's messages, control over their settings and location transparency, and — because the app is offline-first — a sync centre that shows exactly what is pending or failed and lets them fix it (NOT-01, NOT-07, SYN-06, FLD-15). Scope: messages and notifications DA-23 (announcements targeted to delegates plus the notification inbox), settings DA-26 (language, notification preferences, location transparency and consent) and the sync centre DA-27 over the MOB-09 outbox and MOB-11 upload queue, with per-error resolution actions. It needs announcements.*, notifications.* and notifications.preferences.* (SRV-24, SRV-08) plus the SRV-23 error codes, and Akram's DES-11/DES-14 frames. DQA-03 (design QA of the delegate build) starts after this task.

Subtasks

#SubtaskOwner
1MessagesScreen DA-23: tabs « Annonces » (GET /announcements, acknowledge with POST /announcements/{id}/read) and « Notifications » (inbox, mark read, deep links to tours, visits, tasks, orders)Imad
2SettingsScreen DA-26: language, notification preferences (transactional and field categories locked on), sign-out guarded by unsynced dataImad
3Location transparency section: current policy (sampling only while a tour is « En cours », every 5 min or 200 m, retention 90 days, tolerance 150 m), consent date, withdrawal explaining that tours cannot be started without it (FLD-15)Imad
4SyncCentreScreen DA-27: SyncStatusPill header, « Synchroniser maintenant », last sync time, items grouped by entity with SyncItemResult labels (« En attente », « À réessayer », « Conflit », « Rejeté »)Imad
5Per-code resolution actions: PHONE_ALREADY_EXISTS → open existing / correct phone; VISIT_LOCKED → discard local edit; OCCURRED_AT_OUT_OF_RANGE → contact supervisor; GPS_OUT_OF_TOLERANCE → view visitImad
6Retry one item, retry all, discard a rejected item (confirmation dialog, logged to Sentry breadcrumbs)Imad
7Upload queue section (photos pending, progress, failed) from MOB-11Imad
8« Envoyer un diagnostic »: anonymised outbox and log summary shared to support via share_plusImad

Deliverables

  • apps/delegate/lib/src/features/messages/ (DA-23)
  • apps/delegate/lib/src/features/settings/ (DA-26)
  • apps/delegate/lib/src/features/sync_centre/ (DA-27)
  • Firebase App Distribution build 0.8.0 (staging) of the delegate app for DQA-03

Acceptance criteria

  • Pending, error and synced counts in the sync centre match the outbox and upload queue exactly (SYN-06)
  • Every rejected or conflicting item shows its error code, a French explanation and at least one resolution action (SYN-05)
  • « Synchroniser maintenant » triggers an immediate batch and updates the list live
  • Announcements targeted to delegates are listed and their acknowledgment reaches the back-office (NOT-07)
  • The location policy shown in settings matches the server's current settings (FLD-15)

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
SYN-06Visible sync state: synced, pending, errorV1
FLD-15Location policy: consent, frequency, tolerance and retention configurable and transparentV1

Screens

ScreenNameApp
DA-23Messages & notificationsDA
DA-26SettingsDA
DA-27Sync centreDA

API surface

Test measures

  • Widget tests of the sync centre with seeded outbox states for each SyncItemResult and error code
  • Integration test: force a VISIT_LOCKED rejection on staging → item appears → discard → counts update
  • Widget tests of the announcements acknowledgment

Risks

  • Delegates discard items they should not — discard only for REJECTED items, with explicit confirmation and a record in the diagnostic log

KPI

  • Delivered by Mon 14 Dec 2026 within 0.75 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