Meridian: từ tệp phòng ban đến hành động có người phụ trách.
Một bản dựng trên Meridian Components, nhà sản xuất hư cấu có bốn nhà máy tại Việt Nam. Mọi màn hình SAS dưới đây đều lấy từ môi trường Viya mà chúng tôi dùng để xây dựng, được chụp vào tháng 10/2026. Mọi con số đều do chính môi trường đó tạo ra.
- tệp phòng ban lúc bắt đầu
- 19tệp phòng ban lúc bắt đầu
- dòng được sửa bởi 40 quy tắc làm sạch
- 28.098dòng được sửa bởi 40 quy tắc làm sạch
- mô hình hết hàng được so sánh
- 7mô hình hết hàng được so sánh
- hành động, mỗi hành động đều được quyết định đã xuất bản xác nhận
- 306hành động, mỗi hành động đều được quyết định đã xuất bản xác nhận
Bốn nhà máy, mỗi phòng ban một sự thật riêng.
Meridian vận hành bốn nhà máy và bốn kho bằng các bảng tính của từng phòng ban: sản lượng theo ca, bảng theo dõi mua hàng, số liệu kiểm kê và bảng giá thành tiêu chuẩn. Mỗi phòng ban giữ một phiên bản số liệu riêng, nên cuộc họp hằng tuần bắt đầu bằng việc đối chiếu số liệu thay vì hành động dựa trên chúng.
Chúng tôi không yêu cầu ai bỏ tệp của mình. SAS nạp các tệp nguyên trạng. Dự án được chia thành năm giai đoạn: mỗi giai đoạn là một thư mục chương trình, và mỗi chương trình đều có một luồng đi kèm.
- Quyết định
- Nạp tệp nguyên trạng và thực hiện mọi chỉnh sửa trong SAS, bằng mã mà ai cũng đọc được.
- Lý do
- Mọi người vẫn dùng công cụ họ tin tưởng, và mỗi chỉnh sửa đều hiển thị rõ ràng, lặp lại được, thay vì nằm khuất trong bản sao của ai đó.
- Xây dựng bằng
- SAS StudioSAS Content

Làm sạch một lần, bằng những quy tắc kiểm tra được.
19 tệp trở thành 23 bảng thô, 12 bảng đã làm sạch và 23 bảng gold sẵn sàng cho việc ra quyết định. Bốn mươi quy tắc làm sạch đã sửa 28.098 dòng: số tiền nhập dưới dạng văn bản, ngày tháng theo ba định dạng, mã ca được viết theo nhiều kiểu. Mỗi quy tắc ghi một dòng vào nhật ký chất lượng dữ liệu.
Mỗi chương trình đều có một luồng, nên SAS Lineage có thể vẽ đường đi từ bất kỳ bảng nào ngược về chương trình đã tạo ra nó, và xuôi đến các báo cáo đọc nó.
- Quyết định
- Một quy tắc, một dòng nhật ký, và một luồng cho mỗi chương trình.
- Lý do
- Khi quản lý hỏi một con số từ đâu ra, câu trả lời là một cú nhấp trong SAS Lineage, không phải một cuộc họp.
- Xây dựng bằng
- Luồng SAS StudioDATA step và PROC SQLSAS Lineage

Dự đoán hết hàng, và để các mô hình cạnh tranh.
Câu hỏi của nhân viên kế hoạch rất đơn giản: sản phẩm nào, ở kho nào, sẽ xuống dưới điểm đặt hàng lại trong bốn tuần tới? Model Studio huấn luyện bảy mô hình ứng viên trên cùng một bộ đặc trưng (tồn kho so với điểm đặt hàng lại, hàng đang trên đường, lượng xuất gần đây, mức giao trễ của nhà cung cấp và mùa vụ), còn các tuần sau được giữ lại để kiểm thử.
Forest xếp hạng tốt nhất trên các tuần giữ lại và được đăng ký trong Model Manager làm mô hình chính. Gradient boosting được huấn luyện lại bằng mã mỗi tuần với vai trò mô hình thách đấu, nên nếu mô hình chính bắt đầu kém đi, các con số sẽ cho thấy.
- Quyết định
- Forest là mô hình chính; gradient boosting được giữ lại làm mô hình thách đấu.
- Lý do
- Forest xếp hạng tốt nhất trên dữ liệu nó chưa từng thấy, và giữ một mô hình thách đấu giúp thấy được mô hình chính có đang bắt đầu kém đi hay không.
- Xây dựng bằng
- Model StudioModel Manager



