Skip to content

feat(admin): Settings/PublicTickets.vue for guest policy (Task 6.3)#32

Open
mpge wants to merge 2 commits intofeat/public-ticket-systemfrom
feat/admin-public-tickets-settings
Open

feat(admin): Settings/PublicTickets.vue for guest policy (Task 6.3)#32
mpge wants to merge 2 commits intofeat/public-ticket-systemfrom
feat/admin-public-tickets-settings

Conversation

@mpge
Copy link
Copy Markdown
Member

@mpge mpge commented Apr 24, 2026

Summary

Closes plan Task 6.3: a frontend settings page for configuring the public-ticket guest policy at runtime.

Form covers all three modes:

  • Unassigned — tickets created with no requester; Contact row still carries the guest email for replies and dedupe.
  • Single shared guest user — reveals a number input for the guest user id; all public tickets are owned by that pre-created host-app user.
  • Prompt signup — reveals an optional text input for a signup URL template (supports {{email}} interpolation). The outbound-email listener uses this to build the invite link.

Save button PUTs to `route('escalated.admin.settings.public-tickets.update')`. Host adapters (Laravel, NestJS, Rails, etc.) register the named route; the shared `SettingsService` persists the values so admins can change the policy at runtime without a redeploy.

Visual style

Matches `Admin/Settings/CsatSettings.vue` — same border tokens, accent color, hover states. Fits in alongside the other per-feature settings pages (CSAT, Email, SSO, Data Retention, 2FA).

Stacked PR

Based on `feat/public-ticket-system` — sits alongside the other public-ticket work already committed to that branch.

Test plan

  • Lint green: `npx eslint src/pages/Admin/Settings/PublicTickets.vue` — passes locally.
  • Visual smoke test in Storybook or a host app once route is wired.

mpge added 2 commits April 24, 2026 06:46
Form with radio picker for guest policy mode (unassigned / guest_user /
prompt_signup), conditional number input for the shared guest-user id,
and conditional text input for the signup URL template. PUTs to
escalated.admin.settings.public-tickets.update — host adapters (Laravel,
NestJS, Rails, etc.) register the route and the shared SettingsService
persists the values so admins can change the policy at runtime without
a redeploy.

Marks Task 6.3 complete in the plan. The backend side (SettingsService +
widget controller reading from it) landed in previous iterations.
Admins toggling Guest Tickets on now see a "Configure guest policy →"
link below the switch that routes to the new per-feature settings
page. Without this, admins would have no way to find the page.

The link only renders when guest tickets are enabled, so it stays out
of the way for hosts that don't use the public widget / inbound
email flows.
mpge added a commit that referenced this pull request Apr 24, 2026
Updates the status doc to reflect everything shipped since the
original append:

- workflows.md (#9) description now matches what the doc actually
  says after 11 rounds of factual-error corrections (5 trigger events
  not 14, real condition model, unit divergence called out, etc.)
- public-tickets.md (#10) description matches after 10 rounds of
  corrections (4-priority chain, real widget snippet, provider
  coverage split, etc.)
- New 'Infrastructure fixes surfaced along the way' section
  documents the Phoenix CI config fix (#46 — lint.yml was broken,
  never ran on any PR since repo creation), the .NET PR #32 accidental
  stacking rebase, and the three earlier settings-PR lint fixes
  (Django / Adonis / Symfony).

Noted that the 20+ factual corrections in the docs were caught
via self-review, not user-reported — keeping that visible in the
status doc so future iterations know the docs were hand-audited
against source, not just generated.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant