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/`)는 현재 호출처 없음 (함수는 보존)