Ra quyết định bằng những quy tắc mà người làm nghiệp vụ đọc được.
Một điểm số chưa phải là hành động. Quyết định Meridian_next_best_action chạy mô hình chính, rồi đến hai bộ quy tắc. “Chọn hành động” (6 quy tắc) xác định một vị trí tồn kho có cần đặt hàng lại không, một đơn đặt hàng có cần đẩy nhanh không, một sản phẩm có cần rà soát biên lợi nhuận không, hay một dây chuyền có cần kiểm tra không. “Mức ưu tiên, người phụ trách và duyệt” (14 quy tắc) đặt mức ưu tiên theo số tiền có nguy cơ mất, chọn người phụ trách, đặt hạn xử lý và quyết định khi nào cần người thứ hai kiểm tra.
Quyết định được xuất bản lên SAS Micro Analytic Service, nên bất cứ thứ gì gửi được một yêu cầu web đều có thể hỏi nó cần làm gì.
- Quyết định
- Giữ các ngưỡng trong bộ quy tắc, không đặt trong mã chương trình.
- Lý do
- Trưởng bộ phận chuỗi cung ứng có thể đọc và thay đổi “đẩy nhanh khi nhà cung cấp giao trễ ở 60% số đơn gần đây” mà không cần lập trình viên, và Intelligent Decisioning lưu phiên bản cho mọi thay đổi.
- Xây dựng bằng
- Intelligent DecisioningMicro Analytic Service



Chạy mỗi thứ Hai, với cùng một logic.
Một tác vụ theo lịch chạy vào 06:00 mỗi thứ Hai. Tác vụ đọc lại những gì mọi người đã quyết định và xử lý trong Lantern, tạo các hành động đề xuất của tuần này, đưa từng hành động qua quyết định đã xuất bản, soạn tin nhắn, đo kết quả của tuần trước và đẩy kết quả lên Lantern.
Tác vụ theo lô gọi đúng quyết định đã xuất bản mà mọi nơi khác cũng dùng, nên một hành động trong báo cáo và một hành động trên màn hình không thể mâu thuẫn nhau. Nếu không kết nối được dịch vụ quyết định, tác vụ dừng lại và giữ các hành động của tuần trước thay vì xuất bản một danh sách trống.
- 1Đọc lại quyết định và cách xử lý từ Lantern
- 2Tạo các hành động đề xuất
- 3Đưa mọi hành động đề xuất qua Meridian_next_best_action
- 4Soạn tin nhắn và kiểm tra
- 5Đo những gì đã xảy ra sau các hành động trước đó
- 6Đẩy hành động, kết quả và rủi ro hết hàng lên Lantern
- Quyết định
- Gọi quyết định đã xuất bản từ tác vụ theo lô thay vì chép các quy tắc của nó vào mã.
- Lý do
- Chỉ một nơi ra quyết định. Đổi một quy tắc là mọi kênh cùng thay đổi, và không có gì bị lệch.
- Xây dựng bằng
- SAS Job ExecutionPROC HTTPMicro Analytic Service
proc http url="&base./microanalyticScore/modules/meridian_next_best_action/steps/execute"
method="POST" in=_nq out=_na ct="application/json" oauth_bearer=sas_services;
headers "Accept"="application/json";
run;NOTE: Lantern decisions read into APP_ACTION_DECISIONS.
NOTE: Lantern resolutions read into APP_ACTION_RESOLUTIONS.
NOTE: Decision service answered all 306 rows (meridian_next_best_action).
ACT REORDER High 55 55 1,994,641,000
ACT EXPEDITE_PO High 47 47 181,319,000
ACT INVESTIGATE_LINE High 12 12 790,203,000
NOTE: Lantern gold_actions: {"rows": 306, "table": "gold_actions", "skipped": []}
NOTE: Lantern gold_stockout_risk: {"rows": 16800, "table": "gold_stockout_risk", "skipped": []}
NOTE: Lantern gold_model_metrics: {"rows": 11, "table": "gold_model_metrics", "skipped": []}Mỗi hành động một người phụ trách, kèm lý do rõ ràng.
Lantern giao mỗi hành động cho một người phụ trách và cho thấy vì sao SAS đưa ra hành động đó: quy tắc đã kích hoạt, xác suất của mô hình chính với các vị trí tồn kho, và bộ quy tắc đã chọn mức ưu tiên, người phụ trách và hạn xử lý. Người phụ trách làm việc (gọi nhà cung cấp, kiểm tra dây chuyền, đặt hàng), ghi lại những gì đã làm và đóng việc.
Mỗi người thấy gì tùy theo vai trò. Nhân viên mua hàng thấy các đơn đặt hàng, trưởng ca thấy dây chuyền của mình, và cơ sở dữ liệu thực thi điều đó trên từng dòng.
- Quyết định
- Giấy phép Viya cho những người xây dựng và quản trị; Lantern cho tất cả những người hành động.
- Lý do
- Hàng trăm nhân viên tuyến đầu có thể hành động dựa trên quyết định của SAS mà không cần giấy phép Viya, và mọi điều họ quyết định đều quay về SAS vào thứ Hai tuần sau.
- Xây dựng bằng
- LanternBảo mật theo dòng của PostgreSQL


