카테고리 - 관리자 - 카테고리 조회 ``` 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 ) } ``` ---