Dữ liệu Hệ thống Tự lấy & Tự tính
Bảy tệp đầu vào của một lượt chạy dự báo, từng trường hệ thống tự lấy từ DWH kèm bảng nguồn, và từng phép tính hệ thống tự làm mà không cần người nhập.
1.0 (Draft)
✓ Đã chốt giải pháp & mô hình dự báo
Mọi dữ liệu trên trang này không cần ai nhập. Giao diện chỉ được hiển thị và cho lọc theo chúng, không làm ô sửa: hệ thống đọc DWH bằng tài khoản chỉ đọc, và sửa tay vào đây là làm hỏng dữ liệu gốc. Khi thấy số nguồn sai, người dùng báo cho đội Kho dữ liệu (repo bi-dw).
1. Bảy tệp đầu vào của một lượt chạy
Bộ số chốt đọc 7 tệp Parquet, không truy vấn thẳng DWH trong lúc chạy. Số liệu dưới đây đo trên bộ tệp ngày 26/10/2026.
| # | Tệp | Hạt | Phạm vi | Quy mô | Nguồn trong DWH | Dùng để làm gì |
|---|
| 1 | model_lab/out/panel/lich_su_all_202504_202609.parquet | Cửa hàng × mã hàng × tháng | 04/2025 – 09/2026 | 1.311.486 dòng | fact_order_lines, dim_stores, dim_products, dim_account_channels | Nhãn: sản lượng thùng để dựng mọi chuỗi kho, chuỗi, cửa hàng |
| 2 | model_lab/out/panel/lich_su_subinv_202504_202609.parquet | Kho × kho con × mã hàng × tháng | 01/2026 – 09/2026 | 37.021 dòng | Như trên, kèm kho con | Dựng chuỗi kho con |
| 3 | model_lab/out/panel/daily_all_202504_202609.parquet | Cửa hàng × mã hàng × ngày | 01/04/2025 – 30/09/2026 | 1.857.193 dòng | Như tệp 1 | Nhịp nửa đầu/nửa cuối tháng, số cửa hàng, số ngày có đơn |
| 4 | model_lab/out/panel/panel_all_202504_202608_smp1.parquet | Cửa hàng × mã hàng × tháng | 05/2025 – 08/2026 | 3.934.074 dòng × 72 cột · 20.883 cửa hàng · 495 mã | 17 bảng qua model_lab/sql/panel_causal.sql, cộng 5 cột khuyến mãi gắn thêm — xem mục 2 | Thuộc tính cửa hàng và mã hàng, chiết khấu, hàng tặng, tồn kho, viếng thăm, tủ đông, thời tiết |
| 5 | model_lab/out/panel/revenue_all_202504_202609.parquet | Kênh × mã hàng × tháng | 04/2025 – 09/2026 | 12.986 dòng | fact_order_lines | Doanh thu, dùng làm trọng số |
| 6 | out/export/trade_promotions_full.parquet | Dòng CTKM | Tháng bắt đầu 08/2024 – 12/2026 | 6.368 dòng × 53 cột | user_uploads.trade_promotions | Lịch CTKM. Đây là dữ liệu người dùng nhập (Trade), hệ thống chỉ đọc lại — xem trang Dữ liệu Người dùng Nhập |
| 7 | forecast_demo/data/store_lookup.parquet | Cửa hàng | — | 20.883 dòng | dim_stores | Tên cửa hàng để hiển thị |
Tên tệp đang viết cứng trong mã (yearly_3grains.py, hằng PANEL_PATH, HIST_PATH…). Muốn chạy kỳ 11/2026 phải dựng lại tệp đến 10/2026 và sửa tên tệp. Việc tham số hoá kỳ chạy nằm trong danh sách hạng mục kỹ thuật đang làm.
Bộ lọc chung của tệp 1, 3, 4, 5: chỉ lấy mã hàng thành phẩm (mã ORC bắt đầu bằng 11), bỏ dòng có uom = 'VND' (dòng tiền chiết khấu ghi vào cột số lượng), bỏ đơn trả hàng. Chi tiết các bộ lọc ở trang Quy tắc Làm sạch & Xử lý Bẫy Dữ liệu DWH.
2. Trường hệ thống tự lấy từ DWH
Các bảng dưới liệt kê từng trường của panel (tệp 4) và tệp lịch sử. Cột “Mô hình chốt dùng” cho biết trường đi vào đâu:
- Chronos — chuỗi đầu vào của Chronos-2 và lõi mùa vụ.
- Cây — 50 biến lịch sử của tầng cây.
- Ngoại sinh #n — biến thứ n trong 28 biến ngoại sinh (danh mục).
- Khoá / Hiển thị — chỉ để ghép bảng hoặc in báo cáo.
- Chưa dùng — có sẵn nhưng bộ số chốt chưa đọc.
2.1. Đơn hàng và sản lượng
| Tên trường | Ý nghĩa | Nguồn | Mô hình chốt dùng |
|---|
thung | Sản lượng thùng (tệp 1, 2, 3) | fact_order_lines | Chronos, Cây — là nhãn |
sales_qty_carton | Sản lượng thùng (tệp 4) | fact_order_lines | Ngoại sinh #18 (mẫu số doanh thu/thùng) |
sales_qty | Sản lượng theo đơn vị gốc | fact_order_lines | Chưa dùng |
net_revenue | Doanh thu thuần | fact_order_lines | Ngoại sinh #18 |
revenue | Doanh thu theo kênh × mã × tháng (tệp 5) | fact_order_lines | Trọng số, đối chiếu |
co_mua | Cờ có phát sinh mua | Tính trong truy vấn | Chưa dùng |
so_ngay_co_don | Số ngày có đơn trong tháng | fact_order_lines | Chưa dùng (đã có grp_odays_l0 tính từ đơn ngày) |
order_count | Số đơn | fact_order_lines | Ngoại sinh #16 (mẫu số) |
so_dong_foc | Số dòng hàng tặng | fact_order_lines | Ngoại sinh #16 |
canceled_qty | Sản lượng bị huỷ | fact_order_lines | Chưa dùng |
avg_days_to_delivery | Số ngày giao bình quân | fact_order_lines | Chưa dùng |
2.2. Giá, chiết khấu và khuyến mãi đã áp
| Tên trường | Ý nghĩa | Nguồn | Mô hình chốt dùng |
|---|
discount_rate | Tỷ lệ chiết khấu | fact_order_lines | Ngoại sinh #14, #17 |
discount_amount | Tiền chiết khấu | fact_order_lines | Chưa dùng |
total_discount_amount | Tổng tiền chiết khấu theo mã × tháng | staging.ds_report_order_details (gắn thêm vào panel bởi feature_engineering.augment_panel_with_promos) | Chưa dùng |
promo_applied_ratio | Tỷ lệ dòng đơn có ghi chương trình KM, theo mã × tháng | staging.ds_report_order_details (gắn thêm như trên) | Ngoại sinh #15 |
effective_unit_price | Đơn giá thực sau giảm | fact_order_lines | Chưa dùng |
avg_unit_price | Đơn giá bình quân | fact_order_lines | Chưa dùng |
discount_pct_stddev | Độ lệch chuẩn tỷ lệ chiết khấu | fact_order_lines | Chưa dùng |
is_on_promo, promo_days, promo_depth | Cờ, số ngày và độ sâu CTKM của tháng | user_uploads.trade_promotions theo cửa sổ đặt hàng (sell-in) (gắn thêm như trên) | Chưa dùng ở bộ số chốt |
Trừ ba cột cuối, các trường ở bảng này là số sau khi đã bán — chiết khấu thực tế đã áp lên đơn. Chúng khác lịch CTKM do Trade nhập (kế hoạch trước khi bán).
2.3. Tồn kho và hết hàng
| Tên trường | Ý nghĩa | Nguồn | Mô hình chốt dùng |
|---|
stockout_days | Số ngày hết hàng | fact_inventory_lot_snapshot, fact_inventory_daily_balances, meta.ml_inv02_daily_stock | Chronos (khử phần cầu bị hết hàng che), Ngoại sinh #22 |
stock_tracked_days | Số ngày có theo dõi tồn | Như trên | Chronos, Ngoại sinh #22 (mẫu số) |
in_stock_days | Số ngày còn hàng | Như trên | Chưa dùng |
stock_source | Tồn lấy từ lô (LOT) hay từ số dư (BALANCE) | Như trên | Chưa dùng |
has_stock_data | Cờ có dữ liệu tồn | Như trên | Chưa dùng |
Dữ liệu tồn theo lô chỉ có từ 09/06/2026. Trước mốc này phần lớn dòng không có số ngày hết hàng.
2.4. Viếng thăm và tài sản tại điểm bán
| Tên trường | Ý nghĩa | Nguồn | Mô hình chốt dùng |
|---|
visit_compliance_rate | Tỷ lệ tuân thủ tuyến viếng thăm | fact_visits, fact_roadmap_stores | Ngoại sinh #23 |
visit_days | Số ngày có viếng thăm | fact_visits | Chưa dùng |
has_visit_data | Cờ có dữ liệu viếng thăm | fact_visits | Chưa dùng |
pjp_route | Tuyến bán hàng | fact_roadmap_stores | Chưa dùng |
freezer_count | Số tủ đông tại cửa hàng | fact_asset_inventory | Ngoại sinh #24 |
2.5. Thuộc tính cửa hàng
| Tên trường | Ý nghĩa | Nguồn | Mô hình chốt dùng |
|---|
store_key, store_code | Khoá và mã cửa hàng | dim_stores | Khoá |
kenh_l1, kenh_l2, channel_code | Kênh cấp 1, cấp 2, mã kênh chi tiết | dim_account_channels | Khoá — chia chuỗi theo kênh; kenh_l1 vào Cây khi tách kênh |
serving_warehouse_key | Kho phục vụ cửa hàng | Suy từ đơn hàng | Khoá — xác định cửa hàng thuộc kho nào |
store_brand_code | Mã chuỗi của cửa hàng | dim_stores | Khoá — xác định cửa hàng thuộc chuỗi nào |
dia_ban_c1, dia_ban_c2, dia_ban_c3, ten_dia_ban_c2, ten_dia_ban_c3, site_domain_level | Địa bàn các cấp | dim_site_domains | Khoá cho cấp gộp vùng, khu vực |
city_name | Thành phố — để ghép thời tiết | dim_site_domains, dim_weather_locations | Khoá |
store_system, store_group_code, is_legal_entity, account_status | Hệ thống, nhóm, pháp nhân, trạng thái | dim_stores | Chưa dùng |
store_name | Tên cửa hàng (tệp 7) | dim_stores | Hiển thị |
2.6. Thuộc tính mã hàng
| Tên trường | Ý nghĩa | Nguồn | Mô hình chốt dùng |
|---|
product_code, product_name | Mã và tên hàng | dim_products | Khoá, Hiển thị |
brand_id, brand_name | Thương hiệu | dim_products, dim_product_brands | Cây (brand_id), Hiển thị |
category_id, category_code | Ngành hàng | dim_products | Cây (category_id) |
supplier_id, supplier_name | Nhà cung cấp | dim_products, dim_suppliers | Cây (supplier_id), Hiển thị |
uom | Đơn vị tính | dim_products | Cây |
shelf_life | Hạn sử dụng | dim_products | Cây |
net_weight | Khối lượng tịnh | dim_products | Cây |
qty_per_carton | Số đơn vị trên thùng | Suy từ đơn hàng (cột trong dim_products trống) | Cây |
2.7. Lịch và thời tiết
| Tên trường | Ý nghĩa | Nguồn | Mô hình chốt dùng |
|---|
ym, t | Tháng và chỉ số tháng | Tính trong truy vấn | Khoá |
calendar_days, working_days, weekend_days, thang_trong_nam | Lịch tháng | dim_dates cho tháng đã qua; tự tính cho tháng tới (mục 3) | Cây |
avg_tmax | Nhiệt độ cao nhất bình quân | fact_weather_forecast | Ngoại sinh #25 |
rain_days | Số ngày mưa | fact_weather_forecast | Ngoại sinh #26 |
avg_tmin, total_rainfall | Nhiệt độ thấp nhất, tổng lượng mưa | fact_weather_forecast | Chưa dùng |
2.8. Cờ chất lượng dữ liệu
| Tên trường | Ý nghĩa | Mô hình chốt dùng |
|---|
flag_che_do_moi | Bật từ 01/2026 — mốc đổi quy ước ghi nhận hàng tặng và chiết khấu | Chưa dùng trực tiếp; mốc 01/2026 được viết cứng ở REGIME_SWITCH |
flag_thang_nghi_ngo | Đánh dấu tháng 12/2025 để đối chiếu | Chưa dùng; chỉ để đối chiếu, không dùng để lọc |
3. Phép tính hệ thống tự làm
Không trường nào ở bảng này do người nhập. Cột “Có thể bị ghi đè bởi dữ liệu người nhập” cho biết chỗ nào nên mở cho nghiệp vụ xác nhận hoặc thay thế.
| Phép tính | Làm gì | Ở đâu trong mã | Có thể bị ghi đè bởi dữ liệu người nhập |
|---|
| Nối mã kế thừa | Mã mới có hậu tố TMICC được nối về mã cũ trùng tên (26 cặp, khớp 26/26 ngày 17/09/2026). Mã khớp 0 hoặc nhiều mã cũ thì không nối | sku_series.successor_map, to_root | Có — bảng nối mã do nghiệp vụ xác nhận (nhóm 3 trang người dùng nhập) |
| Lịch tháng tới | Số ngày, ngày cuối tuần, ngày làm việc (= ngày không phải thứ Bảy, Chủ nhật) | skeleton.calendar_of | Có — lịch lễ Tết người nhập sẽ trừ thêm ngày nghỉ |
| Trọng số ngày giao dịch | Trọng số theo thứ trong tuần và 5 ngày lễ dương lịch cố định | frontier.DOW_WEIGHTS, PUBLIC_HOLIDAYS_MD | Có — Tết Âm lịch và lễ khác cần lấy từ lịch người nhập |
| Khử phần cầu bị hết hàng che | Nâng mức nền theo tỷ lệ ngày hết hàng của mã hàng | frontier._load_sku_oos | Không |
| Tỷ số chuyển mùa cùng kỳ | So tốc độ bán $t-12$ với $t-13$ trên rổ mã có bán cả hai năm | frontier.compute_seasonal_mult | Không |
| Lịch sử kho con năm 2025 | Năm 2025 chưa có kho con, nên lịch sử kho được chia xuống kho con theo tỷ trọng kho con của 2026 | yearly_3grains.build_subinv_history | Không |
| Gán cửa hàng vào kho và chuỗi | Mỗi cửa hàng lấy kho phục vụ, chuỗi, kênh, địa bàn ở panel; cửa hàng có đơn nhưng chưa có trong panel gom vào rổ (chưa vào panel) | sku_series.store_attributes, attach | Có — cửa hàng mở mới người nhập sẽ có sẵn kho, chuỗi |
| 28 biến ngoại sinh và 50 biến lịch sử | Xem danh mục biến | features.build_features, attach_multivariate_features | Không |
| Khung cặp còn hoạt động | Hạt cửa hàng: chỉ dự báo cho cửa hàng có đơn trong 3 tháng tính tới gốc dự báo (ALIVE_MONTHS = 3) | skeleton.alive_pairs | Có — cửa hàng đóng cửa người nhập sẽ bị loại sớm hơn; cửa hàng mở mới sẽ được thêm |
| Đồng bộ Stein | Trộn dự báo trực tiếp ở kho con, chuỗi với phân bổ từ tổng 473 mã: 0,65 × trực tiếp + 0,35 × phân bổ | yearly_3grains.main | Không |
| Phân bổ xuống cửa hàng | Chia dự báo kho × mã xuống cửa hàng theo trọng số 6 tháng: (0,55·y_{t−1} + 0,30·TB3 + 0,15·TB6) × (số tháng có mua trong 3 tháng / 3)^1,2 | yearly_3grains.main | Có — cửa hàng mở mới chưa có lịch sử nên trọng số bằng 0 |
| Kéo dài 12 tháng | Từ số M+1 nhân chỉ số mùa vụ, trọng số ngày giao dịch và hình dạng Chronos-Bolt | compute_12m_sku_warehouse_trajectory | Không |
Thời tiết tháng tới (chỉ bản demo forecast_demo) | Trung bình cùng tháng dương lịch trong lịch sử theo thành phố; thiếu thì lấy trung bình 3 tháng gần nhất | skeleton._weather_table | Không |