Skip to content

URD: Helpdesk

ModuleCORE-13Versionv0.3
StatusIn-progressDate2026-06-04

Business documentation. This URD is Helpdesk's feature list - each feature below is one Functional Area (<AREA>). The same <AREA> keys the feature's PRDs (PRD-<AREA>-NNN) and tests (TC-<AREA>-NNN), and each feature is listed in the Delivery feature catalog. See the Feature Spine convention.

1. Purpose

Define the user-facing requirements for the Helpdesk module - support ticket management, agent routing, SLA enforcement, knowledge base, satisfaction surveys, and feature-request tracking - so a merchant's support team can resolve customer issues within committed service levels.

Build status: the backend exists but does not currently compile, so requirements below describe intended behavior. Until the build is repaired no requirement should be treated as verified-shipped. See the module overview.

2. Scope

IncludedExcluded
Support ticket lifecycle (CRUD + state machine)AI-assisted reply suggestions (future)
Threaded messages (customer / agent / internal notes)Predictive SLA breach (future)
File attachments on messagesOmni-channel intake (email, Zalo, Messenger)
Ticket categories, priorities, tagsCustomer self-service portal (future)
SLA policies + per-ticket tracking + multi-level escalationSLA reporting dashboards (Reports module)
Agent management (profiles, groups, rules) and auto-assignmentIssuing user accounts (User Management)
Knowledge base articles, categories, feedback, view tracking
CSAT / NPS / CES surveys; feature-request voting
Compensation issuance (credit, voucher, refund, …)
Real-time + email notifications and preferences

3. Definitions

TermDefinition
TicketA tracked customer support request with a lifecycle status
AgentA merchant user who works tickets, with availability, skills, and a workload cap
SLAService Level Agreement - committed first-response and resolution time per priority
SLA trackerPer-ticket record of deadlines and elapsed time against an SLA policy
EscalationRouting a breached or critical ticket to a higher support level
Internal noteA message visible only to agents, never to the customer
CSAT / NPS / CESCustomer Satisfaction / Net Promoter / Customer Effort survey types

4. Conceptual Model

Conceptual only - the full schema lives in the developer domain model.

5. Feature Catalog

The feature list of this module. Each row is one feature (a Functional Area). Detail in §6. Mirrored in the Delivery feature catalog.

Feature IDFeaturePhaseStatusPriority
TKTTicket ManagementP1In-progressHigh
MSGTicket MessagesP1In-progressHigh
CATCategories, Tags & PrioritiesP1In-progressHigh
SLASLA ManagementP1In-progressHigh
AGTAgent ManagementP1In-progressHigh
KBKnowledge BaseP2In-progressMedium
SRVSurveys & FeedbackP2In-progressMedium
FRFeature RequestsP2In-progressMedium
CMPCompensationP1In-progressMedium
NTFNotificationsP1In-progressHigh

Status: live from Plane where mapped, otherwise registry-declared. Vocabulary mirrors Plane (state-group / phase).

6. Features

