Skip to content

Acceptance Criteria — Expert Call & Appointment (Find an Expert) (ECA)

User Story

As a signed-in Repaircheck web-app user who needs a vehicle appraisal I want to find a nearby appraisal expert, filter them by rating and distance, and either request a callback appointment or schedule a video call So that I can arrange an assessment of my vehicle with the right expert.

Source: RC-112 — Web App – Fix Find an Expert page (child of Epic RC-101 Web App). Grounded against the Figma screenshots in 01_Features/expert_call_appointment/screens (Home → option chooser → expert list "Experte für Fahrzeuggutachten" → filter → callback popup / booking confirmation, and the Calendly scheduling flow).

Scenario-based AC — Given / When / Then

AC ID Scenario Jira Type Criticality Given (context) When (action / trigger) Then (expected outcome) Linked TCs Status
AC-ECA-01 Choose appointment type on entering Find-an-Expert RC-112 Happy 🟠 High A signed-in user on the Home page They open the "Experte für Fahrzeuggutachten" (Find an Expert) feature A "Please choose an option" chooser offering "Schedule a video call" and "Make an appointment" is shown, with a Next action to continue TC-ECA-001 Draft
AC-ECA-02 View the list of vehicle-appraisal experts RC-112 Happy 🔴 Critical The option chooser with an option selected They proceed with Next A list of appraisal experts is shown; each card shows name, workshop, address, distance from the user, rating, and the action matching the chosen option ("Get appointment" or "Schedule a video call") TC-ECA-002, TC-ECA-003, TC-ECA-020 Draft
AC-ECA-03 Experts listed nearest-first RC-112 Alternate ⚪ Low The expert list has loaded It is displayed Experts are ordered by distance ascending (nearest first) TC-ECA-004 Draft
AC-ECA-04 Filter experts by minimum rating RC-112 Alternate 🟡 Medium The expert list with the filter panel open They select a minimum star rating (0–5) and apply The list shows only experts whose rating meets or exceeds the selected value (matched by the rating's integer part — e.g. 1.0–1.9 = 1★, 4.0–4.9 = 4★) TC-ECA-006 Draft
AC-ECA-05 Filter experts by maximum distance RC-112 Alternate 🟡 Medium The expert list with the filter panel open They set a maximum distance on the slider (0–100 km) and apply The list shows only experts within the selected distance TC-ECA-007 Draft
AC-ECA-06 Combine rating and distance filters RC-112 Alternate 🟡 Medium The filter panel open They set both a minimum rating and a maximum distance and apply Only experts satisfying both constraints are listed TC-ECA-008 Draft
AC-ECA-07 No experts match the filters (empty state) RC-112 Edge 🟡 Medium Filters applied so that no expert qualifies The filtered list is shown An empty / no-results state is shown and no expert cards are listed (assumption — see open questions) TC-ECA-009 Draft
AC-ECA-08 Request a callback via "Get appointment" RC-112 Happy 🔴 Critical The expert list in "Make an appointment" mode They tap "Get appointment" on an expert A prompt "Did you want <Expert> to contact you?" is shown, explaining the workshop will contact them to arrange the appointment, with "Yes, contact me" and "No, I will check later" TC-ECA-010 Draft
AC-ECA-09 Confirm the callback request RC-112 Happy 🔴 Critical The "Did you want <Expert> to contact you?" prompt is shown They select "Yes, contact me" The request is submitted and a "Thanks for booking your appointment" confirmation is shown (the expert will contact them), with an action to return to the expert list TC-ECA-011 Draft
AC-ECA-10 Decline the callback request RC-112 Alternate 🟡 Medium The callback prompt is shown They select "No, I will check later" The prompt closes, no request is submitted, and they return to the expert list TC-ECA-012 Draft
AC-ECA-11 Return to the expert list from confirmation RC-112 Alternate ⚪ Low The "Thanks for booking your appointment" confirmation is shown They select "Ok, Back to Specialist" They are returned to the expert list TC-ECA-013 Draft
AC-ECA-12 Schedule a video call opens Calendly in a new tab RC-112 Happy 🔴 Critical The expert list in "Schedule a video call" mode They tap "Schedule a video call" for an expert The expert's Calendly scheduling page opens in a new browser tab and the app tab is preserved TC-ECA-014 Draft
AC-ECA-13 Book a video-call slot in Calendly RC-112 Happy 🟠 High The Calendly scheduling page for the expert is open They select an available day and time, enter name and email, and confirm "Schedule Event" The appointment is booked and Calendly confirms it (web-conferencing details provided upon confirmation) TC-ECA-015 Draft
AC-ECA-14 Calendly requires name and email before booking RC-112 Negative 🟡 Medium The Calendly "Enter Details" step with a day and time chosen They attempt to "Schedule Event" with the Name or Email field empty The event is not scheduled and the missing required field(s) are indicated TC-ECA-016, TC-ECA-017 Draft
AC-ECA-15 Responsive layout on phone and tablet RC-112 Edge 🟡 Medium The Find-an-Expert flow opened in the mobile web app It is viewed on a phone and on a tablet The layout renders correctly and all cards, filters, and actions remain usable on both form factors TC-ECA-019 Draft

Business Rules (rule-based AC)

Rule ID Business Rule Jira Rationale / Source Criticality Linked TCs Status
BR-ECA-01 Each expert entry displays name, workshop, full address, distance from the user, and a star rating. RC-112 RC-112 / Figma expert list 🟡 Medium TC-ECA-002, TC-ECA-003 Draft
BR-ECA-02 The expert list can be filtered by minimum rating (0–5 stars) and by maximum distance (0–100 km). Rating is matched by its integer part (not rounded): 1.0–1.9 → 1★, 4.0–4.9 → 4★, so a "min N★" filter includes experts whose integer rating ≥ N. RC-112 Figma "Filter by" (distance + ratings) 🟡 Medium TC-ECA-006, TC-ECA-007 Draft
BR-ECA-03 The distance shown for each expert is the map distance from the user's current location to the workshop's location. RC-112 Stakeholder decision (2026-07-05) — distance measured on map from current user point to workshop 🟡 Medium TC-ECA-005 Draft
BR-ECA-04 "Get appointment" (Make an appointment) and "Schedule a video call" (Schedule a call) are two separate flows: "Get appointment" submits a callback request; "Schedule a video call" opens Calendly. They are never equivalent. RC-112 Stakeholder decision (2026-07-05) — two distinct flows 🔴 Critical TC-ECA-003, TC-ECA-014 Draft
BR-ECA-05 "Schedule a video call" / "Schedule a call" opens the expert's own Calendly scheduling page in a new browser tab; the app tab is preserved. RC-112 RC-112 + stakeholder (2026-07-05) — per-expert Calendly link 🟠 High TC-ECA-014 Draft
BR-ECA-06 A Calendly video-call appointment has a fixed duration of 1 hour; web-conferencing details are provided upon confirmation. RC-112 Figma Calendly ("1 hr") ⚪ Low TC-ECA-015 Draft
BR-ECA-07 Calendly booking requires Name and Email (both mandatory) before "Schedule Event" can complete. RC-112 Figma Calendly "Enter Details" 🟡 Medium TC-ECA-016, TC-ECA-017, TC-ECA-018 Draft
BR-ECA-08 "Make an appointment" / "Get appointment" submits a callback request — the workshop contacts the user to arrange the appointment; it does not book a fixed slot directly. RC-112 Figma callback popup + confirmation 🟠 High TC-ECA-010, TC-ECA-011 Draft

Traceability

Epic RC-101 (Web App)
  └─ RC-112 (Fix Find an Expert page)  ──▶  AC-ECA-01…15 / BR-ECA-01…08  ──▶  TC-ECA-NNN (via /gen-tc)
  • Upward: header SRS ref + each row's Jira column link the AC to RC-112 (the Find-an-Expert child of Epic RC-101).
  • Downward: Linked TCs will list the test cases in 01_Features/expert_call_appointment/expert_call_appointment_tc.md that verify each AC (filled by /gen-tc).
  • Coverage rule: every 🔴 Critical / 🟠 High AC and every business rule must have ≥1 Linked TC once TCs exist.

Open Questions / Assumptions (BA — confirm with stakeholders before TC generation)

  1. ✅ DECIDED (2026-07-05) — "Get appointment" and "Schedule a call" are two separate flows. "Get appointment" (Make an appointment) submits a callback request (workshop contacts the user); "Schedule a video call" (Schedule a call) opens Calendly. They are not equivalent — RC-112's text that both open Calendly is superseded. Captured in AC-ECA-08/09/12 and BR-ECA-04.
  2. ✅ DECIDED (2026-07-05) — Per-expert Calendly link. Each expert/workshop has its own Calendly scheduling page (not one shared alextyl/jaekelgmbh link). Captured in BR-ECA-05 / AC-ECA-12.
  3. ✅ DECIDED (2026-07-05) — Distance = map distance from user's current location to the workshop. The distance on each expert card is measured on the map from the user's current point to the workshop's location. Captured in BR-ECA-03. Follow-up: confirm the fallback when the user denies location permission (no distance? prompt? default region?).
  4. ✅ DECIDED (2026-07-05) — Lawyer page (RC-116) stays separate. RC-116 ("Fix Lawyer page" — Unfall Rechtsberatung) is not folded into this feature; it will get its own AC spec.
  5. Empty-state UI (AC-ECA-07). The design does not show a "no experts match" state. Confirm the expected empty-state message/behaviour when filters exclude every expert.
  6. Option chooser gating (AC-ECA-01). Confirm whether "Next" is disabled until an option ("Schedule a video call" / "Make an appointment") is selected, and whether one is pre-selected by default.
  7. Filter semantics. Confirmed: rating filter = minimum rating (≥ selected stars), range 0–5, matched by the rating's integer part (1.0–1.9 → 1★, 4.0–4.9 → 4★ — not rounded); distance filter = maximum distance (≤ selected km), range 0–100 km. Follow-up: confirm whether filters apply live or on an explicit "Apply".
  8. Callback request persistence (AC-ECA-09). Confirm what "Yes, contact me" actually does server-side (creates a request record? notifies the workshop?) and whether the user can see/track the request afterward.
  9. Video-call duration & timezone (BR-ECA-06). Calendly shows a fixed 1-hour slot and a timezone selector. Confirm the duration is fixed at 1 hour and how timezone is defaulted for German users.
  10. SRS text. 01_Features/expert_call_appointment/expert_call_appointment_srs.md exists but holds screenshots only — the written requirement text is still missing.