2026-07-31 PinPoint 작업일지입니다. 오늘은 1건의 작업을 진행했습니다.

`consultation-management`

현상/기능

  • 현장소장 배정 알림톡 발송 시 "상담 또는 현장소장 정보가 없습니다" 메시지 발생 조건 확인 및 에러 메시지 상세화

작업

  • 파일
  • `src/app/consultation-management/components/` — 소스 요약 헤더 추가, `handleSend` 검증 분리
  • `src/app/api/customer-receptions/send-site-manager-assign/` — 필수값 검증 분리 및 실패 응답에 ID·소장명 포함
  • `src/app/consultation-management/components/` — `handleAssignmentConfirmCheckedChange` 배정확정 시 자동 저장
  • `src/app/api/customer-receptions/[id]/` — 배정확정(N→Y) 시 `notifyCustomerAssigned` 제거
  • 원인 분석
  • 기존 `!receptionId || !siteManagerId` 단일 가드가 두 원인을 같은 문구로 표시
  • 알림톡 발송 버튼은 `formData.siteManagerId` 가 있을 때만 렌더 → 실제 원인은 대부분 `receptionId`(= `selectedId`) 없음
  • `[추가]` 신규 모드는 `selectedId = null` 이지만 소장 배정·배정확정·발송 버튼까지 진행 가능 → 미저장 상태 발송 시 실패
  • 클라이언트 검증 분리: 템플릿 없음 / 템플릿 내용 없음 / 상담 미저장 / 소장 미배정 / 소장 연락처 없음 / 공사카테고리 미선택
  • 발송 실패 시 서버 응답 코드, 네트워크 예외 메시지 노출
  • 서버 검증 분리: 상담 ID·소장 ID·연락처·메시지 각각 안내, 조회 실패 시 해당 ID 표기, 소장 연락처 미등록 사전 차단
  • 배정확정 자동 저장: 배정확정 체크 시 `persistCustomerReception({ silent: true })` 즉시 호출
  • 신규 상담이면 `POST /api/customer-receptions` 로 등록되고 `selectedId` 가 채워져 알림톡 발송 가능
  • 저장 실패(성명·전화번호·공사카테고리 누락 등) 시 체크 원복 + 저장 실패 사유 그대로 표시
  • 배정확정 취소는 기존과 동일하게 확인 다이얼로그 후 `Y→N` 저장 (현장소장 배정 자체는 유지, 해제는 X 버튼)
  • 소장 시스템 알림 시점 정리: 소장 알림은 알림톡 발송 성공 시점에만 발송
  • `PUT /api/customer-receptions/:id` 에서 `notifyCustomerAssigned`(배정확정 N→Y) 및
  • 미사용이 된 `wasConfirmed`, `previousSiteManagerId`, `sendTemplateOnConfirm` 및 import 정리
  • `POST /api/customer-receptions/send-site-manager-assign` 의 발송 성공 후 `notifyCustomerAssigned` 만 유지
  • `notifySiteManagerAssigned`(`src/lib/`)는 현재 호출처 없음 (함수는 보존)