# Process Worklist — ghi output theo dòng SO và LOT cho công đoạn In-house tuỳ biến sau Trimming trong Routing, rồi chuyển LOT Completed sang công đoạn kế

> Fine Chemical (FC) · Module MES · v0.5 · 13/10/2026 · Flow chuẩn — dùng để triển khai, kiểm thử và phát triển
>
> File sinh tự động từ sơ đồ bởi `sync.js` — đừng sửa tay. Hình là chuẩn: thấy mâu thuẫn với trang hình thì báo lại.
>
> Trang hình: /mes/process-worklist

## Cách đọc

- Mỗi hộp trên sơ đồ có một mã `Bxx`, đánh theo thứ tự đi của luồng (từ điểm bắt đầu, theo mũi tên).
- "Đi tới" liệt kê mọi mũi tên ra khỏi hộp; chữ trong ngoặc vuông là nhãn điều kiện của mũi tên đó.
- "Nhánh tuỳ chọn" = mũi tên nét đứt trên sơ đồ: làm cũng được, bỏ qua cũng được.
- Hộp loại "Dữ liệu" ở lane Input là dữ liệu đi vào, ở lane Output là kết quả / điểm kết thúc của luồng.

## Process Flow (swimlane)

### Vai trò (lane)

- Input
- Operator
- Output

### Các bước

| Mã | Vai trò | Loại | Nội dung | Nền tảng · Màn hình | Đi tới |
| --- | --- | --- | --- | --- | --- |
| B01 | Input | Dữ liệu | WI công đoạn In-house (theo Routing của WO) |  | B05 |
| B02 | Input | Dữ liệu | LOT đã Trimming (A + A-) của WO có công đoạn In-house trong Routing |  | B06 |
| B03 | Input | Dữ liệu | Master data: Defect reason | Master data | B08 |
| B04 | Operator | Bắt đầu | Start |  | B05 |
| B05 | Operator | Bước | Chọn tab công đoạn | Web · Process Worklist | B06 |
| B06 | Operator | Bước | Mở dòng SO | Web · Process Worklist | B07 |
| B07 | Operator | Bước | Chọn LOT cần ghi Output | Web · Process Worklist | B08 |
| B08 | Operator | Bước | Nhập Output theo size | Web · Process Worklist | B09 |
| B09 | Operator | Điểm quyết định | Output hợp lệ? |  | B10 [Không]; B11 [Hợp lệ] |
| B10 | Output | Dữ liệu | Chặn lưu + thông báo lỗi |  | (kết thúc) |
| B11 | Operator | Bước | Xác nhận Output | Web · Process Worklist | B12 [có grade C]; B13 [có PR]; B14 |
| B12 | Operator | Bước | Ghi grade C vào Defect Records | System (auto) · Defect Records | B15 |
| B13 | Operator | Bước | Sinh phiếu Repair / Rework mỗi size PR > 0 | System (auto) · Repair / Rework | B16 |
| B14 | Operator | Điểm quyết định | LOT đã hết Remaining? |  | B07 [Chưa — LOT PARTIAL]; B17 [Đủ — LOT COMPLETED] |
| B15 | Output | Dữ liệu | Grade C → Defect Records (Process Stitching) |  | (kết thúc) |
| B16 | Output | Dữ liệu | Phiếu Repair / Rework mỗi size PR > 0 (Source Stitching · Pending repair) |  | (kết thúc) |
| B17 | Operator | Bước | Chuyển LOT sang công đoạn kế | Web · Process Worklist | B18; B19 |
| B18 | Output | Dữ liệu | LOT TRANSFERRED — A + A- sang công đoạn kế, C + PR ở lại, không sinh lô mới |  | (kết thúc) |
| B19 | Operator | Kết thúc | End |  |  |

### Chi tiết từng bước (nội dung hover trên sơ đồ)

#### B05 · Chọn tab công đoạn

- Operator · Web · Process Worklist
- Đến từ: B01, B04
- Đi tới: B06 · Mở dòng SO

> Operator chọn tab của công đoạn In-house tuỳ biến cần ghi sản lượng.  
> Khi nào: WO có công đoạn In-house tuỳ biến sau Trimming trong Routing.  
> Thao tác: Process Worklist › chọn tab công đoạn (prototype có một tab "Stitching").  
> Hệ thống: màn chỉ hiện tab của công đoạn In-house tuỳ biến nằm trong Routing của WO; công đoạn không nằm trong Routing không có tab. Phụ đề màn: "In-house custom processes after Trimming that are in the WO Routing — record output per SO and LOT, then move the Completed LOT (A + A-) to the next process".  
> Kết quả: hiện bảng danh sách dòng SO của công đoạn đó.  
> Chưa chốt: LOT sau Trimming Result nằm ở bể nào để chờ vào công đoạn In-house chưa có trên sơ đồ và prototype (OQ-PWL-01).  
> Nguồn: Q-20261012-02 (câu 4) · Q-20261012-05 (câu 1) · prototype v0.89  

