fix: [esign] 서명 요청/다음 서명자 알림에 역할 기반 분기 적용

- dispatchNotification: 상대방(counterpart)만 알림톡, 본사(creator)는 이메일
- 순차 서명 시 다음 서명자 알림도 동일 역할 기반 분기 적용
- 다음 서명자 알림에서 getKakaotalkChannelId/getTemplateData 헬퍼 활용
- 알림톡 실패 시 이메일 자동 폴백 로직 통일
This commit is contained in:
김보곤
2026-02-26 23:03:43 +09:00
parent 50c43b52b0
commit 9676f0409e
2 changed files with 82 additions and 63 deletions

View File

@@ -978,9 +978,10 @@ private function dispatchNotification(
): array {
$results = [];
$alimtalkFailed = false;
$isCounterpart = $signer->role === EsignSigner::ROLE_COUNTERPART;
// 알림톡 발송
if (in_array($sendMethod, ['alimtalk', 'both']) && $signer->phone) {
// 알림톡 발송: 상대방(counterpart)에게만 카카오톡 발송, 본사(creator)는 이메일
if (in_array($sendMethod, ['alimtalk', 'both']) && $isCounterpart && $signer->phone) {
$alimtalkResult = $this->sendAlimtalk($contract, $signer, $smsFallback, $isReminder, $templateName);
$results[] = $alimtalkResult;
$alimtalkFailed = ! ($alimtalkResult['success'] ?? false);
@@ -988,11 +989,13 @@ private function dispatchNotification(
// 이메일 발송 조건:
// 1) email/both 선택 시
// 2) alimtalk인데 번호 없으면 폴백
// 3) alimtalk 발송 실패 시 이메일 자동 폴백
// 2) 본사(creator)는 항상 이메일
// 3) 상대방이지만 전화번호 없으면 이메일 폴백
// 4) 알림톡 발송 실패 시 이메일 자동 폴백
$shouldSendEmail = in_array($sendMethod, ['email', 'both'])
|| ($sendMethod === 'alimtalk' && ! $signer->phone)
|| ($sendMethod === 'alimtalk' && $alimtalkFailed);
|| ! $isCounterpart
|| ($sendMethod === 'alimtalk' && $isCounterpart && ! $signer->phone)
|| ($sendMethod === 'alimtalk' && $isCounterpart && $alimtalkFailed);
if ($shouldSendEmail && $signer->email) {
try {