This commit is contained in:
Park Byung Eun 2020-10-07 18:46:46 +09:00
parent 9b8d0957ee
commit c2811da4f2
66 changed files with 1708 additions and 10 deletions

View File

@ -0,0 +1,14 @@
ds
대화불러오기 이슈
쪽지 리스트 이슈
url 이슈
배포
crm-pro
전화발신 테스트
전화발신 이력 연동
전화발신 이력 조회 및 출력
로그인&전화 스토어 설계 및 구현
0929
내일 call domain 프로퍼티 변경 수정

View File

@ -0,0 +1,44 @@
ds
lf
crm-pro
전화발신 이력 조회 및 출력
로그인&전화 스토어 설계 및 구현
토큰갱신 이슈
엑세스토큰 만료시간 추가
착신 전환 조회 누락 된건지 확인
contactInfo 오브젝트에 id 값 추가 요청
ocx 전화 수신 시 수신 카운트 증가건에 대해 문의
통화 이력, 통화 예약 이력 조회 시 syncDate 와 같은 데이터 고려 할지 문의
액션
통화
통화 이력 리스트 조회
통화 이력 리스트 조회 성공
통화 이력 리스트 조회 실패
통화 예약 이력 리스트 조회
통화 예약 이력 리스트 조회 성공
통화 예약 이력 리스트 조회 실패
이펙트
통화
통화 이력 리스트 조회
성공, 실패
통화 예약 이력 리스트 조회
성공, 실패
리듀서
통화
통화 이력 정보 리스트 갱신,
통화 예약 이력 정보 리스트 갱신
스테이트
통화
통화 이력 정보 리스트
통화 예약 이력 정보 리스트
calleeNumber: "01040556699"
contactInfo: undefined
errorMessage: undefined
historySeq: 59
recvCallCount: 0
sendCallCount: 0
sendStatus: undefined
statusCode: 200

View File

@ -0,0 +1,52 @@
ds
lf
crm-pro
angular version up
crm-pro
api-call 0.0.17 build sucess
api-authentication 0.0.4 build sucess
api-contacts 0.0.1
api-sms 0.0.3
domain-call 0.0.6 build sucess
domain-authentication 0.0.2 build sucess
domain-contacts 0.0.4 build sucess
domain-sms 0.0.4 build sucess
crm-pro-angular
api-authentication 0.0.2 build sucess
api-call 0.0.2 build sucess
전화발신 이력 조회 및 출력
로그인&전화 스토어 설계 및 구현
토큰갱신 이슈
엑세스토큰 만료시간 추가
착신 전환 조회 누락 된건지 확인
contactInfo 오브젝트에 id 값 추가 요청
ocx 전화 수신 시 수신 카운트 증가건에 대해 문의
통화 이력, 통화 예약 이력 조회 시 syncDate 와 같은 데이터 고려 할지 문의
액션
통화
통화 이력 리스트 조회
통화 이력 리스트 조회 성공
통화 이력 리스트 조회 실패
통화 예약 이력 리스트 조회
통화 예약 이력 리스트 조회 성공
통화 예약 이력 리스트 조회 실패
이펙트
통화
통화 이력 리스트 조회
성공, 실패
통화 예약 이력 리스트 조회
성공, 실패
리듀서
통화
통화 이력 정보 리스트 갱신,
통화 예약 이력 정보 리스트 갱신
스테이트
통화
통화 이력 정보 리스트
통화 예약 이력 정보 리스트

View File

@ -0,0 +1,64 @@
ds
url 이슈
아이폰 설치 url : https://i.diawi.com/HKgd8J
안드 설치 url : https://i.diawi.com/Dzq8UJ
->
아이폰 설치: 아이폰 설치<-링크가 걸림
lf
crm-pro
10시 회의
전체 일정
엑셀 항목 대략 100개 중 20개 구현
현재 상태
스타일 작업중인 주메뉴 화면 9개
통화 API 데이터 연동 및 스토어 작성중
통화 내역 정보 리스트 조회
통화 내역 정보 삭제
통화 종료 처리
개발 사항
일렉트론 프로젝트 환경 구성
OCX 연동 및 테스트
전화 발신
성공
히스토리 번호 저장
실패
에러 메시지 출력
전화끊기
성공
통화 이력 등록
히스토리 내역 재조회
실패
에러 메시지 출력
통화이력 조회
성공
현재 페이지, 총 페이지 개수, 총 개수, 이력정보 리스트 갱신, 남은 개수 업데이트
실패
에러 메시지 출력
통화이력 삭제
성공
히스토리 내역 재조회
실패
에러 메시지 출력
통화예약 등록
성공
통화예약 리스트 조회
실패
에러 메시지 출력
통화예약 리스트 조회
성공
클라이언트 가장 가까운 날짜 스케쥴 등록
실패
에러 메시지 출력
전화 수신
성공
실패
state
통화 이력 리스트
통화 예약 이력 리스트
API 수정 요청
id를 이용한 이력 삭제등 response에 삭제된 id 값들을 포함

View File

@ -0,0 +1,35 @@
ds
lf
crm-pro
로그인 response 변경 데이터 수정
이력 연동 테스트 및 적용
sessionCreated 액션
통화 이력 리스트
통화 예약 리스트
문자 이력 리스트
문자 예약 이력 리스트
개인 주소록
공용 주소록
사내 주소록
개인 그룹 리스트
공용 그룹 리스트
사내 그룹 리스트
메모 이력 리스트
녹취 이력 리스트
returnJson:
access_token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwd1Jlc2V0WW4iOiJOIiwidXNlcl9uYW1lIjoiMSIsImNlbnRyZXhQdyI6ImNwIXVjQHBMRyIsInBob25lTnVtIjoiMDcwODI3NzQwMDQiLCJhdXRob3JpdGllcyI6WyJST0xFX0FETUlOIiwiUk9MRV9VU0VSIl0sImNsaWVudF9pZCI6InVjYXAiLCJleHByaXJlX2RhdGUiOjE2MDIxMzkzMjIwMTQsImF1dGhZbiI6IlkiLCJjb21wYW55SWQiOjEsInNjb3BlIjpbInJlYWQiLCJ3cml0ZSJdLCJuYW1lIjoiQ3JtUHJvVGVzdENsaWVudCIsImlkIjoxLCJjZW50cmV4SWQiOiIwNzA4Mjc3NDAwNCIsImV4cCI6MTYwMjEzOTMyMiwianRpIjoiZTljNzg4Y2ItNGRhYy00YzczLWEzZTQtOTc1M2NhNTYwYzk2In0.hdtoEuJoqv-5aHG_1fWU6ye9zN_wMvAu5VPYqt4ML7g"
authYn: "Y"
centrexId: "07082774004"
centrexPw: "cp!uc@pLG"
companyId: 1
expires_in: 86399
exprire_date: "2020-10-08T15:42:02"
id: 1
jti: "e9c788cb-4dac-4c73-a3e4-9753ca560c96"
name: "CrmProTestClient"
phoneNum: "07082774004"
pwResetYn: "N"
scope: "read write"
token_type: "bearer"

View File

@ -0,0 +1,94 @@
crm pro
전체
문자, 주소록, 설정
sidenav-left, sidenav-content 영역 full screen drawar
sms 상세조회
SendChannelOutEvent
기타 코드 MSG참조 기타 코드 참조표 필요
HCAUSE: 종료이유 코드값에 대한 정의가 없음
전화 종료에 대한 이유를 알 수 없음
전화 전달에 대한 종료 인지 사용자 종료인지 네트워크 오류에 대한 종료인지 구분할 수 없음
SendSIPCommand Method(특수확장기능)
특수기능에 대한 명시가 부족
주소록
문자담기 버튼 클릭 시 sidenav-lift 영역이 문자 발송 컴포넌트로 변경 처리
보류 프로세스 검증 필요
API
엑셀 주소록 전화 번호 리스트 저장?
통화이력 API Response 데이터
통화시간 및 수신/발신 날짜에 대한 데이터 누락
통화예약 화면은 다른 리스트 화면과 동일? (손차장 & 박부장 확인)
설정 페이지 확인(박부장 & 손차장)
통화예약조회 데이터 확인 (조차장)
response data 다름
문자이력 조회 API(조차장)
list
id
조회시 데이터 구조가 동일한지 확인
문자예약조회 API 확인 부탁
request 파라미터 resvNum 예약번호 없으면 예약된 문자 전체를 내려주는지 확인
녹음 시작/종료 화면 변화에 대한 확인
주소록 공용 그룹등록
그룹 sort 문의
날짜 sort이면 그룹 조회 시 날짜 데이터 추가
주소록 등록시
그룹 필수값인지 확인
기존 AS-IS는 필수값이 아님
메모 API
callerNm이 고객이름인지 확인
고객 이름이면 필수값으로 되어있으면 안됨
고객 이름이 아니면 현재 사용자에 이름인지 확인
07082774004
2020-0922 화요일
API
통화이력 (화면 출력 시 필요) 데이터 추가 필요
통화시간
수신/발신 날짜
메모저장
callerNm이 필수값인지 확인 부탁드립니다.
주소록에 저장되지 않은 사용자도 메모를 등록할 수 있습니다.
개인/공용 주소록 등록 시 그룹값이 필수 값인지 확인 부탁드립니다.
기존 AS-IS는 그룹이 필수값이 아닙니다.
기획&디자인
통화/문자 예약화면 리스트
리스트 화면에서 예약 필터 클릭 시 기존 리스트 출력 데이터가 동일한지 확인 부탁드립니다.
사용자 비밀번호 초기화는 어디서 사용할 수 있는지 확인 부탁드립니다.
제플린에 없는 화면
설정 화면
녹취 시작/종료에 대한 화면
인증번호 발급 및 확인 화면
사용자 비밀번호 변경 화면
강용관 책임
기존 내선 전화 추가에 대한 문의
보류 등 OCX API 테스트를 위해 필요
주소록 그룹 조회 시 정렬 부분 확인
ㄱㄴㄷㄹ순인지, 등록된 날짜 순인지 확인 부탁드립니다.
2020-0928
ds
lf
crm-pro
구글 주소록 redirect_uri 조건 분기 가능한지 정보수집
조차장 문의 (0929-10시41분)
토큰갱신 이슈
토큰 얻은 후 클라이언트 요청 후 토큰 만료시간을 갱신하는지 또는
처음 토큰 획득 후 특정 만료시간까지만 유효하게 구현했는지 문의 후
클라이언트 로그인 로직 수정 및 변경
(답변) 특정 시간동안 유효합니다. 현재 12시간으로 되어 있습니다.
착신 전환 조회 누락 된건지 확인
contactInfo 오브젝트에 id 값 추가 요청
ocx 전화 수신 시 수신 카운트 증가건에 대해 문의
OCX 이벤트 받는 API를 현재 만들어 두었는데요 아직 문서가 정리가 안되어서요
추석 이후에 정리해서 전달 드리겠습니다.