#### B06 · Mở dòng SO

- Operator · Web · Process Worklist
- Đến từ: B02, B05
- Đi tới: B07 · Chọn LOT cần ghi Output

> Operator mở dòng SO cần ghi sản lượng.  
> Khi nào: dòng SO ở trạng thái WAITING hoặc PARTIAL (dòng COMPLETED mở ra chỉ để xem).  
> Thao tác: bảng "<Process> Worklist" (xếp theo ETD) › nút "Open SO".  
> Hệ thống: sản lượng ghi theo dòng SO và LOT đã phân bổ, không sinh lô mới ("Output is booked per allocated SO and moves to <next> — no new lot is created."). Trạng thái dòng SO suy từ các LOT: Output = 0 → WAITING; Remaining > 0 → PARTIAL; Remaining = 0 → COMPLETED.  
> Kết quả: hiện khung "LOTs allocated to <SO No.> (n)", mỗi LOT một dòng.  
> Kiểm thử:  
> - Dòng SO có 2 LOT, một LOT Remaining = 0, LOT kia Remaining > 0 → dòng SO PARTIAL  
> Nguồn: prototype v0.89  

#### B07 · Chọn LOT cần ghi Output

- Operator · Web · Process Worklist
- Đến từ: B06, B14
- Đi tới: B08 · Nhập Output theo size

> Operator chọn LOT cần ghi sản lượng trong dòng SO.  
> Khi nào: LOT ở trạng thái WAITING hoặc PARTIAL.  
> Thao tác: khung "LOTs allocated to <SO No.> (n)" › nút "Enter Output" (lần đầu) / "Add Output" (lần sau) trên dòng LOT.  
> Hệ thống: LOT COMPLETED không còn nút ghi (chỉ còn nút "Move to Next process in Routing"); LOT TRANSFERRED hiện chữ "Handed to Next process in Routing".  
> Kết quả: mở trang nhập Output của LOT đó; một LOT ghi được nhiều lần cho tới khi Remaining = 0.  
> Kiểm thử:  
> - LOT Remaining > 0 đã ghi một lần → nút đổi thành "Add Output"  
> - LOT Remaining = 0 → không có nút "Enter Output" / "Add Output"  
> Nguồn: Q-20261012-03 (câu 1) · prototype v0.89  

#### B08 · Nhập Output theo size

- Operator · Web · Process Worklist
- Đến từ: B03, B07
- Đi tới: B09 · Output hợp lệ?

> Operator nhập sản lượng của lần ghi theo grade và size, chia grade C theo lý do lỗi, và nhập hàng sửa được vào dòng Pending repair.  
> Thao tác: ma trận "Output Matrix (Item / Size)", bốn dòng "A · First grade" · "A- · First grade, minor" · "C · Reject" · "PR · Pending repair" theo W5…W11; "Fill A = Open Qty" điền nhanh, "Clear" xoá. Nhập Start Time, End Time, Operator / Team Leader, Remark.  
> Thao tác: có grade C thì khối "Defect Reason Breakdown (grade C)" › nút "Add Defect Line" › cột "Defect Reason" và số lượng, mỗi lý do một dòng; ô "Mapped:" hiện "Balanced" khi tổng các dòng bằng số C. Dòng Pending repair không cần chia lý do.  
> Hệ thống: "This Entry = A + A- + C + Pending repair"; "Remaining = Received − Already Recorded − This Entry", nên Pending repair cũng trừ vào Remaining. Grade C là hàng bỏ (scrap), Pending repair là hàng sửa được.  
> Kiểm thử:  
> - C = 25 chia "Cut edge rough" 15 + "Burr / flash" 10 → "Balanced"  
> - C = 25 chia 15 + 5 → chưa khớp, lưu bị chặn ở bước kiểm tra  
> - PR = 10 ở W5, không có lý do nào → vẫn xác nhận được  
> Nguồn: Q-20261013-01 · prototype v0.91  

#### B09 · Output hợp lệ?

- Operator
- Đến từ: B08
- Đi tới [Không]: B10 · Chặn lưu + thông báo lỗi
- Đi tới [Hợp lệ]: B11 · Xác nhận Output

