Trao đổi về cách kiểm soát luồng dữ liệu

Chào các anh/chị và các bạn,

Nhóm em hiện đang phân tích và thiết kế luồng dữ liệu cho quy trình quản lý dự án xây dựng. Trong đó, nhóm đang xử lý mối liên kết giữa ba app chính: App 8 - Cơ hội đấu thầu → App 41 - Dự toán sơ bộ, App 42 - Phương án dự toán, App 7 - Dự toán và quay về App 8 - Cơ hội đấu thầu.

Trong quá trình đưa bản đặc tả kỹ thuật vào thiết lập thực tế, nhóm nhận thấy có một vấn đề liên quan đến cách dữ liệu được tự động chuyển tiếp giữa các app. Vì vậy, nhóm muốn chia sẻ tình huống hiện tại và mong nhận được góp ý từ các anh/chị có kinh nghiệm.

Vấn đề nhóm đang gặp phải:

Theo thiết kế ban đầu của nhóm, khi một bản ghi tại App 42 - Phương án dự toán được chuyển sang trạng thái “Đã duyệt”, hệ thống sẽ tự động tạo một bản ghi mới tại App 7 - Dự toán.

Tuy nhiên, sau khi bản ghi tại App 7 được tạo ra, dữ liệu lại tiếp tục được tham chiếu sang App 8 - Cơ hội đấu thầu. Điều này khiến luồng dữ liệu bị chạy liên tục từ App 42 sang App 7 rồi sang App 8 mà chưa có bước kiểm tra hoặc xác nhận lại từ người dùng tại App 7.

Một phần App 7 - Dự toán hiện không có quy trình riêng. Vì vậy, app này không có các trạng thái như “Chờ duyệt”, “Đã duyệt” hay “Từ chối” để làm điều kiện kiểm soát. Khi không có bước dừng, hệ thống sẽ tự động đẩy dữ liệu đi tiếp, dẫn đến rủi ro dữ liệu chưa được rà soát kỹ nhưng đã được liên kết sang bước sau.

Hai hướng xử lý nhóm đang cân nhắc:

  • Hướng 1: Giữ nguyên theo đặc tả kỹ thuật ban đầu

Với hướng này, nhóm vẫn giữ cơ chế tự động tạo bản ghi từ App 42 sang App 7 như thiết kế ban đầu.

  • Hướng 2: Điều chỉnh lại luồng dữ liệu, chuyển từ tự động đẩy sang người dùng chủ động chọn

Với hướng này, nhóm sẽ bỏ cơ chế tự động tạo bản ghi từ App 42 sang App 7. Thay vào đó, người dùng sẽ tự tạo bản ghi tại App 7 - Dự toán, sau đó chọn đúng Phương án dự toán đã được duyệt từ App 42 thông qua trường tham chiếu hoặc lookup. Nói cách khác, thay vì hệ thống tự động đẩy dữ liệu đi tiếp, người dùng sẽ chủ động kéo dữ liệu cần thiết vào App 7 sau khi đã kiểm tra.

Ưu điểm của hướng này là người dùng có thêm bước rà soát trước khi dữ liệu được đưa vào bản Dự toán giúp hạn chế rủi ro dữ liệu bị liên kết sai hoặc đi quá nhanh.

Quan điểm hiện tại của nhóm:

Hiện tại, nhóm đang nghiêng về Hướng 2.

Lý do là App 7 - Dự toán có liên quan đến dữ liệu quan trọng, đặc biệt là thông tin về chi phí và tài chính. Nếu app này không có quy trình duyệt riêng mà vẫn để hệ thống tự động tạo và chuyển tiếp dữ liệu, rủi ro sai sót sẽ khá cao.

Việc dùng Data Connection hoặc Lookup có thể làm tăng thêm một thao tác thủ công cho người dùng. Tuy nhiên, thao tác này lại giúp người dùng có trách nhiệm kiểm tra dữ liệu trước khi liên kết bản Dự toán với Cơ hội đấu thầu, đây là cách an toàn hơn trong trường hợp dữ liệu cần được kiểm soát chặt chẽ.

