🌐 VI / EN | 🏆 CiCC — Cải tiến liên tục từ 2011
📱 6S APP

6SAPP — Trợ Lý 6S Trên Mobile

Ứng dụng PWA treo thẻ, đánh giá 5S/6S, QR Scan, Kanban Board — dành cho công nhân và quản đốc tại hiện trường

QR Scan
PWA Mobile
AI Powered
24/7 Offline
TÍNH NĂNG

Tại Sao Chọn 6SAPP?

Giải pháp số hóa 6S toàn diện — từ treo thẻ đến đánh giá, tất cả trên mobile

🏷️

Treo Thẻ QR

Treo thẻ Vàng/Đỏ bằng QR Scan. Gắn ảnh, ghi chú, gắn khu vực — real-time.

📋

Đánh Giá 6S

Checklist đánh giá Self/Cross/Expert. Tự động tính điểm, xuất báo cáo.

📊

Kanban Board

Quản lý công việc cải tiến. Theo dõi tiến độ, gắn người phụ trách.

📸

Photo Report

Chụp ảnh before/after. Gắn tag, vị trí GPS, lưu trữ lịch sử.

📈

Dashboard KPI

Biểu đồ real-time. Theo dõi điểm 6S, tiến độ, xu hướng theo tháng.

🤖

AI Assistant

Gợi ý cải tiến bằng AI. Phân tích ảnh, đề xuất hành động.

CÁCH THỨC

3 Bước Bắt Đầu

1

Đăng Ký

Đăng ký tài khoản 6SAPP miễn phí cho doanh nghiệp

2

Cấu Hình

Thiết lập khu vực, checklist, phân quyền người dùng

3

Triển Khai

Bắt đầu treo thẻ, đánh giá 6S tại hiện trường

🚀 Trải nghiệm ngay trên mobile

6SAPP là một phần của hệ sinh thái LeanERP trên lean.vn

📱 Dùng thử 6SAPP miễn phí 🎓 Khóa học 6S实战 ⚡ Khám phá toàn bộ lean.vn
6S Tagging - CiCC

🏷️ 6S CiCC Tagging System

Đang mở
0
0 Vàng
0 Đỏ
Đã đóng
0
0 Vàng
0 Đỏ
S1 - Sàng lọc S2 - Sắp xếp S3 - Sạch sẽ S4 - Săn sóc S5 - Sẵn sàng

📍 Xác định Vị trí