One sub-section per feature, in catalog order. Each feature keeps its description, requirements, and acceptance together. Priority = MoSCoW (Must / Should / Could / Won't).

TKT - Ticket Management In-progress

Feature ID: helpdesk/TKT · Phase: P1 · PRDs: - · Dev: @nx/helpdesk

What it does for users: customers raise support tickets and agents work them through an 8-status lifecycle, with assignment, resolution, and closure tracked alongside a full audit trail.

Requirements

IDPRequirement
URD-TKT-001MCreate a ticket with subject, description, category, and priority
URD-TKT-002MA ticket is always scoped to a single merchant
URD-TKT-003MReporter type: customer-raised or agent-raised on behalf of a customer
URD-TKT-004MTicket follows the 8-status lifecycle: OPEN → ASSIGNED → IN_PROGRESS → WAITING_USER / WAITING_INTERNAL → ESCALATED → RESOLVED → CLOSED
URD-TKT-005MAssign a ticket to an agent, manually or automatically
URD-TKT-006MRecord assignment, resolution, and closure details (who, when, resolution note)
URD-TKT-007MStore ticket context for enrichment from related services
URD-TKT-008MMaintain a full audit trail of every state change and action
URD-TKT-009SRe-open a ticket if the customer replies after it was marked resolved
URD-TKT-010SCustomer confirms resolution; ticket auto-closes after 48h with no response
URD-TKT-011SEnrichment annotates a ticket with merchant/order context automatically
URD-TKT-012STickets are soft-deleted only

Acceptance

AC-TKT-01: Ticket Creation
GivenWhenThen
Authenticated customerCreates a ticket with required fieldsTicket saved as OPEN; SLA tracker initialized with deadlines
Assignment rules configuredTicket createdAuto-assignment runs within 2 minutes; status → ASSIGNED
AC-TKT-02: State Transitions
GivenWhenThen
OPEN ticketAgent assignedStatus → ASSIGNED
ASSIGNED ticketAgent sends first replyStatus → IN_PROGRESS; first-response time recorded
IN_PROGRESS ticketAgent awaits customer infoStatus → WAITING_USER
WAITING_USER ticketCustomer repliesStatus → IN_PROGRESS
IN_PROGRESS ticketAgent marks resolvedStatus → RESOLVED; resolution details recorded
RESOLVED ticketCustomer confirmsStatus → CLOSED
RESOLVED ticketCustomer repliesStatus → IN_PROGRESS (re-opened)

MSG - Ticket Messages In-progress

Feature ID: helpdesk/MSG · Phase: P1 · PRDs: - · Dev: @nx/helpdesk

What it does for users: every ticket carries a thread of typed messages - customer and agent replies, internal notes only agents can see, and system messages - each with attachments and a tracked author.

Requirements

IDPRequirement
URD-MSG-001MAdd messages of type comment, customer reply, agent reply, internal note, system message, or auto-reply
URD-MSG-002MInternal notes are visible only to agents, never to the customer
URD-MSG-003MMessages support file attachments
URD-MSG-004MTrack the author and author type (customer / agent) of each message
URD-MSG-005SSystem auto-appends a system message on each state transition

Acceptance

AC-MSG-01: Internal note visibility
GivenWhenThen
Agent adds an internal note on a ticketA non-agent consumer reads the threadThe internal note is never returned
Any state transition occurs-A system message is auto-appended

CAT - Categories, Tags & Priorities In-progress

Feature ID: helpdesk/CAT · Phase: P1 · PRDs: - · Dev: @nx/helpdesk

What it does for users: tickets are classified by hierarchical categories that carry routing defaults (priority, skills, group, SLA), labelled with tags, and ranked across four priority levels.

Requirements

IDPRequirement
URD-CAT-001MHierarchical ticket categories (parent/child) with icon and color
URD-CAT-002MA category defines default priority, required skills, default group, and SLA policy
URD-CAT-003MManage ticket tags (create, edit, remove)
URD-CAT-004SAdd and remove tags on a ticket
URD-CAT-005MFour priority levels: Low, Medium, High, Critical

Acceptance

AC-CAT-01: Category defaults
GivenWhenThen
A category with default priority, skills, group, and SLA policyA ticket is classified under itThose defaults apply to the new ticket

SLA - SLA Management In-progress

Feature ID: helpdesk/SLA · Phase: P1 · PRDs: - · Dev: @nx/helpdesk

What it does for users: response and resolution targets are defined per priority and tracked per ticket; a scheduled monitor warns before and flags after a breach, escalating across three levels.

Requirements

IDPRequirement
URD-SLA-001MDefine SLA policies with response time and resolution time per priority
URD-SLA-002MConfigure warning (default 75%) and critical (default 90%) thresholds
URD-SLA-003MOptionally restrict the SLA clock to business hours only
URD-SLA-004MCreate an SLA tracker at ticket creation with response and resolution deadlines
URD-SLA-005MA scheduled monitor marks warning and breached states automatically
URD-SLA-006MRecord first-response time and time-to-resolution
URD-SLA-007MSupport three escalation levels (L1, L2, L3)
URD-SLA-008MEscalation types: SLA breach, manual, customer request, high impact, incident report
URD-SLA-009SEscalation rules are configurable within an SLA policy
URD-SLA-010SA ticket category's SLA policy overrides the global default

Acceptance

AC-SLA-01: SLA Enforcement
GivenWhenThen
SLA policy appliedTicket createdFirst-response deadline = now + response time
75% of deadline elapsedMonitor runsSLA status = warning; agent notified
100% of deadline elapsedMonitor runsSLA status = breached; L1 escalation created
Agent responds in timeBefore deadlineFirst-response status = OK; time-to-first-response recorded

AGT - Agent Management In-progress

Feature ID: helpdesk/AGT · Phase: P1 · PRDs: - · Dev: @nx/helpdesk

What it does for users: support staff are modelled as agents with availability, skills, languages, groups, and a workload cap, and new tickets are auto-routed to the best available agent via configurable rules.

Requirements

IDPRequirement
URD-AGT-001MLink a user account as an agent within a merchant (one agent per user)
URD-AGT-002MAgent availability status: online, away, offline, busy
URD-AGT-003MAgent defines skills, languages, and a max concurrent ticket cap
URD-AGT-004MGroup agents and manage group membership
URD-AGT-005MConfigure prioritized assignment rules per merchant
URD-AGT-006MAssignment strategies: round robin, skill-based, skill-based round robin, load-balanced, manual, best experience, fastest resolution
URD-AGT-007MAn auto-assignment worker evaluates rules and selects the best available agent
URD-AGT-008STrack agent performance: avg response/resolution time, SLA compliance, satisfaction score
URD-AGT-009SAgent schedule for business-hours availability
URD-AGT-010MSkip an agent already at their max concurrent ticket cap

Acceptance

AC-AGT-01: Assignment
GivenWhenThen
Rule = round robinTicket arrivesNext agent in rotation assigned
Rule = skill-based; category needs "billing"Auto-assignment runsAgent with that skill and lowest load selected
Agent at max concurrent ticketsAuto-assignment runsAgent skipped; next eligible agent chosen
No available agentsAuto-assignment runsEscalated to manager

KB - Knowledge Base In-progress

Feature ID: helpdesk/KB · Phase: P2 · PRDs: - · Dev: @nx/helpdesk

What it does for users: merchants publish multilingual help articles, organized in hierarchical categories, that customers can read, rate as helpful or not, and whose views are tracked.

Requirements

IDPRequirement
URD-KB-001SCreate and manage multilingual articles (title, content, excerpt)
URD-KB-002SArticle lifecycle: draft → published → archived
URD-KB-003SArticles have category, author, locale, globally-unique slug, and tags
URD-KB-004STrack view, helpful, and not-helpful counts per article
URD-KB-005SHierarchical article categories
URD-KB-006CCustomers submit helpful / not-helpful feedback
URD-KB-007CView tracking records individual article views

Acceptance

AC-KB-01: Article publishing
GivenWhenThen
A draft article with a globally-unique slugPublishedIt becomes readable; views and helpful/not-helpful counts are tracked

SRV - Surveys & Feedback In-progress

Feature ID: helpdesk/SRV · Phase: P2 · PRDs: - · Dev: @nx/helpdesk

What it does for users: merchants run CSAT, NPS, or CES surveys, auto-sent after a ticket is resolved, whose responses feed each agent's satisfaction score.

Requirements

IDPRequirement
URD-SRV-001SCreate surveys of type CSAT, NPS, or CES
URD-SRV-002STrigger modes: post-resolution, post-close, or periodic
URD-SRV-003SAdd and reorder survey questions
URD-SRV-004SA worker auto-sends the survey to the customer after resolution
URD-SRV-005SCapture and store survey responses
URD-SRV-006SResponse data feeds the agent satisfaction score

Acceptance

AC-SRV-01: Post-resolution survey
GivenWhenThen
A survey with post-resolution triggerA ticket is resolvedThe worker auto-sends the survey; responses are stored and feed the agent satisfaction score

FR - Feature Requests In-progress

Feature ID: helpdesk/FR · Phase: P2 · PRDs: - · Dev: @nx/helpdesk

What it does for users: customers submit and vote on feature requests that move through a product-tracking lifecycle and can be linked back to the ticket that prompted them.

Requirements

IDPRequirement
URD-FR-001SCustomers submit feature requests with title, description, category, tags
URD-FR-002SLifecycle: submitted → under review → planned → in development → completed / declined / duplicate
URD-FR-003SOne vote per customer; unvote supported
URD-FR-004SA feature request may be linked to a source ticket
URD-FR-005CInternal and resolution notes for the product team

Acceptance

AC-FR-01: One vote per customer
GivenWhenThen
A customer who has voted on a requestVotes againThe vote count is unchanged; unvote is supported

CMP - Compensation In-progress

Feature ID: helpdesk/CMP · Phase: P1 · PRDs: - · Dev: @nx/helpdesk

What it does for users: agents issue goodwill compensation - store credit, voucher, refund, discount, or free shipping - on a breached or difficult ticket, tracked through its own lifecycle.

Requirements

IDPRequirement
URD-CMP-001SIssue compensation on SLA breach or at agent discretion
URD-CMP-002STypes: store credit, voucher, refund, discount, free shipping
URD-CMP-003SLifecycle: pending → processing → completed / failed / cancelled / expired
URD-CMP-004SLink compensation to a ticket and, optionally, an escalation

Acceptance

AC-CMP-01: Issue compensation
GivenWhenThen
An SLA breach or agent decisionCompensation is issuedIt is linked to the ticket and moves through pending → processing → completed

NTF - Notifications In-progress

Feature ID: helpdesk/NTF · Phase: P1 · PRDs: - · Dev: @nx/helpdesk

What it does for users: agents and customers receive real-time and email alerts on ticket events, governed by per-user preferences and customizable templates.

Requirements

IDPRequirement
URD-NTF-001MReal-time notifications to agents and customers on ticket events
URD-NTF-002SEmail notifications on creation, assignment, reply, and resolution
URD-NTF-003SPer-user notification preferences (opt-in per event type)
URD-NTF-004SCustomizable notification templates per event
URD-NTF-005SBatched delivery with a per-recipient delivery log

Acceptance

AC-NTF-01: Event notifications
GivenWhenThen
A ticket event occurs (creation, assignment, reply, resolution)-Subscribed agents and customers receive real-time notifications per their preferences

7. Constraints & Non-Goals

Constraints

IDConstraint
C-01Tickets are always scoped to a merchant
C-02One SLA tracker per ticket; immutable after breach
C-03Internal notes are never returned to non-agent consumers
C-04Article slug is globally unique
C-05One agent profile per user
C-06One feature-request vote per customer per request
C-07All records use soft-delete
C-08A resolved ticket auto-closes 48h after resolution if unconfirmed

Non-Goals

  • AI-powered reply suggestions
  • Predictive SLA breach warning
  • Omni-channel intake (email, Zalo OA, Facebook Messenger)
  • Customer-facing self-service ticket portal
  • SLA reporting dashboards (Reports module)

8. Version History

DateAuthorDescriptionVer
2026-05-07GitHub CopilotInitial draft from schema and system-design explorationv0.1
2026-05-29Docs migrationRestructured to module convention; status set to In-progress (build broken); area codes aligned with test casesv0.2
2026-06-04Claude (AI pair)Reorganize by feature (Feature Spine)v0.3

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.