Use case chia lịch sản xuất xuống PO
Có một loại công việc mà nhìn vào, người ngoài nghề không thấy gì — chỉ thấy mấy cái file Excel, mấy cái tab, mấy cái cột. Nhưng người làm trực tiếp thì biết: đây là loại việc mà không làm không được, làm thì mất cả buổi, và làm xong thì không ai khen vì đó là việc "đương nhiên phải làm".
Khách hàng của tôi là một công ty sản xuất. Mỗi tháng, khi bộ phận kế hoạch chốt xong lịch giao hàng cho tháng đó, có một người phải ngồi xuống và làm một việc: đối chiếu lịch giao hàng mới với danh sách PO còn tồn đọng, rồi tách từng dòng PO ra theo đúng ngày giao thực tế.
Nghe đơn giản, nhưng cực kỳ mất thời gian.
Flow hiện tại
Họ có hai file Excel. File thứ nhất là lịch giao hàng, một sheet cho mỗi tháng, mỗi sản phẩm là một hàng, mỗi cột là một ngày trong tháng, số trong ô là số lượng giao ngày đó. Dưới mỗi hàng số lượng là một hàng LSX — mã lệnh sản xuất — được merge nhiều ô, span qua nhiều ngày.

File thứ hai là bảng theo dõi giao hàng. Hơn 2.400 dòng. Mỗi dòng là một dòng PO: mã hàng, số lượng, ngày giao theo PO, LSX, trọng lượng, pallet.