View File

@ -0,0 +1,10 @@
ds
새로운 대화 입력 후
대화내용이 맨밑으로 안되고 상단으로 올라가는 이슈
crm pro
서버연동
전화 화면 구성
통화 설정 관련 문의
발신그룹 설정이란 부분은 기획서 화면 정의서에 정의 되어 있지 않은데 기능 목록에는 추가되어 있음

View File

@ -1,10 +0,0 @@
crm pro
SendChannelOutEvent
기타 코드 MSG참조 기타 코드 참조표 필요
HCAUSE: 종료이유 코드값에 대한 정의가 없음
전화 종료에 대한 이유를 알 수 없음
전화 전달에 대한 종료 인지 사용자 종료인지 네트워크 오류에 대한 종료인지 구분할 수 없음
SendSIPCommand Method(특수확장기능)
특수기능에 대한 명시가 부족

View File

@ -0,0 +1,20 @@
ds
웹소켓 접속 프로토콜 메세지 전송 하지만 소켓 연결이 어떤 이유에서 지연이 됨
새로운 웹 소켓 생성이 되면서 기존 inputSubsction 와 충돌이 되고 무한루프에 빠짐
crm-pro
퀵 버튼 컴포넌트 생성
sms 화면 컴포넌트 구성 및 생성
{
"StatusCode":"200",
"ErrorMessage":"",
"data":{"access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRoWW4iOiJZIiwicHdSZXNldFluIjoiTiIsInVzZXJfbmFtZSI6IjEiLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXSwibmFtZSI6IkNybVByb1Rlc3RDbGllbnQiLCJwaG9uZU51bSI6IjA3MDgyNzc0MDA0IiwiaWQiOjEsImV4cCI6MTYwMDE3MTcwMiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9BRE1JTiIsIlJPTEVfVVNFUiJdLCJqdGkiOiJlZGY5OTI4YS1jNDRmLTQ0MDktODE0OC0wMDdiN2FlNmMxZjYiLCJjbGllbnRfaWQiOiJ1Y2FwIn0.5sxQ2LSj4QTPOwdtL9RwfSURca39rhhJIMx7SW0RXWQ","token_type":"bearer","expires_in":43199,"scope":"read write","id":1,"phoneNum":"07082774004","name":"CrmProTestClient","authYn":"Y","pwResetYn":"N","jti":"edf9928a-c44f-4409-8148-007b7ae6c1f6"}
}
[message]="event"
[userInfo]="userInfo"
[loginSession]="loginSession"
[loginInfo]="loginInfo"
[isMe]="loginInfo?.id === event.senderSeq"
[dateChanged]="getDateSplitter(event)"

View File

