HOCO B2B
SRS

Acceptance scenarios

The cahier's fifteen priority acceptance scenarios and thirty-two complementary ones as executable test scripts with seed data, steps, expected results, requirements covered and evidence — then the acceptance procedure up to the signed PV de recette.

Cahier §12 lists fifteen « scénarios de recette prioritaires » and the condition of acceptance: « La recette est considérée comme acceptée lorsque les scénarios prioritaires sont exécutés avec succès, que les anomalies bloquantes sont corrigées et que le procès-verbal de recette est signé » (OPS-05). This page turns each scenario into a script anyone can execute: objective, apps, preconditions and data, numbered steps with the expected result of each, the requirements covered and the evidence to keep. AT-01 to AT-15 are the cahier's priority scenarios; AT-16 to AT-47 cover V1 rules the cahier's list does not name, including the product decisions of 17 October 2026. The procedure — environments, who executes, severities, entry and exit criteria, the PV — closes the page.

The same scripts are used three times: by Akram on staging in the functional campaign (QA-03), by the team on staging with real devices (QA-01, run per the end-to-end test plan on the seeded staging data), and by HOCO's key users on pre-production for the client acceptance (QA-02).

Scenario index

IdScenarioCahierAppsRelease
AT-01Reseller account: sign-up with customer type, validation§12 Compte revendeurRA · RW · BOV1
AT-02Catalog: only authorised products, prices and availability§12 CatalogueRA · RW · BOV1
AT-03Order: unique number, visible in the back-office, confirmed there§12 CommandeRA · BOV1
AT-04Stock: reservation, deduction, automatic restock§12 StockBO · RAV1
AT-05Tracking: back-office changes live in the app and notified§12 SuiviBO · RA · RWV1
AT-06Promotion: only authorised products, dates and targets§12 PromotionBO · RAV1
AT-07Loyalty: points credited, debited, historised§12 FidélitéRA · BOV2
AT-07aV1 variant: promotions only, no loyalty surface§12 FidélitéRA · RW · BOV1
AT-08Tour: start, visits, closing with full summary§12 TournéeDA · BOV1
AT-09GPS: check-in tolerance, consented positions only§12 GPSDA · BOV1
AT-10Prospect: field record in the CRM without duplicate§12 ProspectDA · BOV1
AT-11Invitation: QR and link attribute to the right delegate§12 InvitationDA · RA · BOV1
AT-12First order: linked to the reseller and the source delegate§12 Première commandeDA · RA · BOV1
AT-13Visit report: saved, visible, triggers the follow-up§12 RapportDA · BOV1
AT-14Permissions: no access to unauthorised functions§12 PermissionsBO · APIV1
AT-15Offline: pending field data syncs when the network returns§12 Hors ligneDA · BOV1
AT-16Account claim without duplicate—RA · BOV1
AT-17Credit check blocking and approval—RA · BOV1
AT-18Assisted order expiry—DA · RA · BOV1
AT-19Controlled order modification with history—BO · RAV1
AT-20Stock override with permission—BOV1
AT-21Payment declaration and verification—RA · BOV1
AT-22A reseller never sees another reseller's prices or data—RA · RW · APIV1
AT-23A delegate never sees an out-of-zone reseller—DA · APIV1
AT-24Tour closing blocked until synced—DAV1
AT-25Tour reopened by the back-office—BO · DAV1
AT-26Import with an error report—BOV1
AT-27Export permission and traceability—BOV1
AT-28Forced app update—BO · RA · DAV1
AT-29Notification deep links—RA · DAV1
AT-30Live back-office (SSE)—BOV1
AT-31Arabic and RTL readiness smoke test—RA · DA · BO · RWV1
AT-32Suspended and disabled accounts—DA · BOV1
AT-33One-time codes, lockout, password reset—RA · APIV1
AT-34Idempotent checkout—RA · APIV1
AT-35Cancellation rules and automatic restock—RA · BOV1
AT-36Visit rules: mandatory photos, locked visit, unlock—DA · BOV1
AT-37Performance smoke test—RA · BO · APIV1
AT-38Guest browsing without prices—RA · RWV1
AT-39Correct price per customer type—RA · RW · BOV1
AT-40Advanced filters with facets—RA · RW · BOV1
AT-41Stock quantities never shown to resellers—RA · RW · DA · APIV1
AT-42Every order needs a back-office confirmation—RA · RW · DA · BOV1
AT-43Live order status on the reseller screen—BO · RA · RWV1
AT-44Regional WhatsApp number: signed in, location, picker—RA · RW · BOV1
AT-45After-sales claim: replacement, return, credit note, rejection—RA · BOV1
AT-46Return request: reception restocks automatically—RA · BOV1
AT-47Backup restore drill—OPSV1

Test data — the recette seed

A fictional data set loaded on staging and pre-production by the recette seed (an extension of the demo seed of OPS-01). D is the day the scenario is executed; no calendar date is hard-coded. Test phone numbers are allow-listed for SMS in non-production environments; passwords are in the recette vault, never in this page.

Geography and zones

ZoneWilayaCommunesDelegate
Oran Est31 OranOran, Bir El Djir, Es SeniaYacine (+213555000101)
Alger Est16 AlgerBab Ezzouar, El HarrachSamir (+213555000102)

Support regions (two regions to exercise the feature; production may start with one, D-36): Ouest (wilaya 31…) WhatsApp +213550000301, Sunday–Thursday 08:30–17:00 · Centre (wilaya 16…) +213550000302 · default region National +213550000300.

Staff users

UserRoleUsed for
LinaSUPER_ADMINSettings, roles, app versions, restore
NadiaCOMMERCIAL_ADMINOrders to confirm, validation queue, tours, promotions, support
RachidSTOCK_MANAGERStock, returns reception, overrides (stock.validate)
AmelFINANCE_MANAGERPayments, credit (finance.validate)
SofianeDELIVERY_MANAGERPreparation, shipping, proof of delivery
MouradDIRECTIONDashboards (read-only)

Resellers

StoreNumberPhoneCommuneCustomer typeStatusDelegateCredit
Magasin El WafaREV-000101+213555000201Bir El DjirDEMI_GROSACTIVE, segment PartenairesYacineLimit 200 000,00 DA; unpaid invoice FAC-2026-000090 of 150 000,00 DA → available 50 000,00 DA
Phone Center BahiaREV-000102+213555000202OranDETAILACTIVEYacineLimit 0
Alger Mobile StoreREV-000103+213555000203Bab EzzouarSUPER_GROSACTIVE, segment PartenairesSamirLimit 0
Bazar El AmelREV-000104+213555000205Es Senia— (prospect)INTERESTEDYacine—
Galaxy Phone, Mobile PlusREV-000105, REV-000106+213555000208, +213555000209Bir El Djir, Es SeniaDETAILACTIVEYacineLimit 0
Created during the tests—+213555000204 (Accessoires Nour), +213555000206 (Téléphonie Belhadj), +213555000207OranDeclared at sign-up———