Quét mã QR của vị trí
Văn phòng Xưởng A Xưởng B Kho Nhà ăn Bên ngoài
Tất cả Đang mở Đã rút Quá hạn Vàng + Đỏ Chỉ vàng Chỉ đỏ
// ==================== MAPPING VỊ TRÍ ==================== const locationMap = { "Văn phòng": ["VP-01 (Kế toán)", "VP-02 (Nhân sự)", "VP-03 (Giám đốc)", "VP-04 (Sảnh)"], "Xưởng A": ["XA-L01", "XA-L02", "XA-L03", "XA-KTC"], "Xưởng B": ["XB-May01", "XB-May02", "XB-May03", "XB-HoanThien"], "Kho": ["KHO-NL", "KHO-TP", "KHO-PHELIEU"], "Nhà ăn": ["NA-01 (Bếp)", "NA-02 (Khu ngồi)", "NA-03 (Rửa bát)"], "Bên ngoài": ["BN-01 (Bãi xe)", "BN-02 (Cổng)", "BN-03 (Vườn)"] };function updateLocations() { let area = document.getElementById('area').value; let locSelect = document.getElementById('locationCode'); let locations = locationMap[area] || [];locSelect.innerHTML = locations.map(l => `${l}`).join(''); }// ==================== XỬ LÝ ẢNH ==================== let currentImageData = '';function previewImage(input) { const file = input.files[0]; if (file) { const reader = new FileReader(); reader.onload = function (e) { currentImageData = e.target.result; const preview = document.getElementById('imagePreview'); preview.style.backgroundImage = `url(${currentImageData})`; preview.style.display = 'block'; } reader.readAsDataURL(file); } }// ==================== DỮ LIỆU ==================== let tags = JSON.parse(localStorage.getItem('6s_tags')) || [];function save() { localStorage.setItem('6s_tags', JSON.stringify(tags)); updateDashboard(); }// Auto lấy tên người dùng (function () { let saved = localStorage.getItem('6s_user'); if (saved) document.getElementById('discoverer').value = saved; })();// ==================== SINH MÃ THẺ ==================== function sinhMa(type) { let prefix = type === 'Vàng' ? 'Y' : 'R'; let year = new Date().getFullYear(); let so = tags.filter(t => t.ma.startsWith(prefix + '-' + year)).length + 1; return prefix + '-' + year + '-' + String(so).padStart(5, '0'); }// ==================== TREO THẺ ==================== function onTypeChange() { let type = document.querySelector('input[name="tagType"]:checked').value; let btn = document.getElementById('btnTreo'); let hint = document.getElementById('sHint'); let sSelectVang = document.getElementById('sSelectVang'); let sSelectDo = document.getElementById('sSelectDo');if (type === 'Vàng') { btn.className = 'btn btn-vang'; btn.textContent = '🏷️ TẠO THẺ VÀNG';// Hiển thị S1-S5, ẩn S6 sSelectVang.style.display = 'block'; sSelectDo.style.display = 'none'; hint.textContent = '✅ Chọn S1 đến S5 cho thẻ Vàng và khắc phục điểm bất thường trong thời hạn 1 tuần'; hint.style.color = '#1565c0'; } else { // Thẻ Đỏ btn.className = 'btn btn-do'; btn.textContent = '🏷️ TẠO THẺ ĐỎ';// Hiển thị S6, ẩn S1-S5 sSelectVang.style.display = 'none'; sSelectDo.style.display = 'block'; // S6 luôn hiện khi là thẻ Đỏ hint.textContent = '🔴 Thẻ Đỏ mặc định là S6 - An toàn phải tiến hành khắc phục “NGAY” sau khi phát hiện'; hint.style.color = '#d32f2f'; } }function onSChange() { /* Không cần xử lý gì ở đây nữa */ }function treoThe() { let type = document.querySelector('input[name="tagType"]:checked').value; let area = document.getElementById('area').value; let loc = document.getElementById('locationCode').value.trim(); let desc = document.getElementById('description').value.trim(); let disc = document.getElementById('discoverer').value.trim();if (!loc) { toast('Nhập mã vị trí!'); return; } if (!desc) { toast('Nhập mô tả!'); return; } if (!disc) { toast('Nhập tên người phát hiện!'); return; }// Lấy S đã chọn let sValue = ''; if (type === 'Vàng') { sValue = document.getElementById('sSelectVang').value; } else { // Thẻ Đỏ sValue = 'S6'; // Luôn là S6 }let sList = [sValue]; // Đưa vào mảng để đồng bộ với cấu trúc tag// Kiểm tra logic: thẻ vàng không được chứa S6, thẻ đỏ chỉ được S6 (đã xử lý ở onTypeChange) // if (type === 'Vàng' && sList.includes('S6')) { toast('Lỗi: Thẻ Vàng không thể chọn S6 - An toàn!'); return;} // if (type === 'Đỏ' && (sList.length !== 1 || !sList.includes('S6'))) { toast('Lỗi: Thẻ Đỏ chỉ được chọn S6 - An toàn!'); return;}let ma = sinhMa(type); let now = new Date(); let tag = { ma: ma, type: type, area: area, location: loc, description: desc, discoverer: disc, sList: sList, beforeImage: currentImageData, status: 'open', // open | closed createdAt: now.toISOString(), closedAt: null, solution: '', afterImage: '', reviewer: '', reviewResult: '' };tags.unshift(tag); save(); localStorage.setItem('6s_user', disc);// Reset form document.getElementById('description').value = ''; currentImageData = ''; document.getElementById('imagePreview').style.display = 'none'; document.getElementById('fileInput').value = ''; updateLocations(); // Reset vị trí về option đầu tiên// Hiển thị kết quả hienThiTheMoi(tag); renderList(); }function hienThiTheMoi(tag) { let overlay = document.getElementById('modalOverlay'); let content = document.getElementById('modalContent'); let icon = tag.type === 'Vàng' ? '🟡' : '🔴'; let color = tag.type === 'Vàng' ? 'vang' : 'do';content.innerHTML = `
${icon} ${tag.ma}
💡 Chọn "In thẻ" để in giấy A6 treo tại hiện trường
`; overlay.style.display = 'flex'; }function closeModal() { document.getElementById('modalOverlay').style.display = 'none'; }// Click overlay to close document.getElementById('modalOverlay').onclick = function (e) { if (e.target === this) closeModal(); };// ==================== DANH SÁCH THẺ ==================== function renderList() { let filterStatus = document.getElementById('filterStatus').value; let filterType = document.getElementById('filterType').value; let list = document.getElementById('tagList');let filtered = tags.filter(t => { if (filterType !== 'all' && t.type !== filterType) return false; if (filterStatus === 'open' && t.status !== 'open') return false; if (filterStatus === 'closed' && t.status !== 'closed') return false; if (filterStatus === 'quahan' && !isQuaHan(t)) return false; return true; });if (filtered.length === 0) { list.innerHTML = '
📭 Chưa có thẻ nào
'; return; }list.innerHTML = filtered.map(t => { let isVang = t.type === 'Vàng'; let color = isVang ? 'vang' : 'do'; let badge = t.status === 'open' ? 'Đang xử lý' : 'Đã rút'; let qh = isQuaHan(t) ? ' ⚠️ Quá hạn' : '';return `
${t.ma} ${badge}${qh}
${t.description}
${t.location} · ${t.area} · ${t.sList.join(', ')}
${formatDate(t.createdAt)} · ${t.discoverer}
${t.status === 'open' ? `` : ''}
`; }).join(''); }// ==================== XỬ LÝ / RÚT THẺ ==================== function moKhacPhuc(ma) { let t = tags.find(x => x.ma === ma); if (!t) return; let overlay = document.getElementById('modalOverlay'); let content = document.getElementById('modalContent');content.innerHTML = `

