lean.vn — LeanERP và hệ sinh thái AI
📖 Wiki-6S-HuongDan CiCC LeanERP SOP 🎬 Có Video Hướng Dẫn (V07)

Màn hình Chi tiết thẻ & Workflow 6S

Chi tiết thẻ 6S + Workflow xử lý thẻ (nhận task → khắc phục → gửi xem xét → đánh giá)

🎬 Video Hướng Dẫn Thực Hành: Workflow Xử lý & Rút Thẻ (7 Trạng thái & Phân quyền R07/R08) V07 · 07:00 · Người xử lý · Người phê duyệt
File: app.js lines 1388-1671
Truy cập: Click vào card Kanban → modal chi tiết

1. Modal Chi tiết thẻ (openCardDetail)

Khi click vào một thẻ trong Kanban, modal hiện ra với đầy đủ thông tin:

CODE
┌─────────────────────────────────────┐
│           Y-2026-00002              │
│          🟡 Thẻ Vàng                │
│                                     │
│           [QR Code]                 │
│         CICC-6S-Y-2026-00002       │
│                                     │
│      ┌──────────────────────┐       │
│      │   🚨 Quá hạn         │       │
│      └──────────────────────┘       │
│                                     │
│ ┌──────────────┐ ┌──────────────┐   │
│ │ ⬅️ Before    │ │ ➡️ After     │   │
│ │  [📸 ảnh]    │ │  [⏳ Chưa có] │   │
│ └──────────────┘ └──────────────┘   │
│                                     │
│ 📍 Khu vực: Xưởng May 2 / C1       │
│ 📝 Mô tả lỗi: Vật tư để không...    │
│ 🔧 Cách khắc phục: Sắp xếp lại...   │
│ 🏷️ Phân loại S: S2                  │
│                                     │
│ 👤 Phát hiện: Trần Văn B            │
│ 🔧 Xử lý: Nguyễn Văn A              │
│                                     │
│ Ngày tạo: 23/06/2026, 08:30         │
│ Kết quả: ⏳ Chưa đánh giá            │
│                                     │
│ [🔧 Cập nhật khắc phục]             │ ← nếu chưa đóng
│ [📤 Gửi xem xét]                   │ ← nếu đã xử lý
│ [✅ Trưởng nhóm phê duyệt]         │ ← nếu R08
│ [✅ Đánh giá đạt] [❌ Không đạt]   │ ← nếu R07
│                                     │
│ [Đóng]                              │
└─────────────────────────────────────┘

Các trường hiển thị

Thông tinNguồn dữ liệu
Mã thẻtag.ma hoặc tag.tag_no
Loại thẻtag.type / tag.tag_type → 🔴 Đỏ hoặc 🟡 Vàng
QR CodeTự gen từ mã thẻ CICC-6S-{tagNo}
Badge trạng tháigetStatusBadge(tag)
Ảnh Before/Aftertag.beforeImage, tag.afterImage
Khu vựctag.area hoặc tag.location
Mô tả lỗitag.description
Cách khắc phụctag.solution
Phân loại Stag.s_category
Người phát hiệntag.discoverer hoặc tag.reporter
Người xử lýtag.withdraw_owner hoặc tag.assignee
Ngày tạotag.createdAt
Kết quảeval_result → Đạt / Ko đạt / Chưa ĐG
QR Code renderedDùng thư viện QRCode.js

2. Workflow xử lý thẻ

2.1 Sơ đồ trạng thái

CODE
🆕 NEW (Mới treo)
    │
    ▼
📌 ASSIGNED (Đã gán rút)  ──→ 🔧 IN_PROGRESS (Đang xử lý)
    │                              │
    │                              ▼
    │                        📤 WAITING_APPROVE (Chờ phê duyệt)
    │                              │
    │                              ▼
    │                        ✅ WAITING_EVALUATION (Chờ đánh giá)
    │                              │
    │                              ├─ PASS → ✅ COMPLETED
    │                              └─ FAIL → ❌ REJECTED → 🔧 IN_PROGRESS

2.2 Nút "🔧 Xử lý" từ Kanban Card

Click → tự động phát hiện bước tiếp theo:

JAVASCRIPT
moKhacPhuc(tagNo):
  if (!tag.assigned && !tag.assignee_id) → hienThiNhanTask(t)        // Bước 1
  else if (!tag.solution && !tag.action_desc) → hienThiGuiXemXet(t)  // Bước 2
  else if (!tag.reviewResult && !tag.eval_result) → hienThiDanhGia(t)// Bước 3
  else → openCardDetail(t)                                           // Đã xong

2.3 Bước 1: Nhận task (hienThiNhanTask)

Modal xác nhận:

CODE
📥 Nhận task

Thẻ: Y-2026-00002
Mô tả: Vật tư để không đúng nơi quy định
Vị trí: Xưởng May 2 / C1 - Chuyền 1
[📸 ảnh before]

Bạn có xác nhận nhận xử lý thẻ này?

[📥 Nhận task] [Huỷ]

Xử lý: nhanTask(tagNo)

  • Set tag.assigned = true
  • Set tag.assignee_id = user id hiện tại
  • Lưu localStorage → render lại Kanban

2.4 Bước 2: Gửi xem xét (hienThiGuiXemXet)

Modal form:

CODE
🔧 Xử lý thẻ Y-2026-00002

Mô tả: Vật tư để không đúng nơi quy định
Vị trí: Xưởng May 2 / C1 - Chuyền 1
[📸 ảnh before]

Biện pháp khắc phục:
[________________________________]
[________________________________]

