diff --git a/documents/03.UCAP_Next_Messenger_서비스흐름도.V0.2.2.pptx b/documents/03.UCAP_Next_Messenger_서비스흐름도.V0.2.2.pptx index f21d359..9e5c463 100644 Binary files a/documents/03.UCAP_Next_Messenger_서비스흐름도.V0.2.2.pptx and b/documents/03.UCAP_Next_Messenger_서비스흐름도.V0.2.2.pptx differ diff --git a/documents/protocol/fileInfo.txt b/documents/protocol/fileInfo.txt new file mode 100644 index 0000000..139b32d --- /dev/null +++ b/documents/protocol/fileInfo.txt @@ -0,0 +1,28 @@ +export const SVC_TYPE_FILE = 53; // File +export const SSVC_TYPE_FILE_INFO_REQ = 1; // File 정보 전송 요청 +export const SSVC_TYPE_FILE_INFO_DATA = 2; // File 정보 Data +export const SSVC_TYPE_FILE_INFO_CHECK_DATA = 3; // File 다운로드 체크 Data +export const SSVC_TYPE_FILE_INFO_RES = 4; // File 정보 전송 응답 +export const SSVC_TYPE_FILE_DOWN_CHECK_REQ = 11; // File 다운로드 완료 요청 +export const SSVC_TYPE_FILE_DOWN_CHECK_RES = 12; // File 다운로드 완료 응답 + +export const decodeInfoCheckData: ProtocolDecoder = ( + message: ProtocolMessage +) => { + const fileDownloadInfos: FileDownloadInfo[] = []; + message.bodyList.forEach(fileInfo => { + const info = fileInfo.split(BodyStringDivider); + fileDownloadInfos.push({ + roomSeq: info[0], + seq: Number(info[1]), + userSeq: Number(info[2]), + userName: info[3], + downloadDate: info[4], + isDownload: info[5] === 'Y' ? true : false + }); + }); + + return decodeProtocolMessage(message, { + fileDownloadInfos + } as InfoCheckData); +}; \ No newline at end of file diff --git a/documents/type/environment.type.ts b/documents/type/environment.type.ts new file mode 100644 index 0000000..afa920f --- /dev/null +++ b/documents/type/environment.type.ts @@ -0,0 +1,260 @@ +export type UCapRuntime = 'browser' | 'electron'; + +export interface Environment { + production: boolean; + runtime?: UCapRuntime; + title: string; + + companyConfig: { + companyGroupCode: string; + fixedCompanyCode: string; + }; + + productConfig: { + productId: string; + productName: string; + authentication: { + usePrivateInformationAgree: boolean; + rememberMe: { + use: boolean; + }; + autoLogin: { + use: boolean; + }; + }; + updateCheckConfig: { + deviceType: DeviceType; + intervalHour: number; + }; + defaultSettings: Settings; + + CommonSetting: { + /** 파일업로드 제한 사이즈 (mb) */ + defaultFileAllowSize: number; + + /** 내 프로필 이미지 수정 가능 여부 */ + editableProfileImage: boolean; + + /** 소속부서(내부서) 그룹핑 사용여부 */ + useMyDeptGroup: boolean; + /** 소속부서(내부서) 고정 그룹 SEQ */ + myDeptGroupSeq: number; + /** 삭제,수정 불가 그룹 Seqs:number[] */ + fixedGroupSeqs: number[]; + + /** 타이머대화방 사용유무 */ + useTimerRoom: boolean; + /** 타이머대화방 기본 interval */ + timerRoomDefaultInterval: number; + + /** 최대 대화방 참여인원 */ + maxChatRoomUser: number; + /** 대용량대화 기준 */ + masstextLength: number; + + /** 대화방 초기 로딩 이벤트 갯수 */ + eventRequestInitCount: number; + /** 대화방 이벤트 조회 개수 */ + eventRequestDefaultCount: number; + + /** 여기까지 읽음을 보여줄 최소 이벤트 개수 (show: over) */ + readHereShowMinimumEventCount: number; + /** 여기까지 읽음을 보여줄 최대 이벤트 개수 (show: under) */ + readHereShowMaximumEventCount: number; + /** 여기까지 읽음이 보여질때 대화방 이벤트 조회 개수. */ + readHereEventRequestCount: number; + }; + }; + + customConfig?: any; + + commonApiModuleConfig: CommonApiModuleConfig; + publicApiModuleConfig: PublicApiModuleConfig; + externalApiModuleConfig: ExternalApiModuleConfig; + messageApiModuleConfig: MessageApiModuleConfig; + promptApiModuleConfig: PromptApiModuleConfig; + piModuleConfig: PiModuleConfig; + protocolModuleConfig: ProtocolModuleConfig; + nativeModuleConfig: NativeModuleConfig; +} + +export const commonApiUrls: CommonApiUrls = { + fileProfileSave: '/Common/FileProfileSave.aspx', + fileTalkDownload: '/Common/FileTalkDownload.aspx', + fileTalkSave: '/Common/FileTalkSave.aspx', + fileTalkShare: '/Common/FileTalkShare.aspx', + massTalkDownload: '/Common/MassTalkDownload.aspx', + massTalkSave: '/Common/MassTalkSave.aspx', + transMassTalkDownload: '/Common/TransMassTalkDownload.aspx', + transMassTalkSave: '/Common/TransMassTalkSave.aspx', + translationReq: '/Common/TranslationReq.aspx', + translationSave: '/Common/TranslationSave.aspx' +}; + +http://15.164.139.105/WebFile/GUC100/2020/01/29/MA_9829_111249476815_2.png.thumb.jpg + +export const publicApiUrls: PublicApiUrls = { + versionInfo2: '/Pub/verinfo2.aspx', + updateInfo: '/Pub/updinfo.aspx' +}; +export const externalApiUrls: ExternalApiUrls = { + checkUserInfoEx: '/Extern/CheckUserInfoEx.aspx', + companyList: '/Extern/CompanyList.aspx', + tokenUpdate: '/Extern/TokenUpdate.aspx', + urlInfo: '/Extern/urlinfo.aspx' +}; +export const messageApiUrls: MessageApiUrls = { + retrieveSendMessageList: '/uCapMsg/msg/retrieveSendMessageList.do', + retrieveRecvMessageList: '/uCapMsg/msg/retrieveRecvMessageList.do', + retrieveReservationMessageList: + '/uCapMsg/msg/retrieveReservationMessageList.do', + retrieveSearchMessage: '/uCapMsg/msg/retrieveSearchMessage.do', + + sendNewMessage: '/uCapMsg/msg/sendNewMessage.do', + + retrieveMessageDetail: '/uCapMsg/msg/retrieveMessageDetail.do', + readMessage: '/uCapMsg/msg/readMessage.do', + retrieveReadCheck: '/uCapMsg/msg/retrieveReadCheck.do', + cancelMessage: '/uCapMsg/msg/cancelMessage.do', + cancelReservationMessage: '/uCapMsg/msg/cancelReservationMessage.do', + retrieveResourceFile: '/uCapMsg/msg/retrieveResourceFile.do', + + deleteMessage: '/uCapMsg/msg/deleteMessage.do', + + saveMyMessage: '/uCapMsg/msg/saveMyMessage.do', + retrieveMyMessage: '/uCapMsg/msg/retrieveMyMessage.do', + deleteMyMessage: '/uCapMsg/msg/deleteMyMessage.do', + editMyMessage: '/uCapMsg/msg/editMyMessage.do', + + editReservationMessageEx: '/uCapMsg/msg/editReservationMessageEx.do', + + sendCopyMessage: '/uCapMsg/msg/sendCopyMessage.do', + + retrieveUnreadCount: '/uCapMsg/msg/retrieveUnreadCount.do', + + retrieveNoticeList: '/uCapMsg/notice/retrieveNoticeList.do' +}; +export const promptUrls: PromptUrls = { + sendCall: '/uCapPrompt/api/call/clicktocall' +}; +export const piUrls: PiUrls = { + login2: '/uCapPi/login2', + userTermsAction: '/uCapPi/user/terms.action', + passwordInitStep1: '/uCapPi/password/initStep1', + passwordChange: '/uCapPi/password/change', + policyTotal: '/uCapPi/policy/total', + policyService: '/uCapPi/policy/service', + policyPrivacy: '/uCapPi/policy/privacy', + tokenCheck: '/uCapPi/tokenCheck', + userMobileAuth: '/uCapPi/user/mobileAuth', + userUserAuth: '/uCapPi/user/userAuth', + userCall: '/uCapPi/user/call', + userMoblieCallAuth: '/uCapPi/user/moblieCallAuth', + eventSendEventMail: '/uCapPi/event/sendEventMail', + userMobileInitial1: '/uCapPi/user/mobileInitial1', + eventSendInvite: '/uCapPi/event/sendInvite', + userRoom: '/uCapPi/user/room', + scheduleRetrieveScheduleList: '/uCapPi/schedule/retrieveScheduleList', + userScreenCapture: '/uCapPi/user/screenCapture' +}; +export const protocolUrls: ProtocolUrls = { + base: '/' +}; + +export const commonApiacceptableFileExtensions: string[] = [ + // 문서1 + 'csv', + 'd01', + 'doc', + 'docx', + 'dot', + 'dotx', + 'hwp', + 'log', + 'one', + 'pdf', + 'pot', + 'potx', + 'pps', + 'ppsx', + 'ppt', + 'pptx', + 'ps', + // 문서2 + 'rtf', + 'txt', + 'vcf', + 'xls', + 'xlsx', + 'xlt', + 'xltx', + 'xlsm', + 'ods', + // CAD + 'asc', + 'dwg', + 'dws', + 'dwt', + 'dxf', + 'pgp', + 'plt', + // MAC + 'pages', + 'keynote', + // 압축 + '7z', + 'a01', + 'a02', + 'a03', + 'alz', + 'egg', + 'gz', + 'rar', + 'tar', + 'zip', + // 오디오 + 'aac', + 'aiff', + 'flac', + 'm4a', + 'mp2', + 'mp3', + 'mpega', + 'mpga', + 'ogg', + 'wma', + 'wav', + // 플래쉬 + 'fla', + 'flv', + 'swf', + // 이미지 + 'ai', + 'bmp', + 'cdr', + 'emf', + 'eps', + 'gif', + 'jpeg', + 'jpg', + 'png', + 'psd', + 'tif', + 'tiff', + 'wmf', + // 동영상 + '3gp', + 'avi', + 'm4v', + 'mkv', + 'mov', + 'mp4', + 'mpeg', + 'mpg', + 'rv', + 'ts', + 'webm', + 'wmv', + // 폴더전송용 + 'zdr' +]; diff --git a/documents/type/event.type.ts b/documents/type/event.type.ts new file mode 100644 index 0000000..2cb258b --- /dev/null +++ b/documents/type/event.type.ts @@ -0,0 +1,56 @@ +export enum EventType { + /** J: 대화참여 */ + Join = 'J', + /** C: 대화전송 */ + Character = 'C', + /** F: 파일전송 */ + File = 'F', + /** S: 스티커 */ + Sticker = 'S', + /** T: Mass Text */ + MassText = 'T', + /** E: 대화퇴장 */ + Exit = 'E', + /** P: 일정 */ + Plan = 'P', + /** V: 화상회의 */ + VideoConference = 'V', + /** L: 링크(Legacy) */ + Link = 'L', + /** R: 대화방명변경 */ + RenameRoom = 'R', + /** Y: 번역 */ + Translation = 'Y', + /** Z: 대용량 번역 */ + MassTranslation = 'Z', + /** U: 회수된 메시지 */ + RecalledMessage = 'U', + /** N: 방Timer 변경 안내 */ + GuideForRoomTimerChanged = 'N', + /** X: iOS캡쳐알림 */ + NotificationForiOSCapture = 'X', + /** B: 타이머대화방알림 */ + NotificationForTimerRoom = 'B', + /** Q: 2개월전 메시지 */ + Before2MonthsAgo = 'Q', + /** G: 강제 퇴장 */ + ForcedExit = 'G', + /** H: 챗봇대화 시작 */ + ChatbotStart = 'H', + /** K: 챗봇대화 종료 */ + ChatbotEnd = 'K', + /** I: 챗봇대화 전송 */ + ChatbotSend = 'I', + /** A: 챗봇 대용량 대화 전송 */ + ChatbotSendMass = 'A', + /** M: 동영상 스트리밍 */ + VideoStreamming = 'M', + /** O: SNS 공유 */ + SnsShare = 'O', + + // [daesang] + /** p: 코끼리 알림 */ + AllimElephant = 'p', + /** g: TMS 알림 */ + AllimTms = 'g' +} diff --git a/documents/type/file.type.ts b/documents/type/file.type.ts new file mode 100644 index 0000000..cadb44e --- /dev/null +++ b/documents/type/file.type.ts @@ -0,0 +1,26 @@ +export enum FileType { + /** I : 이미지 */ + Image = 'I', + /** V : 동영상 */ + Video = 'V', + /** F : 파일 */ + File = 'F', + /** S : 사운드파일 */ + Sound = 'S', + /** "" 빈값이면 모든 타입을 내려줌 */ + All = ' ' + } + + +roomSeq(pin):"48" +eventSeq(pin):23 +seq(pin):90 +senderSeq(pin):9828 +type(pin):"F" +name(pin):"GUI_Display_V2.pptx" +url(pin):"/AttFile/GUC100/2020/01/05/MA_9828_210505505194_2.pptx" +size(pin):"394389" +sendDate(pin):"2020-01-05 21:05:05" +receivedUserCount(pin):0 +receiverCount(pin):1 +sentMessage(pin):"{ "StatusCode":"200", "ErrorMessage":"", "RoomID":"48", "FileName":"GUI_Display_V2.pptx", "FileExt":"pptx", "FileType":"F", "ThumbURL":"", "AttSEQ":"90", "AttSize":"394389", "AttRegDate":"2020-01-05 21:05:05", "ImageWidth":"320", "ImageHeight":"320", "CompanyCode":"GUC100", "VoiceTime":"", "SynappKey":"" }"