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'sJiracolumn link the AC toRC-112(the Find-an-Expert child of EpicRC-101). - Downward:
Linked TCswill list the test cases in01_Features/expert_call_appointment/expert_call_appointment_tc.mdthat 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)¶
- ✅ 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.
- ✅ DECIDED (2026-07-05) — Per-expert Calendly link. Each expert/workshop has its own Calendly scheduling page (not one shared
alextyl/jaekelgmbhlink). Captured in BR-ECA-05 / AC-ECA-12. - ✅ 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?).
- ✅ 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.
- 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.
- 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.
- 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".
- 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.
- 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.
- SRS text.
01_Features/expert_call_appointment/expert_call_appointment_srs.mdexists but holds screenshots only — the written requirement text is still missing.