Products (prices HT in DA; TTC = HT × 1.19 shown in brackets; VAT 19 %)

ProductCategory · attributesSuper-grosDemi-grosDétailPhysical stock (threshold)Special
HOCO N32 30WChargeurs · 30 W, USB-C1 300,00 (1 547,00)1 400,00 (1 666,00)1 500,00 (1 785,00)120 (20)Recommended price 2 600,00 TTC
BOROFONE BX51 câble USB-C 1 mCâbles · USB-C→USB-C, 1 m, noir300,00 (357,00)330,00 (392,70)360,00 (428,40)600 (50)Sold by 5 (step 5)
HOCO X88 câble Lightning 1 mCâbles · USB-A→Lightning, 1 m, blanc250,00 (297,50)270,00 (321,30)290,00 (345,10)300 (50)—
ACEFAST T6 écouteursÉcouteurs · Bluetooth 5.32 800,00 (3 332,00)3 000,00 (3 570,00)3 200,00 (3 808,00)8 (10)Below threshold (back-office alert only)
HOCO J101 powerbank 10 000 mAhPowerbanks · 10 000 mAh1 900,00 (2 261,00)2 000,00 (2 380,00)2 100,00 (2 499,00)60 (10)Daily offer on D at 2 190,00 TTC
HOCO CA75 support voitureSupports voiture900,00950,001 000,000OUT_OF_STOCK
BOROFONE BA21 casqueAudio1 700,001 850,002 000,0040 (5)Visible only to segment Partenaires
ACEFAST A55 65WChargeurs · 65 W, USB-C———30DRAFT (never visible)

Promotion « -15 % sur les câbles BOROFONE »: PERCENT_OFF 15 %, scope category Câbles and brand BOROFONE, audience wilaya 31, from D 00:00 to D+7 23:59, cap 200 units.

Settings (recette values): minimum order 10 000,00 DA TTC; stock.reserveOn = VALIDATED, stock.deductOn = SHIPPED; credit.overLimitPolicy = BLOCK; GPS tolerance 150 m, accuracy ≤ 100 m; assisted-order delay 72 h; return window 7 days; prices after sign-up per D-18 (default: declared type right away); payment methods all enabled.

Tour TRN-2026-000045 for Yacine on D, ordering mode RECOMMENDED, stops: S1 Magasin El Wafa (HIGH), S2 Phone Center Bahia, S3 Bazar El Amel (visit type Prospection: façade photo and report mandatory), S4 Galaxy Phone, S5 Mobile Plus. Visit type Visite commerciale: report mandatory, photos optional.

Priority scenarios (cahier §12)

AT-01 — Reseller account: sign-up with customer type, validation

ItemDetail
Objective« Une inscription valide apparaît dans le back-office et peut être approuvée »
RequirementsAUTH-03, AUTH-07, AUTH-08, AUTH-11, CRM-02, CRM-09, NOT-05
PreconditionsReseller app on a test phone with SIM +213555000206; no record with this phone; Nadia signed in on the back-office
#StepExpected result
1Open the app, « Créer un compte », enter 0555 00 02 06, no invitation codeA code is sent; RA-04 shows a 60-second resend countdown
2Enter a wrong code« Code incorrect » with the remaining attempts (4)
3Enter the right codePhone verified; the store form RA-05 opens
4Fill Téléphonie Belhadj, owner, wilaya Oran, commune Oran, address, business type, customer type Détail, password; submitAccount created, status PENDING_VALIDATION; RA-06 « Compte en attente de validation »
5Browse the catalog, open HOCO N32 30W, try « Ajouter au panier »Prices shown per D-18 (default: Détail price 1 785,00 DA); adding to the cart is refused with the explicit pending-validation message
6Back-office: open the validation queue BO-13The account appears within 5 seconds without reload, source SELF_SIGNUP, phone +213555000206, declared type Détail, no duplicate hint
7Nadia approves, confirming the customer typeAccount ACTIVE; the journal shows VALIDATE with Nadia, time and the type
8Reseller appPush and SMS « Compte validé »; the cart now accepts products
9Repeat steps 1–4 with +213555000207; Nadia rejects with a reasonRA-06 shows « Compte non validé » with the reason; push received

Evidence: screenshots of RA-04, RA-05, RA-06 (pending and rejected), BO-13 before and after; journal rows; the SMS on the phone; the notification log entry (BO-58).

AT-02 — Catalog: only authorised products, prices and availability

ItemDetail
Objective« Le revendeur voit uniquement les produits, prix et stocks autorisés »
RequirementsCAT-04, CAT-05, CAT-07, CAT-08, PRC-02, PRC-05, STK-07
PreconditionsRecette seed; Phone Center Bahia (DETAIL) and Magasin El Wafa (DEMI_GROS) signed in on two phones
#StepExpected result
1Bahia opens the catalogN32, BX51, X88, T6, J101 and CA75 listed; BA21 (segment rule) and A55 (DRAFT) absent
2Bahia opens HOCO N32 30W1 785,00 DA TTC (détail), recommended price 2 600,00 DA, « En stock » — no quantity anywhere
3Bahia opens ACEFAST T6 (8 in stock, below its threshold)« En stock » only — the threshold is a back-office alert, not a reseller label
4Bahia opens HOCO CA75« En rupture »; « Ajouter au panier » disabled
5El Wafa opens HOCO N32 30W, then the catalog1 666,00 DA TTC (demi-gros); BA21 visible (segment Partenaires)
6Back-office: Rachid hides BX51After a refresh both resellers no longer see BX51; a cart line of BX51 shows « Produit indisponible »
7API: request BA21 with Bahia's token (catalog.products.get)404 NOT_FOUND

Evidence: screenshots for both resellers; API responses (showing availability and no quantity field); BO-28 visibility settings.

AT-03 — Order: unique number, visible in the back-office, confirmed there

ItemDetail
Objective« Une commande validée reçoit un numéro et apparaît dans le back-office » — with the 17 October rule that no order is confirmed automatically
RequirementsORD-01, ORD-02, ORD-03, ORD-05, ORD-14, ADM-04, SYN-07
PreconditionsEl Wafa signed in; Nadia on BO-41 « Commandes à confirmer »
#StepExpected result
1El Wafa adds N32 × 3 and BX51 × 7BX51 corrected or refused to a multiple of 5 (QUANTITY_NOT_ALLOWED message)
2Cart with N32 × 3 and BX51 × 5 (about 6 670 DA TTC)Checkout blocked: « Le montant minimum de commande est de 10 000,00 DA »
3N32 × 6, BX51 × 10; open the cartLines at demi-gros prices, -15 % on BX51, HT, VAT and TTC totals; delivery line per D-20
4Address, note, Paiement à la livraison, « Valider la commande »RA-20 shows CMD-2026-NNNNNN; status « Envoyée »
5Back-office BO-41The order appears within 5 seconds without reload, channel RESELLER_APP, controls green
6Wait two minutesThe order is still SUBMITTED — nothing confirms it automatically
7Nadia confirmsVALIDATED; the order leaves the queue; the reseller sees « Validée »
8Place a second orderIts number is the next one in the sequence
9Open the reseller's cart on a second device or the reseller webThe cart is empty everywhere (server-side cart)