Ảnh sau cải tiến (After):
[📷 Chụp ảnh After]
[Preview ảnh]

[📤 Gửi xem xét] [Huỷ]

Xử lý: guiXemXet(tagNo)

  • Lưu tag.solution = biện pháp khắc phục
  • Lưu tag.afterImage = ảnh after (nén, compress)
  • Lưu localStorage → render lại Kanban

2.5 Bước 3: Đánh giá (hienThiDanhGia)

Modal so sánh Before/After:

CODE
📋 Đánh giá thẻ Y-2026-00002

Mô tả: Vật tư để không đúng nơi quy định
Vị trí: Xưởng May 2 / C1 - Chuyền 1
Biện pháp: Đã sắp xếp lại giá kệ

┌──────────────┐ ┌──────────────┐
│ ⬅️ Before    │ │ ➡️ After     │
│  [📸 ảnh]    │ │  [📸 ảnh]    │
└──────────────┘ └──────────────┘

Kết quả đánh giá:
○ ✅ Đạt - Rút thẻ
○ ❌ Không đạt - Làm lại

Người đánh giá: [________________]

[✅ Xác nhận] [Huỷ]

Xử lý: xacNhanDanhGia(tagNo)

  • Nếu OK: tag.status = 'closed', tag.eval_result = 'pass'
  • Nếu NG: tag.status = 'rejected', tag.eval_result = 'fail'
  • Lưu localStorage → render lại Kanban

3. Workflow API (Server-side)

Khi online, các action gọi API tương ứng:

Hành độngEndpointDữ liệu gửi
Cập nhật khắc phụcPOST /tags/{tag_no}/update-action{ user_id, action_desc }
Gán tôi rút thẻPOST /tags/{tag_no}/assign-withdraw{ user_id, owner_id, owner_name }
Gửi xem xétPOST /tags/{tag_no}/request-review{ user_id }
Trưởng nhóm phê duyệtPOST /tags/{tag_no}/approve-review{ user_id }
Đánh giá cuốiPOST /tags/{tag_no}/evaluate{ user_id, result: 'pass'/'fail', note }

Phân quyền cứng:

EndpointRole yêu cầu
assign-withdrawR08
approve-reviewR08
evaluateR07 (chỉ đánh giá viên)

4. Modal Cập nhật khắc phục (openSubmitModal)

Nút "🔧 Cập nhật khắc phục" trong chi tiết thẻ:

CODE
🔧 Cập nhật khắc phục: Y-2026-00002

Hành động khắc phục
[___________________________]

[💾 LƯU CẬP NHẬT] [Hủy]

Hàm: doUpdateAction(tagNo)

  • Gọi API /update-action nếu online
  • Fallback offline

5. Gán rút thẻ (doAssignWithdraw)

Nếu user là R08 (Trưởng nhóm) và thẻ chưa có withdraw_owner_id:

→ Nút "📌 Gán tôi rút thẻ"

→ Gán user hiện tại làm người rút thẻ


6. Gửi xem xét / Phê duyệt / Đánh giá

Trưởng nhóm R08:

  • Thấy nút "📤 Gửi xem xét" khi đã xử lý → gọi API /request-review
  • Thấy nút "✅ Trưởng nhóm phê duyệt" khi chờ approve → gọi API /approve-review

Đánh giá viên R07:

  • Thấy nút "✅ Đánh giá đạt" + "❌ Không đạt" khi chờ evaluation
  • Click → prompt nhập ghi chú → gọi API /evaluate

Audio thuyết minh

🖼️
Nghe hướng dẫnĐường dẫn minh họa: audio/07-chi-tiet-the.mp3

Click play để nghe hướng dẫn bằng giọng đọc.


Screenshots

🖼️
Modal chi tiết thẻĐường dẫn minh họa: images/chitiet/chitiet-modal-overview.png

Chú thích: Modal chi tiết thẻ hiển thị đầy đủ thông tin, QR Code, badge trạng thái

🖼️
Ảnh Before/AfterĐường dẫn minh họa: images/chitiet/chitiet-before-after.png

Chú thích: Khu vực hiển thị ảnh Before và After của thẻ

🖼️
Nút nhận taskĐường dẫn minh họa: images/chitiet/chitiet-nhan-task.png

Chú thích: Modal xác nhận nhận task xử lý thẻ

🖼️
Form gửi xem xétĐường dẫn minh họa: images/chitiet/chitiet-gui-xem-xet.png

Chú thích: Form nhập biện pháp khắc phục + ảnh After khi gửi xem xét

🖼️
Modal đánh giá so sánh Before/AfterĐường dẫn minh họa: images/chitiet/chitiet-danh-gia.png

Chú thích: Modal đánh giá so sánh ảnh Before/After, chọn Đạt/Không đạt

🖼️
Nút Trưởng nhóm phê duyệt (R08)Đường dẫn minh họa: images/chitiet/chitiet-approve-r08.png

Chú thích: Nút phê duyệt dành cho Trưởng nhóm (R08)

🖼️
Nút Đánh giá viên (R07)Đường dẫn minh họa: images/chitiet/chitiet-evaluate-r07.png

Chú thích: Nút Đạt/Không đạt dành cho Đánh giá viên (R07)

🖼️
Sơ đồ trạng thái workflowĐường dẫn minh họa: images/chitiet/chitiet-workflow-diagram.png

Chú thích: Sơ đồ trạng thái từ NEW → ASSIGNED → IN_PROGRESS → WAITING_APPROVE → COMPLETED/REJECTED