Bỏ qua để đến nội dung

Gộp tệp (Group files)

Bước Gộp tệp (Group files) trả lời đúng một câu hỏi: một đơn vị công việc gồm những gì?

Bước này nhận một trường tệp trên biểu mẫu bắt đầu và trả về một danh sách hồ sơ — mỗi hồ sơ là một thư mục con kèm toàn bộ tệp nằm trong đó. Cho một bước Lặp theo phần tử (For each) phía sau đọc kết quả ấy, vòng lặp sẽ chạy một lần cho mỗi hồ sơ, và input.item chính là danh sách tệp của hồ sơ đang xét.

Bản thân bước này rất nhẹ: nó không mở tệp, không tải tệp về, không đọc nội dung. Nó chỉ mô tả cách chia nhóm.

Nếu không có bước này mà cho vòng lặp đọc thẳng trường tệp, quy trình sẽ chạy một lần cho mỗi tệp. Cả hai cách đều hợp lệ — chọn theo nghiệp vụ:

Cách xếp bước Mỗi phiên chạy con xử lý
Trường tệp → Gộp tệp → Lặp theo phần tử Một hồ sơ gồm nhiều trang
Trường tệp → Lặp theo phần tử Một tài liệu đơn lẻ
  • Tiếp nhận hồ sơ đã quét: mỗi thư mục là một bộ hồ sơ nhiều trang, Trợ lý AI phải đọc cả bộ mới kết luận được.
  • Bộ chứng từ đi kèm nhau (hợp đồng + phụ lục + biên bản) cần xét chung một lần, không tách rời.
  • Nguồn tệp là một thư mục theo dõi do bên ngoài đổ vào, mỗi lần một thư mục con.

Không cần bước này khi mỗi tệp tự nó là một tài liệu độc lập — ví dụ mỗi ảnh là một phiếu riêng. Khi đó cho Lặp theo phần tử (For each) đọc thẳng trường tệp là đủ.

Cài đặt Mô tả
Tệp cần gộp (Files to group) Trường tệp trên biểu mẫu bắt đầu. Danh sách chỉ hiện các trường kiểu tệp. Người khởi chạy có thể đính kèm tệp thủ công, hoặc — nếu trường cho phép chọn nhiều tệp — trỏ trường đó vào một thư mục theo dõi.
Độ sâu thư mục (Folder depth) Số cấp thư mục, tính từ thư mục mà trường tệp trỏ tới, để xác định ranh giới một hồ sơ. Nhận giá trị từ 0 đến 10, mặc định là 1.

Kết quả của bước là biến Folders trong trình chọn biến, đường dẫn nodes.<mã bước>.output.groups. Đây chính là biến bạn đưa vào ô Danh sách lặp (List to iterate) của bước Lặp theo phần tử.

Độ sâu được đo từ thư mục mà trường tệp trỏ tới, không phải từ đường dẫn tuyệt đối trên máy chủ. Nhờ vậy cùng một quy trình dùng được cho nhiều đơn vị có cách đặt thư mục gốc khác nhau.

  • Độ sâu 1 — mỗi thư mục ngay dưới thư mục gốc là một hồ sơ. Đây là cách xếp thông dụng nhất.
  • Độ sâu 0 — toàn bộ những gì được chọn là một hồ sơ duy nhất.
  • Độ sâu 2 trở lên — ranh giới hồ sơ lùi xuống thêm một cấp nữa.

Tệp nằm sâu hơn độ sâu đã đặt sẽ được gom ngược lên hồ sơ chứa nó, nên bên gửi vẫn được tự do sắp xếp bên trong một hồ sơ.

Tệp nằm rời ngay ở thư mục gốc thì không thuộc hồ sơ nào và bị loại khỏi lần chạy. Chúng không bị ghép bừa vào hồ sơ bên cạnh: màn hình khởi chạy đếm riêng chúng trong mục Chưa lấy, dưới dạng “N tệp rời, không nằm trong thư mục nào”.

Quy trình Tiếp nhận hồ sơ tài liệu: máy quét đổ từng bộ hồ sơ vào một thư mục trên máy chủ, mỗi bộ một thư mục con.

Thư mục theo dõi trỏ vào incoming/HSTL và đang có:

incoming/HSTL/
├── HS-481/
│ ├── trang01.pdf
│ ├── trang02.pdf
│ └── trang03.pdf
├── HS-482/
│ └── ban-scan/
│ └── trang01.pdf
└── ghi-chu.txt

Cách dựng quy trình:

  1. Bắt đầu (Start) — biểu mẫu bắt đầu có một trường tệp cho phép chọn nhiều tệp, ví dụ bo_ho_so.

  2. Gộp tệp (Group files):

    Cài đặt Giá trị
    Tệp cần gộp input.bo_ho_so
    Độ sâu thư mục 1
  3. Lặp theo phần tử (For each) — ô Danh sách lặp chọn biến Folders của bước Gộp tệp.

  4. Trong thân vòng lặp, bước Trợ lý AI (Agent) đính kèm input.item vào lời nhắc để đọc toàn bộ các trang của hồ sơ đó và trích xuất thông tin.

Kết quả ở độ sâu 1: 2 hồ sơ. HS-481 có 3 tệp; HS-482 có 1 tệp — ban-scan/trang01.pdf nằm sâu hơn nên được gom ngược lên HS-482. Riêng ghi-chu.txt là tệp rời nên bị loại và được đếm trong mục Chưa lấy.

Nếu đặt độ sâu 0, cả ba đường dẫn trên sẽ trở thành một hồ sơ duy nhất và Trợ lý AI nhận toàn bộ tệp trong một lần chạy — gần như chắc chắn không phải điều bạn muốn ở đây.

Xem thêm cách khai báo biểu mẫu bắt đầu tại Bắt đầu (Start), cách cấu hình vòng lặp tại Lặp theo phần tử (For each), cách thiết lập chính thư mục tại Thư mục theo dõi, và cách đính kèm tệp cho mô hình tại Trợ lý AI (Agent).