Các vấn đề nhóm mong muốn được thảo luận:

Mong muốn được mọi người góp ý về các cách làm ở trên. Ngoài ra, trong các phân hệ nhạy cảm như Dự toán hoặc các dữ liệu liên quan đến tài chính nên cân bằng như thế nào giữa việc tự động hóa để giảm thao tác cho người dùng và việc giữ lại các bước kiểm soát để hạn chế rủi ro dữ liệu?

Nhóm rất mong nhận được góp ý từ các anh/chị và các bạn để có thể lựa chọn hướng thiết kế phù hợp hơn.

1 Like

Chào nhóm, mình sẽ giải đáp thắc mắc của nhóm như sau:

  • Theo mình hiểu, luồng hiện tại trong file đặc tả đang đi theo quy trình:
    • Nhận cơ hội đấu thầu → Lập phương án/dự toán → Duyệt hoặc không duyệt dự toán → Cập nhật kết quả về cơ hội đấu thầu.

    • Cụ thể, sau khi có bản ghi tại App 8 - Cơ hội đấu thầu, hệ thống sẽ tiếp tục xử lý các thông tin liên quan đến dự toán thông qua App 41 - Dự toán sơ bộApp 42 - Phương án dự toán. Khi một phương án dự toán tại App 42 được chuyển sang trạng thái Đã duyệt, theo app specs hệ thống sẽ hỗ trợ automation để tự động tạo một bản ghi dạng draft dự toán tại App 7 - Dự toán.

    • Tuy nhiên, điểm cần làm rõ ở đây là bản ghi được tạo tại App 7 chỉ nên được hiểu là bản dự toán nháp được sinh ra từ phương án đã duyệt, chứ chưa nên được xem là bản dự toán chính thức để tự động cập nhật ngược lại về App 8. Lý do là App 7 chứa các dữ liệu liên quan đến chi phí, tài chính và giá trị dự toán, nên cần có bước rà soát hoặc xác nhận từ người phụ trách trước khi dữ liệu này được sử dụng cho các bước tiếp theo.

      –> Vì vậy, theo mình, phương án phù hợp hơn không phải là chọn hoàn toàn Phương án 1 hoặc Phương án 2, mà nên điều chỉnh thành một phương án kết hợp:

        App 42 - Phương án dự toán được duyệt → Hệ thống tự động tạo draft tại App 7 - Dự toán → Người dùng kiểm tra và xác nhận tại App 7 → Sau khi App 7 được xác nhận, hệ thống mới cập nhật kết quả về App 8 - Cơ hội đấu thầu.
      

      Với cách này, nhóm vẫn giữ được ưu điểm của Phương án 1 là giảm thao tác thủ công cho người dùng nhờ automation tự động tạo bản ghi dự toán ban đầu. Và nhóm không để dữ liệu tự động đi xuyên suốt từ App 42 sang App 7 rồi quay về App 8 vì đã có thêm bước kiểm tra phê duyệt ở mỗi App (Nhóm có thể bổ sung nếu cần thiết) hoặc là một bước cập nhật trạng thái “Đã duyệt”. Điều này giúp hạn chế rủi ro dữ liệu chi phí bị liên kết sai hoặc cập nhật quá sớm.

      Mình đề xuất phương án cho nhóm là: giữ automation ở bước tạo draft dự toán, nhưng bổ sung thêm bước phê duyệt thông qua trạng thái tại App 7 trước khi cập nhật về App 8.

  • Ví dụ:
    • App 7 nên có ít nhất một trạng thái như “Nháp/Chờ rà soát”“Đã xác nhận”.
    • Chỉ khi bản ghi tại App 7 được chuyển sang trạng thái Đã xác nhận, hệ thống mới cho phép cập nhật kết quả dự toán về App 8.
  • Cách thiết kế này giúp hệ thống vừa tận dụng được automation để giảm nhập liệu, vừa giữ lại bước kiểm soát cần thiết đối với dữ liệu quan trọng

Nếu bạn còn có thắc mắc thì có thể hỏi và mình giải đáp sớm nhất có thể cho bạn.

2 Likes