오자마자 발송해달라는 요청을 받았던 내용을 메일로 발송하고

프로젝트 관련 필요 필드를 정리하는데 뭔가 이상한게 발견되어버렸다.

 

분명 인터페이스는 양방향으로 진행해달라고 하는데

인터페이스를 한방향으로 진행할 때와 다르게 SAP에서 정보를 받지 못한 상태로

SAP로 인터페이스를 발송하게되면 SAP와 SFDC의 매칭이 되지 않기 떄문에 키가 필요했고

해당 내용을 위해 필요한 key를 order를 확인해 찾은 다음 SAP쪽에 해당 내용을 공유했다.

 

점심시간에 병원에 예약을 한 상태에서 자꾸 전화가 왔는데

Order와 유사한 관게에 있기 때문에 테이블을 거기서 긁어왔는데

그 필드에 값이 없어야 한다는 사실에 대해 key를 하는 이유를 설명한 다음 넘어갈 수 있었고

그 이후에 인터페이스로 값을 다시 쏴준다고 했지만 받지는 못했다.

 

flow 관련 설정 메일 이후 답장이 왔는데

설정된 내용 확인과 Active 방식에 대한 문의로 빠르게 답변해줄 수 있었고

그 다음에 다른 인터페이스에서 문제가 발생했다.

 

해달라는대로 다 해줬는데 정의서를 읽지 않고 오류라고 하면서 엔드포인트 변경을 요청했고

엔드포인트 변경 후 테스트클래스까지 수정한 다음 오류 내용은 토큰 관련 문제였기 때문에

정의서에 작성해준 토큰에 권한이 있고 멋대로 아무거나 쓰면 권한없음이 뜰 수밖에 없다고 했지만

해당 내용을 이해하지 못하고 본인이 토큰생성한 방식을 보내며 맞다고 주장하길래

그냥 그 계정에 권한을 부여한 다음 해당 방식을 설명하고 넘어가려고 했다.

 

본인들이 이전 파트너사와 합의된 내용이랑 무슨 관계가 있는지는 모르겠지만

null값을 공백값으로 전부 바꾸길 요청했는데

합의도 하지 않은 부분이고 둘 중 하나가 수정해야 한다면 그쪽에서 하는게 맞는 것 같은데

기존에 설정된 Type들을 전부 String으로 강제 변경해가며 null 체크 후 String으로 변경했다.

 

null 체크 후 String 변경은 아래처럼 처리해서 쉽게 할 수 있었는데

(ObjectName__c.FieldName__c != null ? ObjectName__c.FieldName__c : ";)

ObjectName__c.xObjectId 형태의 경우 Id로 값을 가져오기 때문에 ‘’로 들어가지가 않았다.

 

사실 Id 값을 가져오기 때문에 type 충돌이었을 가능성이 크긴 했지만

어쨌거나 아래와 같은 방식으로 String 타입 처리를 해주니 그제서야 배포가 가능했다.

ObjectName__c.xObjectId != null ? (String)ObjectName__c.xObjectId : '';

 

Key를 통해 양방향 인터페이스를 하기 위해서 어떻게 trigger 처리가 되는지 확인했는데

flow, trigger 둘 모두에서 작동하지 않았기 때문에 key는 필수값 지정을 할 수 없었고

기존에 Sap에서만 생성된다고 생각해서 지정한 필수값을 운영/개발에 각각 개체들과

개체의 제품 개체까지 설정을 수정해야 했다.

 

내용을 확인하던 중 ERP에서 인터페이스 되는 필드들은 수정되면 안되지만

생성 또는 수정이 가능했기 때문에 페이지레이아웃에서 모두 읽기전용으로 수정하고

노출되면 안될 것 까지는 아니지만 굳이 노출할 필요가 없는 key 또한 레이아웃에서 제거했다.

 

양방향 연결용 key를 체크한 다음

SFDC에 생성된 key 필드가 전달될 경우 해당 필드를 발송하게 수정했고

그 외에 경우에는 기존 인터페이스와 동일하게 인터페이스를 진행하도록 수정 후 배포했다.

 

이제 관계형 필드들을 작성해야 할 것 같은데

생성 버튼과 SAP 재전송 문제가 있어서 어디까지 어떻게 해야 할 지 골치아프고

4개의 개체에 운영/개발까지 하면 필드 생성만 150개 이상 해야 할 것 같은데 내일도 머리아픈 하루가 될 것 같다.

 

 

(1).백준 16175번 General Election는 참가자들의 숫자와 점수들이 주어질 때 우승한 참가자를 출력해야 하는 문제였다.

 

점수를 이상하게 제공했기 때문에 for문을 3차례 순회해야 했는데

각 테스트케이스 경기를 구분하는 i와 테스트케이스 내부를 순회하는 j

그리고 각 경기마다 점수를 각자 순회하기 위한 k를 이용했으며

점수가 가로로 제공됐기 때문에 index 기록방식을 고민하다가 Map에 담아 index를 지정했다.

const input = `2
3 3
159 213 450
512 890 993
215 420 397
2 5
40 64
35 12
102 58
43 15
79 41`.split('\n').map(el => el.split(' ').map(Number))

for(let i = 1 ; i < input.length ; i++){
    const [m, t] = input[i]
    const mapChecker = {}
    let index = 0
    let max = 0
    for(let j = i + 1 ; j <= i + t ; j++){
        for(let k = 0 ; k < input[j].length ; k++){
            if(mapChecker[k]){
                mapChecker[k] += input[j][k]
            } 
            else{
                mapChecker[k] = input[j][k]
            }
        }
    }
    for(let key in mapChecker){
        if(mapChecker[key] > max){
            max = mapChecker[key]
            index = key
        }
    }
    i += t
    console.log(1 + Number(index))
}

'회고' 카테고리의 다른 글

[개발일지] - 300  (0) 2024.04.25
[개발일지] - 299  (0) 2024.04.24
[개발일지] - 297  (1) 2024.04.22
[개발일지] - 296(주말)  (1) 2024.04.21
[개발일지] - 295(주말)  (0) 2024.04.20

+ Recent posts