> Hệ thống kiểm tra lần ghi trước khi cho xác nhận; chặn cứng, không có bước duyệt ghi vượt.  
> Hợp lệ khi đủ cả 3 điều kiện:  
> - Có số ở ít nhất một dòng grade — nếu không: "Enter a quantity in at least one grade row."  
> - Mỗi size: This Entry ≤ Received − Already Recorded — nếu không: "Recorded output exceeds the received quantity."  
> - Có grade C thì đã chia theo lý do và tổng các dòng lý do = số C — nếu không: "Grade C quantity recorded — map the defect quantity to a defect reason." / "A defect line has a quantity but no defect reason." / "A defect reason has no quantity." / "Defect reason breakdown (N) must equal the grade C quantity (M)."  
> Không: chặn xác nhận, hiện các thông báo trên.  
> Kiểm thử:  
> - Received 100, đã ghi 60, lần này 40 → xác nhận được; lần này 41 → bị chặn  
> - Nhập C = 2 mà chưa chọn "Defect Reason" → bị chặn  
> Chưa chốt: BRD §6.4 cho "Warn or block by configuration; supervisor override requires reason", prototype v0.89 chặn cứng và chưa có màn override (OQ-PWL-02).  
> Nguồn: BRD §6.4 · prototype v0.89  

#### B11 · Xác nhận Output

- Operator · Web · Process Worklist
- Đến từ: B09
- Đi tới [có grade C]: B12 · Ghi grade C vào Defect Records
- Đi tới [có PR]: B13 · Sinh phiếu Repair / Rework mỗi size PR > 0
- Đi tới: B14 · LOT đã hết Remaining?

> Operator xác nhận lần ghi sản lượng sau khi kiểm tra hợp lệ.  
> Thao tác: nút "Confirm Output" › hộp "Confirm Stitching output?" hiện SO No., LOT No., Process, Next Process, Time, Operator, This Entry, Remaining, "C → Defect Records", "Pending repair", "Pending repair → Repair / Rework" › nút "Confirm & Save".  
> Hệ thống: ghi chú trong hộp "Output is recorded on this SO line. C is written to Defect Records; Pending repair opens a Repair / Rework record for each size."  
> Kết quả: sinh entry #n ở "Output Entries" (có cột "Pending repair"); một LOT ghi được nhiều lần, số cộng dồn. Thông báo "<SO> · <LOT> — entry #n: <số> pairs recorded at Stitching" kèm " · <số> pairs remaining" hoặc " · SO line complete, ready for Next process in Routing", rồi " · C <số> pairs → Defect Records" và " · Pending repair → <n> Repair / Rework record(s)" khi có.  
> Kiểm thử:  
> - Ghi 2 entry cho cùng LOT → "Already Recorded" = tổng 2 entry  
> Chưa chốt: thông báo ghi "SO line complete" dù chỉ LOT đó hết Remaining; chưa có cách đảo entry nhập nhầm (OQ-PWL-03).  
> Nguồn: BRD §6.4 (Partial Confirmation) · Q-20261013-01 · prototype v0.91  

#### B12 · Ghi grade C vào Defect Records

- Operator · System (auto) · Defect Records
- Đến từ: B11
- Đi tới: B15 · Grade C → Defect Records (Process Stitching)

> Hệ thống tự ghi số hàng grade C (scrap) vào Defect Records, chia theo lý do lỗi.  
> Khi nào: entry vừa xác nhận có grade C > 0.  
> Hệ thống: mỗi lý do trong "Defect Reason Breakdown (grade C)" thành một dòng Defect Records, Process "Stitching", gắn WO, SO, LOT. Hàng Pending repair không ghi vào Defect Records và hàng C không sinh phiếu Repair / Rework.  
> Kết quả: dòng mới ở màn "Defect Records"; bộ lọc Process có giá trị "Stitching".  
> Kiểm thử:  
> - C = 10, lý do "Burr / flash" → Defect Records thêm 1 dòng Process "Stitching" số lượng 10  
> - C = 25 chia hai lý do 15 + 10 → thêm 2 dòng  
> - C = 0, PR = 10 → Defect Records không thêm dòng  
> Nguồn: Q-20261013-01 · prototype v0.91  

#### B13 · Sinh phiếu Repair / Rework mỗi size PR > 0

- Operator · System (auto) · Repair / Rework
- Đến từ: B11
- Đi tới: B16 · Phiếu Repair / Rework mỗi size PR > 0 (Source Stitching · Pending repair)

