Skip to content

Support requests / FAQ management

Purpose

Evospin does not have an in-app support-ticketing screen. Customer support runs on Zendesk (out-of-band). The closest in-admin surface is the FAQ Management screen, where ops curates the public-site help-center articles. This doc covers FAQ Management plus a stub for the missing ticketing surface.

Audience

Customer support (FAQ curator), engineering (FAQ deploys go through this screen, not a CMS).

Path in admin-fe

Screen URL Page
FAQ Management /faq-management ebit-admin-fe/src/app/(dashboard)/faq-management/page.tsx
Support tickets (none) {{NOT IMPLEMENTED}} — see Cross-links for Zendesk integration

Backing API endpoints

Endpoint Source
GET /faq (player-side; admin reads same) apps/api/src/faq/faq.controller.ts
POST /admin/faq (create) apps/api/src/faq/admin.faq.controller.ts:17
PUT /admin/faq (update) apps/api/src/faq/admin.faq.controller.ts:23
DELETE /admin/faq (soft-delete) apps/api/src/faq/admin.faq.controller.ts:32

Frontend wiring: ebit-admin-fe/src/queries/faq/.

Key actions

Action Required permission API call DB tables touched Audit-logged?
List FAQ entries (public; same as player) GET /faq Faq no (not behind admin guard)
Create FAQ entry faq.edit POST /admin/faq Faq yes
Update FAQ entry faq.edit PUT /admin/faq Faq yes
Delete FAQ entry faq.edit DELETE /admin/faq Faq.deletedAt yes

Filters and views

  • Locale — single-locale model (admin is English; player site shows German via next-intl messages, separate from FAQ rows).
  • Category — payments / kyc / account / games / general.
  • Status — published / draft.
  • Search — full-text on question + answer.

Common workflows

  1. Add a new FAQ entry after a known issue. CS / engineering writes a "Why is my deposit pending?" entry. POST /admin/faq with category=payments.
  2. Update an FAQ on policy change. Compliance changes withdrawal limits. FAQ is updated to match. PUT /admin/faq.
  3. Retire an outdated FAQ. Soft-delete via DELETE /admin/faq. Player site stops showing it on next refresh.

Edge cases / gotchas

  • No localization in DB. FAQ rows are single-language. Player-site next-intl does NOT translate FAQ — operator manually maintains separate rows per language if needed (cf. ebit-fe/messages/de.json).
  • No staging/preview. Save = live.
  • No "what does the player see right now" preview in admin-fe.
  • No support-ticket integration. Zendesk is independent; admin-fe does not surface tickets, ticket counts, or SLAs. Operations runs Zendesk in a separate browser tab.
  • No template editor for ops emails. Customer-comms templates ride handover/customer-comms/ as docs, not as DB rows.

Support ticketing — {{NOT IMPLEMENTED}}

Dropbet's reference docs include a "Support tickets" admin screen. Evospin does NOT have one.

Workaround. Customer support runs Zendesk; tickets carry the player's email. CS:

  1. Receives ticket in Zendesk.
  2. Searches player by email in users-management.md.
  3. Investigates / acts via the user profile drawer.
  4. Replies in Zendesk; resolution is recorded in Zendesk, not in Evospin.

If the customer engagement is significant (chargeback, fraud), CS leaves a note via POST /admin/user-notes (see user-profile.md → Notes tab). The note becomes visible to other operators viewing the same player.

Sequence — adding a new FAQ entry

sequenceDiagram
    actor cs as CS Lead
    participant admin-fe
    participant api
    participant pg as Postgres
    cs->>admin-fe: open /faq-management, click Create
    cs->>admin-fe: fill { category=payments, question, answer }
    admin-fe->>api: POST /admin/faq { ... }
    api->>api: PermissionGuard('faq.edit')
    api->>pg: INSERT Faq
    api->>pg: INSERT AdminActionLog
    api-->>admin-fe: FaqDto
    admin-fe-->>cs: row added
    Note over admin-fe: player site /help reflects on next fetch