AI 상품 추천: 스크립트형
1. 시스템 구조도

2. 개요
고객사에서 추천되는 상품을 제어 하거나 또는 추천 상품과 관련된 전시 영역의 디자인에 수정이 필요한 경우 스크립트 방식을 통해 사용 가능합니다.
DIV형과는 다르게 디자인을 자유롭게 구성 가능합니다.
3. 연동 방식
그루비에서 추천 상품 전달 시 html 과 css 가 아닌 [추천 캠페인키], [선택된 알고리즘 코드], [추천 상품 목록]을 고객사 사이트 내의 특정 자바 스크립트 함수를 호출하는 방식으로 전달합니다.
function setGroobeeRecommend("캠페인키", "알고리즘 코드", "추천 상품 목록") {
...
}
고객사에서 작성하는 스크립트 함수는 그루비에서 전달된 [추천 캠페인키], [선택된 알고리즘 코드], [추천 상품 목록]을 활용하여 상품을 선별하고 원하는 위치에 노출할 수 있도록 작업되어야 합니다.
4. setGroobeeRecommend
그루비에서 정보 수집 후 필요한 정보가 전달되는 함수입니다.
정의
역할: 그루비에서 정보 수집 후 필요한 정보가 전달되는 함수
함수명: setGroobeeRecommend (고정 값이며 변경되면 안됨)
파라미터
algorithmCd
알고리즘 코드
string
campaignKey
추천 캠페인키
string
goodsArray
상품 목록
Object[]
- goodsArray에는 상품코드 정보만 내려 보내줍니다.
- goodsArray에 담겨오는 정보
goodsArray = [
{goodsCd:"추천상품코드1"},
{goodsCd:"추천상품코드2"},
…
]
5. DI(노출)
실제 고객사에서 노출시킨 상품 / 기획전 정보를 그루비로 보내줍니다.
그루비로 노출시킨 상품 / 기획전 정보를 보내주면 통계에 집계되어 어드민에서 확인 가능합니다.
정의
역할: 전시되는 상품을 그루비에서 노출 처리
함수명: groobee.send
파라미터
type
노출 코드("DI" 고정 값)
string
groobeeObj
노출 관련 object
Object
groobeeObj = {
algorithmCd : "알고리즘코드",
campaignKey : "추천캠페인키",
campaignTypeCd : "RE", //고정
goods: [
{goodsCd: "노출된 상품코드1"},
{goodsCd: "노출된 상품코드2"}
]
}
정의
역할: 전시되는 기획전을 그루비에서 노출 처리
함수명: groobee.send
파라미터
type
노출 코드("DI" 고정 값)
string
groobeeObj
노출 관련 object
Object
groobeeObj = {
algorithmCd : "알고리즘코드",
campaignKey : "추천캠페인키",
campaignTypeCd : "RE",
goods: [
{plan: ["노출된 기획전코드1", “노출된 기획전코드2”]}
]
}
6. CL(클릭)
고객이 클릭한 상품 / 기획전 정보를 그루비로 보내줍니다.
고객이 클릭한 상품 / 기획전 정보를 그루비로 보내주면 통계에 집계되어 어드민에서 확인 가능합니다.
정의
역할: 고객이 클릭한 상품을 그루비에서 클릭 처리
함수명: groobee.send
파라미터
type
노출 코드("CL" 고정 값)
string
groobeeObj
노출 관련 object
Object
groobeeObj = {
algorithmCd : "알고리즘코드",
campaignKey : "추천캠페인키",
campaignTypeCd : "RE", //고정
goods: [
{goodsCd: "고객이 클릭한 상품코드1"}
]
}
정의
역할: 고객이 클릭한 기획전을 그루비에서 클릭 처리
함수명: groobee.send
파라미터
type
노출 코드("CL" 고정 값)
string
groobeeObj
노출 관련 object
Object
groobeeObj = {
algorithmCd : "알고리즘코드",
campaignKey : "추천캠페인키",
campaignTypeCd : "RE",
goods: [
{plan: ["고객이 클릭한 기획전코드1"]}
]
}
7. 작성 예시
코드 작성 예시를 보여줍니다.
function setGroobeeRecommend (algorithmCd, campaignKey, goodsArray){
// code here.
console.log(algorithmCd, ':::', campaignKey, ':::', goodsArray)
if (goodsArray && goodsArray.length > 0) {
//상품정보가 있을 경우 상품코드로 정렬 및 보여줄 부분에 대하여 처리를 진행
//예시를 위해 범용적인 ajax로 예시를 사용
//임시로 작성한 코드이기에 고객사에 맞도록 알아서 작성할 것
$.ajax({
type: '고객사 상품코드로 정보 가져올 통신 타입',
url : '고객사 상품코드로 정보 가져올 통신 URL',
...
data : JSON.stringify({
goods: goodsArray
}),
success : function(result) {
/*
추천 상품 선별 및 노출작업
각 상품 클릭 시 이벤트 연결처리도 필요 아래 clickGroobeeProduct(함수명은 자유)
예시일 뿐 고객사에 맞춰서 코드는 새로 작성할 것
*/
var html = "<ul>";
for (let i = 0; i < result.length; i++) {
html += `<li onClick="clickGroobeeProduct(${algorithmCd}, ${campaignKey}, ${result[i].goodsCd})">${result[i].goodsNm}</li>`;
}
html += "</ul>";
$('#지정된ID').append(html);
$('#지정된ID').show();
----------------그루비 노출 START------------------
//var goods = ['선별 및 가공된 goods상품정보코드값 array'];
var goods = result;
var groobeeObj = {
algorithmCd : algorithmCd,
campaignKey : campaignKey,
campaignTypeCd : "RE",
goods: goods
};
//마지막에 노출처리
groobee.send('DI', groobeeObj);
----------------그루비 노출 END------------------
},
error : function(result, status, error) {
console.log(error);
}
})
} else {
//상품정보가 없을 때 당사에서 보여줄 부분을 숨김처리해줘야함
$('#지정된ID').hide();
}
....
}
//추천 상품 클릭 시 호출해야하는 함수 (함수명 자유)
function clickGroobeeProduct (algorithmCd, campaignKey, goodsCd) {
//추천 클릭처리
var groobeeObj = {
algorithmCd: algorithmCd,
campaignKey: campaignKey,
campaignTypeCd: "RE" //고정
goods: [
{goodsCd: goodsCd}
]
}
groobee.send('CL', groobeeObj);
//고객사 페이지 이동처리
code....
}
Last updated