lean.vn — LeanERP và hệ sinh thái AI
📖 Wiki-6S-HuongDan CiCC LeanERP SOP

🔧 XỬ LÝ SỰ CỐ

Xử lý sự cố thường gặp — lỗi frontend, backend, API, DB

Dành cho: Người dùng nâng cao, Admin, Kỹ thuật viên

🚨 LỖI FRONTEND (app6suser)

1. Trắng màn hình, không load gì

Nguyên nhân: JS lỗi, localStorage hỏng

Cách xử lý:

CODE
F12 → Console → Xem lỗi JS gì
F12 → Application → Local Storage → Xóa '6s_user'
F12 → Application → Service Workers → Unregister
F5 refresh

2. "Không tải được vị trí"

Nguyên nhân: API /locations lỗi hoặc user chưa được gán location

Kiểm tra:

BASH
# Test API trực tiếp
curl "http://localhost/lean.vn/wp-json/cicc-6s/v1/locations?user_id=1"

# Kiểm tra assigned_locations trong DB
mysql -u leanvn13_lean -p -e "SELECT assigned_locations FROM wp_6s_users WHERE id=1"

Xử lý: Admin gán location trong Phân quyền User

3. Treo thẻ không thành công

Kiểm tra:

CODE
F12 → Network → Tìm request POST /tags
Xem response server trả về gì
Thường gặp: thiếu trường bắt buộc, location_id sai

4. "Tài khoản đang chờ Admin kích hoạt"

Xử lý:

SQL
-- Nếu có quyền DB
UPDATE wp_6s_users SET status = 'active' WHERE user_login = 'username';

Hoặc qua Admin UI: CiCC 6S → Phân quyền User → Kích hoạt


🖥️ LỖI BACKEND (WordPress Admin)

1. 500 Internal Server Error

Kiểm tra:

BASH
# PHP error log
tail -f C:/xampp/php/logs/php_error_log

# WP_DEBUG
# Mở wp-config.php → thêm:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
# Xem wp-content/debug.log

2. "Không có quyền thực hiện hành động này"

Nguyên nhân: Thiếu manage_options capability

Xử lý: Vào Users → chọn user → set role = Administrator

3. Import CSV không hoạt động

Kiểm tra:

CODE
File CSV có đúng format không?
- Cột: tenant_code,parent_code,code,name,location_type,description,sort_order,cost_center_code,is_asset_location,status
- UTF-8 encoding (không phải ANSI)
- Không có BOM? (Có BOM vẫn được)

4. Menu CiCC 6S không hiển thị

Nguyên nhân: Plugin chưa kích hoạt hoặc user không đủ quyền

Xử lý:

CODE
Vào Plugins → kiểm tra "CiCC 6S Tagging API" đã active?
Vào Users → kiểm tra role có manage_options?

🗄️ LỖI DATABASE

1. "Unknown column 'tenant_id' in 'field list'"

Nguyên nhân: Table wp_6s_tags chưa có column tenant_id

Xử lý:

SQL
ALTER TABLE wp_6s_tags ADD COLUMN tenant_id bigint(20) DEFAULT 0;
-- Hoặc chạy lại migration
php wp-content/plugins/cicc-6s-api/migrate_tags_schema.php

2. Tag không hiển thị trong Kanban

Kiểm tra:

SQL
-- User có location không?
SELECT assigned_locations FROM wp_6s_users WHERE id = 1;

-- Tag có location_id không?
SELECT tag_no, location_id, status FROM wp_6s_tags LIMIT 10;

-- Location có active không?
SELECT id, name, status FROM wp_6s_locations WHERE id IN (8,9,10);

3. Assessment không submit được

Kiểm tra:

SQL
-- Phiên có tồn tại không?
SELECT id, status FROM wp_assessments WHERE id = 1;

-- Items có load được không?
SELECT COUNT(*) FROM wp_assessment_items WHERE group_id IN 
  (SELECT id FROM wp_assessment_groups WHERE template_id = 1);

🌐 LỖI API

1. Test API với curl

BASH
# Login
curl -X POST http://localhost/lean.vn/wp-json/cicc-6s/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"login":"danhgia","password":"123456"}'

# Get locations
curl "http://localhost/lean.vn/wp-json/cicc-6s/v1/locations?tenant_id=1"

# Get tags
curl "http://localhost/lean.vn/wp-json/cicc-6s/v1/tags"

2. API trả về 403 Forbidden

Nguyên nhân: Nonce không hợp lệ, hoặc CORS

Xử lý:

PHP
// Thêm vào wp-config.php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: *");

3. API trả về 404

Nguyên nhân: Endpoint chưa đăng ký, permalink chưa save

Xử lý:

CODE
Vào Settings → Permalinks → bấm Save Changes (không cần đổi gì)
→ WordPress flush rewrite rules

📱 LỖI SERVICE WORKER

1. Ứng dụng dùng bản cũ (cache)

JAVASCRIPT
// Mở DevTools (F12)
// Application → Service Workers → Unregister
// Application → Storage → Clear site data
// Network → Disable cache (checkbox)
// F5

2. Disable SW hoàn toàn khi dev

Trong index.html:

JAVASCRIPT
// Mở comment đoạn này
if ("serviceWorker" in navigator) {
  navigator.serviceWorker.getRegistrations().then(regs => {
    regs.forEach(r => r.unregister());
  });
}

⚡ HIỆU NĂNG

1. App chậm khi load danh sách

Nguyên nhân: Nhiều thẻ (>500), không có index

Xử lý:

SQL
-- Thêm index cho location_id
ALTER TABLE wp_6s_tags ADD INDEX idx_location_id (location_id);
ALTER TABLE wp_6s_tags ADD INDEX idx_status (status);
ALTER TABLE wp_6s_tags ADD INDEX idx_created_at (created_at);

2. Ảnh chậm tải

Nguyên nhân: Ảnh gốc quá lớn

Xử lý:

CODE
Hệ thống đã tự động compress: 1080px, quality 0.7
Nếu cần giảm thêm: sửa trong app.js
quality: 0.5, maxW: 800

📋 CHECKLIST KHẮC PHỤC NHANH

Triệu chứngHành động đầu tiên
Trắng màn hìnhF12 → Console → reload → F12 → Network
Login failKiểm tra user active? → curl test API
Không thấy dataF5 → clear cache → kiểm tra filter
Chart trốngResize window → F5 → check console
API 404Settings → Permalinks → Save
CORSThêm header vào wp-config
SW cũUnregister → Clear storage
DB lỗiChạy migration script