🔧 Xử lý thẻ ${ma}

Mô tả: ${t.description}
Vị trí: ${t.location}
`; overlay.style.display = 'flex'; }function thucHienRutThe(ma) { let t = tags.find(x => x.ma === ma); if (!t) return;let solution = document.getElementById('editSolution').value.trim(); let result = document.querySelector('input[name="reviewResult"]:checked'); let reviewer = document.getElementById('editReviewer').value.trim();if (!solution) { toast('Nhập biện pháp khắc phục!'); return; } if (!reviewer) { toast('Nhập tên người đánh giá!'); return; } if (!result) { toast('Chọn kết quả OK hoặc NG!'); return; }t.solution = solution; t.reviewer = reviewer; t.reviewResult = result.value;if (result.value === 'OK') { t.status = 'closed'; t.closedAt = new Date().toISOString(); toast('✅ Đã rút thẻ ' + ma); } else { toast('❌ Trả lại xử lý cho thẻ ' + ma); }save(); closeModal(); renderList(); }function xemChiTiet(ma) { let t = tags.find(x => x.ma === ma); if (!t) return; let overlay = document.getElementById('modalOverlay'); let content = document.getElementById('modalContent');let statusText = t.status === 'open' ? '🟡 Đang xử lý' : '✅ Đã rút'; let qh = isQuaHan(t) ? '
⚠️ QUÁ HẠN (trên 7 ngày)
' : '';content.innerHTML = `

${t.ma}

Loại: ${t.type === 'Vàng' ? '🟡 Thẻ vàng' : '🔴 Thẻ đỏ'}
Vị trí: ${t.location} · ${t.area}
Mô tả: ${t.description}
Phân loại: ${t.sList.join(', ')}
Người treo: ${t.discoverer}
Ngày treo: ${formatDate(t.createdAt)}
Trạng thái: ${statusText}
${qh} ${t.beforeImage ? `
Ảnh hiện trạng:
` : ''} ${t.solution ? `
Khắc phục: ${t.solution}
` : ''} ${t.reviewer ? `
Người rút: ${t.reviewer}
` : ''} ${t.closedAt ? `
Ngày rút: ${formatDate(t.closedAt)}
` : ''}
`; overlay.style.display = 'flex'; }// ==================== DASHBOARD ==================== function updateDashboard() { let open = tags.filter(t => t.status === 'open'); let closed = tags.filter(t => t.status === 'closed');let moVang = open.filter(t => t.type === 'Vàng').length; let moDo = open.filter(t => t.type === 'Đỏ').length; let dongVang = closed.filter(t => t.type === 'Vàng').length; let dongDo = closed.filter(t => t.type === 'Đỏ').length;document.getElementById('statMo').textContent = moVang + moDo; document.getElementById('statMoVang').textContent = moVang; document.getElementById('statMoDo').textContent = moDo;document.getElementById('statDong').textContent = dongVang + dongDo; document.getElementById('statDongVang').textContent = dongVang; document.getElementById('statDongDo').textContent = dongDo; }// ==================== QUÁ HẠN (7 ngày) ==================== function isQuaHan(t) { if (t.status !== 'open') return false; let created = new Date(t.createdAt); let now = new Date(); let diff = (now - created) / (1000 * 60 * 60 * 24); return diff > 7; }// ==================== BÁO CÁO ==================== function renderReport() { let canvas = document.getElementById('chartPareto'); let ctx = canvas.getContext('2d'); let month = document.getElementById('reportMonth').value;// Lọc theo tháng let filtered = tags.filter(t => { let d = new Date(t.createdAt); let ym = d.getFullYear() + '-' + String(d.getMonth() + 1).padStart(2, '0'); return ym === month; });// Đếm theo S let sCount = { S1: 0, S2: 0, S3: 0, S4: 0, S5: 0, S6: 0 }; filtered.forEach(t => { t.sList.forEach(s => { if (sCount[s] !== undefined) sCount[s]++; }); });// Sắp xếp giảm dần let sorted = Object.entries(sCount).sort((a, b) => b[1] - a[1]); let labels = sorted.map(x => x[0]); let data = sorted.map(x => x[1]); let total = data.reduce((a, b) => a + b, 0);// Vẽ biểu đồ cột đơn giản ctx.clearRect(0, 0, canvas.width, canvas.height); if (total === 0) { ctx.fillStyle = '#999'; ctx.font = '14px Arial'; ctx.textAlign = 'center'; ctx.fillText('Chưa có dữ liệu tháng này', canvas.width / 2, canvas.height / 2); } else { let barW = canvas.width / labels.length * 0.6; let maxVal = Math.max(...data); let colors = ['#f9a825', '#1565c0', '#2e7d32', '#6a1b9a', '#e65100', '#d32f2f'];data.forEach((v, i) => { let h = v / maxVal * 150; let x = i * (canvas.width / labels.length) + (canvas.width / labels.length - barW) / 2; let y = canvas.height - 40 - h;// Bar ctx.fillStyle = colors[i % colors.length]; ctx.fillRect(x, y, barW, h);// Label ctx.fillStyle = '#333'; ctx.font = '12px Arial'; ctx.textAlign = 'center'; ctx.fillText(labels[i], x + barW / 2, canvas.height - 22);// Value ctx.fillStyle = '#333'; ctx.font = 'bold 13px Arial'; ctx.fillText(v, x + barW / 2, y - 4); }); }// Bảng chi tiết let tableHtml = `