Đo những gì đã xảy ra, và giữ cho các mô hình trung thực.
Mỗi tuần, tác vụ đối chiếu các hành động đã xử lý với những gì xảy ra sau đó: hàng có hết không, đơn đặt hàng có về đúng hạn không, tỷ lệ lỗi có giảm trở lại không. Kết quả được đẩy lên Lantern, ngay bên cạnh hành động.
Các mô hình cũng được đánh giá theo cách đó. Mô hình chính, mô hình thách đấu và một cách xếp hạng đơn giản theo mức tồn kho được chấm điểm trên cùng 1.100 dòng dữ liệu giữ lại, trong đó 138 dòng đã hết hàng trong vòng bốn tuần.
- Quyết định
- Đánh giá mọi mô hình trên cùng các dòng dữ liệu, đặt cạnh một mốc so sánh đơn giản.
- Lý do
- Một mô hình chỉ xứng đáng được dùng nếu nó tốt hơn việc chỉ xếp hạng theo mức tồn kho. Trong 300 dòng rủi ro nhất, mô hình chính bắt được nhiều hơn mốc so sánh 13 lần hết hàng.
- Xây dựng bằng
- Chương trình SASVisual AnalyticsLantern
Các mô hình hết hàng trên cùng các dòng dữ liệu giữ lại
| Mô hình | AUC | Số lần hết hàng bắt được trong 300 dòng rủi ro nhất |
|---|---|---|
| Forest, mô hình chính | 0.939 | 133 / 138 |
| Gradient boosting, mô hình thách đấu | 0.927 | 129 / 138 |
| Chỉ dựa vào mức tồn kho, mốc so sánh | 0.918 | 120 / 138 |
AUC: 0,5 là tung đồng xu, 1,0 là hoàn hảo. Do ins_02 tính ngày 20/10/2026.


Hồ sơ quyết định
- Điểm xuất phát
Nạp tệp nguyên trạng và thực hiện mọi chỉnh sửa trong SAS, bằng mã mà ai cũng đọc được.
SAS Studio, SAS Content
- Làm sạch và truy vết
Một quy tắc, một dòng nhật ký, và một luồng cho mỗi chương trình.
Luồng SAS Studio, DATA step và PROC SQL, SAS Lineage
- Dự đoán
Forest là mô hình chính; gradient boosting được giữ lại làm mô hình thách đấu.
Model Studio, Model Manager
- Quyết định
Giữ các ngưỡng trong bộ quy tắc, không đặt trong mã chương trình.
Intelligent Decisioning, Micro Analytic Service
- Chạy hằng tuần
Gọi quyết định đã xuất bản từ tác vụ theo lô thay vì chép các quy tắc của nó vào mã.
SAS Job Execution, PROC HTTP, Micro Analytic Service
- Hành động trong Lantern
Giấy phép Viya cho những người xây dựng và quản trị; Lantern cho tất cả những người hành động.
Lantern, Bảo mật theo dòng của PostgreSQL
- Đo lường
Đánh giá mọi mô hình trên cùng các dòng dữ liệu, đặt cạnh một mốc so sánh đơn giản.
Chương trình SAS, Visual Analytics, Lantern
Lantern chạy trên gì
Lantern đọc các bảng mà tác vụ hằng tuần của Viya xuất ra, nên mọi con số trong không gian làm việc đều là kết quả thật từ SAS. Các phần ở trên cho thấy từng phần được xây dựng ở đâu.
Xem Lantern vận hành.
Bản demo chạy trên Meridian, một nhà sản xuất hư cấu được dựng từ bộ dữ liệu chuỗi cung ứng có thật. Đăng nhập và xử lý việc của tuần này như đội ngũ của họ.