Appearance
🤝 Bàn giao & Kế hoạch Phát triển
Mục tiêu
Tài liệu này được thiết kế dành riêng cho Haravan Developers (hoặc đội ngũ lập trình viên tiếp quản) để hiểu rõ hiện trạng ứng dụng login_with_haravan, cách bảo trì, và lộ trình phát triển để cải tiến sự kết nối giữa Frappe và Haravan.
1. Hiện trạng Hệ thống (Current State)
Ứng dụng login_with_haravan hiện tại đảm nhận 2 vai trò cốt lõi:
- SSO Identity Provider: Đóng vai trò là cầu nối OAuth 2.0 cho Frappe Helpdesk, cho phép các merchant đăng nhập một chạm từ hệ sinh thái Haravan.
- Profile Sync Engine: Tự động lắng nghe và trích xuất dữ liệu tổ chức (OrgID, Shop Plan, Domain) từ Haravan Profile để tạo hoặc cập nhật thông tin
HD Customertrong Frappe Helpdesk.
Hệ thống đã đạt mức Production-ready cho nhu cầu xác thực và phân luồng ticket. Một số tính năng dữ liệu nâng cao đã được hoàn thiện:
- Quản lý Ticket theo Role: Tự động phân quyền xem toàn bộ ticket cho
owner/adminvà thu hẹp scope cho nhân viên (staff). - Đồng bộ Ngày kích hoạt (First Paid Date): Lấy từ API Subscription và fallback thông minh về ngày tạo Shop để hỗ trợ chia team theo thời gian vòng đời.
2. Hướng dẫn Bảo trì (Maintenance Guide)
Để tiếp tục maintain và fix bug, developer cần nắm rõ các quy tắc sau:
2.1. Cấu trúc Source Code (Tuân thủ 7-Layer Frappe)
- Tuyệt đối 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 các DocType có sẵn (như
HD Customer) bằng cách định nghĩa tronglogin_with_haravan/setup/install.py(hookafter_migrate).
2.2. Luồng Phát triển & Kiểm thử (Dev Workflow)
Mọi thay đổi code cần phải được kiểm thử nghiêm ngặt trước khi deploy:
bash
# Chạy Unit Tests cục bộ để đảm bảo không phá vỡ logic OAuth và Sync
PYTHONPATH=. python3 -m unittest discover -s login_with_haravan/tests -vKhuyến nghị sử dụng kịch bản ./test_gate.sh hoặc ./ship.sh nếu có để tự động hoá quá trình kiểm tra.
3. Lộ trình Cải tiến (Future Improvements)
Để nâng tầm sự kết nối giữa Frappe và Haravan, dưới đây là các tính năng kỹ thuật mà Developer tiếp theo nên cân nhắc triển khai:
Pha 1: Tích hợp Dữ liệu Bán hàng (Omnichannel Sync)
- Vấn đề: Hiện tại Helpdesk chỉ biết khách hàng là ai, chưa biết họ đang kinh doanh ra sao, có bị lỗi đơn hàng nào không.
- Giải pháp: Bổ sung API gọi sang
Haravan OmniPowerđể kéo danh sách đơn hàng (Orders) gần nhất của tổ chức đó hiển thị vào Frappe Helpdesk (có thể tạo một Custom HTML field trên Ticket).
Pha 2: Real-time Webhooks & SLA Automation
- Vấn đề:
Shop Plan(Gói dịch vụ Scale/Growth) chỉ được cập nhật khi người dùng đăng nhập lại (Login event). Nếu họ nâng cấp gói nhưng không đăng xuất/đăng nhập, Helpdesk sẽ không biết. - Giải pháp: Viết một endpoint
login_with_haravan.webhooks.receive_org_updateđể nhận Webhook từ Haravan. Khi Merchant nâng cấp gói, tự động điều chỉnh SLA tương ứng trong Frappe Helpdesk.
Pha 3: Haravan Admin App (Embedded Mini-App)
- Vấn đề: Merchant phải rời khỏi trang quản trị Haravan để truy cập
haravandesk.s.frappe.cloudđể tạo ticket. - Giải pháp: Sử dụng Haravan App SDK để nhúng (embed) một giao diện tạo Ticket của Frappe thẳng vào Dashboard của Haravan, giúp trải nghiệm hỗ trợ liền mạch 100%.
4. Góp ý & Mở rộng Logic (Extending Logic)
Nếu cần thêm một trường dữ liệu từ Haravan (ví dụ: phone_number):
- Sửa file
engines/haravan_api.pyđể yêu cầu thêm scope cần thiết. - Sửa
engines/sync_helpdesk.py(hàmupsert_hd_customerhoặccreate_contact) để map trường dữ liệu mới vào DB của Frappe. - Chạy
bench migrateđể áp dụng.