Seed Engine — Industry Bootstrap 4 ngành · 1 lệnh
Hoàn thành

Industry Seed Engine
Khởi tạo hệ thống chuẩn bằng 1 lệnh

Kho dữ liệu nền (seed packs) cho 4 ngành công nghiệp. Chọn ngành khi khởi động — hệ thống tự động tạo đầy đủ roles, quy trình, tiêu chuẩn chất lượng, KPI và cấu hình sẵn sàng vận hành.

Cập nhật: 22/07/2026
Ngành: 4 (Jewelry, Cement, Steel, Footwear)
Bản ghi mỗi ngành: ~160–185
Runtime: Node.js ≥ 18 (zero dependencies)
01 — Tổng quan

Triết lý thiết kế

Thay vì hardcode logic theo ngành trong code, toàn bộ sự khác biệt giữa các ngành được lưu dưới dạng dữ liệu cấu hình. Khi user chọn ngành, Seed Engine đọc seed pack và INSERT tất cả vào database trong một transaction. Sau đó user có thể customize mọi thứ.

Kết quả sau khi seed — hệ thống sẵn sàng 100%

Roles & permissions · Quy trình sản xuất · Danh mục vật tư & thành phẩm · Loại máy móc thiết bị · Template kiểm tra chất lượng với tiêu chuẩn ngành · KPI với ngưỡng cảnh báo · Vị trí kho · Cost centers

Shell — Khởi động hệ thống cho nhà máy trang sức
# 1. Chạy seed — xuất ra SQL
node scripts/seed.js --industry=jewelry > seed.sql

# 2. Chạy SQL vào PostgreSQL
psql -U erp_user -d erp_mes_db -f seed.sql

# Hoặc gộp 1 lệnh:
node scripts/seed.js --industry=jewelry | psql -U erp_user -d erp_mes_db

# Xem trước không thực thi (dry run)
node scripts/seed.js --industry=cement --dry-run

# Lưu vào file SQL để review
node scripts/seed.js --industry=steel --output=steel-seed.sql

# Xem danh sách ngành
node scripts/seed.js --list
02 — Cấu trúc

Cấu trúc Seed Packs

seed-packs/
├── manifest.json ← danh sách ngành, metadata
├── _core/ ← dữ liệu chung mọi ngành
│ ├── units-of-measure.json 39 đơn vị đo
│ └── base-roles.json 9 vai trò hệ thống
├── jewelry/
│ └── index.json ← toàn bộ seed data trang sức
├── cement/
│ └── index.json
├── steel/
│ └── index.json
└── footwear/
└── index.json

scripts/
└── seed.js ← CLI runner, zero dependencies

Cấu trúc mỗi industry index.json

JSON — Anatomy of an industry pack
{
  "meta": { "industry": "JEWELRY", "name": "...", "version": "1.0.0" },
  "roles": [ ... ],                  // Vai trò đặc thù ngành
  "cost_centers": [ ... ],           // Trung tâm chi phí
  "product_categories": [            // Danh mục + sản phẩm/nguyên liệu
    { "code": "...", "items": [ ... ] }
  ],
  "machine_types": [ ... ],          // Loại máy móc
  "workflow_templates": [ ... ],     // Quy trình sản xuất (states + transitions)
  "inspection_templates": [ ... ],   // Mẫu kiểm tra CL + thông số
  "kpi_configs": [ ... ],            // KPI + ngưỡng alert
  "inventory_locations": [ ... ]     // Vị trí kho
}
03 — Ngành có sẵn

4 Ngành công nghiệp

Gia công trang sức
DISCRETE

Chế tác trang sức vàng bạc đá quý — kiểm soát hao hụt kim loại quý đến 0.01g, truy xuất đá theo chứng chỉ.

17 roles 33 vật tư/SP 13 máy móc 13 workflow states 10 QC parameters 8 KPIs
node scripts/seed.js --industry=jewelry
Sản xuất xi măng
PROCESS

Khai thác đá vôi, nung Clinker, nghiền xi măng — tiêu chuẩn TCVN/EN, kiểm soát môi trường và tiêu thụ năng lượng.