Khi lịch giao hàng của 1 tháng ra, những PO nào có cột ngày giao còn trống — đó là những dòng cần được "chia". Chia nghĩa là: lấy 1 dòng PO ban đầu, đối chiếu với lịch giao hàng, rồi tách thành nhiều dòng nhỏ theo đúng từng ngày giao, từng số lượng, từng mã LSX tương ứng.
Ví dụ: Một PO có 6 cái hàng A cần giao tháng 3. Lịch giao hàng nói: ngày 1 giao 1 cái, ngày 2 giao 1 cái, ngày 3 giao 5 cái. Thì dòng PO đó phải tách thành 3 dòng — 1 cái ngày 01/03, 1 cái ngày 02/03, 4 cái ngày 03/03. (Vì 4 cái còn lại từ 5 cái ngày 03/03 sẽ cuốn chiếu sang PO tiếp theo.)
Và họ làm việc này bằng tay, mỗi tháng, trong khoảng 4-6 tiếng.
Engineer nhìn vào và thấy gì
Khi khách hàng mô tả quy trình, thứ đầu tiên tôi nghĩ không phải là "dùng AI đi". Tôi nghĩ: đây là bài toán biến đổi dữ liệu có cấu trúc, cần một bước trung gian để làm phẳng dữ liệu từ định dạng lịch giao hàng (rộng, nhiều cột ngày) sang định dạng bảng (dài, mỗi dòng là một ngày giao), rồi mới có thể dùng để phân bổ vào PO.
Vấn đề là file lịch giao hàng có cấu trúc khá phức tạp: hàng số lượng và hàng LSX xen kẽ nhau, LSX là merged cell span nhiều ngày, có sản phẩm gom nhiều mã hàng trong cùng một ô (nghĩa là số lượng phải chia đều), và không phải ngày nào cũng có giao hàng.
Nếu đây là 3 năm trước, tôi sẽ viết code Python. Mất khoảng nửa ngày, code được, nhưng khách hàng không dùng được một mình, và tháng sau nếu format thay đổi thì lại phải sửa.
Thay vào đó, tôi dùng Cowork với file Excel và hai prompt.
Bước 1 — Bóc tách lịch giao hàng thành định dạng có thể đọc được
Trước khi phân bổ vào PO, cần làm một bước trung gian: đọc sheet lịch giao hàng và xuất ra một file có cấu trúc rõ ràng, dễ xử lý hơn.
Đây là prompt tôi dùng:
Mục tiêu
Xem sheet 03.2026, tôi muốn dựa vào plan này, tạo ra 1 file sheet mới "03.2026 - Boc tach" có thông tin:Xử lý từng sản phẩm ở sheet 03.2026 từ trên xuống dưới, với mỗi sản phẩm này, cột đầu tiên sẽ có dạng "Tên sản phẩm (item_code_1, item_code_2 … ) , với mỗi item_code, tạo 1 section trong file .md với title "Mã sản phẩm : (#item_code)", trong section là 1 table gồm nhiều dòng với các cột "Ngày", "Số lượng", "LSX", các dòng được bóc tách từ sheet 03.2026 bằng cách:Các cột bên phải của mỗi sản phẩm là số lượng delivery theo ngày là số liệu theo hàng của sản phẩm đó, gióng theo cột ngày (kiểm tra header để xem chính xác trong sheet có bao nhiêu ngày). Hàng nào có nhiều mã sản phẩm chung trong 1 ô, ví dụ như : Tên sản phẩm (item_code_1, item_code_2, item_code_3) thì số lượng delivery sẽ chia đều cho các mã sản phẩm đó.ở dưới số lượng delivery sẽ là LSX, LSX là merged cell được span cho 1 dải ngày.Không tạo row nếu không có số lượng delivery cho ngày đó
Kết quả là một file markdown, mỗi sản phẩm một section, mỗi section là một bảng ngày-số lượng-LSX sạch sẽ, không có ô merge, không có header phức tạp, không có hàng trống. Định dạng mà AI có thể đọc và xử lý chính xác ở bước tiếp theo.
Tại sao cần bước này? Vì file lịch giao hàng gốc được thiết kế để con người đọc, không phải để máy xử lý. Merged cell, header đa tầng, hàng LSX xen kẽ hàng số lượng — tất cả những thứ đó giúp nhìn đẹp trên màn hình nhưng là ác mộng cho bất kỳ thứ gì cần parse tự động. Bước bóc tách này giải quyết chuyện đó.
Bước 2 — Phân bổ vào PO với cơ chế cuốn chiếu
Khi đã có file bóc tách, bước tiếp theo là dùng nó để cập nhật bảng GH 2026.
Đây là prompt bước 2:
Mục tiêu
Dựa vào file "03.2026 - Boc tach" này, phân bổ lại sheet GH 2026 bằng cách từ file 03.2026 - Boc tach, xử lý từng section sản phẩm, section nào không có lịch giao hàng, bỏ qua. Với section có lịch giao hàng:Lấy mã sản phẩm. Ở sheet GH 2026, lọc sản phẩm theo mã đang được xử lý và cột delivery date trống, đi từ trên xuống dưới.Với những dòng lấy được từ bước 1, phân bổ số lượng delivery dựa vào data từ file 03.2026 - Boc Tach tuần tự với cơ chế luỹ tiến / cuốn chiếu.Khi phân bổ xuống, tách dòng được phân bổ thành các dòng nhỏ tương ứng với số lượng từng ngày nếu cần thiết.Ví dụ: Dòng 237, quantity cần là 6. Delivery schedule là 1 item ngày 01.01, 1 item ngày 02.01, 5 item ngày 03.01, thì chúng ta tách dòng này thành 3 dòng, trong đó 1 item ngày 01.01, 1 item ngày 02.01, và 4 item ngày 03.01. Số lượng thừa sẽ cuốn chiếu sang PO sau.Không điền gì vào cột VAT của các dòng được tạo ra/thay đổi.Update LSX từ 03.2026 - Boc tach với những dòng được update, thêm mới, split.
Phần tôi thích nhất trong prompt này là cơ chế "cuốn chiếu". Khi một PO chỉ cần 4 cái nhưng lịch giao ngày đó có 5 cái, 1 cái thừa không bị bỏ — nó tự động được tính vào PO tiếp theo theo thứ tự. Đây là logic nghiệp vụ thực tế mà người làm phải hiểu để viết được, và AI hiểu đúng từ mô tả bằng ví dụ cụ thể.
Kết quả
Hai prompt. Một bước trung gian. Bảng GH 2026 từ "chưa chia" thành đã có đầy đủ ngày giao, số lượng theo từng ngày, và LSX tương ứng cho từng dòng.
Công việc mà trước đây mất 4 tiếng xong trong khoảng 10 phút, bao gồm cả thời gian kiểm tra lại.
Thứ khiến tôi nghĩ nhiều hơn là kết quả
Không phải "wow AI nhanh quá".
Thứ tôi nghĩ nhiều hơn là: người làm việc này 4 tiếng mỗi tháng — họ không phải người không giỏi. Họ hiểu nghiệp vụ, họ biết chính xác cái gì cần làm, họ thậm chí có thể giải thích logic cuốn chiếu mà không cần tôi hỏi lại. Vấn đề không phải là năng lực. Vấn đề là không có công cụ nào trong tầm tay có thể làm chuyện đó thay họ — code thì không tự viết được, Excel formula thì không đủ linh hoạt cho bài toán này, thuê lập trình viên thì quá đắt cho một tác vụ chạy mỗi tháng một lần.
AI không thay thế người đó. Nó làm cái việc mà trước đây không có gì làm được với chi phí hợp lý.
Đó là góc mà tôi thấy thú vị, và cũng là lý do tôi hay kể mấy chuyện như thế này.
Nếu bạn cũng có quy trình nào trong công ty đang chạy bằng tay theo kiểu "không làm không được, làm thì mất thời gian" — tôi thích nghe. Không cam kết gì cả, chỉ là tôi genuinely tò mò mấy cái bài toán như vậy.