> Hệ thống tự sinh phiếu Repair / Rework cho hàng Pending repair, mỗi size một phiếu, không cần ai tạo tay.  
> Khi nào: entry vừa xác nhận có Pending repair > 0 ở ít nhất một size.  
> Hệ thống: mỗi size có PR > 0 sinh một phiếu mang LOT, WO, SO, size, số lượng PR; Source "Stitching · Pending repair". Grade C không sinh phiếu.  
> Kết quả: phiếu hiện ở màn "Repair / Rework"; sau khi sửa xong, hàng vào Repair Inv List của công đoạn kế.  
> Kiểm thử:  
> - PR chỉ ở size W5 = 10 → 1 phiếu "Stitching · Pending repair" size W5 số lượng 10  
> - PR ở hai size → 2 phiếu  
> - C = 10, PR = 0 → không có phiếu  
> Chưa chốt: công đoạn kế sau Stitching và Repair Inv List nhận hàng đã sửa chưa xác định (OQ-PWL-04).  
> Nguồn: Q-20261013-01 · prototype v0.91  

#### B14 · LOT đã hết Remaining?

- Operator
- Đến từ: B11
- Đi tới [Chưa — LOT PARTIAL]: B07 · Chọn LOT cần ghi Output
- Đi tới [Đủ — LOT COMPLETED]: B17 · Chuyển LOT sang công đoạn kế

> LOT đã ghi hết số nhận chưa?  
> Chưa — LOT PARTIAL: Remaining = Received − Already Recorded > 0 → ghi tiếp ở lần sau.  
> Đủ — LOT COMPLETED: Remaining = 0 → LOT được chuyển sang công đoạn kế.  
> Kiểm thử:  
> - Received 100, đã ghi 100 (A 90 + A- 5 + C 5) → LOT COMPLETED  
> - Received 100, đã ghi 99 → LOT PARTIAL, Remaining 1  
> Chưa chốt: LOT không bao giờ đạt Remaining = 0 (hàng nhận thiếu từ công đoạn trước) không Move được; lối đóng thiếu để ngoài phạm vi v0.1 (OQ-PWL-06).  
> Nguồn: Q-20261012-03 (câu 1) · prototype v0.89  

#### B17 · Chuyển LOT sang công đoạn kế

- Operator · Web · Process Worklist
- Đến từ: B14
- Đi tới: B18 · LOT TRANSFERRED — A + A- sang công đoạn kế, C + PR ở lại, không sinh lô mới
- Đi tới: B19 · End

> Operator chuyển LOT đã ghi hết sang công đoạn kế theo Routing; chỉ số hàng loại 1 (A + A-) đi tiếp.  
> Khi nào: LOT COMPLETED (Remaining = 0).  
> Thao tác: nút "Move to Next process in Routing" trên dòng LOT › hộp "Move <LOT> to Next process in Routing?" › "Confirm & Move"; hoặc nút "Move all recorded lines" cho cả dòng SO.  
> Hệ thống: số chuyển = "Good (A + A-)"; grade C và Pending repair ở lại ("C + Pending repair (C in Defect Records, Pending repair in Repair / Rework)"). "Only the good quantity (A + A-) is handed over to Next process in Routing. Output can no longer be added to this lot line." "Move all recorded lines" chỉ lấy LOT COMPLETED.  
> Kết quả: LOT → TRANSFERRED ("Handed to Next process in Routing"), không sinh lô mới; dòng SO vẫn COMPLETED. Thông báo có đoạn "C + Pending repair <số> stay behind (C in Defect Records, Pending repair in Repair / Rework)".  
> Chặn khi: LOT còn Remaining > 0 không có nút Move; thông báo "<lot> is not Completed yet (N pairs remaining) — only a Completed LOT can be moved." / "No Completed LOT ready to move."  
> Kiểm thử:  
> - LOT COMPLETED A 90, A- 5, C 3, PR 2 → chuyển 95, C + PR 5 ở lại  
> - Dòng SO có 1 LOT COMPLETED + 1 LOT PARTIAL, bấm "Move all recorded lines" → chỉ LOT COMPLETED chuyển  
> Chưa chốt: nhãn "Next process in Routing" là tạm, công đoạn kế chưa xác định (OQ-PWL-04).  
> Nguồn: Q-20261012-03 (câu 1) · Q-20261013-01 · prototype v0.91  

## Vòng đời trạng thái

#### Dòng SO tại công đoạn (Process Worklist)

`WAITING` → `PARTIAL` → `COMPLETED`

Bước chuyển:

- `WAITING` -- Xác nhận Output — còn LOT Remaining > 0 --> `PARTIAL`
- `PARTIAL` -- Mọi LOT Remaining = 0 --> `COMPLETED`
- `WAITING` -- Xác nhận Output — ghi đủ một lần --> `COMPLETED` (quay lại)