Evidence: RA-20, BO-41 before and after, BO-39 history, the two numbers, requestId of the checkout.

AT-04 — Stock: reservation, deduction, automatic restock

ItemDetail
Objective« Les quantités sont réservées ou déduites selon le statut configuré »
RequirementsSTK-02, STK-03, STK-04, ORD-10
PreconditionsHOCO N32 30W physical 120, reserved 0; Rachid on BO-33 and BO-34
#StepExpected result
1El Wafa submits an order with N32 × 10Physical 120, reserved 0, available 120 (reservation at confirmation)
2Nadia confirmsReserved 10, available 110; a RESERVATION movement in the journal with the order number
3Sofiane moves the order to En préparation, then PrêteQuantities unchanged
4Sofiane ships itPhysical 110, reserved 0, available 110; a SHIPMENT movement
5A second order N32 × 5 is confirmed (reserved 5), then cancelled by Nadia with a reasonReserved back to 0 automatically; a RESERVATION_RELEASE movement; no manual action
6Reseller app during the whole scenarioOnly « En stock » — never a number

Evidence: BO-33 values after each step; BO-34 journal export; screenshots of the reseller app.

AT-05 — Tracking: back-office changes live in the app and notified

ItemDetail
Objective« Les changements du back-office sont visibles dans l'application et notifiés »
RequirementsORD-06, ORD-07, ORD-12, ORD-15, NOT-01, NOT-02, DLV-01–DLV-03
PreconditionsThe confirmed order of AT-03; the reseller app closed on one phone; the reseller web open on the order page
#StepExpected result
1Sofiane moves the order to En préparationWithin 5 s the open web page shows « En préparation » without reload; the closed app's phone receives a push; the inbox has a dated entry
2Prête, then Expédiée with carrier Livreur HOCO, driver and phoneSame three effects for each status; tracker steps match the reseller view
3Delivery proof (photo, recipient name)« Livrée » live and notified; the invoice FAC-… downloadable from RA-22 through a short-lived link
4Compare the timeline in the app with BO-39Same statuses, same dates and times (Africa/Algiers)
5Open a notification on the phone, then the inbox on the webThe notification is read on both; the badge decrements

Evidence: video of the web page updating; push screenshots; BO-39 history; the invoice PDF.

AT-06 — Promotion: only authorised products, dates and targets

ItemDetail
Objective« La remise s'applique uniquement aux produits, dates et cibles autorisés »
RequirementsPRM-01, PRM-02, PRM-04, PRM-05
PreconditionsPromotion -15 % sur les câbles BOROFONE active; daily offer on HOCO J101
#StepExpected result
1El Wafa (Oran) adds BX51 × 20 and HOCO X88 × 10-15 % on BX51 only (BOROFONE cable); X88 (HOCO cable) at its normal price
2Alger Mobile Store (Alger) adds BX51 × 20No discount; the promotion is not listed in its promotions screen
3Nadia schedules a second promotion starting D+1Not applied on D; status Programmée
4Nadia sets the cap of the first promotion so that 5 units remain; a reseller checks out 20 unitsPer the cap rule, the promotion becomes Terminée when the cap is consumed; later carts show « Offre terminée » and the normal price
5J101 on D2 190,00 DA with the countdown banner; on D+1 the normal price
6Open a submitted order with the promotionLines keep the promotion label and discount after it ends

Evidence: cart screenshots for both resellers; BO-50 settings; order detail after the promotion ended.

AT-07 — Loyalty: points credited, debited, historised (V2)

ItemDetail
Objective« Les points sont crédités, débités et historisés correctement »
RequirementsLOY-01–LOY-05 — V2
PreconditionsV2 release; rules of D-05
#StepExpected result
1An order reaches the earning status (delivered or paid per setting)EARN entry with the points of the rule; balance updated
2Redeem a rewardREDEEM entry; unavailable rewards cannot be claimed
3Cancel or return an order that earned pointsREVERSAL of exactly the earned points
4Run the expiry job on points past validityEXPIRE entries, oldest first
5Compare the reseller history (RA-38) and the back-officeSame entries, same balance

Executed with the V2 acceptance; in V1 run AT-07a instead.

AT-07a — V1 variant: promotions only, no loyalty surface

ItemDetail
ObjectiveV1 recommends « promotions simples » (cahier §14.1); loyalty is V2 (D-16)
RequirementsPRM-01, PRM-03, PRM-04
#StepExpected result
1Open the reseller home, account and promotions screens (app and web)No points, level or rewards tile or menu
2Create a promotion targeted at segment Partenaires on HOCO N32 30WEl Wafa (partner) gets it; Bahia does not
3Two promotions on the same productThe stacking rule of PRM-03 applies (default: best discount only); the cart shows which one
4Order detail and the promotion reportThe applied promotion is traceable per line

Evidence: screenshots; promotion report.

AT-08 — Tour: start, visits, closing with full summary

ItemDetail
Objective« Le délégué démarre, réalise les visites et clôture avec un bilan complet »
RequirementsFLD-03–FLD-06, FLD-08, FLD-09, FLD-12, FLD-13
PreconditionsTour TRN-2026-000045 TO_START on D; Yacine on site in Oran with the delegate app; Nadia on the live map BO-06
#StepExpected result
1Yacine opens DA-05Today's tour, 5 visits, objectives; « Démarrer la tournée » enabled
2Start the tourIN_PROGRESS, start time and position recorded; Yacine appears on BO-06 within 5 s
3Programme list and mapSame five stops in the same order
4Swap S3 and S4Accepted (RECOMMENDED); the new order is visible on BO-23
5S1: arrive, start, checklist, note, photo, report, endVisit DONE and locked; home counters updated
6S2 and S4: sameDONE
7S3 (Prospection): try to end without the façade photoRefused with the missing items; after the photo and report, DONE
8S5: « Visite non réalisée », reason Magasin ferméNOT_DONE with the reason
9Open the closing preview4 done of 5, 1 not done with reason, sign-ups, orders, revenue, kilometres; no blocking item
10Close with an end-of-day commentCOMPLETED; BO-23 shows the full summary; the delegate's performance and dashboards updated

Evidence: screenshots of DA-05, DA-20, BO-23; the trail on the map; the final report.

AT-09 — GPS: check-in tolerance, consented positions only