@ -0,0 +1,53 @@
ds
auto login
crm-pro
주소록 메인 화면 컴포넌트 구성
질문
주소록
주소록 내역 하단에 있는 그룹
셀렉트 박스에 있는 그룹 선택후 버튼 클릭 후
등록/수정시 공용에 대한 그룹 생성은 모든 사용자가 가능?
ok
공용 주소록 서버로 저장?
클라에서 구글로 바로 동기화?
else
특정 사용자만 가능?
로그인 시 공용 주소록 그룹 생성 권한 및 저장 권한에 대한 값 추가
단축번호는 전화번호 개수만큼 지정 가능
우편번호는 따로 표현 X?
sidenav 그룹보기는 그룹이동 버튼과 같은 기능?
즐겨찾기 해제 및 블랙리스트 해제 시 리스트 체크 박스 유지
해제 클릭 하는 순간 서버 반영
연락처 불러오기
엑셀 템플릿 데이터 정의
연락처 내보내기
분류선택 공용은 모든 사용자 가능?
tiles: Tile[] = [
{ text: '즐겨찾기미등록', cols: 1, rows: 1, color: 'lightblue' },
{ text: '블랙리스트등록', cols: 1, rows: 1, color: 'lightgreen' },
{ text: '이름', cols: 1, rows: 1, color: 'lightblue' },
{ text: '닉네임', cols: 1, rows: 1, color: 'lightgreen' },
{ text: '생년월일', cols: 1, rows: 1, color: 'lightpink' },
{ text: '성별', cols: 1, rows: 1, color: 'red' },
{ text: '고객등급', cols: 1, rows: 1, color: 'lightblue' },
{ text: '직장', cols: 1, rows: 1, color: 'lightgreen' },
{ text: '부서', cols: 1, rows: 1, color: 'lightpink' },
{ text: '직책', cols: 1, rows: 1, color: 'red' },
{ text: '전화', cols: 1, rows: 1, color: 'lightblue' },
{ text: '단축번호', cols: 1, rows: 1, color: 'lightgreen' },
{ text: '이메일', cols: 2, rows: 1, color: 'lightpink' },
{ text: '주소', cols: 2, rows: 1, color: 'lightpink' },
{ text: '분류', cols: 1, rows: 1, color: 'lightpink' },
{ text: '그룹', cols: 1, rows: 1, color: 'lightpink' },
{ text: '웹사이트', cols: 2, rows: 1, color: 'lightpink' },
{ text: '기타', cols: 2, rows: 1, color: 'lightpink' }
];

View File

@ -0,0 +1,85 @@
ds
조직도 쪽지 보내기
send-dept -> deptSeq 프로퍼티 추가
부서 오른쪽 마우스 이벤트 추가
부서 코드 추출
API 호출
crm-pro
주소록
index 컴포넌트
expansion 컴포넌트
private String deviceType;
private String tokenKey;
private Long userSeq;
private Long msgSeq;
private String userName;
private String category; // G : 일반, N : 공지
private String title;
private String titleYn;
private String listOrder;
private String type;
private String msgType; // U : 임직원, G : 공용그룹 쪽지, D : 부서 쪽지
private String receiveName;
// @JsonSerialize(using=DateTimeSerializer.class)
// @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss", timezone="Asia/Seoul")
// @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date reservationTime;
private List< TextContextVo> textContentVo;
private List< RecvUserVo> recvUserListVo;
public void setRecvUserListVo(List< RecvUserVo> recvUserListVo) {
this.recvUserListVo = recvUserListVo;
}
private List< MultipartFile> files;
private String smsYn;
private Long deptSeq;
projects\ucap-webmessenger-ui-organization\src\public-api.ts ->
projects\ucap-webmessenger-ui-organization\src\lib\components\tree.component.ts ->
projects\ucap-webmessenger-app\src\app\layouts\messenger\dialogs\message\message-write.dialog.component.ts ->
projects\ucap-webmessenger-app\src\app\layouts\messenger\dialogs\chat\create-chat.dialog.component.ts ->
projects\ucap-webmessenger-app\src\app\store\index.ts ->
projects\ucap-webmessenger-app\src\app\store\messenger\index.ts ->
projects\ucap-webmessenger-app\src\app\store\messenger\query\index.ts ->
projects\ucap-webmessenger-app\src\app\store\messenger\query\effects.ts ->
projects\ucap-webmessenger-ui-organization\src\public-api.ts
http://10.81.13.221:6990/users/sign_in
console.log(node);
this.dialogService.open<
MessageWriteDialogComponent,
MessageWriteDialogData,
MessageWriteDialogResult
>(MessageWriteDialogComponent, {
maxWidth: '90vw',
maxHeight: '94vh',
disableClose: true,
hasBackdrop: false,
data: {
loginRes: this.loginRes,
environmentsInfo: this.environmentsInfo,
receiverList: null,
deptInfo: node.deptInfo
}
});

View File

@ -0,0 +1,5 @@
ds
조직도 쪽지 발송
crm-pro
api 문서 확인

View File