#### LOT trong dòng SO (Process Worklist)

`WAITING` → `PARTIAL` → `COMPLETED` → `TRANSFERRED`

Bước chuyển:

- `WAITING` -- Xác nhận Output — còn Remaining --> `PARTIAL`
- `PARTIAL` -- Remaining = 0 --> `COMPLETED`
- `COMPLETED` -- Move to Next process in Routing --> `TRANSFERRED`
- `WAITING` -- Xác nhận Output — ghi đủ một lần --> `COMPLETED` (quay lại)

## Input

| # | Input | Loại | Đi vào bước |
| --- | --- | --- | --- |
| I-1 | LOT đã Trimming (A + A-) của WO có công đoạn In-house tuỳ biến trong Routing — nhận vào theo dòng SO, không sinh lô mới | Hàng công đoạn — flow trimming-result | Mở dòng SO |
| I-2 | WI công đoạn In-house theo Routing của WO | Chứng từ MES | Chọn tab công đoạn |
| I-3 | Defect reason (danh mục lỗi) | Master data | Nhập Output theo size |

## Bước ↔ màn hình thực hiện

| Bước | Vai trò | Màn hình · nút trên UI |
| --- | --- | --- |
| Chọn tab công đoạn · Mở dòng SO · Chọn LOT cần ghi Output · Nhập Output theo size · Xác nhận Output · Chuyển LOT sang công đoạn kế | Operator | Process Worklist (`Open SO`, `Enter Output` / `Add Output`, `Fill A = Open Qty`, `Add Defect Line`, `Confirm Output`, `Confirm & Save`, `Move to …`, `Confirm & Move`, `Move all recorded lines`) |
| Ghi grade C vào Defect Records | System (auto) | Defect Records |
| Sinh phiếu Repair / Rework mỗi size PR > 0 | System (auto) | Repair / Rework |

## Output

| # | Output | Điều kiện sinh ra |
| --- | --- | --- |
| O-1 | Chặn lưu + thông báo lỗi | Không có số ở dòng grade nào · ghi vượt Received · có grade C mà chưa chia theo lý do hoặc tổng lý do khác số C |
| O-2 | Grade C → Defect Records (Process Stitching), mỗi lý do một dòng; không sinh phiếu Repair / Rework | Output Entry có grade C |
| O-3 | Phiếu Repair / Rework mỗi size PR > 0, Source `Stitching · Pending repair`, mang LOT / WO / SO; không ghi Defect Records | Output Entry có Pending repair (PR) > 0 |
| O-4 | Hàng sang công đoạn kế theo Routing, không sinh lô mới — LOT = `TRANSFERRED` | Operator bấm Move khi LOT `COMPLETED` (Remaining = 0) — số chuyển = A + A-; C và PR ở lại Defect Records / Repair / Rework |

## Thuật ngữ

| Thuật ngữ | Nghĩa trong flow này |
| --- | --- |
| `WO` | Work Order — lệnh sản xuất, sinh khi Release ở Master Plan; mỗi WO kéo theo các plan công đoạn |
| `Routing` | Danh sách công đoạn của WO, quyết định công đoạn In-house nào có tab ở Process Worklist và công đoạn kế là gì |
| `Dòng SO` | Phần hàng của một SO đã phân bổ ở Trimming; gồm nhiều LOT, trạng thái suy từ các LOT |
| `LOT` | Lô hàng đã Trimming nhận vào công đoạn; đơn vị ghi sản lượng và đơn vị chuyển sang công đoạn kế |
| `In-house` | Công đoạn làm trong xưởng, không gửi gia công ngoài |
| `Received` | Số hàng LOT đã nhận vào công đoạn — trần của tổng sản lượng ghi |
| `Output Entry` | Một lần ghi sản lượng (theo ca) của LOT; một LOT có nhiều entry |
| `A / A- / C / PR` | Grade chất lượng: A và A- là hàng loại 1; C là hàng bỏ (nhãn "Reject"), chia theo lý do và vào Defect Records; PR (nhãn "Pending repair") là hàng sửa được, sinh phiếu Repair / Rework |
| `Remaining` | Received − Already Recorded − This Entry |
| `Defect Records` | Màn ghi nhận grade C theo lý do, công đoạn, WO, SO |
| `Repair / Rework` | Màn phiếu sửa hàng; mỗi size Pending repair sinh một phiếu, nguồn "<Process> · Pending repair" |
| `Repair Inv List` | Tồn hàng đã sửa xong, mang công đoạn kế tiếp |