ItemDetail
Objective« Le check-in respecte la tolérance et conserve les coordonnées autorisées »
RequirementsFLD-07, FLD-15, GEO-03, SEC-07
PreconditionsFresh install of the delegate app; tour with S1 at a known position; executed on site (mock locations are refused)
#StepExpected result
1First sign-inDA-04 explains what is collected, when, who sees it and for how long; accepting leads to the system prompt; the consent is recorded
2About 400 m from S1, tap « Arrivé »Refused: distance shown, out-of-tolerance state; no check-in recorded
3Indoors with poor accuracy (above 100 m)« Précision insuffisante » — wait or move
4About 80 m from S1, good accuracyCheck-in accepted; BO-25 shows position, accuracy, distance and time
5During the tour, screen off for 15 minutes while movingPositions about every 5 minutes or 200 m on the BO-23 trail; the persistent notification « Tournée en cours » visible
6Suspend the tour, wait 15 minutes, resumeNo position recorded during the suspension
7After closing, and before the next startNo position recorded; no location indicator on the phone
8Enable a mock-location app and tap « Arrivé »Refused (GPS_MOCK_LOCATION)

Evidence: screenshots; BO-23 trail with timestamps; consent record.

AT-10 — Prospect: field record in the CRM without duplicate

ItemDetail
Objective« La fiche créée sur le terrain apparaît dans le CRM sans doublon »
RequirementsFLD-11, CRM-01–CRM-03, CRM-10, SYN-04
#StepExpected result
1Yacine creates Accessoires Nour, phone 0555 00 02 04, WhatsApp, wilaya, commune, address, type, potential, GPS, façade photoSaved; in BO-09 with source DELEGATE_APP, delegate Yacine, position on BO-10, photo in documents
2Create Nour Accessoires with +213 555 00 02 04Duplicate detected before saving; the existing record is offered
3In airplane mode create Kiosque Test (+213555000210), then reconnect; force a second replay of the same itemOne record only
4Nadia creates a reseller with 0555000204 in the back-office409 PHONE_ALREADY_EXISTS with a link to the record
5Samir (other zone) checks 0555000204« Numéro déjà enregistré » without revealing the store's details

Evidence: BO-09 entry, duplicate messages, sync centre history.

AT-11 — Invitation: QR and link attribute to the right delegate

ItemDetail
Objective« Le QR code et le lien attribuent l'installation au bon délégué »
RequirementsIVT-01–IVT-04, AUTH-05
PreconditionsBazar El Amel (INTERESTED, Yacine); a test phone without the reseller app
#StepExpected result
1Yacine opens DA-16 for Bazar El AmelCode XXXX-XXXX, link https://app-preprod.hoco.dz/i/…, QR; step Invitation envoyée after sharing
2Share by WhatsAppWhatsApp opens with the prefilled French text and the link
3Scan the QR with the test phonePlay Store page of the reseller app (not installed)
4Install and openThe invitation code is prefilled at sign-up; DA-16 shows Application téléchargée within a minute
5Sign up with +213555000205The prospect record is claimed (same REV-000104); steps Compte créé, Téléphone vérifié; Yacine gets a push
6Browse the catalogCatalogue consulté
7With the app installed, open the link againThe app opens directly
8Back-office invitation funnelAttributed to Yacine

Evidence: DA-16 step history, funnel report, screenshots of the WhatsApp message.

AT-12 — First order: linked to the reseller and the source delegate

ItemDetail
Objective« La commande est liée au revendeur et au délégué source »
RequirementsORD-08, ORD-09, ORD-02, ORD-14
PreconditionsBazar El Amel's account validated (after AT-11)
#StepExpected result
1Yacine opens DA-17, chooses products of the three brands, quantities, addressRe-priced at the reseller's customer type; same controls as a normal order
2« Demander la confirmation »Order PENDING, AWAITING_RESELLER, channel DELEGATE_ASSISTED, source delegate Yacine
3Reseller phonePush and SMS; RA-23 shows the lines and totals
4Reseller confirmsSUBMITTED; the order enters the « Commandes à confirmer » queue; Yacine notified
5Nadia confirms on BO-41VALIDATED; flagged Première commande; ResellerStatus FIRST_ORDER
6Reports: first orders by delegate, Yacine's performance, the invitation funnelYacine +1 everywhere; funnel step Première commande

Evidence: BO-39 (channel, source delegate, first-order flag); report extracts.

AT-13 — Visit report: saved, visible, triggers the follow-up

ItemDetail
Objective« Le rapport est enregistré, consultable et déclenche la relance »
RequirementsFLD-10, CRM-07, CRM-08
#StepExpected result
1During S2, fill the report: person met Gérant, interest Élevé, products N32 and J101, promotion -15 % câbles, issue Prix concurrent, next action Relance téléphonique at D+2Saved; the visit can end
2Back-office reseller 360° BO-11The report on the timeline with all fields
3BO-14 and DA-19A task Relance téléphonique due D+2, assigned to Yacine
4On the due date at 08:00 (or with the due date set to D for the test)Morning digest push « Vos relances du jour »
5Complete the task with an outcomeDONE; an interaction on the timeline

Evidence: BO-11 timeline, task record, push screenshot.

AT-14 — Permissions: no access to unauthorised functions

ItemDetail
Objective« Un utilisateur ne peut pas accéder aux fonctions non autorisées »
RequirementsACL-01–ACL-05, AUD-01
#StepExpected result
1Rachid signs in to the back-officeNavigation shows only his modules; the finance URL typed by hand shows « Accès refusé »
2With Rachid's session call admin.payments.list403 PERMISSION_DENIED
3Mourad tries to confirm an orderNo button; the API answers 403
4Sofiane opens a productNo purchase price field; the API response has no purchase price
5Lina removes orders.validate from the commercial admin roleNadia's confirm button disappears after refresh; the API refuses; the journal records PERMISSION_CHANGE; restore it
6A delegate token calls /admin/orders; a reseller token calls /delegate/home403
7Attach the permission-sweep report of SRV-28Every route has a declared rule

Evidence: screenshots, API responses, journal rows, sweep report.

AT-15 — Offline: pending field data syncs when the network returns

ItemDetail
Objective« Les données terrain en attente se synchronisent après retour du réseau »
RequirementsSYN-03–SYN-06
#StepExpected result
1Start the tour online, then switch to airplane modeThe tour, visits and points of sale stay available
2Full visit at S1 (check-in works on GPS), checklist, note, two photos, report, end; create a prospectEach action saved locally; DA-27 shows the pending count
3Kill the app and reopen itPending items still there
4Network backItems replay in order; « Synchronisé » within a minute; photos uploaded
5Back-officeThe visit with occurredAt (device time) and a later receivedAt; no duplicate
6Cut the network in the middle of a sync, then restore itNo duplicate; the queue resumes
7While offline, Nadia edits the same prospect; the delegate edits it tooThe conflict appears in the sync centre with an explanation

Evidence: sync centre screenshots before and after, back-office visit record, server log of the batch (requestId).

Complementary V1 scenarios

