Branch: MD-455 | Base: MD-341-디스탯-CMS | 작성일: 2026-03-19
핵심 변경: 기존 type (약관명) 필드 1개가 → serviceType (서비스 구분) + termsType (약관 유형) 2개로 분리됨
serviceType 필드 추가 (모든 API에 적용)type → termsType 으로 필드명 변경termsGroup Enum 값 변경 (DSTAT 등 → SERVICE, MARKETING)typeArr → serviceTypeArr + termsTypeArr 로 분리typeName 필드 삭제 → serviceTypeName + termsTypeName 으로 대체| Value | 표시명 |
|---|---|
SERVICE |
서비스 |
MARKETING |
마케팅 |
기존: DSTAT, MARKETING, LULU_STAT, BIZ_STAT
| Value | 표시명 |
|---|---|
DSTAT |
디스탯 |
LULU_STAT |
룰루스탯 |
DR_STAT |
대화형 AI |
BIZ_STAT |
비즈스탯 |
| Value | 표시명 |
|---|---|
TERM_SERVICE |
서비스 이용약관 |
PRIVACY_POLICY |
개인정보 처리방침 안내 |
PERSONAL_AGREE |
개인정보 수집 및 이용 안내 |
THIRD_AGREE |
개인정보 제3자 제공 동의 |
SENSITIVE_AGREE |
민감정보 수집 및 이용 동의 |
SENSITIVE_THIRD_AGREE |
민감정보 제3자 제공 동의 |
LULU_TERM_SERVICE |
대화형 AI 서비스 이용약관 |
LULU_PERSONAL_AGREE |
대화형 AI 개인정보 수집 및 이용 동의 |
BIZ_THIRD_AGREE |
비즈스탯 제3자 제공 동의 |
BIZ_SENSITIVE_AGREE |
비즈스탯 민감정보 제3자 제공 동의 |
MARKETING_AGREE |
마케팅정보 수신 동의 |
MARKETING_INFO_AGREE |
마케팅 목적의 개인정보 수집 및 이용 동의 |
AD_INFO_AGREE |
광고성 정보 수신 동의 |
필드명만 type → termsType으로 변경. Enum 값은 동일
| Value | 표시명 |
|---|---|
REQUIRED |
필수 |
OPTIONAL |
선택 |
NONE |
해당 없음 |
| 상태 | 필드명 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| termsGroupArr | String[] | N | 약관 그룹 필터 ["SERVICE", "MARKETING"] |
|
| NEW | serviceTypeArr | String[] | N | 서비스 구분 필터 ["DSTAT", "LULU_STAT", "DR_STAT", "BIZ_STAT"] |
| CHANGE | termsTypeArr | String[] | N | 약관 유형 필터 (기존 typeArr) |
| isActive | Boolean | N | 노출 여부 | |
| periodOption | String | Y | EFFECTIVE / IN / UP |
|
| period | Object | Y | { startDt, endDt } (yyyy-MM-dd) |
|
| page | Integer | Y | 페이지 번호 | |
| size | Integer | Y | 페이지 크기 | |
| keyword | String | N | 검색 키워드 |
data.contents[])| 상태 | 필드명 | 타입 | 설명 |
|---|---|---|---|
| seq | Long | 약관 고유 번호 | |
| termsGroup | String | 약관 그룹 코드 | |
| termsGroupName | String | 약관 그룹 표시명 | |
| NEW | serviceType | String | 서비스 구분 코드 |
| NEW | serviceTypeName | String | 서비스 구분 표시명 (예: "디스탯") |
| CHANGE | termsType | String | 약관 유형 코드 (기존 type) |
| CHANGE | termsTypeName | String | 약관 유형 표시명 (기존 typeName) |
| effectiveDt | String | 시행일 (yyyy-MM-dd) | |
| isActive | String | "노출" / "비노출" | |
| inDtm | String | 등록일시 (yyyy-MM-dd HH:mm:ss) | |
| inId | String | 등록자 ID | |
| upDtm | String | 수정일시 (yyyy-MM-dd HH:mm:ss) | |
| upId | String | 수정자 ID |
{
"result": "SUCCESS",
"data": {
"contents": [
{
"seq": 1,
"termsGroup": "SERVICE",
"termsGroupName": "서비스",
"serviceType": "DSTAT", // NEW
"serviceTypeName": "디스탯", // NEW
"termsType": "TERM_SERVICE", // CHANGE (기존 type)
"termsTypeName": "서비스 이용약관", // CHANGE (기존 typeName)
"effectiveDt": "2026-06-01",
"isActive": "노출",
"inDtm": "2026-01-01 00:00:00",
"inId": "[email protected]",
"upDtm": "2026-01-15 10:30:00",
"upId": "[email protected]"
}
],
"pagination": { ... }
}
}
data)| 상태 | 필드명 | 타입 | 설명 |
|---|---|---|---|
| seq | Long | 약관 고유 번호 | |
| termsGroup | String | 약관 그룹 코드 | |
| termsGroupName | String | 약관 그룹 표시명 | |
| NEW | serviceType | String | 서비스 구분 코드 |
| NEW | serviceTypeName | String | 서비스 구분 표시명 |
| CHANGE | termsType | String | 약관 유형 코드 (기존 type) |
| CHANGE | termsTypeName | String | 약관 유형 표시명 (기존 typeName) |
| title | String | 약관 제목 | |
| content | String | 약관 내용 (HTML) | |
| effectiveDt | String | 시행일 (yyyy-MM-dd) | |
| isActive | Boolean | 노출 여부 | |
| requireType | String | 필수 여부 코드 | |
| requireTypeName | String | 필수 여부 표시명 | |
| sortOrder | Integer | 정렬 순서 | |
| inId | String | 등록자 | |
| inDtm | String | 등록일시 | |
| upId | String | 수정자 | |
| upDtm | String | 수정일시 |
{
"result": "SUCCESS",
"data": {
"seq": 1,
"termsGroup": "SERVICE",
"termsGroupName": "서비스",
"serviceType": "DSTAT",
"serviceTypeName": "디스탯",
"termsType": "TERM_SERVICE",
"termsTypeName": "서비스 이용약관",
"title": "디스탯 서비스 이용약관",
"content": "<p>약관 내용...</p>",
"effectiveDt": "2026-06-01",
"isActive": true,
"requireType": "REQUIRED",
"requireTypeName": "필수",
"sortOrder": 1,
"inId": "[email protected]",
"inDtm": "2026-01-01 00:00:00",
"upId": "[email protected]",
"upDtm": "2026-01-15 10:30:00"
}
}
| 상태 | 필드명 | 타입 | 필수 | 설명 | Validation |
|---|---|---|---|---|---|
| termsGroup | String | Y | 약관 그룹 | SERVICE, MARKETING |
|
| NEW | serviceType | String | Y | 서비스 구분 | DSTAT, LULU_STAT, DR_STAT, BIZ_STAT |
| CHANGE | termsType | String | Y | 약관 유형 (기존 type) |
Enum 값 참조 |
| effectiveDt | String | Y | 시행일 (yyyy-MM-dd) | 현재 이후 날짜만 허용 | |
| isActive | Boolean | Y | 노출 여부 | ||
| requireType | String | Y | 필수 여부 | REQUIRED, OPTIONAL, NONE |
|
| title | String | Y | 약관 제목 | 빈 문자열 불가 | |
| content | String | Y | 약관 내용 (HTML) | 빈 문자열 불가 |
{
"termsGroup": "SERVICE",
"serviceType": "DSTAT", // NEW - 필수
"termsType": "TERM_SERVICE", // CHANGE (기존 type)
"effectiveDt": "2026-06-01",
"isActive": true,
"requireType": "REQUIRED",
"title": "디스탯 서비스 이용약관",
"content": "<p>약관 내용</p>"
}
termsGroup + serviceType + termsType + effectiveDt 조합이 이미 존재하면 409 Conflict 에러가 발생합니다. (기존: termsGroup + type + effectiveDt)
등록 API와 동일한 구조입니다.
| 상태 | 필드명 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| termsGroup | String | Y | 약관 그룹 | |
| NEW | serviceType | String | Y | 서비스 구분 |
| CHANGE | termsType | String | Y | 약관 유형 (기존 type) |
| effectiveDt | String | Y | 시행일 | |
| isActive | Boolean | Y | 노출 여부 | |
| requireType | String | Y | 필수 여부 | |
| title | String | Y | 약관 제목 | |
| content | String | Y | 약관 내용 |
| 위치 | Before (기존) | After (변경) | 비고 |
|---|---|---|---|
| 목록 조회 Request | typeArr |
serviceTypeArr |
새로운 필터 (서비스 구분) |
| — | termsTypeArr |
새로운 필터 (약관 유형) | |
| 목록 조회 Response | type |
serviceType + termsType |
1개 → 2개로 분리 |
typeName |
serviceTypeName + termsTypeName |
1개 → 2개로 분리 | |
termsGroup 값 |
termsGroup 값 |
Enum 값 변경 (DSTAT→SERVICE 등) | |
termsGroupName 값 |
termsGroupName 값 |
표시명 변경 (디스탯→서비스 등) | |
| 상세 조회 Response | type / typeName |
serviceType / serviceTypeName |
추가 |
termsType / termsTypeName |
기존 type을 rename | ||
| 등록/수정 Request | type |
serviceType |
새로운 필수 필드 |
| — | termsType |
기존 type을 rename |