CRM · Customer action log (dormant)
A per-customer log of interactions — calls, visits, emails, forms (manual) and automatic entries such as marketing info sent, reservations and rejections — each with a scheduled and a done date, a title and notes, attributed to a staff member. The code is complete but no template renders it.
| Area | CRM |
| Routes | (not mounted) |
| Centre modules | crm |
| Staff levels | n/a |
| Models | action · staff-member · user |
| UI label | actions.new / actions.edit |
| Coverage | 3 use cases · 1 happy · 3 failure |
Known issues (2)
- 🟠 Medium — 19 translation keys used by the code do not exist
- ⚪ Info — Dormant and dead surface
Missing translations
These keys are used on this screen but do not exist in
translations.json, so users see the raw key:
actions.edit
How it works
row-actions supports create (pre-filled with now, the current staff member and the customer), edit, save (tracking USER_ACTION_LOGGED) and delete; the action model distinguishes scheduled from done (isDone). However, form-user/row-actions is not referenced from any template, so the feature is unreachable. Listed so it is not mistaken for missing — it is built and switched off.
Use cases
Why someone opens this (3)
- Recording that a customer was called about a lost item.
- Scheduling a follow-up visit and marking it done later.
- Seeing the automatic history of marketing sent to a customer.
Path map
flowchart LR F(["Customer action log dormant"]):::feat F --> H1["If re-mounted: action logged"]:::ok F -.-> X1["Unreachable"]:::bad F -.-> X2["If re-mounted: save fails"]:::bad F -.-> X3["Raw translation key on screen"]:::bad classDef feat fill:#157068,stroke:#157068,color:#ffffff,font-weight:bold classDef ok fill:#e3f1ea,stroke:#0d6b42,color:#0d4a2e classDef bad fill:#f7e6e2,stroke:#9a2d1c,color:#6e1f13
Happy paths
If re-mounted: action logged
- Operator opens a customer and creates an action of type call.
- Fills title and notes and saves; the action appears in the customer’s list.
Failure paths
Unreachable
Cause — Component not used by any template.
What happens — No user can reach it today.
If re-mounted: save fails
Cause — API error.
What happens —
saveActionhas no.catch(); the modal stays open with no message.
Raw translation key on screen
Cause — The code references
actions.editbut the key does not exist in translations.json.What happens — ember-intl renders the missing key (or its missing-message placeholder) instead of text — visible to every user of this screen until the key is added.
QA checklist
Tick these off while regression-testing this feature. The boxes are plain Markdown, so progress is visible in git diffs.
- ✅ If re-mounted: action logged
- ⛔ Unreachable
- ⛔ If re-mounted: save fails
- ⛔ Raw translation key on screen
Implementation
app/components/form-user/row-actions.jsapp/templates/components/form-user/row-actions.hbsapp/components/form-action.jsapp/models/action.jsapp/enums/action-types.jsapp/services/user-actions.js
Translation keys (10)
Key English actions.newNew action actions.edit⚠️ missing actions.callCall actions.visitVisit actions.emailactions.formForm actions.sent_marketing_infoSent marketing info actions.reservationReservation actions.rejectionRejection actions.datetimeDate
Related
- Same area — Customer list & filtering · Customer create & edit · Customer deletion with unsubscribe notice · Customer CSV export with column picker · Customer CSV import · Children CSV import · AI natural-language customer filter · Save current filters as a segment · Segment list, refresh & export · Segment builder with automatic tag actions · Segment categories · User tags (user types) · Customer receipts tab & ticket-stamp generation · Customer loyalty — raffle tickets · Customer loyalty — cards & stamps · Customer loyalty — rewards · Customer loyalty — coupon exchanges · Customer children (dependants) · Receipt verification queue · Store list, filters & exports · Store create & edit · Store CSV import · Store labels (store types)
- Shares data with — Staff login · Password reset request · Password update from reset link · Change own password · Intranet communications (threads, confirmations, authorisations) · Staff member list, deletion & restore · Staff member editor (levels, scope, API token) · Role & module permission layer
Generated from doc/feature-inventory.json · id crm-customer-action-log · commit 276788ca6