AT-16 — Account claim without duplicate

Requirements: AUTH-05, CRM-03. Preconditions: Accessoires Nour created by Yacine in AT-10.

#StepExpected result
1Sign up in the reseller app with +213555000204, no invitation code, declare DétailAfter the code, the existing record is claimed: same REV- number, visits and notes kept, delegate Yacine kept
2Enter a different store name at sign-upThe validation queue shows the difference for Nadia to keep or update
3Back-officeOne record; timeline « Compte créé par le revendeur »

AT-17 — Credit check blocking and approval

Requirements: FIN-05, ORD-02, D-04. Preconditions: El Wafa available credit 50 000,00 DA.

#StepExpected result
1Policy BLOCK: El Wafa checks out 62 000,00 DA with CréditRefused, « Crédit disponible : 50 000,00 DA »; paying on delivery works
2Lina switches the policy to REQUIRE_APPROVAL; same checkoutOrder PENDING with the credit control failed, in the queue
3Amel confirms with an override and a reasonVALIDATED; journal OVERRIDE with Amel and the reason
4Bahia (limit 0) opens the payment methodsCrédit not offered

AT-18 — Assisted order expiry

Requirements: ORD-08, D-23.

#StepExpected result
1Lina sets the assisted-order delay to 1 hour; Yacine sends an assisted order for El WafaAWAITING_RESELLER, expiry shown on RA-23
2Wait for the expiry (job every 15 minutes)Confirmation EXPIRED, order CANCELLED with « Délai de confirmation expiré »; Yacine pushed; reseller inbox entry
3Reseller tries to confirmRefused (409 ASSISTED_ORDER_EXPIRED); the confirm button is gone
4With the 72-hour default, a seeded order created 49 hours agoReminder push 24 hours before expiry; restore the setting

AT-19 — Controlled order modification with history

Requirements: ORD-05, ORD-06, AUD-02.

#StepExpected result
1Nadia changes N32 from 10 to 8 on a submitted order, reason Quantité disponible limitée, and removes another lineTotals recomputed; controls re-run
2Reseller app (open)Order updated live; push « Commande modifiée » with the new total
3BO-39 historyChange with before/after, user, time, reason
4Reseller tries to edit the linesNot possible — only cancel while allowed

AT-20 — Stock override with permission

Requirements: STK-08, ACL-02.

#StepExpected result
1A reseller orders ACEFAST T6 × 12 (available 8)Checkout refused (STOCK_INSUFFICIENT) — or, for a back-office order on behalf, the order stops with the stock control failed
2Nadia (no stock.validate) tries to confirm the back-office orderRefused with the stock message
3Rachid confirms with an override and a reasonVALIDATED; available −4 shown in red on BO-33; journal OVERRIDE

AT-21 — Payment declaration and verification

Requirements: FIN-03, FIN-04, D-26.

#StepExpected result
1El Wafa declares a BaridiMob payment of 50 000,00 DA with a screenshot and a referencePENDING_VERIFICATION, PAY-…; available credit unchanged
2Amel opens it on BO-45Proof opens through a link that stops working after 5 minutes
3Amel confirms and allocates it to FAC-2026-000090Invoice Partiellement payée, balance 100 000,00 DA; reseller pushed; RA-29 shows the new available credit
4A second declaration with the same referenceDuplicate-reference warning; Amel rejects with a reason; reseller pushed

AT-22 — A reseller never sees another reseller's prices or data

Requirements: PRC-05, ACL-03, SEC-04.

#StepExpected result
1El Wafa shares the product link of N32; Bahia opens itBahia sees her own détail price (1 785,00 DA), not El Wafa's
2With Bahia's token, request El Wafa's order, invoice PDF link and return404 NOT_FOUND for each
3Tamper with an order id in the reseller web URL« Introuvable » page

AT-23 — A delegate never sees an out-of-zone reseller

Requirements: ACL-03.

#StepExpected result
1Yacine searches Alger Mobile Store by name and phoneNo result
2Direct API call for its record and orders; an assisted order for it404
3Nadia assigns it to Yacine, then removes the assignmentIt appears after the next sync, then disappears and its local copy is purged

AT-24 — Tour closing blocked until synced

Requirements: FLD-12, SYN-06.

#StepExpected result
1Offline, finish a visit; leave one stop without statusThe closing preview lists « 1 élément non synchronisé » and the stop without reason; « Terminer la tournée » unavailable
2Give the reason, reconnectSync completes; closing allowed
3Call the closing API with a stop still planned409 TOUR_CLOSING_BLOCKED with the blocking items

AT-25 — Tour reopened by the back-office

Requirements: FLD-12, AUD-01.

#StepExpected result
1Sofiane (no field.validate) opens the closed tourNo Réouvrir action; the API answers 403
2Nadia reopens it with a reasonTour back in progress; previous final report kept as a version; Yacine pushed; journal entry
3Yacine completes the missing item and closes againCOMPLETED; indicators recomputed

AT-26 — Import with an error report

Requirements: ADM-06, CAT-06.

#StepExpected result
1Import a 50-row products file with 3 errors (missing brand, wrong EAN-13 checksum, negative price) and one warning (super-gros above détail)Dry-run report: 47 valid, 3 errors with row numbers and messages, 1 warning
2Download the error rowsA file with only the 3 rows and an error column
3Apply47 products created or updated with their three prices and attributes; import.finished notification; journal IMPORT
4Apply the same file again0 created, 47 unchanged (idempotent)
5Import resellers with a duplicate phone and one without customer typeBoth rows rejected with explicit reasons

AT-27 — Export permission and traceability

Requirements: ANA-05, ACL-02, AUD-01.

#StepExpected result
1Sofiane on the resellers listNo export button; the API answers 403
2Nadia exports the filtered list to XLSXJob queued then done; « Export prêt »; the file opens in French Excel with correct accents and amounts
3Another user requests the download linkRefused
4JournalEXPORT with filters and row count
5A seeded export older than 7 daysExpiré, file gone

AT-28 — Forced app update

Requirements: ADM-07, AUTH-09.

#StepExpected result
1Lina sets the reseller app's latest version above the installed oneA dismissible update banner
2She sets the minimum above the installed versionForced-update screen RA-36 with the store link; API calls answer 426 UPGRADE_REQUIRED
3Delegate app with offline actions pending, same changeForced update shown; after updating, the pending actions are still there and sync
4Maintenance mode onMaintenance screen in both apps; the delegate keeps working offline

AT-29 — Notification deep links

Requirements: NOT-01, NOT-02; matrix in notifications.

#StepExpected result
1App killed: tap the push « Commande confirmée »The app opens on that order (RA-22)
2App in background, then in foregroundSame order; in the foreground an in-app banner instead of a system notification
3Tap from the inboxSame destination; read state synced
4Delegate: push « Tournée modifiée »Opens the tour (DA-06)
5Notification for another account on a shared phone« Cette notification concerne un autre compte » and nothing else
6Unknown route (older app version)The inbox opens

