Review & confirm
Mẫu chuẩnGiúp người có thẩm quyền hiểu thay đổi, cân nhắc tác động và đưa ra quyết định trước một hành động quan trọng.
Ngữ cảnh & mục tiêu
Dùng khi hành động cần sự đồng ý có chủ đích: duyệt đề xuất của Human AI, xác nhận thay đổi dữ liệu hoặc chấp thuận một yêu cầu. Người dùng phải biết ai đề xuất, điều gì thay đổi, đối tượng nào chịu tác động và kết quả sẽ được xác nhận thế nào.
Phù hợp
Có thay đổi cụ thể để xem xét, có quyền quyết định rõ ràng và có bằng chứng đủ để đánh giá.
Không phù hợp
Thao tác đơn giản, dễ hoàn tác như đổi bộ lọc. Không dùng xác nhận để che một quy trình không rõ quyền.
Thử một quyết định
Human Sale đề xuất giảm giá cho một báo giá. Toàn bộ tình huống bên dưới dùng dữ liệu mẫu và không gửi yêu cầu ra hệ thống thật.
Duyệt mức giảm giá 5%
Khách hàng cam kết hợp đồng 12 tháng. Mức đề xuất nằm trong ngưỡng 5% cần Sales Manager duyệt trong tình huống mẫu này.
Phạm vi: phê duyệt mức giá cho báo giá này. Việc gửi báo giá cho khách hàng là một bước riêng.
Để thử nhánh khác, chọn “Đặt lại mẫu” rồi đổi kết quả mô phỏng. Nhánh lỗi thử lại vẫn giữ kết quả lỗi đã chọn; đổi kịch bản bằng cách đặt lại.
Anatomy của quyết định
01Ngữ cảnh
Đối tượng, người đề xuất, mã tham chiếu.
02Thay đổi
Trước / sau, phạm vi và tác động.
03Bằng chứng
Lý do, nguồn và các điều kiện liên quan.
04Quyết định
Hành động đúng quyền và nhãn nêu rõ tác động.
05Kết quả
Trạng thái được xác nhận, mã truy vết, bước tiếp theo.
State model & phục hồi
| State | Người dùng thấy | Chuyển trạng thái |
|---|---|---|
| Review | Đầy đủ thay đổi, căn cứ, quyền và điều kiện. | Xác nhận đã xem → gửi quyết định; hoặc từ chối kèm lý do. |
| Pending | Hành động đang xử lý; khóa gửi lặp. | Chờ kết quả từ dịch vụ; không dùng timeout như success. |
| Confirmed | Đối tượng, thay đổi đã ghi nhận và bước tiếp theo. | Chỉ thành công khi dịch vụ xác nhận kết quả. |
| Error — known not applied | Lỗi cụ thể, dữ liệu giữ lại. | Cho thử lại với idempotency key và kiểm tra quyền mới. |
| Unknown | Chưa xác định kết quả; hiển thị mã truy vết. | Kiểm tra trạng thái; đối soát trước khi cân nhắc gửi lại. |
| Rejected | Lý do từ chối và tình trạng không thay đổi. | Ghi nhận quyết định; trở về đối tượng liên quan. |
Hợp đồng triển khai
Pattern nhận đối tượng và các hành động đã được dịch vụ kiểm tra quyền. Backend phải kiểm tra lại quyền, phiên bản dữ liệu và idempotency khi ghi nhận quyết định.
type ReviewRequest = {
objectId: string; // đối tượng bất biến trong phiên review
revision: string; // ngăn duyệt dữ liệu đã cũ
changes: { before: unknown; after: unknown };
evidence: Evidence[];
allowedActions: ('approve' | 'reject')[];
};
type Decision = {
objectId: string;
revision: string;
action: 'approve' | 'reject';
reason?: string; // bắt buộc khi reject
idempotencyKey: string; // giữ nguyên khi retry cùng quyết định
};
type DecisionResult =
| { status: 'confirmed'; decisionId: string }
| { status: 'not_applied'; message: string; retryable: boolean }
| { status: 'unknown'; requestId: string };| Trách nhiệm UI | Trách nhiệm sản phẩm / dịch vụ |
|---|---|
| Trình bày phạm vi, diff, bằng chứng và trạng thái. | Kiểm tra quyền, hạn mức, dữ liệu mới nhất và chính sách. |
| Chặn thao tác lặp khi chờ; giữ nội dung khi lỗi. | Idempotency, audit log và xác nhận kết quả thực tế. |
| Tách trạng thái unknown, cung cấp cách kiểm tra. | Endpoint đối soát theo requestId; không suy luận từ timeout. |
Responsive, accessibility & nội dung
Pattern tái sử dụng Button, surface, border, spacing, typography và status token. Màu status nhất quán giữa các brand; không đổi màu thành công theo màu thương hiệu.
Quy chuẩn cho pattern tiếp theo
Tải template tài liệu pattern · Markdown| Phần bắt buộc | Nội dung cần cung cấp |
|---|---|
| Context & goal | Ai đang làm gì, vì sao; khi dùng và khi không dùng. |
| Interactive scenario | Dữ liệu mẫu, trạng thái thường gặp và nhánh phục hồi. |
| Anatomy & state model | Cấu trúc, chuyển trạng thái, quyền và tác động. |
| Integration contract | Input/output, trách nhiệm UI và dịch vụ, lưu vết. |
| Accessibility & content | Bàn phím, focus, đọc trạng thái, nội dung và responsive. |
| Release checklist | Kiểm tra happy path, lỗi, unknown, thiếu quyền, dữ liệu thay đổi và tác vụ lặp. |
Tình huống NexoCrew là ví dụ áp dụng quy tắc của kit. Hạn mức 5%, khách hàng và báo giá đều là dữ liệu minh họa, không phải chính sách sản phẩm đã phê duyệt.