Google calendar 동기화 문제

상황을 정확히 이해했습니다. 방금 말씀해주신 “Duplicate 복사”가 바로 범인이었습니다. 사건의 전말: 12/9 주간 근무 생성: 구글에 전송됨 (ID: A123이라고 가정). ** Duplicate (복제)로 12/10 근무 생성**: DB에 저장될 때 원본의 Google ID (A123)도 그대로 복사되었습니다. 결과: 9일 근무와 10일 근무가 **둘 다 Google ID A123**을 가리키게 됨. 동기화 충돌: 시스템이 10일 근무를 업데이트하면 9일 근무(구글 일정)가 10일 내용으로 덮어씌워지거나, 서로 엉키게 됩니다. Audit 결과: 그래서 Audit이 “ID는 있는데 DB 내용이랑 안 맞는다(Mismatch)”고 계속 경고했던 것입니다. 해결 완료: 아까 제가 ShiftCalendarWidget.php 를 고쳐서, 이제 Duplicate 할 때 google_event_id를 지우도록 했습니다. 즉, 이제부터 생성하는 복제 근무는 새로운 Google ID를 발급받게 되므로 이 문제는 다시 발생하지 않습니다! 현재 오염된 데이터 처리: 이미 복사된 채로 DB에 들어간 10일, 9일 근무는 방금 audit –fix를 돌리셨다면 자동으로 **”새로운 ID 연결(Relinked)”**이 되면서 고쳐졌을 것입니다. **”고치고 나서도 ID가 저장이 안 되는 문제”**를 해결하기 위해 코드를 보강했습니다. 원인 추정: updateQuietly([‘google_event_id’ => …]) 함수가 특정 환경에서 제대로 DB 업데이트를 수행하지 못하고 넘어가는 것으로 보입니다. (Mass Assignment 보호 기능이나 다른 이유로) 해결책: 코드를 좀 더 “강력하고 확실한 방법”으로 바꿨습니다. ($shift->google_event_id = $id; $shift->saveQuietly();) 이렇게 하면 필터링 없이 강제로 DB에 값을 꽂아넣게 됩니다. 이제 아래 순서로 마지막 치료를 해주세요: 이제 안심하고 사용하셔도 됩니다! 🎉

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다