AT-30 — Live back-office (SSE)

Requirements: SYN-07, FLD-13.

#StepExpected result
1BO-41 open; a reseller checks outNew row within 5 seconds, highlighted
2Another staff member confirms an orderThe row leaves the queue on every open screen
3A delegate checks inBO-06 marker and BO-23 progress update
4Disconnect the back-office computer for 30 seconds, then reconnectMissed events replayed, no duplicate
5Rachid's browser event streamNo order events he is not allowed to see

AT-31 — Arabic and RTL readiness smoke test

Requirements: NFR-06; rules in i18n.

#StepExpected result
1Enable the prepared ar locale on pre-production builds (RA, DA, BO, RW)Layout mirrored: navigation, back arrows and chevrons on the right side
2Ten key screens (home, catalog with filters, product, cart, order tracking, delegate home, visit, back-office queue, order detail, settings)No clipped or overlapping text; untranslated strings fall back to French, never raw keys
3Order numbers, phones and prices inside Arabic textDisplayed left-to-right correctly, Latin digits
4Play, check and brand iconsNot mirrored
5API error with Accept-Language: arArabic message

AT-32 — Suspended and disabled accounts

Requirements: AUTH-02, AUTH-08, SEC-06.

#StepExpected result
1Lina suspends Yacine while he is signed inHis next call fails; the app shows « Compte suspendu » with the contact; SMS received
2Yacine tries to sign inRefused with the same explicit message
3Back-officeHis tours, visits and journal entries intact and attributed
4Reactivate, then disableAccess restored, then impossible; history still intact; the back-office warns about his assigned resellers

AT-33 — One-time codes, lockout, password reset

Requirements: AUTH-04, AUTH-07, SEC-02.

#StepExpected result
1Ask for a code twice within 60 secondsSecond request refused with the countdown
2Sixth code within an hourRefused (RATE_LIMITED)
3Use a code after 5 minutes; then 5 wrong codesExpired; then « Trop de tentatives »
45 wrong passwords15-minute lockout with an explicit message
5Reset the password by codeOther sessions signed out; SMS « mot de passe modifié »; the old password fails

AT-34 — Idempotent checkout

Requirements: ORD-03, SYN-05.

#StepExpected result
1Double-tap « Valider la commande »One order
2Through a proxy, drop the checkout response; the app retriesSame order returned with Idempotent-Replayed: true; one order in the back-office
3Script: same Idempotency-Key, different body409 IDEMPOTENCY_KEY_REUSED

AT-35 — Cancellation rules and automatic restock

Requirements: ORD-10, STK-03.

#StepExpected result
1Reseller cancels a SUBMITTED order with a reasonCANCELLED; staff notified; no stock movement (nothing reserved yet)
2After confirmation (VALIDATED)No cancel button for the reseller; the API answers 409 ORDER_TRANSITION_NOT_ALLOWED
3Nadia cancels a confirmed order (reserved 10) with a reasonReserved quantities return to available automatically (RESERVATION_RELEASE); reseller notified live and by push
4Try to cancel a shipped orderRefused — only a return is possible (AT-46)

AT-36 — Visit rules: mandatory photos, locked visit, unlock

Requirements: FLD-08, FLD-09.

#StepExpected result
1End a Prospection visit without photo or reportVISIT_REQUIREMENTS_NOT_MET listing what is missing
2Edit a finished visitRead-only (VISIT_LOCKED)
3Nadia unlocks it with a reasonEditable for 24 hours; journal entry; locks again at the next end
4Non réalisée without a reasonNot possible

AT-37 — Performance smoke test

Requirements: NFR-01; thresholds in performance.

#StepExpected result
1Reference phone, 4G-DZ conditions: cold start to home, 5 runsMedian ≤ 3 s, no run above 4 s
2Search and combined filters, 5 runsp90 ≤ 3 s to the first results
3Checkout, 5 runs≤ 2 s to the confirmation
4Back-office queue and orders list with filtersRendered in ≤ 2 s
5Attach the load-test report of SRV-28p95 reads under 300 ms and writes under 800 ms at 50 concurrent users

AT-38 — Guest browsing without prices

Requirements: AUTH-10, PRC-02; screen RA-41.

#StepExpected result
1Fresh install, skip sign-in (« Découvrir le catalogue »); same on the reseller web without signing inHome, catalog, product pages and promotions open
2Open HOCO N32 30WNo price anywhere; the lock « Créez un compte pour voir les prix »
3Tap « Ajouter au panier »Sign-up prompt; nothing added
4FiltersNo price-range filter for guests; other filters work
5API catalog calls without a sessionprice: null, availability only
6Sign up from the lockAfter sign-up the prices follow D-18

AT-39 — Correct price per customer type

Requirements: PRC-01, PRC-02, AUTH-11.

#StepExpected result
1Alger Mobile Store (SUPER_GROS), El Wafa (DEMI_GROS), Bahia (DETAIL) open HOCO N32 30W1 547,00 · 1 666,00 · 1 785,00 DA TTC respectively
2Each adds 10 to the cartLine totals 15 470,00 · 16 660,00 · 17 850,00 DA TTC; HT and VAT consistent on the order and the invoice
3Promotion -15 % on BX51 for OranApplied on top of each type's price (El Wafa 392,70 → 333,80 DA TTC)
4Nadia changes Bahia's type to Demi-grosJournal entry; Bahia notified « Vos tarifs ont changé »; her cart re-priced at the next read; submitted orders keep their prices
5Bahia tries to change her type in her profileNot editable — « Contactez HOCO »

AT-40 — Advanced filters with facets

Requirements: CAT-12, CAT-13; catalog.facets.

#StepExpected result
1Category CâblesSub-categories, brands and attributes (connector, length, colour) with counts
2Connector USB-C→USB-C + length 1 m + brand BOROFONEBX51 only; counts of the other values updated
3Add En promotion and a price range (signed in)Results and counts consistent; the range uses the user's own prices
4Compare facet counts with the number of resultsEqual for every value tried
5Back-office: Rachid adds the value 2 m to the length attribute and sets it on a variant (BO-71)The new value appears in the filter with its count
6Same filters on the reseller web sidebarSame results

AT-41 — Stock quantities never shown to resellers

Requirements: STK-07.

#StepExpected result
1Review the catalog, product, cart, order and promotion screens on the reseller app, the reseller web and the delegate app's assisted order, for a product with 8 units and one with 0Only « En stock » or « En rupture »; no number, no « Plus que … »
2Order 12 of a product with 8 unitsThe refusal does not reveal the available quantity
3Inspect the JSON responses of the reseller and delegate operations used aboveNo stock-quantity field
4Back-officeQuantities, reserved and available visible to staff with stock.view

AT-42 — Every order needs a back-office confirmation

Requirements: ORD-14, ORD-04.