17 roles 27 vật tư/SP 14 máy móc 9 workflow states 16 QC parameters 10 KPIs
node scripts/seed.js --industry=cement
Sản xuất sắt thép
PROCESS

Luyện thép EAF, đúc liên tục, cán thép — truy xuất theo Heat Number, Mill Certificate, tiêu chuẩn TCVN/ASTM/JIS.

17 roles 29 vật tư/SP 13 máy móc 11 workflow states 14 QC parameters 9 KPIs
node scripts/seed.js --industry=steel
Gia công giày thể thao
DISCRETE

OEM/ODM giày thể thao — theo dõi theo cặp/size/màu, Material Utilization, Peel Test, tiêu chuẩn OEM.

17 roles 41 vật tư/SP 12 máy móc 15 workflow states 13 QC parameters 9 KPIs
node scripts/seed.js --industry=footwear
04 — Cách dùng

Hướng dẫn sử dụng

Tất cả các options

OptionMô tảVí dụ
--industry=<code>Chọn ngành để seed (bắt buộc)--industry=jewelry
--dry-runXem trước không xuất SQL--dry-run
--output=<file>Lưu SQL vào file thay vì stdout--output=init.sql
--tenant=<id>Gán tenant_id (default: "default")--tenant=factory_01
--listLiệt kê tất cả ngành có sẵn--list

Tích hợp với backend khởi động

Shell — Integration với Docker Compose startup
# docker-compose.yml — chạy seed trước khi start app
services:
  db-seeder:
    image: node:18-alpine
    volumes:
      - ./seed-packs:/app/seed-packs
      - ./scripts:/app/scripts
    environment:
      - INDUSTRY=jewelry
      - PGHOST=postgres
      - PGUSER=erp_user
      - PGDATABASE=erp_mes
    command: >
      sh -c "node /app/scripts/seed.js --industry=$$INDUSTRY
             | psql -h $$PGHOST -U $$PGUSER $$PGDATABASE"
    depends_on:
      postgres:
        condition: service_healthy
05 — Dữ liệu seed

Những gì được tạo ra

Bảng DBMô tảJewelryCementSteelFootwear
units_of_measureĐơn vị đo (core)39393939
rolesBase + industry roles17171717
cost_centersTrung tâm chi phí6887
product_categoriesNhóm danh mục5445
productsVật tư / Sản phẩm33232536
machine_typesLoại máy móc thiết bị13141312
workflow_templatesQuy trình sản xuất1211
workflow_statesTrạng thái quy trình1391115
workflow_transitionsChuyển đổi trạng thái1415
inspection_templatesMẫu phiếu kiểm tra2334
inspection_parametersThông số QC10161413
kpi_configsCấu hình KPI + alert81099
inventory_locationsVị trí kho7879
system_setupBản ghi thiết lập hệ thống1111
Tổng169161162183
06 — Mở rộng

Thêm ngành mới

Mỗi ngành mới chỉ cần 2 bước:

Shell — Bước 1: Tạo file seed pack mới
mkdir seed-packs/pharma
# Tạo seed-packs/pharma/index.json theo cùng cấu trúc
JSON — Bước 2: Đăng ký trong manifest.json
{
  "industries": [
    // ... các ngành hiện có ...
    {
      "code": "PHARMA",
      "name": "Sản xuất dược phẩm",
      "classification": "REGULATED",
      "path": "pharma/index.json",
      "standards": ["GMP", "FDA 21 CFR Part 11", "ISO 9001"]
    }
  ]
}
Seed data là mutable — user customize thoải mái

Toàn bộ dữ liệu được seed vào các bảng thông thường của PostgreSQL. User có thể thêm/sửa/xóa bất kỳ thứ gì sau khi seed. Seed chỉ là điểm khởi đầu tiêu chuẩn — không phải lock-in.

Seed engine hoàn thành — Hướng A xong

Tiếp theo: Hướng B — Deep dive Bounded Contexts

← Về trang chủ