@ -0,0 +1,240 @@
{responseCode: "00", responseMsg: "ok",…}
msgInfo: {msgId: 1256, category: "G", title: "test", titleYn: "Y", type: "S", sendUserSeq: 10651,…}
attachmentYn: "N"
category: "G"
content: [{resSeq: 1816, resType: "T", resUrl: "", resContent: "test", resSize: 4, resResolution: null,…}]
fileAllow: "GUC100"
msgId: 1256
msgType: "U"
receiveName: ""
regDate: "2020-09-18 11:11:13"
reservationTime: null
sendUserName: "테스트4"
sendUserSeq: 10651
sendYn: "Y"
smsYn: "N"
title: "test"
titleYn: "Y"
type: "S"
recvList: [{userSeq: 4892, userName: "노희석", cancelYn: "N", readDate: null, readYn: "N"},…]
0: {userSeq: 4892, userName: "노희석", cancelYn: "N", readDate: null, readYn: "N"}
1: {userSeq: 4951, userName: "박남신", cancelYn: "N", readDate: null, readYn: "N"}
2: {userSeq: 6377, userName: "양호중", cancelYn: "N", readDate: null, readYn: "N"}
3: {userSeq: 6891, userName: "정지용", cancelYn: "N", readDate: null, readYn: "N"}
4: {userSeq: 8966, userName: "강혜숙", cancelYn: "N", readDate: null, readYn: "N"}
5: {userSeq: 9283, userName: "조정훈", cancelYn: "N", readDate: null, readYn: "N"}
6: {userSeq: 10363, userName: "IC센터", cancelYn: "N", readDate: null, readYn: "N"}
7: {userSeq: 10648, userName: "테스트1", cancelYn: "N", readDate: null, readYn: "N"}
8: {userSeq: 10649, userName: "테스트2", cancelYn: "N", readDate: null, readYn: "N"}
9: {userSeq: 10650, userName: "테스트3", cancelYn: "N", readDate: null, readYn: "N"}
for (const item of groupList) {
const nodeType = item.division;
const node: GroupNode = {
nodeType,
children: []
};
item.groupList.sort((a, b) =>
a.registDate < b.registDate ? 1 : a.registDate > b.registDate ? -1 : 0
);
item.groupList.forEach((groupInfo) => {
node.children.push({
nodeType,
groupInfo
});
});
if (!!this.nodeMap.get(item.division)) {
this.nodeMap.get(item.division)[0].children = node.children;
} else {
this.nodeMap.set(item.division, [node]);
}
}
// deleted filtering.
this.nodeMap = new Map(
[...this.nodeMap.entries()].filter(
(map) => list.findIndex((item) => item.division === map[0]) > -1
)
);
// sorting.
this.nodeMap = new Map(
[...this.nodeMap.entries()].sort((a, b) =>
b[0] > a[0] ? 1 : b[0] < a[0] ? -1 : 0
)
);
{
"statusCode": 200,
"errorMessage": "",
"data": {
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/call/history?callDvCd=in&page=0&size=10&sort=createdDt,desc"
}
],
"content": [
{
"callingNum": "01071116902",
"rcvNum": "07082774004",
"callDvCd": "in",
"callTypCd": "DOD",
"callStTime": "2020-09-24T18:50:36+0900",
"callEdTime": "2020-09-24T18:52:08+0900",
"totalCallTime": "85",
"callStsCd": "00",
"callKindCd": 0,
"contactInfo": {
"name": "홍길동_1",
"position": "차장",
"bookmark": 0,
"blacklist": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/6"
}
]
},
"id": 39,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/call/history/39"
}
]
},
{
"callingNum": "01071116902",
"rcvNum": "07082774004",
"callDvCd": "in",
"callTypCd": "DOD",
"callStTime": "2020-09-24T18:37:40+0900",
"callEdTime": "2020-09-24T18:46:50+0900",
"totalCallTime": "0",
"callStsCd": "02",
"callKindCd": 0,
"contactInfo": {
"name": "홍길동_1",
"position": "차장",
"bookmark": 0,
"blacklist": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/6"
}
]
},
"id": 38,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/call/history/38"
}
]
},
{
"callingNum": "01071116902",
"rcvNum": "07082774004",
"callDvCd": "in",
"callTypCd": "DOD",
"callStTime": "2020-09-24T18:33:21+0900",
"callEdTime": "2020-09-24T18:34:32+0900",
"totalCallTime": "47",
"callStsCd": "00",
"callKindCd": 0,
"contactInfo": {
"name": "홍길동_1",
"position": "차장",
"bookmark": 0,
"blacklist": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/6"
}
]
},
"id": 36,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/call/history/36"
}
]
},
{
"callingNum": "01071116902",
"rcvNum": "07082774004",
"callDvCd": "in",
"callTypCd": "DOD",
"callStTime": "2020-09-24T18:21:28+0900",
"callEdTime": "2020-09-24T18:22:25+0900",
"totalCallTime": "36",
"callStsCd": "00",
"callKindCd": 0,
"contactInfo": {
"name": "홍길동_1",
"position": "차장",
"bookmark": 0,
"blacklist": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/6"
}
]
},
"id": 35,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/call/history/35"
}
]
},
{
"callingNum": "01071116902",
"rcvNum": "07082774004",
"callDvCd": "in",
"callTypCd": "DOD",
"callStTime": "2020-09-24T18:18:23+0900",
"callEdTime": "2020-09-24T18:19:04+0900",
"totalCallTime": "0",
"callStsCd": "02",
"callKindCd": 0,
"contactInfo": {
"name": "홍길동_1",
"position": "차장",
"bookmark": 0,
"blacklist": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/6"
}
]
},
"id": 34,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/call/history/34"
}
]
}
],
"page": {
"size": 10,
"totalElements": 5,
"totalPages": 1,
"number": 0
}
}
}

