Dữ liệu và hệ thống nghiệp vụ
Thiết kế nhập CSV an toàn cho người vận hành hằng ngày
Nhập CSV cần một quy trình vận hành, không chỉ nút chọn tệp. Hãy định nghĩa ý nghĩa cột, xem trước thay đổi, tách dòng lỗi và làm rõ việc thử lại trước khi nhân viên cập nhật hàng loạt dữ liệu nghiệp vụ.
Bảng tính tiện vì nhân viên chuẩn bị được nhiều thay đổi khi ngoại tuyến. Nhưng nhầm ánh xạ cột cũng khiến sai sót khó xử lý sau khi nhập. Thiết kế cho người hiểu nghiệp vụ nhưng không biết lệnh cơ sở dữ liệu. Màn hình phải giải thích phần nào đổi, phần nào lỗi và phần nào giữ nguyên.
Công bố quy ước tệp
Cung cấp mẫu tải xuống có tên cột và ví dụ dễ hiểu. Nêu mã hóa, dấu phân cách, định dạng mã và cách hiểu ngày tháng. Quy định ô trống nghĩa là không đổi, giá trị rỗng hay xóa giá trị. Không để người vận hành phải đoán theo cách bảng tính lưu tệp.
Đặt thông báo kiểm tra cạnh dòng và cột có vấn đề. Giải thích giá trị cần nhập và người dùng có thể sửa tệp hay phải yêu cầu chỉnh danh mục. Giữ số không ở đầu mã nghiệp vụ bằng cách coi mã là văn bản xuyên suốt đường nhập.
Đưa vào vùng tạm trước khi ghi thật
Dùng vùng tạm, tức các bản ghi chưa tác động dữ liệu nghiệp vụ đang dùng. Phân tích tệp rồi hiển thị bản ghi sẽ tạo, sẽ sửa, không đổi và bị lỗi. Yêu cầu xác nhận đúng bản xem trước đó, không âm thầm nhập một tệp mới hơn.
COPY của PostgreSQL mặc định dừng khi gặp lỗi xử lý, trong khi các tùy chọn có thể thay đổi hành vi này.[2] Chọn rõ hành vi sản phẩm mong muốn. Nhập toàn bộ hoặc không nhập phù hợp khi bản ghi phụ thuộc nhau. Chấp nhận từng phần có thể phù hợp với dòng độc lập, nhưng cần báo cáo chính xác và cách thử lại dòng lỗi an toàn.
Ví dụ giả định: cập nhật danh mục địa điểm
Một điều phối viên văn phòng giả định nhập sức chứa phòng. Một mã phòng có số không ở đầu, mã khác trỏ đến địa điểm đã ngừng dùng. Bản xem trước giữ nguyên mã đầu và báo lỗi dòng sau. Chưa có sức chứa nào thay đổi trước khi người điều phối xác nhận phạm vi chấp nhận.
Với danh mục này, quy tắc đề xuất từ chối cả tệp nếu còn địa điểm chưa xác định. Người điều phối sửa tham chiếu rồi gửi lại. Lựa chọn này trì hoãn các dòng đúng, nhưng giữ đợt cập nhật nhất quán. Quy trình khác có thể hợp lý khi nhận từng phần với kiểm soát khác.
Thiết kế trước lần thử thứ hai
Lần thử lại phải có quan hệ rõ với lần trước. Nên có mã lần nhập và khóa dòng ổn định, cùng kết quả phân biệt thay đổi đã áp dụng với thay đổi mới. Nếu hết thời gian chờ khiến người dùng không thấy kết quả cuối, hãy cho tra lại thay vì gửi lại một cách mù quáng.
Quyền cập nhật hàng loạt cũng quan trọng. OWASP khuyến nghị kiểm tra quyền trên mọi yêu cầu.[4] Áp dụng quyền nghiệp vụ khi ghi dữ liệu, không chỉ khi mở màn hình tải tệp. Tệp hợp lệ không được trở thành đường vòng vượt hạn chế sửa thông thường. Hãy kiểm tra kết quả lần nhập trước khi tiếp tục.
Trước khi cấp quyền nhập dữ liệu thật, hãy cho người mới diễn tập toàn bộ đường sửa lỗi và gửi lại bằng tệp thử không gây tác động nghiệp vụ.
Tệp lỗi tải xuống có thể lặp lại dữ liệu không đáng tin cậy. OWASP mô tả nguy cơ chèn công thức khi phần mềm bảng tính diễn giải dữ liệu đó thành công thức.[9] Nên xuất workbook với ô không đáng tin cậy được lưu rõ dưới dạng văn bản và tắt suy luận công thức. Nếu phải dùng CSV, chọn cách xử lý đã kiểm thử trên các ứng dụng được hỗ trợ, với ký tự mở đầu công thức, dấu phân cách và dấu nháy. Kiểm thử cả thao tác lưu rồi mở lại tệp. Chỉ thêm dấu nháy không phải biện pháp bảo vệ dùng được cho mọi trường hợp.[9] Tách giá trị đã biến đổi để hiển thị khỏi dữ liệu gốc dùng sửa lỗi.
- Quy định ý nghĩa ô trống và dòng trùng.
- Tách rõ bản ghi tạo, sửa và tham chiếu bị từ chối.
- Chủ động chọn nhận toàn bộ hoặc từng phần.
- Cho tải lỗi kèm mã dòng và biện pháp chống chèn công thức đã kiểm thử.
- Hiển thị mã lần nhập, kết quả cuối và cách thử lại.