Knowledge Base & Surveys
@nx/helpdesk cung cấp một knowledge base để khách hàng tự giải quyết vấn đề, một hệ thống khảo sát CSAT được kích hoạt tự động khi ticket đóng, và một bảng feature-request có vote.
Knowledge Base
Data Model
ArticleCategory
| Cột | Type | Mô tả |
|---|---|---|
id | bigint | Snowflake ID |
merchantId | bigint | Phạm vi tenant |
name | jsonb | Tên category (i18n: {en, vi}) |
slug | varchar | Slug thân thiện URL (đã slugify) |
parentId | bigint | FK → ArticleCategory (phân cấp) |
isActive | boolean | Cờ hiển thị |
sortOrder | smallint | Thứ tự hiển thị |
Article
| Cột | Type | Mô tả |
|---|---|---|
id | bigint | Snowflake ID |
merchantId | bigint | Phạm vi tenant |
categoryId | bigint | FK → ArticleCategory |
title | jsonb | Tiêu đề (i18n: {en, vi}) |
slug | varchar | Slug thân thiện URL |
content | jsonb | Nội dung body (i18n, rich text) |
status | enum | DRAFT / PUBLISHED / ARCHIVED |
viewCount | int | Tổng số view |
helpfulCount | int | Số feedback "hữu ích" |
notHelpfulCount | int | Số feedback "không hữu ích" |
publishedAt | timestamp | Mốc thời gian xuất bản |
ArticleView
Theo dõi từng lượt view article:
| Cột | Type | Mô tả |
|---|---|---|
articleId | bigint | FK → Article |
userId | bigint | Người xem (null nếu ẩn danh) |
sessionId | varchar | Session ID cho theo dõi ẩn danh |
viewedAt | timestamp | Mốc thời gian view |
ArticleFeedback
| Cột | Type | Mô tả |
|---|---|---|
articleId | bigint | FK → Article |
userId | bigint | Tác giả feedback |
isHelpful | boolean | true = hữu ích, false = không hữu ích |
comment | text | Bình luận tùy chọn |
REST API
Articles và article category — tham khảo endpoint đầy đủ render trực tiếp từ /v1/api/helpdesk/doc/openapi.json. Phục vụ bởi ArticleController và ArticleCategoryController. Bảng endpoint cố ý không duy trì thủ công.
Use Cases — Articles
| Use Case | Mô tả |
|---|---|
CreateArticleUseCase | Tạo article với status DRAFT |
UpdateArticleUseCase | Cập nhật nội dung/metadata |
PublishArticleUseCase | Chuyển sang PUBLISHED |
DeleteArticleUseCase | Soft-delete |
GetArticleUseCase | Lấy chi tiết + ghi nhận view |
ListArticlesUseCase | Tìm kiếm và lọc |
SubmitArticleFeedbackUseCase | Gửi feedback hữu ích/không hữu ích |
RecordArticleViewUseCase | Ghi nhận một event view |
CreateArticleCategoryUseCase | Tạo một category |
UpdateArticleCategoryUseCase | Cập nhật một category |
DeleteArticleCategoryUseCase | Gỡ một category |
ListArticleCategoriesUseCase | Liệt kê category phân cấp |
Khảo sát CSAT
Khảo sát hài lòng được kích hoạt tự động khi một ticket đóng.
Data Model
Survey
| Cột | Type | Mô tả |
|---|---|---|
id | bigint | Snowflake ID |
merchantId | bigint | Phạm vi tenant |
name | jsonb | Tên survey (i18n) |
triggerEvent | enum | Event trigger (ví dụ TICKET_CLOSED) |
isActive | boolean | Cờ active |
SurveyQuestion
| Cột | Type | Mô tả |
|---|---|---|
surveyId | bigint | FK → Survey |
questionText | jsonb | Văn bản câu hỏi (i18n) |
questionType | enum | RATING / TEXT / MULTIPLE_CHOICE |
options | jsonb | Lựa chọn (cho MULTIPLE_CHOICE) |
isRequired | boolean | Câu trả lời có bắt buộc không |
sortOrder | smallint | Thứ tự hiển thị |
SurveyResponse
| Cột | Type | Mô tả |
|---|---|---|
surveyId | bigint | FK → Survey |
ticketId | bigint | Ticket liên quan |
respondentId | bigint | ID người trả lời |
answers | jsonb | Câu trả lời đã gửi (map questionId → answer) |
submittedAt | timestamp | Mốc thời gian gửi |
REST API
Surveys, questions, và responses — tham khảo endpoint đầy đủ render trực tiếp từ /v1/api/helpdesk/doc/openapi.json. Phục vụ bởi SurveyController. Bảng endpoint cố ý không duy trì thủ công.
Survey Worker
survey-trigger.worker (hàng đợi helpdesk.survey-trigger) chạy TriggerSurveyUseCase khi một ticket đạt trạng thái cuối và gửi khảo sát CSAT tới khách hàng qua kênh thông báo đã cấu hình.
Feature Requests
Data Model
FeatureRequest
| Cột | Type | Mô tả |
|---|---|---|
id | bigint | Snowflake ID |
merchantId | bigint | Phạm vi tenant |
title | varchar | Tiêu đề request |
description | text | Mô tả chi tiết |
status | enum | OPEN / UNDER_REVIEW / PLANNED / COMPLETED / REJECTED |
voteCount | int | Tổng số vote |
requesterId | bigint | ID người tạo |
FeatureVote
Bảng junction ghi nhận một vote mỗi user mỗi request (unique theo user + request):
| Cột | Type | Mô tả |
|---|---|---|
featureRequestId | bigint | FK → FeatureRequest |
userId | bigint | Người vote |
votedAt | timestamp | Mốc thời gian vote |
REST API
Feature request và vote — tham khảo endpoint đầy đủ render trực tiếp từ /v1/api/helpdesk/doc/openapi.json. Phục vụ bởi FeatureRequestController. Bảng endpoint cố ý không duy trì thủ công.
Trang liên quan
- Helpdesk Service — tổng quan dịch vụ
- Domain Model
- Notification System