Product & BOM / Processes / routing-validation.html
Process spec

Routing Validation Process

Đặc tả quy trình và thuật toán tự động kiểm tra tính liên tục, không chu trình của chuỗi các công đoạn sản xuất (Routing validation).

🧬 Tại Sao Cần Validate Routing?

Routing (Định tuyến công nghệ) là chuỗi tuần tự các bước chế tạo tại xưởng (ví dụ: Cắt phôi -> Hàn khung -> Sơn tĩnh điện -> Lắp ráp -> QC). Nếu cấu hình sai quan hệ phụ thuộc (Ví dụ: Sơn tĩnh điện trước khi Hàn, hoặc tạo vòng lặp phụ thuộc khép kín), hệ thống Production Execution sẽ bị lỗi khóa hoặc đè việc.

⚙️ Thuật Toán Kiểm Tra Đồ Thị Không Chu Trình (DAG)

Sử dụng thuật toán DFS (Depth-First Search) để phát hiện vòng lặp vô hạn trong chuỗi Routing.

// Thuật toán phát hiện chu trình (Cycle Detection) trong Routing
function hasCycle(steps: BomWorkStep[]): boolean {
  const visited = new Set<string>();
  const recStack = new Set<string>();

  function dfs(stepId: string): boolean {
    if (recStack.has(stepId)) return true; // Phát hiện vòng lặp kín!
    if (visited.has(stepId)) return false;

    visited.add(stepId);
    recStack.add(stepId);

    const step = steps.find(s => s.id === stepId);
    if (step) {
      for (const depId of step.dependsOnStepIds) {
        if (dfs(depId)) return true;
      }
    }

    recStack.delete(stepId);
    return false;
  }

  for (const step of steps) {
    if (dfs(step.id)) return true;
  }
  return false;
}

🛡️ Bộ 3 Quy Tắc Kiểm Tra Bắt Buộc (Checklist)

Các bước tự động chạy trong Use Case phê duyệt Routing của NestJS.

  • Bước 1: Kiểm tra tính liên thông:

    Tất cả các bước Routing phải có mối quan hệ phụ thuộc liên tục trỏ về gốc (ngoại trừ công đoạn bắt đầu). Không được phép tồn tại một công đoạn rời rạc (cấu hình mồ côi).

  • Bước 2: Xác thực công đoạn kết thúc:

    Phải có duy nhất một công đoạn được đánh dấu là isLastStep = true để đảm bảo chuỗi chế tạo có lối ra hợp lệ, chuẩn bị đóng gói sản phẩm hoàn thiện.