#StepExpected result
1Create one order per channel: reseller app, reseller web, assisted order (confirmed by the reseller), back-office order on behalfAll four arrive in BO-41 as SUBMITTED (or PENDING when on hold), oldest first, with their control results
2Wait, then look for any automatic progressNone leaves the queue without a user
3Sofiane tries to move one to En préparationNot allowed before confirmation
4Nadia confirms eachVALIDATED, reservation made, the order enters the delivery board
5Leave one unconfirmed past the reminder threshold« Commandes en attente de confirmation » reminder to the confirmers

AT-43 — Live order status on the reseller screen

Requirements: ORD-15, SYN-07.

#StepExpected result
1Reseller app open on RA-22; Nadia confirms the orderStatus changes on screen within 5 seconds without pull-to-refresh
2Same with the reseller web open on RW-09 and the orders listBoth update live
3Every following status (preparation, ready, shipped, delivered)Live on screen and a push and an inbox entry each time
4Put the phone in airplane mode for a minute, change the status, restoreOn reconnection the screen shows the current status
5App in background during a changePush received; on opening, the screen is current

AT-44 — Regional WhatsApp number: signed in, location, picker

Requirements: SUP-05, ADM-08; support.whatsapp.

#StepExpected result
1El Wafa (wilaya 31) taps the WhatsApp buttonWhatsApp opens on +213550000301 (Ouest) with the prefilled text including the store name and REV-000101
2Alger Mobile Store (wilaya 16)+213550000302 (Centre)
3Guest in Oran, location allowedOuest number; the position is not stored (check the server data and logs)
4Guest with location refusedWilaya picker; choosing Alger gives Centre; the choice is remembered
5Picker dismissedDefault National number
6Nadia moves wilaya 31 to another region on BO-70El Wafa's button uses the new number immediately
7Out of hoursThe sheet shows the hours; WhatsApp still opens

AT-45 — After-sales claim: replacement, return, credit note, rejection

Requirements: SUP-04, FIN-08; rules in D-35.

#StepExpected result
1El Wafa opens an after-sales claim on a delivered order: 2 × N32 Produit défectueux, photosTicket AFTER_SALES TKT-… with the order lines and quantities; staff notified
2Nadia diagnoses and resolves RemplacementA free replacement order is created, enters the « Commandes à confirmer » queue and follows the normal flow; reseller notified with its number
3Second claim, resolved RetourA return RET-… is created and linked (AT-46)
4Third claim, resolved AvoirCredit note issued without physical return; finance view updated
5Fourth claim outside the warranty, resolved Refusée with a reasonTicket REJECTED; reseller notified with the reason
6Claim more units than were deliveredRefused

AT-46 — Return request: reception restocks automatically

Requirements: ORD-13, STK-03, FIN-08.

#StepExpected result
1El Wafa requests a return of 3 × BX51 from an order delivered 2 days ago (RA-40)RET-… REQUESTED; in the returns queue BO-69
2On an order delivered beyond the return windowRefused with the window
3Nadia approvesAPPROVED, then En retour; reseller notified live
4Rachid records the reception: 3 acceptedRECEIVED; physical stock +3 automatically (RETURN movement); no manual adjustment
5Credit noteIssued for the accepted lines; invoice balance reduced; return REFUNDED; reseller notified
6Reception with 1 unit damaged and not resaleableOnly the accepted units re-enter stock, per D-35

AT-47 — Backup restore drill

Requirements: NFR-02, SEC-05; restore runbook.

#StepExpected result
1Restore last night's pre-production backup into a scratch databaseCompleted, duration recorded
2Integrity checksMigration status clean; row counts and last business numbers match
3Point a test API at it and run AT-03 steps 1–5Works
4Compare the duration with the 4-hour objectiveWithin it

Requirement coverage

AreaScenarios
Accounts, access, audit (AUTH, ACL, AUD)AT-01, AT-14, AT-16, AT-22, AT-23, AT-27, AT-32, AT-33, AT-38, AT-39
Catalog, pricing, stock (CAT, PRC, STK)AT-02, AT-04, AT-20, AT-26, AT-35, AT-39, AT-40, AT-41, AT-46
Orders, delivery, finance (ORD, DLV, FIN)AT-03, AT-05, AT-12, AT-17, AT-18, AT-19, AT-21, AT-34, AT-35, AT-42, AT-43, AT-45, AT-46
Promotions, loyalty (PRM, LOY)AT-06, AT-07, AT-07a
Field, invitations (FLD, GEO, IVT, CRM)AT-08 to AT-13, AT-24, AT-25, AT-36
Support, notifications (SUP, NOT)AT-05, AT-29, AT-44, AT-45
Sync, real time (SYN)AT-15, AT-24, AT-30, AT-43
Administration (ADM)AT-26, AT-28, AT-44
Non-functional and security (NFR, SEC)AT-31, AT-32, AT-33, AT-37, AT-47

Acceptance procedure

Environments and builds

CampaignEnvironmentBuildsData
Functional campaign (QA-03)StagingLatest dev deployments; staging app builds from Firebase App DistributionRecette seed
End-to-end tests (QA-01)StagingA frozen candidate of every app; real devices of the tier-1 listRecette seed, reset before the run
Client acceptance (QA-02)Pre-productionRelease candidate vX.Y.Z-rc.N of the API, back-office and reseller web; app builds pointed at pre-production, distributed to HOCO's testersRecette seed plus HOCO's real catalog from the import rehearsal (deployment)

Who executes

RolePeopleDoes
Recette lead (HOCO)Named at the cadragePlans HOCO's sessions, decides severities with the coordinator, signs or refuses the PV
Testers (HOCO)A commercial admin, the stock, finance and delivery managers, a support agent, two pilot delegates, two or three pilot resellersExecute the scenarios of their role with the scripts of this page
Recette coordinatorAnisPrepares the environment and accounts, runs the daily triage, assigns fixes, deploys new candidates
FixersAnis (server, back-office, web), Imad (apps)Fix defects within the times below
SupportAkramAssists testers, checks the design, records evidence

Timing within the three-month frame

The three campaigns run back to back at the end of the build: the functional campaign as builds land, the end-to-end tests right after, then HOCO's acceptance, with the PV signed the working day before Production go-live. They fall over the last working days of December and the first of January:

TaskNameOwnerPhaseDatesEffortDepends on
QA-03Functional test campaign — scripted scenarios on stagingAkramP1Sun 20 Dec → Mon 21 Dec2 dDQA-04, MOB-12, DQA-05
QA-01End-to-end integration testing on stagingAnisP2Wed 23 Dec → Thu 24 Dec1.5 dSRV-28, MOB-14, QA-03, WEB-05
QA-02Client acceptance (recette) on pre-production & PVAnisP2Thu 24 Dec → Mon 28 Dec2 dQA-01

