PRD: Cấu hình SLA & Phân loại Helpdesk (Back Office)
| Module | Helpdesk | PRD ID | PRD-SLA-001 |
| Trạng thái | Sẵn sàng dev | FEAT | SLA |
| Epic | — | Plane | BANA-1742 |
| Ngày | 2026-06-30 | Phiên bản | v1.1 |
| Gói | @nx/helpdesk | URD | SLA |
| Surface | BO · Vận hành | ||
| Phụ trách | Phát Nguyễn | ||
TL;DR
Cho Đội vận hành (NEXPANDO & VNPAY) cấu hình cách ticket được đo lường và phân loại từ back office: định nghĩa SLA policy (mỗi policy gắn một mức ưu tiên, mục tiêu phản hồi/xử lý theo phút, escalation rule), và duy trì phân loại mà ticket mang - danh mục kèm mặc định định tuyến và form ticket tùy biến, nhãn, và năm mức độ ưu tiên. Đây là mặt chính sách của helpdesk; xử lý ticket và định tuyến agent là các area riêng.
1. Bối cảnh & Vấn đề
Engine helpdesk đã đo ticket theo SLA và phân loại theo danh mục, nhãn, độ ưu tiên - nhưng chưa có nơi quản lý để soạn SLA policy hay duy trì danh mục, nhãn, và độ ưu tiên vốn quyết định mặc định định tuyến. Đội vận hành phải dựa vào sửa cấp thấp.
Tăng tiến này là bề mặt cấu hình đó. Nó bổ trợ cho Quản lý agent (ai xử lý ticket và định tuyến ra sao) bằng cách lo ticket phải đạt mục tiêu gì và được phân loại thế nào. Cả cụm màn đang phát triển: ẩn khỏi menu của Back Office, chỉ truy cập được bằng đường dẫn trực tiếp.
2. Mục tiêu / Ngoài phạm vi
Mục tiêu
- Soạn SLA policy - mỗi policy gắn một mức ưu tiên, mục tiêu phản hồi và xử lý theo phút, tùy chọn chỉ-giờ-làm-việc, và danh sách escalation rule.
- Duy trì danh mục ticket - mặc định định tuyến (độ ưu tiên, kỹ năng, SLA policy) và form ticket tùy biến cho từng danh mục; quan hệ cha/con và nhóm xử lý mặc định đang dựng.
- Quản lý nhãn dùng để gán cho ticket.
- Duy trì năm mức độ ưu tiên (Thấp, Trung bình, Cao, Khẩn cấp, Nghiêm trọng).
Ngoài phạm vi
- Bản thân SLA monitor và worker auto-assignment - đã dựng hậu trường.
- Agent, nhóm agent, và quy tắc phân công (Quản lý agent).
- Xử lý từng ticket (vòng đời ticket).
3. Success Metrics
| Chỉ số | Mục tiêu / tín hiệu |
|---|---|
| Tự soạn chính sách | Đội vận hành soạn một SLA policy mà không cần sửa cấp thấp |
| Định tuyến mặc định | Phân loại một ticket dưới một danh mục thì áp mặc định của danh mục đó (độ ưu tiên, SLA, form) |
| Độ phủ | Mỗi mức ưu tiên có ít nhất một SLA policy đang kích hoạt |
4. Personas & Tình huống
| Persona | Mục tiêu ở tính năng này |
|---|---|
| Quản lý hỗ trợ - Đội vận hành (NEXPANDO & VNPAY) | Định nghĩa mục tiêu SLA và sơ đồ danh mục/nhãn/độ ưu tiên ticket dùng |
Tình huống chính: quản lý tạo cho mỗi mức ưu tiên một SLA policy với mục tiêu phản hồi và xử lý theo phút cùng các escalation rule; dựng danh mục, cho mỗi danh mục độ ưu tiên mặc định, kỹ năng yêu cầu, SLA policy, và form ticket riêng; và duy trì các nhãn cùng mức độ ưu tiên đội dùng để phân loại ticket.
5. User Stories
- Là quản lý hỗ trợ, tôi muốn định nghĩa mục tiêu SLA theo từng mức ưu tiên, để ticket được đo theo cùng một chuẩn.
- Là quản lý hỗ trợ, tôi muốn escalation rule kích hoạt trước và khi vi phạm SLA, để đội được báo kịp thời.
- Là quản lý hỗ trợ, tôi muốn danh mục kèm mặc định định tuyến, để ticket đã phân loại tự nhận độ ưu tiên và SLA.
- Là quản lý hỗ trợ, tôi muốn mỗi danh mục có form ticket riêng, để ticket của từng loại thu đúng thông tin cần cho loại đó.
- Là quản lý hỗ trợ, tôi muốn quản lý nhãn và mức độ ưu tiên, để ticket được gán nhãn và xếp hạng đúng cách đội làm.
6. Functional Requirements
| # | Yêu cầu | Trạng thái | URD ref |
|---|---|---|---|
| FR-1 | Danh sách + form SLA policy (1 policy = 1 mức ưu tiên; mục tiêu theo phút; chỉ-giờ-làm-việc; kích hoạt) | ✅ đã dựng | URD-SLA-001 · URD-SLA-002 · URD-SLA-003 |
| FR-2 | Ngưỡng cảnh báo và ngưỡng nghiêm trọng dạng % thời gian SLA | 🚧 chưa dựng | URD-SLA-007 |
| FR-3 | Escalation rule trong policy: danh sách rule tự thêm/bớt/sắp xếp | ✅ đã dựng | URD-SLA-009 |
| FR-4 | Danh sách + form danh mục ticket (mặc định định tuyến: độ ưu tiên, kỹ năng, SLA policy) | ✅ đã dựng | URD-CAT-001 |
| FR-5 | Danh mục cha/con và nhóm xử lý mặc định của danh mục | 🚧 chưa dựng | URD-CAT-002 |
| FR-6 | Form ticket tùy biến theo danh mục (form-builder: chọn field, sắp thứ tự, 13 kiểu field, xem trước) | ✅ đã dựng | URD-CAT-001 |
| FR-7 | Danh sách + form nhãn ticket (tạo, sửa, xóa) | ✅ đã dựng | URD-CAT-003 |
| FR-8 | Năm mức độ ưu tiên (Thấp, Trung bình, Cao, Khẩn cấp, Nghiêm trọng) dùng xuyên suốt | ✅ đã dựng | URD-CAT-005 |
| FR-9 | SLA policy của một danh mục ghi đè mặc định toàn cục cho ticket thuộc danh mục | ✅ đã dựng | URD-SLA-010 |
FR-1 - Danh sách + form SLA policy ✅
Bảng danh sách:
| Cột | Hiển thị | Lọc được |
|---|---|---|
| Tên | Song ngữ, theo ngôn ngữ đang chọn | Không |
| Độ ưu tiên | Badge, 1 trong 5 mức | Có - cột duy nhất lọc được |
| Kích hoạt | Dấu tích | Không |
| Chỉ giờ làm việc | Dấu tích | Không |
| Thời gian phản hồi (phút) | Số | Không |
| Thời gian xử lý (phút) | Số | Không |
Action trên mỗi dòng: Sửa · Xóa. Bật/tắt kích hoạt thực hiện trong form sửa.
Form tạo/sửa:
| Field | Ràng buộc |
|---|---|
| Tên | Song ngữ EN/VI, bắt buộc, tối đa 200 ký tự |
| Độ ưu tiên | Chọn một mức trong 5 mức - mỗi policy gắn đúng một mức ưu tiên |
| Thời gian phản hồi | Số phút, tối thiểu 1, mặc định 5 |
| Thời gian xử lý | Số phút, tối thiểu 1, mặc định 10 |
| Chỉ giờ làm việc | Bật/tắt, mặc định tắt - bật thì đồng hồ SLA chỉ chạy trong giờ làm việc |
| Kích hoạt | Bật/tắt, mặc định bật |
FR-2 - Ngưỡng cảnh báo / nghiêm trọng 🚧
Mỗi policy khai báo hai ngưỡng theo % thời gian SLA đã trôi qua: ngưỡng cảnh báo và ngưỡng nghiêm trọng, để đội được báo trước khi vi phạm. Khái niệm đã có trong domain nhưng chưa có trên form - khi dựng, hai field % này nằm trong form policy và escalation rule tham chiếu được tới chúng.
FR-3 - Escalation rule trong policy ✅
Danh sách rule trong form policy, tự do thêm/bớt và kéo-thả đổi thứ tự - không giới hạn số mức cố định. Mỗi rule gồm:
| Thành phần | Ràng buộc |
|---|---|
| Tên rule | Bắt buộc |
| Sự kiện | Chọn 1 trong 2: Cảnh báo (warning) · Vi phạm (breach) |
| Áp cho | Chọn 1 trong 2: Phản hồi đầu tiên · Xử lý |
| Điều kiện kích hoạt | Loại: % SLA đã trôi hoặc thời gian trôi qua; giá trị là số lớn hơn 0 |
| Hành động | Ít nhất 1; mỗi hành động: loại (Thông báo / Gửi email / Gán agent), đích (Agent / Quản lý - không được rỗng), kênh (Websocket / Email - không được rỗng) |
Rule nghiệp vụ: trong một policy, không được có hai rule trùng bộ ba (sự kiện + áp cho + loại kích hoạt) - form chặn khi lưu.
FR-4 - Danh sách + form danh mục ticket ✅
Bảng danh sách (dạng phẳng, không cột nào lọc được): Tên (song ngữ) · Mô tả (song ngữ) · Kích hoạt (dấu tích). Action: Sửa · Xóa.
Form tạo/sửa:
| Field | Ràng buộc |
|---|---|
| Tên | Song ngữ EN/VI, bắt buộc; kèm bộ chọn icon và màu gắn với danh mục |
| Mô tả | Song ngữ EN/VI, tùy chọn, tối đa 400 ký tự |
| Độ ưu tiên mặc định | Tùy chọn, chọn 1 trong 5 mức - ticket phân loại vào danh mục nhận mức này |
| Thứ tự hiển thị | Số, mặc định 1 - quyết định vị trí danh mục trong các danh sách chọn |
| Kỹ năng yêu cầu | Chọn nhiều từ danh mục kỹ năng - dùng cho định tuyến theo kỹ năng |
| SLA policy | Bắt buộc, chọn một policy của organizer - SLA mặc định cho ticket thuộc danh mục |
| Kích hoạt | Bật/tắt |
FR-5 - Danh mục cha/con + nhóm xử lý mặc định 🚧
Hai thuộc tính đã có trong domain nhưng chưa có trên form:
- Danh mục cha: một danh mục chọn được danh mục cha để tạo phân cấp; mặc định của cha cascade xuống con trừ khi con tự khai báo. Danh sách hiện là bảng phẳng - khi dựng, cần bộ chọn cha trong form và cách thể hiện phân cấp ở danh sách.
- Nhóm xử lý mặc định: danh mục trỏ tới một agent group (Quản lý agent) để ticket thuộc danh mục định tuyến thẳng về nhóm đó.
FR-6 - Form ticket tùy biến theo danh mục (form-builder) ✅
Phần lớn nhất của màn danh mục: mỗi danh mục định nghĩa form ticket riêng - ticket tạo dưới danh mục nào thì hiện form của danh mục đó.
- Chọn field: tick chọn các field sẽ xuất hiện trên form ticket.
- Sắp thứ tự: kéo-thả đổi thứ tự các field đã chọn.
- 13 kiểu field: chữ ngắn, đoạn văn, số, ngày, ngày-giờ, giờ, bật/tắt, chọn một (danh sách), chọn một (nhóm radio), chọn nhiều (checkbox), tệp đính kèm, nhóm field, nhóm lặp (danh sách dòng thêm được).
- Field lồng nhau: nhóm field và nhóm lặp chứa các field con, cấu hình như field thường.
- Độ rộng: mỗi field đặt độ rộng theo lưới 12 cột (1-12).
- Xem trước: form được render thử ngay trong màn cấu hình, đúng như người tạo ticket sẽ thấy.
FR-7 - Danh sách + form nhãn ticket ✅
Bảng danh sách (không cột nào lọc được): Tên (song ngữ) · Mô tả (song ngữ) · Kích hoạt (dấu tích) · Ngày tạo · Ngày cập nhật. Action: Sửa · Xóa.
Form tạo/sửa:
| Field | Ràng buộc |
|---|---|
| Tên | Song ngữ EN/VI, bắt buộc, tối đa 200 ký tự |
| Mô tả | Song ngữ EN/VI, tùy chọn, tối đa 400 ký tự |
| Kích hoạt | Bật/tắt, mặc định bật |
Màu nhãn đã có trong domain nhưng chưa có trên form (🚧).
FR-8 - Năm mức độ ưu tiên ✅
Bộ 5 mức dùng thống nhất ở mọi nơi (policy, danh mục, ticket): Thấp (Low) · Trung bình (Medium) · Cao (High) · Khẩn cấp (Urgent) · Nghiêm trọng (Critical) - theo thứ hạng tăng dần. Đây là bộ cố định của hệ thống, không thêm/bớt mức từ giao diện.
FR-9 - SLA của danh mục ghi đè mặc định ✅
Ticket phân loại dưới một danh mục được đo theo SLA policy của danh mục đó, thay cho mặc định toàn cục. Trên giao diện, việc gán thể hiện qua field SLA policy (bắt buộc) của form danh mục.
Tiêu chí nghiệm thu
- Tạo SLA policy bỏ trống Tên hoặc không chọn Độ ưu tiên → form báo lỗi, không lưu.
- Thời gian phản hồi hoặc xử lý nhập 0 → form báo lỗi "tối thiểu 1 phút".
- Mỗi policy chỉ chọn được đúng một mức ưu tiên; tạo policy mới với giá trị mặc định → phản hồi 5 phút, xử lý 10 phút, kích hoạt bật, chỉ-giờ-làm-việc tắt.
- Bảng SLA policy lọc được theo Độ ưu tiên; các cột khác không có ô lọc.
- Thêm hai escalation rule cùng bộ (sự kiện + áp cho + loại kích hoạt) → form chặn khi lưu.
- Escalation rule không có hành động nào, hoặc hành động có đích/kênh rỗng, hoặc giá trị kích hoạt ≤ 0 → form báo lỗi.
- Tạo danh mục không chọn SLA policy → form báo lỗi; mô tả quá 400 ký tự → form báo lỗi.
- Form-builder: chọn 3 field, kéo đổi thứ tự, đặt một field độ rộng 6/12 → phần xem trước hiện đúng field, đúng thứ tự, đúng độ rộng.
- Tạo nhãn với tên quá 200 ký tự → form báo lỗi; nhãn mới hiện Ngày tạo/Ngày cập nhật trên bảng.
- Cả cụm màn không xuất hiện trên menu Back Office (đang phát triển) nhưng mở được bằng đường dẫn trực tiếp.
- (Khi FR-2 dựng xong) Policy khai báo ngưỡng cảnh báo 80% và nghiêm trọng 95% → escalation sự kiện "Cảnh báo" kích hoạt theo ngưỡng đã đặt.
- (Khi FR-5 dựng xong) Danh mục con không khai báo độ ưu tiên → nhận độ ưu tiên của cha; danh mục có nhóm mặc định → ticket mới thuộc danh mục định tuyến về nhóm đó.
7. Non-Functional Requirements
| Khía cạnh | Yêu cầu |
|---|---|
| Phạm vi & phân quyền | Cấu hình gác cho quyền quản lý helpdesk; bộ chọn SLA policy trong form danh mục chỉ hiện policy của organizer đang thao tác |
| Nhất quán | Mặc định danh mục áp cho ticket phân loại dưới nó; SLA của danh mục ghi đè mặc định toàn cục |
| An toàn | Sửa một policy hay danh mục không viết lại hồi tố các ticket đã được đo |
| i18n | Tên/mô tả policy, danh mục, nhãn và nhãn độ ưu tiên song ngữ (EN/VI) |
8. UX & Flows
Quản lý cấu hình chính sách helpdesk như thế nào:
Cấu hình bao gồm những gì:
Các màn nằm trong mục "Hỗ trợ" của Back Office, cạnh Quản lý agent. Cả cụm hiện ẩn khỏi menu (đang phát triển) - truy cập bằng đường dẫn trực tiếp.
9. Data & Domain
| Khái niệm | Vai trò trong màn này |
|---|---|
| SLA policy | Gắn một mức ưu tiên; mục tiêu phản hồi/xử lý theo phút; tùy chọn giờ làm việc; danh sách escalation rule; ngưỡng % (đang dựng) |
| Danh mục | Một lớp ticket mang icon/màu, độ ưu tiên mặc định, kỹ năng yêu cầu, SLA policy, form ticket tùy biến; cha/con và nhóm mặc định (đang dựng) |
| Nhãn | Một nhãn gán cho ticket; màu nhãn (đang dựng) |
| Độ ưu tiên | Một trong năm mức cố định (Thấp, Trung bình, Cao, Khẩn cấp, Nghiêm trọng) |
Chỉ ở mức khái niệm - SLA monitor và engine định tuyến chạy hậu trường; mô hình dữ liệu ở helpdesk domain model.
10. Dependencies & Assumptions
Phụ thuộc
- SLA monitor & engine định tuyến - đã dựng; các màn này cấu hình cái nó thực thi.
- Quản lý agent (PRD-AGT-001) - nhóm xử lý mặc định của danh mục (FR-5) trỏ tới agent group; định tuyến theo kỹ năng dùng kỹ năng yêu cầu của danh mục.
Giả định
- Quản lý đã đăng nhập với quyền quản lý helpdesk.
- Engine helpdesk (theo dõi SLA, phân loại) có trước bề mặt cấu hình này.
11. Risks & Open Questions
| Rủi ro / câu hỏi | Giảm thiểu / trạng thái |
|---|---|
| Cụm màn đang phát triển, ẩn khỏi menu | Nghiệm thu theo bảng trạng thái FR ở §6 trước khi mở menu |
| Ngưỡng % (FR-2) chưa dựng nhưng escalation sự kiện "Cảnh báo" đã có | Chốt nguồn ngưỡng cho sự kiện Cảnh báo khi dựng FR-2; tạm thời rule Cảnh báo dựa vào điều kiện kích hoạt của chính rule |
| Sửa một policy có thể ảnh hưởng ticket đang chạy | Thay đổi áp về sau; đo lường đang chạy không bị viết lại |
| Phân cấp danh mục (FR-5) chưa dựng - danh sách đang phẳng | Khi dựng, thể hiện phân cấp ở danh sách và giới hạn độ sâu tối đa 3 cấp |
12. Release Plan & Launch Criteria
| Khía cạnh | Kế hoạch |
|---|---|
| Phase | P2 - đang phát triển trong Back Office |
| Rollout | Đội vận hành có quyền quản lý helpdesk; cụm màn ẩn khỏi menu tới khi đạt tiêu chí ra mắt |
| Migration | Không - nó cấu hình engine hiện có |
| Tiêu chí ra mắt | Toàn bộ Tiêu chí nghiệm thu ở §6 đạt, bao gồm các FR 🚧 (ngưỡng %, danh mục cha/con + nhóm mặc định) |
| Theo dõi | Sửa SLA-policy và danh mục; tỷ lệ ticket phân loại dưới một danh mục |
13. FAQ
Đây có phải nơi xử lý ticket không? Không - cái này cấu hình SLA policy và phân loại; xử lý ticket là vòng đời ticket.
Agent và quy tắc định tuyến ở đâu? Ở Quản lý agent.
SLA của một danh mục làm gì? Nó ghi đè mặc định toàn cục cho ticket phân loại dưới danh mục đó.
Một SLA policy phủ được nhiều mức ưu tiên không? Không - mỗi policy gắn đúng một mức; muốn phủ đủ năm mức thì tạo năm policy.
Form ticket tùy biến hiện ở đâu? Ticket tạo dưới một danh mục sẽ hiện đúng form mà danh mục đó định nghĩa trong form-builder.
References
- URD: Helpdesk -
SLA·CAT(Danh mục, Nhãn & Độ ưu tiên) - Liên quan: PRD-AGT-001 - Agent manager groups
- Module: Helpdesk - URD · Lộ trình: Phase 2 - Theo tháng
- Developer: @nx/helpdesk