View File

@ -0,0 +1,10 @@
ds
자동 로그인 이슈 확인
crm
메모
복사의 수단(오른쪽 마우스 클릭등) 드래그후 ctl+c
아이디 = 내선 번호
왼쪽 입력창은 수정과 현재 컨텍스트 사용자에 대한 메모수정 및 저장
새메모는 새로운 전화번호 및 사용자가 새 고객 번호에 대한 저장

View File

@ -0,0 +1,44 @@
ds
결과 확인
crm-pro
히스토리 컴포넌트 구성
history-section
history-header (전체, 송신, 수신, 예약, 주소록, 기간검색)
tempData = [
{date1: [
]},
date1: [
{},
],
date2: [
{},
],
date3: [
{},
],
date4: [
{},
],
];
for tempData
history-list dateData
date
list-item
history-paging
전체, 발신, 수신 버튼 등 변경
컨텐츠 박스 변경
날짜별 구분
페이징
개인 주소록 등록
사용자 정보 입력
그룹 정보 없을 경우
그룹 정보 없음
기본 그룹
그룹 정보 있을 경우
그룹 목록 출력

View File

@ -0,0 +1,24 @@
ds
자동 로그인 이상 문제 해결
crm-pro
공통 내역 리스트 컴포넌트 작성
페이징 컴포넌트 -> ngx-pagination,
validation 양식
언어, 이름,
유형
숫자
범위 예: 0 < x < 100, 소수점 제외
문자열
공백, 특수문자, 범위 예 2<= x <= 20글자,
날짜
포멧형식 (YYYY-MM-dd HH:mm:ss)
page
size: 페이지당 조회건수
page: 현재 페이지
totalElements: 총 개수?
totalPage: ?
number: ?

View File

@ -0,0 +1,28 @@
ds
대화방 안에서 "이전 대화 보기" 클릭한 뒤 아이콘 보이지 않는 현상
재현 방법은 대화방내에서 이전대화 보기 클릭하고 다시 최상단으로 올라가보면 아이콘이 보이지 않음
아래 URL 2개 보낼경우 a태그 노출되며 URL이 4개로 보내지는 현상 발생.
http://www.naver.com
http://www.daum.net
crm-pro
call history
constractInfo = id 누락
export interface HistoryInfo {
/** 수/발신 전화번호(s) */
destNum?: string;
/** 수/발신 날짜 smsDt */
smsDate?: string;
/** 문자 내용 smsMsg */
content?: string;
/** 문자 구분 smsDvCd */
divCode?: SmsDivCode;
/** 주소록 정보 contactInfo */
userInfo: UserInfo;
}
LOGINRESULT { "req_type" : "Login", "LoginId" : "01011112222", "Password" : "123456", "SeqNum" : "1" } { "RespType" : "LoginResult", "Result" : "" }

View File

@ -0,0 +1,59 @@
ds
쪽지
쪽지 상세내역에서 팀으로 발송된 건에서는 더보기 버튼 중 읽음확인만 비활성화하거나 메뉴삭제
이전대화보기 이슈
대화방 이전대화보기 클릭하고 다시 최상단으로 올라가보면 아이콘이 보이지 않음
URL 이슈 (아래와 같은 URL 주소 대화 보낼 시 a태그와 url이 4개로 출력됨)
http://www.naver.com
http://www.daum.net
crm-pro
전화 발신
request
response
전화발신 구현
call routing
다이얼 패드 클릭하는 효과
서버 API 호출
response
히스토리 ID
전화 종료 이벤트
히스토리 ID
클라이언트
parameterMap = {
seq: 'id',
destNumber: 'dstNum',
}
req = {
id: 1,
destNumber: '010-3202-1010'
}
for let obj in parameterMap
!!key
Call = 'CALL',
Reservation = 'RESERVATION',
Sms = 'SMS',
Memo = 'MEMO',
Contacts = 'CONTACTS'
routing parameter 가 있을경우
현재 전화번호 길이를 측정
이벤트 시작
키보드 및 버튼 클릭에 대한 이벤트 무시
타이머 시작
timer 생성
현재 전화번호 길이 만큼 1초 후 onClickNumber 호출
카운트 증가
카운트가 문자열 길이보다 크거나 같다면
타이머 초기화
현재 파라미터 전화번호 널 초기화
부모에게 이벤트 끝남을 알림

