카테고리
- 관리자
- 카테고리 조회
``` ts
{
카테고리id
카테고리
}
```
[ 영진 ]
req ( params )
```ts=
{
type : 'NOTICE' | 'FAQ' | 'INQUIRY'
}
```
res
```ts=
{
categories: Array<{
id: number;
title: string;
}>
}
```
---
- 카테고리 생성
``` ts
{
카테고리
}
```
[ 영진 ]
req ( body )
```ts=
{
type : '고객센터' | 'FAQ' | '1:1문의'
title: string;
}
```
---
- 카테고리 수정
``` ts
{
카테고리id
카테고리
}
```
[ 영진 ]
req ( body )
```ts=
{
type : '고객센터' | 'FAQ' | '1:1문의'
id: number;
title:string;
}
```
---
- 카테고리 삭제
``` ts
{
카테고리id
}
```
[ 영진 ]
req ( body )
```ts=
{
type : '고객센터' | 'FAQ' | '1:1문의'
id: number;
}
```
공지사항, FAQ, 1:1문의 마다 카테고리 분리해서 서버 db에서 관리해야할듯
---
공지사항
- 사용자
- 공지사항 조회(pagination, query search)
``` ts
{
공지글id
필독 여부
조회수
노출시간
카테고리
댓글: {댓글,댓글id,댓글 시간}[]
}
```
[ 영진 ]
=> 전체조회와 상세조회 구분해야할듯
* 전체 조회
req ( params )
```ts=
searchType : 'title' | 'content' | 'titleContent';
search : string;
category:string;
page:number;
size:number;
```
res
```ts=
{
total:number;
postList:Array<{
공지글id:number;
index:number | null; ( null => 필독 , number => 게시글 순서 ) => 공지글id와 구분 짓는 이유는, 공지글 제거가 될때 index는 순서가 순차적이어야하나, 공지글 id는 고정이라 생각했음
category:string;
title:string;
createdAt:Date;
viewCount:number;
}>
}
```
* 상세 조회
req ( params )
```ts=
{
공지글id:number;
}
```
res
```ts=
{
공지글id:number;
category:string;
title:string;
createdAt:Date;
viewCount:number;
author:'작성자';
profileImg:string;
content:string; ( html )
}
```
* 공지사항 댓글 조회
req ( params )
```ts=
{
공지글id:number;
page:number;
size:number;
}
```
res
```ts=
{
total:number;
comments:Array<{
id:number;
author:string;
content:string; ( html일 필요가 있을지?? )
}>
}
```
* 공지사항 이전글 다음글 조회
( 공지사항 상세와 합쳐도 상관 없음 => query join delay생기면 쪼개도 될듯 )
req ( params )
```ts=
{
공지글id:number;
}
```
res
```ts=
{
prev:{
공지글id:number;
category:string;
title:string;
};
next:{
공지글id:number;
category:string;
title:string;
};
}
```
* 공지사항 조회수 카운트 PATCH
req ( body )
```ts=
{
공지글id:number;
}
```
---
- 관리자
- 공지사항 조회(pagination, query search)
``` ts
{
공지글id
게시자
필독 여부
조회수
노출시간
카테고리
댓글: {댓글,댓글id,댓글 시간}[]
}
```
[ 영진 ]
사용자와 동일하게 써도 될듯?
---
- 공지사항 생성
- 기능
- 필독 여부
- 노출 시간
``` ts
{
게시자
필독 여부
조회수
노출시간
카테고리
공지사항 내용 (html)
}
```
[ 영진 ]
req ( body )
```ts=
Essential:boolean;
showTime:Date ( UTC ); ( 이게 createdAt으론 노출되어야 하는지? )
category:string;
title:string;
viewCount: number; ( 초기 조작.. )
author: '관리자' << 서버에서 알아서 넣어줘도 될듯
content: string; ( html )
```
---
- 공지사항 수정
``` ts
{
게시자
필독 여부
조회수
노출시간
카테고리
공지사항 내용 (html)
}
```
[ 영진 ]
req ( body )
```ts=
Essential:boolean;
showTime:Date ( UTC ); ( 이게 createdAt으론 노출되어야 하는지? )
category:string;
title:string;
viewCount: number; ( 초기 조작.. )
author: '관리자' << 서버에서 알아서 넣어줘도 될듯
content: string; ( html )
```
---
- 공지사항 삭제
``` ts
{
공지글id
}
```
공지사항 댓글 (공지사항에서 조회 가능)
- 관리자
- 공지사항 댓글 생성
``` ts
{
댓글 내용 (html)
댓글 시간
}
```
[ 영진 ]
req ( body )
```ts=
{
게시글id:number;
comment: string ( html )
createdAt: 서버에서 알아서 ( 근데 필요할련지..? 디자인에서는 없어서 )
}
```
---
- 공지사항 댓글 수정
``` ts
{
댓글 내용 (html)
}
```
[ 영진 ]
req ( body )
```ts=
{
게시글id:number;
comment: string ( html )
updatedAt: 서버에서 알아서 ( 근데 필요할련지..? 디자인에서는 없어서 )
}
```
---
- 공지사항 댓글 삭제
``` ts
{
공지글id
댓글id
}
```
FAQ
- 사용자
- FAQ 조회 (pagination, query search)
``` ts
{
FAQid
카테고리
질문
답변
}
```
[ 영진 ]
* FAQ 전체 조회
req ( params )
```ts=
searchType : 'title' | 'content' | 'titleContent';
search : string;
category: string;
page:number;
size:number;
```
res
```ts=
{
total:number;
postList:Array<{
id:number;
category: string;
question:string;
answer:string;
}>
}
```
---
- 관리자
- FAQ 생성
- 기능
- 카테고리에 따른 질문과 답변 추가
``` ts
{
카테고리
질문
답변
}
```
- FAQ 조회 (pagination, query search)
``` ts
{
FAQid
카테고리
질문
답변
}
```
[ 영진 ] => 사용자랑 동일하게 사용해도 될듯
- FAQ 수정
``` ts
{
FAQid
카테고리
질문
답변
}
```
- FAQ 삭제
``` ts
{
FAQid
}
```
1:1 문의
- 사용자
- 1:1문의 조회 (pagination)
``` ts
{
답변여부
1:1문의id
문의 내용
답변: {답변,답변id,답변 시간}[]
}
```
[ 영진 ]
* 1:1 전체조회
req ( params )
```ts=
category: string;
page:number;
size:number;
```
res
```ts=
{
total:number;
postList:Array<{
id:number;
category: string;
title:string;
answer:string | null; => 또는 answerFlag만 있어도 될듯 ( content는 전체 조회에 필요 없어서 )
createdAt:Date;
}>
}
```
* 1:1 상세조회
req ( params )
```ts=
id:number;
```
res
```ts=
id:number;
category:string;
title:string;
content:string;
createdAt:string;
answer:string | null;
author:string << 나인데 필요한가?
profileImg:string << 나인데 필요한가?
```
---
- 1:1문의 생성
``` ts
{
문의 내용
}
```
[ 영진 ]
req ( body )
```ts=
{
content:string; ( 개인정보인데 암호화 해야하지 않을까? )
category:string;
}
```
---
- 관리자
- 1:1문의 조회 (pagination, query search)
``` ts
{
답변여부
1:1문의id
문의 내용
답변: {답변,답변id,답변 시간}[] // 답변은 1개로 제한됩니다.
}
```
[ 영진 ]
사용자 조회와 동일하게 해도 될듯??
---
- 1:1문의 답변 생성
``` ts
{
1:1문의id
답변
}
```
- 1:1문의 답변 수정
``` ts
{
답변id
답변
}
```
- 1:1문의 답변 삭제
``` ts
{
답변id
}
```
알림
- 사용자
- 알림 조회
- 타입
- 공지사항, 1:1 문의 댓글, 지원 승인/반려
``` ts
// 공지사항
{
공지사항id
필독여부
노출시간
}
// 1:1 문의 댓글
{
1:1문의id
댓글id
생성시간
}
// 지원 승인/반려
{
승인 여부
생성시간
}
```
[ 영진 ]
* 알림 전체 조회
res
```ts=
{
total:number;
notifications: Array<{
id: number;
title: string;
content: string;
isRead: boolean;
isImportant: boolean;
createdAt: Date;
type: "ADMISSION" | "COMMENT" | "INQUIRY"
serviceId: string;
}>
}
```
=> 중요알림도 있다던데
=> 알람 리스트 페이지 나오면 데이터 필드 변경될 수도,
=> 5개까지만 헤더에서 노출하고 그 이상이라면 `더보기 활성화` => total로 체크하고,
=> notifications는 5개까지만 줘도 될듯
=> type + serviceId(이동할 특정 URI)를 기반하여 특정 URI 이동
* 알림 상세 조회
req ( body )
```ts=
{
id:number;
}
```
res
```ts=
{
canMove:boolean;
href:string; ( go to url )
}
```
---