Đội vận hành có thể cần tải đơn hàng để đối soát, còn quản lý chỉ muốn báo cáo theo chi nhánh. Nếu sản phẩm dùng một truy vấn chung, tệp xuất sẽ sớm có quá nhiều cột và làm lộ dữ liệu không cần thiết.
Vì vậy, thiết kế chức năng xuất dữ liệu nên bắt đầu từ mục đích sử dụng của tệp. Nút tải chỉ là bước cuối. Phần khó nằm ở việc chuyển quy tắc nghiệp vụ, bộ lọc và quyền truy cập thành một đầu ra ổn định.

Xác định đầu ra từ công việc người dùng cần hoàn thành
Câu hỏi đầu tiên không nên là "dùng CSV hay Excel". Hãy hỏi người nhận sẽ làm gì sau khi tải tệp. Nếu sales cần rà các lead chưa follow-up, đầu ra cần trạng thái, người phụ trách và mốc liên hệ gần nhất. Nếu kế toán đối soát đơn hàng, họ cần mã tham chiếu, số tiền, trạng thái thanh toán và thời điểm ghi nhận.
Các nhu cầu có thể lấy dữ liệu từ cùng một hệ thống nhưng không nên dùng chung một mẫu tệp. Mỗi mẫu cần danh sách cột cố định và quy tắc lọc có thể giải thích. Trạng thái nên dùng nhãn mà người vận hành hiểu, ngày giờ cùng múi giờ, giá trị tiền có đơn vị nhất quán.
Giữ bộ lọc và thời điểm dữ liệu nhất quán
Một lỗi thường gặp là số bản ghi trên màn hình khác số dòng trong tệp. Bộ lọc trên giao diện và truy vấn xuất dữ liệu có thể đang dùng hai cách diễn giải, hoặc dữ liệu thay đổi trong lúc tạo tệp.
Với tập dữ liệu nhỏ, sản phẩm có thể xuất đúng kết quả đang thấy trên màn hình. Khi dữ liệu lớn hơn, tác vụ chạy nền cần lưu bộ lọc, người yêu cầu và thời điểm bắt đầu. Người dùng phải biết tệp phản ánh trạng thái nào, thay vì mặc định rằng đây luôn là dữ liệu mới nhất.

Quy trình thiết kế chức năng xuất dữ liệu
Bước 1: Ghi rõ mục đích và người nhận
Liệt kê công việc được thực hiện sau khi tải tệp, vai trò yêu cầu và nơi tệp sẽ được sử dụng. Đầu ra là một hoặc vài mẫu xuất có phạm vi riêng.
Bước 2: Chốt trường dữ liệu và quy tắc biến đổi
Với từng cột, ghi nguồn, nhãn hiển thị, định dạng, cách xử lý giá trị trống và điều kiện đưa vào. Các trường suy ra cần có công thức hoặc quy tắc nghiệp vụ rõ.
Bước 3: Áp dụng quyền trước khi tạo tệp
Hệ thống lọc bản ghi và trường dữ liệu theo quyền của người yêu cầu. Không tạo tệp đầy đủ rồi mới ẩn cột ở giao diện tải xuống.
Bước 4: Thiết kế trạng thái tác vụ và lỗi
Quy định khi nào xuất trực tiếp, khi nào chạy nền, thời hạn giữ tệp và thông báo khi tác vụ thất bại. Lỗi phải cho biết người dùng có thể thử lại hay cần đổi bộ lọc.
Bước 5: Kiểm tra tệp bằng tình huống thật
Dùng dữ liệu có dấu tiếng Việt, dấu phẩy, xuống dòng, trường trống và giá trị dài. Hãy mở tệp bằng đúng công cụ người nhận đang dùng. Kiểm tra mã nguồn là chưa đủ.
Nếu sản phẩm cũng nhận dữ liệu từ tệp, hai luồng nhập và xuất cần thống nhất tên trường và định dạng. Bài thiết kế chức năng nhập dữ liệu CSV trình bày cách kiểm tra cấu trúc, ánh xạ cột và phản hồi lỗi khi đưa dữ liệu vào hệ thống.
Quyền xuất phải hẹp hơn quyền xem trong nhiều trường hợp
Một nhân sự có thể xem hồ sơ khách hàng để xử lý công việc nhưng không nhất thiết được tải toàn bộ danh sách. Tệp dễ được chuyển tiếp hoặc đưa vào công cụ khác, nên quyền xuất cần được định nghĩa riêng theo vai trò, phạm vi bản ghi và loại trường.
Nếu một vai trò chỉ cần tổng hợp theo tháng, tệp không nên kèm thông tin nhận diện của từng khách hàng. Xem thêm cách thiết kế vai trò và quyền truy cập cho sản phẩm nội bộ.

Tệp tải xuống nên có thời hạn và chỉ người yêu cầu mới truy cập được. Khi người dùng yêu cầu xóa dữ liệu, đội phải xác định các tệp đã tạo sẽ được xử lý thế nào. Xem thêm thiết kế chức năng xóa dữ liệu an toàn.
Checklist nghiệm thu chức năng xuất dữ liệu
Nội dung tệp
- Tên cột, thứ tự cột và định dạng giá trị đúng đặc tả.
- Bộ lọc trên màn hình và bộ lọc trong tác vụ xuất cho cùng kết quả.
- Ký tự tiếng Việt, dấu phẩy, xuống dòng và trường trống không làm hỏng tệp.
Quyền và an toàn
- Người dùng chỉ xuất được bản ghi và trường nằm trong phạm vi được cấp.
- Liên kết tải có thời hạn và không dùng lại được sau khi bị thu hồi.
- Tệp không chứa dữ liệu nhạy cảm ngoài mục đích đã thống nhất.
Trạng thái xử lý
- Tác vụ lớn có trạng thái đang xử lý, hoàn tất hoặc thất bại.
- Thông báo lỗi nêu được bước tiếp theo thay vì chỉ báo lỗi chung.
- Hệ thống kiểm soát việc bấm lặp để tránh tạo nhiều tác vụ giống nhau.

Khi nào nên để chức năng xuất dữ liệu sang giai đoạn sau?
Nếu chưa biết người dùng cần tệp để làm gì, chưa chốt nguồn dữ liệu chính hoặc quyền còn thay đổi mỗi tuần, đội chưa nên xây bộ xuất linh hoạt. Một mẫu báo cáo cố định có người kiểm tra sẽ phù hợp hơn.
Nên đưa chức năng này vào phạm vi sớm khi người dùng phải đối soát thường xuyên, chuyển dữ liệu sang hệ thống khác hoặc cần giữ dữ liệu khi rời sản phẩm. Khi đó, xuất dữ liệu là một phần của quy trình vận hành và tiêu chí bàn giao.
Dịch vụ Product Development của Auranium có thể cùng đội chốt mẫu dữ liệu, quyền truy cập và cách xử lý tác vụ trước khi triển khai. Một đặc tả đủ rõ sẽ giúp dev, QA và người vận hành kiểm tra cùng một kết quả, thay vì mỗi bên hiểu nút xuất theo một cách khác nhau.