Chi tiết tháng ${month}

${sorted.map(([s, v]) => { let pct = total > 0 ? (v / total * 100).toFixed(1) : 0; let barW = total > 0 ? (v / total * 100) : 0; return ``; }).join('')}
Phân loạiSố lượngTỷ lệ
${s}${v}
${pct}%
Tổng: ${filtered.length} thẻ · Đã rút: ${filtered.filter(t => t.status === 'closed').length} · Đang mở: ${filtered.filter(t => t.status === 'open').length}
`; document.getElementById('reportTable').innerHTML = tableHtml; }// ==================== TAB SWITCH ==================== function switchTab(tab) { document.querySelectorAll('.tab').forEach(t => t.classList.remove('active')); document.querySelectorAll('.screen').forEach(s => s.classList.remove('active')); document.querySelector(`.tab:nth-child(${tab === 'treo' ? 1 : tab === 'ds' ? 2 : 3})`).classList.add('active'); document.getElementById('screen-' + tab).classList.add('active'); if (tab === 'ds') renderList(); if (tab === 'baocao') renderReport(); }// ==================== UTILITIES ==================== function formatDate(iso) { if (!iso) return ''; let d = new Date(iso); return d.getDate() + '/' + (d.getMonth() + 1) + '/' + d.getFullYear(); }function toast(msg) { let el = document.getElementById('toast'); el.textContent = msg; el.classList.add('show'); setTimeout(() => el.classList.remove('show'), 2500); }// ==================== KHỞI TẠO ==================== updateLocations(); // Khởi tạo mapping vị trí ban đầu // Fill month selector (function () { let sel = document.getElementById('reportMonth'); let now = new Date(); for (let i = 0; i < 6; i++) { let d = new Date(now.getFullYear(), now.getMonth() - i, 1); let val = d.getFullYear() + '-' + String(d.getMonth() + 1).padStart(2, '0'); let label = 'Tháng ' + (d.getMonth() + 1) + '/' + d.getFullYear(); let opt = document.createElement('option'); opt.value = val; opt.textContent = label; if (i === 0) opt.selected = true; sel.appendChild(opt); } })();save(); renderList();

Giới thiệu 5S

Thông tin chi tiết về 5S được phân tích dưới đây.

Lợi ích của 5S

5S mang lại nhiều lợi ích thiết thực cho doanh nghiệp.

Kết luận 5S

Tổng hợp kiến thức về 5S. 5S – Tìm hiểu thêm 5S – Tìm hiểu thêm 5S – Tìm hiểu thêm 5S – Tìm hiểu thêm 5S – Tìm hiểu thêm

Trải Nghiệm 6SAPP Ngay Hôm Nay

Đăng ký pilot miễn phí — 30 ngày trải nghiệm đầy đủ tính năng

Hỏi CiCC AI?