3 tasks · 5.5 d of open effort. Dates are computed — Sunday–Thursday weeks, holidays excluded.

  1. HOCO books its recette lead, testers and PV signatory at the cadrage, with a named back-up for each, because the period includes the year end.
  2. Testers receive their scenario list and accounts a week before; a 30-minute briefing opens the recette.
  3. Sessions run in parallel by role (field scenarios on site with the pilot delegates, back-office scenarios in HOCO's office, reseller scenarios on testers' phones), so the whole list fits in the planned days.
  4. One main round, a daily triage at the end of each day, fixes deployed as a new candidate overnight, re-tests of the failed steps the next morning. A Blocker found late in the recette moves go-live by the time of its fix — the levers to keep the date are in D-38.

Defect severities and fix times during the recette

SeverityDefinitionExamplesFix time during the recette
BlockerA priority scenario cannot be executed; data loss or corruption; a security breach (another user's data visible); crash at startCheckout impossible; the delegate app loses offline visits; a reseller sees another reseller's invoiceFixed and redeployed within 1 working day
CriticalA step of a priority scenario fails with no acceptable workaround; wrong amounts, stock or permissionsWrong customer-type price; stock not reserved at confirmation; live status not updatingWithin 2 working days
MajorA function fails with a workaround, or a complementary scenario failsExport failing for one report; a filter count off by oneIn the next candidate, at the latest before generalisation, per the PV reservations
MinorCosmetic, wording, alignment, minor UXTruncated label, inconsistent iconBacklog, scheduled with HOCO

Anomalies bloquantes in the cahier's sense are Blockers and Criticals. During operations the same scale maps to the support priorities P1–P4 (support model).

Defect report

Each defect carries: id, title, scenario and step (AT-12 #4), environment and build numbers (API, back-office, web, app version), device, OS or browser, account used, steps to reproduce, expected and actual result, evidence (screenshot or video, requestId of the failing call), proposed severity, status (Nouveau, Confirmé, En correction, Corrigé dans le build …, Vérifié, Fermé, Rejeté, Reporté). HOCO's testers report in a shared recette sheet; the coordinator mirrors each confirmed defect as a GitHub issue labelled recette and sev:<level> in the right repository and links it back.

Entry criteria

  1. Milestone Staging integration complete reached; the functional campaign and the end-to-end tests executed with every priority scenario passed on staging.
  2. No open Blocker or Critical from those campaigns.
  3. The release candidate deployed to pre-production; recette seed and the rehearsed catalog import loaded; accounts delivered to every tester.
  4. App builds installed on the testers' phones; the known-issues list shared.
  5. Testers briefed; the recette sheet ready.

Exit criteria

  1. AT-01 to AT-15 executed and passed (AT-07a in place of AT-07 for V1).
  2. AT-16 to AT-47 executed; at least 90 % passed; every failure classified and none Blocker or Critical.
  3. No open Blocker or Critical.
  4. Every open Major has an agreed fix date, written as a reservation in the PV.
  5. Evidence archived for every scenario.
  6. The PV signed by HOCO's authorised representative.

PV de recette template

The acceptance report is a French document signed by both parties (OPS-05).

RubriqueContenu
ProjetÉcosystème B2B HOCO — version V1
Références du cahier des chargesVersion 1.0, juillet 2026; décisions du registre appliquées
Versions recettéesTags de l'API, du back-office et du web revendeur; versions et numéros de build des applications revendeur et délégué
EnvironnementPréproduction — URLs
Période de recetteDates de début et de fin
ParticipantsHOCO : noms et fonctions; prestataire : noms et fonctions
PérimètreListe des scénarios AT-01 à AT-47 avec le résultat de chacun : Conforme, Conforme avec réserve, Non conforme, Non exécuté (motif)
AnomaliesNombre par sévérité, ouvertes et fermées; liste des anomalies ouvertes avec leur identifiant
RéservesChaque réserve : description, sévérité, engagement de correction et date
DécisionRecette prononcée · Recette prononcée avec réserves · Recette refusée (motifs)
Conditions de mise en productionCe qui doit être fait avant la mise en production (par exemple : import final, levée d'une réserve)
SignaturesReprésentant autorisé de HOCO; représentant du prestataire — nom, fonction, date, signature
AnnexesIndex des preuves, export des anomalies, jeu de données utilisé

On this page

Scenario indexTest data — the recette seedPriority scenarios (cahier §12)AT-01 — Reseller account: sign-up with customer type, validationAT-02 — Catalog: only authorised products, prices and availabilityAT-03 — Order: unique number, visible in the back-office, confirmed thereAT-04 — Stock: reservation, deduction, automatic restockAT-05 — Tracking: back-office changes live in the app and notifiedAT-06 — Promotion: only authorised products, dates and targetsAT-07 — Loyalty: points credited, debited, historised (V2)AT-07a — V1 variant: promotions only, no loyalty surfaceAT-08 — Tour: start, visits, closing with full summaryAT-09 — GPS: check-in tolerance, consented positions onlyAT-10 — Prospect: field record in the CRM without duplicateAT-11 — Invitation: QR and link attribute to the right delegateAT-12 — First order: linked to the reseller and the source delegateAT-13 — Visit report: saved, visible, triggers the follow-upAT-14 — Permissions: no access to unauthorised functionsAT-15 — Offline: pending field data syncs when the network returnsComplementary V1 scenariosAT-16 — Account claim without duplicateAT-17 — Credit check blocking and approvalAT-18 — Assisted order expiryAT-19 — Controlled order modification with historyAT-20 — Stock override with permissionAT-21 — Payment declaration and verificationAT-22 — A reseller never sees another reseller's prices or dataAT-23 — A delegate never sees an out-of-zone resellerAT-24 — Tour closing blocked until syncedAT-25 — Tour reopened by the back-officeAT-26 — Import with an error reportAT-27 — Export permission and traceabilityAT-28 — Forced app updateAT-29 — Notification deep linksAT-30 — Live back-office (SSE)AT-31 — Arabic and RTL readiness smoke testAT-32 — Suspended and disabled accountsAT-33 — One-time codes, lockout, password resetAT-34 — Idempotent checkoutAT-35 — Cancellation rules and automatic restockAT-36 — Visit rules: mandatory photos, locked visit, unlockAT-37 — Performance smoke testAT-38 — Guest browsing without pricesAT-39 — Correct price per customer typeAT-40 — Advanced filters with facetsAT-41 — Stock quantities never shown to resellersAT-42 — Every order needs a back-office confirmationAT-43 — Live order status on the reseller screenAT-44 — Regional WhatsApp number: signed in, location, pickerAT-45 — After-sales claim: replacement, return, credit note, rejectionAT-46 — Return request: reception restocks automaticallyAT-47 — Backup restore drillRequirement coverageAcceptance procedureEnvironments and buildsWho executesTiming within the three-month frameDefect severities and fix times during the recetteDefect reportEntry criteriaExit criteriaPV de recette template