프로젝트 인터페이스를 하는데 황당하게도 문의 결과 아직 인터페이스 대상 객체가 존재하지 않았다.
정확히는 A, B 인터페이스를 양방향으로 생성하고 있는데
A의 근거가 되는 a객체에서 A 객체를 생성하고 그걸 인터페이스를 보내는데
B의 경우에는 b객체가 생성되지도 않은 상태인데
SAP에만 존재하는 B 객체의 레코드를 가져오는 인터페이스를 진행한 다음
b가 존재하지 않지만 b에서 B를 생성했다는 가정하게
B의 레코드를 SAP으로 전송하는 인터페이스를 상상코딩해야헀다.
실제로 요구하는 필드들을 b에서 가져올 수 있는지도 의문이지만
아직 설계되지도 않은 기능들까지 인터페이스를 해야 한다는게 상당히 당황스러웠다.
일단 B 인터페이스를 받아오는 부분은 필수적으로 진행되야 하기 때문에 해당 부분의 관계 연결을 정리하고 있었는데
갑작스럽게 인터페이스팀에서 진행하는 프로젝트 관련 회의에 초대받아버렸다.
잠깐 도와달라는 작업만 하고 한번도 회의에 참여한 적이 없었는데
해당 부분 관련해서 잠깐 듣기 위해서 90분 가까이 회의에 참여한건 시간이 많이 아까웠는데
그 사이에 메일 및 문의사항만 3개나 들어와서 더 마음이 복잡해졌다.
결국 메인 프로젝트 관련은 포기해야 했고
회의 중 들어온 문의사항 처리를 한 다음 회의 중에 언급된 내용들을 처리하기 시작했다.
key값 변경, 인터페이스 동작 재확인, 테스트클래스 재확인 등을 진행한 다음
새로 토큰을 발급받아서 정의서를 작성했는데 인터페이스를 하나의 User로 진행할 경우 로그인 Limit에 걸린다던지
로그를 확인할 때 작성자가 모두 동일해서 확인하기 어려운 문제 등 어려가지 애로사항이 있었는데
팀장님이 App Manager에서 만들어주신 client_credentials를 통해서 간단하게 해결할 수 있었다.
Salesforce 라이센스가 아니라 Org마다 5개씩 주어지는 Intergration 라이센스로 가능했기 때문에
고객사에서 추가 라이센스를 구매할 필요도 없는 효율적인 인터페이스 방법이었는데
스탠다드 개체에 대한 권한이 부여되지 않아 사용되지 않았었는데
Class 내부에서 Without Sharing을 사용할 경우 스탠다드 클래스도 변경이 가능한 것이 확인되었다.
다시 담당하는 메인프로젝트로 돌아와서 필드추가를 위한 문의사항을 정리하고 있었는데
또 유지보수 관련 문의사항이 들어왔다.
Account Engagement에서 자동으로 값이 들어왔을 때 Flow Trigger를 통해서 해당 시간을 기입하는 문제였는데
분명 Flow는 작동했고 중간 필드도 변경되었는데 시간 필드만 기입되지 않은 경우가 종종 발견되었다.
가능한 문제점이라면 AE의 불안정성이라던지
아니면 Flow 내부에서 ({!$Flow.CurrentDateTime}를 사용할 때 가끔 null값이 넘어간다는 의심이 생겼고
테스트를 위해 해당 Flow로 Update가 되었다는 것을 확인하기 위한 체크박스 필드와
해당 Flow 내부에서 시간이 정상 기입되었는지 확인할 DateTime 필드를 추가한 다음
Flow 내부에서 두 필드도 같이 업데이트하게 수정 후 추가 확인이 필요하다는 메일로 답변했다.
해당 내용을 처리한 다음 인터페이스 부분을 또 보려고 했는데
팀장님이 퇴근하자고 하시기도 하고 다시 시작하면 또 한두시간은 집중해서 해야 했기 때문에
그냥 한 단계가 마무리된 김에 퇴근하기로 했다.
(1).백준 29684번 Which Team Should Receive the Sponsor Prize?는
각 테스트케이스마다 2023초에 가장 가깝게 문제를 해결한 우승팀을 출력해야 하는 문제였다.
for문으로 각각의 테스트케이스를 분리해서 순회한 다음
승리 팀을 기록할 win, 현재 최저 차이를 담을 min을 생성하고
비교를 통해 최종 우승자를 result에 담아 한번에 출력하는 방식으로 해결했다.
const input = `2
123 4567
3
2024 2020 2023
5
2020 2020 2021 2024 2026
3
1599 2222 1599
8
2 2 3 3 4 4 5 1
4
7777 6666 8888 9999
0`.split('\n')
const result = []
for(let i = 1 ; i < input.length ; i+=2){
const arr = input[i].split(' ').map(Number)
let win = 0
let min = 10000
for(let j = 0 ; j < arr.length ; j++){
const abs = Math.abs(2023 - arr[j])
if(min > abs){
min = abs
win = j+1
}
}
result.push(win)
}
console.log(result.join('\n'))
'회고' 카테고리의 다른 글
[개발일지] - 317(주말) (0) | 2024.05.12 |
---|---|
[개발일지] - 316(주말) (0) | 2024.05.11 |
[개발일지] - 314 (0) | 2024.05.09 |
[개발일지] - 313 (0) | 2024.05.08 |
[개발일지] - 312 (1) | 2024.05.07 |