View File

@ -0,0 +1,77 @@
crm pro
전체
문자, 주소록, 설정
sidenav-left, sidenav-content 영역 full screen drawar
sms 상세조회
SendChannelOutEvent
기타 코드 MSG참조 기타 코드 참조표 필요
HCAUSE: 종료이유 코드값에 대한 정의가 없음
전화 종료에 대한 이유를 알 수 없음
전화 전달에 대한 종료 인지 사용자 종료인지 네트워크 오류에 대한 종료인지 구분할 수 없음
SendSIPCommand Method(특수확장기능)
특수기능에 대한 명시가 부족
주소록
문자담기 버튼 클릭 시 sidenav-lift 영역이 문자 발송 컴포넌트로 변경 처리
보류 프로세스 검증 필요
API
엑셀 주소록 전화 번호 리스트 저장?
통화이력 API Response 데이터
통화시간 및 수신/발신 날짜에 대한 데이터 누락
통화예약 화면은 다른 리스트 화면과 동일? (손차장 & 박부장 확인)
설정 페이지 확인(박부장 & 손차장)
통화예약조회 데이터 확인 (조차장)
response data 다름
문자이력 조회 API(조차장)
list
id
조회시 데이터 구조가 동일한지 확인
문자예약조회 API 확인 부탁
request 파라미터 resvNum 예약번호 없으면 예약된 문자 전체를 내려주는지 확인
녹음 시작/종료 화면 변화에 대한 확인
주소록 공용 그룹등록
그룹 sort 문의
날짜 sort이면 그룹 조회 시 날짜 데이터 추가
주소록 등록시
그룹 필수값인지 확인
기존 AS-IS는 필수값이 아님
메모 API
callerNm이 고객이름인지 확인
고객 이름이면 필수값으로 되어있으면 안됨
고객 이름이 아니면 현재 사용자에 이름인지 확인
07082774004
2020-0922 화요일
API
통화이력 (화면 출력 시 필요) 데이터 추가 필요
통화시간
수신/발신 날짜
메모저장
callerNm이 필수값인지 확인 부탁드립니다.
주소록에 저장되지 않은 사용자도 메모를 등록할 수 있습니다.
개인/공용 주소록 등록 시 그룹값이 필수 값인지 확인 부탁드립니다.
기존 AS-IS는 그룹이 필수값이 아닙니다.
기획&디자인
통화/문자 예약화면 리스트
리스트 화면에서 예약 필터 클릭 시 기존 리스트 출력 데이터가 동일한지 확인 부탁드립니다.
사용자 비밀번호 초기화는 어디서 사용할 수 있는지 확인 부탁드립니다.
제플린에 없는 화면
설정 화면
녹취 시작/종료에 대한 화면
인증번호 발급 및 확인 화면
사용자 비밀번호 변경 화면
강용관 책임
기존 내선 전화 추가에 대한 문의
보류 등 OCX API 테스트를 위해 필요
주소록 그룹 조회 시 정렬 부분 확인
ㄱㄴㄷㄹ순인지, 등록된 날짜 순인지 확인 부탁드립니다.

View File

