Appearance
🤝 Bàn giao & Lộ trình phát triển
Mục tiêu
Tài liệu này dành cho Haravan Developers (hoặc đội ngũ lập trình viên tiếp quản) để nắm rõ hiện trạng, cách bảo trì, và lộ trình phát triển ứng dụng Frappe x Haravan.
1. Hiện trạng hệ thống
Ứng dụng Frappe x Haravan hiện đảm nhận 2 vai trò cốt lõi:
- SSO Identity Provider — Cầu nối OAuth 2.0 cho Frappe Helpdesk, cho phép merchant đăng nhập một chạm từ hệ sinh thái Haravan.
- Helpdesk Identity Link — Lưu định danh tối thiểu từ Haravan Account (
userid,email,orgid) để tạo phiên đăng nhập, liên kếtHaravan Account Link,HD Customer, vàContact.
Hệ thống hiện là luồng login-only. Dữ liệu hồ sơ chi tiết cho agent Helpdesk được lấy theo nhu cầu từ Bitrix Customer Profile — không còn gọi Haravan commerce/shop API trong callback đăng nhập.
2. Hướng dẫn bảo trì
2.1. Nguyên tắc source code
- Không sửa core của Frappe hay Frappe Helpdesk. Mọi logic tuỳ biến phải nằm trong ứng dụng
login_with_haravan. - Thêm Custom Field vào DocType có sẵn (như
HD Customer) bằng cách định nghĩa tronglogin_with_haravan/setup/install.py(hookafter_migrate). - Tuân thủ cấu trúc 7-Layer Frappe.
2.2. Quy trình phát triển & kiểm thử
Mọi thay đổi code cần kiểm thử trước khi deploy:
bash
# Chạy Unit Tests cục bộ
PYTHONPATH=. python3 -m unittest discover -s login_with_haravan/tests -vKhuyến nghị sử dụng ./test_gate.sh hoặc npm run ship để tự động hoá kiểm tra và ship code. Xem chi tiết tại Triển khai lên Production.
2.3. Mở rộng trường dữ liệu
Nếu cần thêm trường từ Haravan (ví dụ: phone_number):
- Xác minh trường nằm trong login/userinfo scope hiện có hay cần scope mới.
- Sửa
engines/sync_helpdesk.py(hàmupsert_hd_customerhoặccreate_contact) để map trường mới. - Viết test trước, rồi chạy
./test_gate.sh.
3. Lộ trình cải tiến
Pha 1: Tích hợp dữ liệu bán hàng (Omnichannel Sync)
- Vấn đề: Helpdesk chỉ biết khách hàng là ai, chưa biết họ kinh doanh ra sao hay có lỗi đơn hàng nào không.
- Giải pháp: Bổ sung Haravan commerce API khi có yêu cầu sản phẩm rõ ràng. Thêm scope riêng, test bảo mật riêng, và không trộn vào callback login-only hiện tại.
Pha 2: Webhook thời gian thực & Tự động hóa SLA
- Vấn đề: SLA và phân tuyến ticket cần dữ liệu vận hành đáng tin cậy, nhưng callback OAuth không nên chứa logic đồng bộ nặng.
- Giải pháp: Thiết kế webhook hoặc scheduled sync riêng, tách khỏi OAuth callback. Ghi log bằng
frappe.log_error().
Pha 3: Haravan Admin App (Ứng dụng nhúng)
- Vấn đề: Merchant phải rời trang quản trị Haravan để truy cập
haravan.helptạo ticket. - Giải pháp: Dùng Haravan App SDK nhúng giao diện tạo Ticket của Frappe thẳng vào Dashboard Haravan — trải nghiệm hỗ trợ liền mạch 100%.