# GOCARE algorithm requirements ## 1. Hàm thêm template ### - Mô tả: Thêm một template auto-reply vào hệ thống ### - Định nghĩa hàm: ```dart= bool addTemplate(Map<String, dynamic> data); ``` ### - Input: ```dart= data = { "name": "Chẩn đoán COVID" "content": "Chào {{vocative}} {{name}},\nVới thông tin mà {{vocative}} cung cấp, có thể {{vocative}} đã bị COVID.", "triggers": [ { "keyword": "sốt", "priority": 4, }, { "keyword": "ho khan", "priority": 6, }, { "keyword": "ho", "priority": 4, }, { "keyword": "mất vị giác", "priority": 9, } ], "arguments": [ "name", "vocative" ], "threshold": 15, } ``` ### - Output: true/false: Thêm thành công hoặc thất bại ## 2. Hàm get response ### - Mô tả: - Tìm kiếm template thỏa mãn với **message** (tin nhắn của khách hàng) - Trả về `null` nếu không tìm thấy template nào thỏa mãn có điểm số >= ***threshold*** - Nhiều template cùng thỏa mãn thì trả về template có điểm cao nhất ### - Định nghĩa hàm: ```dart= String? getResponse(String message, Map<String, dynamic> arguments); ``` ### - Input: ```dart= message = "toi gan day bi mat vi giac, va nhieu luc bi ho khan nua. bac si tu van giup toi voi" arguments = { "name": "Ngọc Ngô", "gender": "male", "age": null } ``` ### - Output: ```dart= "Chào anh Ngọc Ngô,\nVới thông tin mà anh cung cấp, có thể anh đã bị COVID." ``` ### - Quy tắc tính điểm: - Chứa keyword nào thì cộng priority vào - Nếu tồn tại 2 keyword chứa nhau (***ho khan*** và ***ho***) thì chỉ tính keyword có priority lớn hơn - Ở mức demo: - chưa phân biệt hoa/thường, có dấu/không dấu => chuyển về thường & không dấu - chưa tính dựa trên số lượng của 1 từ khóa (chỉ tính tồn tại) - ## 3. Hàm specify argument ### - Mô tả: Xác định giá trị cho một argument từ các argument khác Ở mức demo: Hàm do hệ thống implement cứng, không cho doanh nghiệp tùy chỉnh. Có thể dùng if-else, hoặc switch-case, hoặc xử lý bằng cấu trúc dữ liệu (càng tốt) ### - Định nghĩa hàm: ```dart= String? specifyArgument(String neededKey, Map<String, dynamic> arguments); ``` ### - Input: ```dart= neededKey = "vocative" arguments = { "name": "Ngọc Ngô", "gender": "male" } ``` ### - Output: ```dart= anh ```