Support Cases
Internal support ticketing system for tracking customer issues, service requests, and SOC operational support with priority-based routing.
Overview
A SOCaaS platform must provide a structured way for customers and internal teams to report issues, request changes, and track resolution. The Support Cases module replaces ad-hoc email and chat-based support with a searchable, filterable case management system. Cases have defined statuses, priorities, and assignees, enabling the SOC team to triage and track support requests alongside security operations.
What Was Proposed
- Support case listing with status and priority filtering
- Case creation form with subject, category, priority, and description
- Case detail view for individual case tracking
- Priority levels: Critical, High, Medium, Low
- Status workflow: Open, In Progress, Resolved, Closed
- Assignee tracking for case ownership
- Search functionality across cases
What's Built Complete
- Support Cases listing page with full table (Case ID, Subject, Status, Priority, Created, Updated, Assignee)
- Status filter dropdown: All, Open, In Progress, Resolved, Closed
- Priority filter dropdown: All, Critical, High, Medium, Low
- Full-text search across case IDs and subjects
- Color-coded status badges: Open (blue), In Progress (orange), Resolved (green), Closed (grey)
- Color-coded priority text: Critical (red), High (orange), Medium (yellow), Low (grey)
- Case ID links to individual case detail page (
/support-cases/{id}) - "New Support Case" CTA button linking to creation form
- Empty state with icon when no cases match filters
- New case creation form (
/support-cases/new) with: Subject input, Category selector (Bug, Feature Request, Security Issue, Access Request), Priority button group, Description textarea - Success confirmation after submission with "View All Cases" and "Create Another" options
- Subject pre-fill via URL query parameter (
?subject=...) for marketplace integration - API integration with fallback to hardcoded demo cases
Architecture
Three-Page Structure
The support cases module spans three frontend pages: the listing page (/support-cases), the case detail page (/support-cases/[id]), and the new case form (/support-cases/new). The listing fetches from /api/v1/support/cases/ with client-side filtering. The new case form supports subject pre-fill from URL parameters, enabling the Marketplace module to link directly with pre-populated subjects.
Frontend Pages API
+---------------------------+ +--------------------+
| /support-cases |-->| GET /api/v1/support|
| List + filter + search | | /cases/ |
+---------------------------+ +--------------------+
| /support-cases/new |-->| POST /api/v1/support|
| Create form | | /cases/ |
| ?subject= prefill | +--------------------+
+---------------------------+
| /support-cases/[id] |-->| GET /api/v1/support|
| Case detail view | | /cases/{id} |
+---------------------------+ +--------------------+
Routing
/support-cases/new
/support-cases/[id]
Prerequisites
- Authenticated user (any role)
- Support API router registered (optional -- falls back to demo data)
Data Model
Support Case
| Field | Type | Description |
|---|---|---|
| id | string | Case identifier (e.g., SC-1042) |
| subject | string | Brief summary of the issue |
| status | enum | Open | In Progress | Resolved | Closed |
| priority | enum | Critical | High | Medium | Low |
| created | date | Case creation date |
| updated | date | Last update date |
| assignee | string | Assigned team member name |
New Case Form Fields
| Field | Type | Required | Description |
|---|---|---|---|
| subject | string | Yes | Brief issue summary (pre-fillable via URL) |
| category | enum | Yes | Bug | Feature Request | Security Issue | Access Request |
| priority | enum | Yes | Low | Medium | High | Critical |
| description | text | Yes | Detailed issue description |
UI Description
Listing Page (/support-cases)
Header with headphones icon, "Support Cases" title, and orange "New Support Case" button. Below, a filter bar with status dropdown, priority dropdown, and search input. The main content is a bordered table with 7 columns. Case IDs are orange links. Status badges use color-coded rounded pills. Priority text is color-coded. Empty state shows inbox icon with "No support cases found."
New Case Form (/support-cases/new)
Back link to listing, "New Support Case" header with lifebuoy icon. Form fields: Subject (text input), Category (select), Priority (4-button group with color-coded borders), Description (6-row textarea). Submit button with send icon. Validation error banner appears if required fields are empty. Success state shows checkmark icon, "Case Submitted" message, and two action buttons.
Case Detail (/support-cases/[id])
Individual case view showing full case details, timeline, and comments. Accessed by clicking a Case ID link from the listing.
Source Files
| Component | Path |
|---|---|
| Listing Page | platform/frontend/src/app/support-cases/page.tsx |
| New Case Form | platform/frontend/src/app/support-cases/new/page.tsx |
| Case Detail | platform/frontend/src/app/support-cases/[id]/page.tsx |