@ -0,0 +1,750 @@
{
"statusCode": 200,
"errorMessage": "",
"data": {
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/"
}
],
"content": [
{
"id": 2,
"name": "테스트",
"nickname": "테스트닉네임",
"contactTypCd": "P",
"memo": "테스트 등록",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"contactGrp": {
"id": 2,
"contactGrpNm": "기본그룹",
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"contactTypCd": "P",
"defaultYn": "Y",
"contacts": [
{
"id": 2,
"name": "테스트",
"nickname": "테스트닉네임",
"contactTypCd": "P",
"memo": "테스트 등록",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/2"
}
]
}
],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/2"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/2"
}
]
},
{
"id": 3,
"name": "테스트1",
"nickname": "테스트닉네임1",
"contactTypCd": "P",
"memo": "테스트 등록",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"contactGrp": {
"id": 3,
"contactGrpNm": "테스트 그룹3",
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"contactTypCd": "P",
"defaultYn": "N",
"contacts": [
{
"id": 11,
"name": "테스트6",
"nickname": "테스트닉네임33",
"contactTypCd": "P",
"memo": "테스트 등록11123123",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [
{
"id": 14,
"phoneNum": "01044441554",
"label": "Home",
"mainYn": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/phone/14"
}
]
}
],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/11"
}
]
},
{
"id": 10,
"name": "테스트6",
"nickname": "테스트닉네임33",
"contactTypCd": "P",
"memo": "테스트 등록11123123",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [
{
"id": 10,
"phoneNum": "01044441554",
"label": "Home",
"mainYn": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/phone/10"
}
]
},
{
"id": 11,
"phoneNum": "01012345678",
"label": "Work",
"mainYn": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/phone/11"
}
]
},
{
"id": 12,
"phoneNum": "01012345679",
"label": "Work",
"mainYn": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/phone/12"
}
]
},
{
"id": 13,
"phoneNum": "01012345670",
"label": "Home",
"mainYn": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/phone/13"
}
]
}
],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/10"
}
]
},
{
"id": 9,
"name": "테스트5",
"nickname": "테스트닉네임33",
"contactTypCd": "P",
"memo": "테스트 등록11123123",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [
{
"id": 9,
"phoneNum": "01044445554",
"label": "Home",
"mainYn": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/phone/9"
}
]
}
],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/9"
}
]
},
{
"id": 8,
"name": "테스트5",
"nickname": "테스트닉네임33",
"contactTypCd": "P",
"memo": "테스트 등록11123123",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/8"
}
]
},
{
"id": 7,
"name": "테스트5",
"nickname": "테스트닉네임33",
"contactTypCd": "P",
"memo": "테스트 등록11123123",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/7"
}
]
},
{
"id": 5,
"name": "테스트2",
"nickname": "테스트닉네임2",
"contactTypCd": "P",
"memo": "테스트 등록11",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/5"
}
]
},
{
"id": 4,
"name": "테스트2",
"nickname": "테스트닉네임2",
"contactTypCd": "P",
"memo": "테스트 등록11",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/4"
}
]
},
{
"id": 3,
"name": "테스트1",
"nickname": "테스트닉네임1",
"contactTypCd": "P",
"memo": "테스트 등록",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/3"
}
]
}
],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/3"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/3"
}
]
},
{
"id": 4,
"name": "테스트2",
"nickname": "테스트닉네임2",
"contactTypCd": "P",
"memo": "테스트 등록11",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"contactGrp": {
"id": 3,
"contactGrpNm": "테스트 그룹3",
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"contactTypCd": "P",
"defaultYn": "N",
"contacts": [
{
"id": 11,
"name": "테스트6",
"nickname": "테스트닉네임33",
"contactTypCd": "P",
"memo": "테스트 등록11123123",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [
{
"id": 14,
"phoneNum": "01044441554",
"label": "Home",
"mainYn": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/phone/14"
}
]
}
],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/11"
}
]
},
{
"id": 10,
"name": "테스트6",
"nickname": "테스트닉네임33",
"contactTypCd": "P",
"memo": "테스트 등록11123123",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [
{
"id": 10,
"phoneNum": "01044441554",
"label": "Home",
"mainYn": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/phone/10"
}
]
},
{
"id": 11,
"phoneNum": "01012345678",
"label": "Work",
"mainYn": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/phone/11"
}
]
},
{
"id": 12,
"phoneNum": "01012345679",
"label": "Work",
"mainYn": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/phone/12"
}
]
},
{
"id": 13,
"phoneNum": "01012345670",
"label": "Home",
"mainYn": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/phone/13"
}
]
}
],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/10"
}
]
},
{
"id": 9,
"name": "테스트5",
"nickname": "테스트닉네임33",
"contactTypCd": "P",
"memo": "테스트 등록11123123",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [
{
"id": 9,
"phoneNum": "01044445554",
"label": "Home",
"mainYn": 0,
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/phone/9"
}
]
}
],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/9"
}
]
},
{
"id": 8,
"name": "테스트5",
"nickname": "테스트닉네임33",
"contactTypCd": "P",
"memo": "테스트 등록11123123",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/8"
}
]
},
{
"id": 7,
"name": "테스트5",
"nickname": "테스트닉네임33",
"contactTypCd": "P",
"memo": "테스트 등록11123123",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/7"
}
]
},
{
"id": 5,
"name": "테스트2",
"nickname": "테스트닉네임2",
"contactTypCd": "P",
"memo": "테스트 등록11",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/company/1"
}
]
},
"addressList": [],
"emailList": [],
"phoneList": [],
"websiteList": [],
"links": [
{
"rel": "self",
"href": "http://127.0.0.1:9095/api/v1.0/contact/grp/5"
}
]
},
{
"id": 4,
"name": "테스트2",
"nickname": "테스트닉네임2",
"contactTypCd": "P",
"memo": "테스트 등록11",
"bookmark": 0,
"blacklist": 0,
"company": {
"id": 1,
"companyName": "테스트 회사",
"links": [
{

Binary file not shown.

Binary file not shown.