Commit Graph
9 Commits
Author SHA1 Message Date
chym1217 4e77d25926 feat(message_bizppurio): 검수 모드 라벨 통일 + 발송 payload 저장 + 알림톡 URL 프로토콜 중복 방지
발송 이력 화면의 "테스트 모드" 표기를 "검수 모드"로 통일하고, 검수 모드 발송 건은
상태 라벨 대신 "검수" 라벨로 표시한다. 설정 미완료 상태에서도 검수 모드 안내가
함께 표시되도록 배너 노출 조건을 수정한다.

발송 요청 payload가 어디에도 저장되지 않아 실패 원인을 사후 재구성할 수 없던 문제를
해결한다. bizppurio_dispatches.request_payload 컬럼을 신설해 발송 시점(성공/실패
무관)에 실제 비즈뿌리오 전송 payload를 저장하되, 다른 컬럼과 중복되는 개인식별
정보(수신번호·치환된 본문 텍스트)는 제외하고 저장한다.

카카오 알림톡 버튼 URL과 완전한 URL 변수(action_url 등, 항상 프로토콜 포함)가
결합될 때 프로토콜이 중복(https://https://...)되어 잘못된 링크로 발송되던 문제를
방지한다.

플러그인 제거 후 재설치 시 sms·alimtalk 채널 템플릿이 재생성되지 않던 문제를
해결한다. 리스너 등록 이력 캐시가 재활성화 후에도 남아있어 재등록이 조용히
스킵되던 것으로, 코어 수정 없이 플러그인 내부에서 리플렉션으로 우회한다.
2026-07-28 12:40:15 +09:00
chym1217 d4bb117b9b feat(message_bizppurio): 알림톡 카카오 템플릿 내용 발송 반영 + 연결 소실 감지
- 알림톡 발송이 카카오 승인 템플릿의 본문·버튼·요소를 실제로 채워 보내도록 구현(B안):
 카카오 상세조회 + template_code 단위 캐시(기본 60분, 수동 초기화·끄기 지원),
 카카오→발송 형식 변환 + 변수 치환
- 결과코드 재시도 분류 정정(알림톡 일시오류 7306/7307/7421/7437 추가)
- 발신프로필 응답 파싱 정정(data.success[])
- 연결한 카카오 템플릿 소실(삭제·차단·미승인) 시 알림 설정에 "사용 불가" 표시,
 조회 실패/승인 없음 구분 안내(결함 2·3)
2026-07-28 12:40:14 +09:00
chym1217 5e9d046812 fix(message_bizppurio): 설치 시 문자·알림톡 채널 템플릿 자동 시딩
PluginManager::activatePlugin 이 status=active 로 바꾸기 전에 activate 를
호출하므로, 그 시점엔 SeedChannelTemplatesListener 가 아직 등록되지 않아 재시딩이
sms·alimtalk 채널 template 을 붙이지 못했다(알림 설정 탭이 비어 토글도 미노출).

activate 가 재시딩 전에 해당 리스너를 명시적으로 선등록하도록 수정. register
는 동일 프로세스 내 중복 등록을 막으므로 멱등하며, 코어는 수정하지 않는다.

- plugin.php: activate 에 리스너 선등록 추가
- 회귀 테스트: activate 후 sms·alimtalk 템플릿 생성 검증 (fail→green)
- CHANGELOG: working(1.0.0) Added 항목에 설치 시 자동 시딩 문구 흡수
2026-07-28 12:36:27 +09:00
chym1217 11f1d79540 feat(message_bizppurio): 코어 알림 발송 이력 화면에 문자·알림톡 결과 주입
발송 결과(성공/실패·사유·잔액부족·SMS 대체발송)를 코어 "알림 발송 이력" 화면의 각 행에
표시한다. 코어 앱·코어 테이블 무수정 — 연결 표식은 bizppurio_dispatches.notification_log_id
에만 두고, 발송 사이클의 코어 after_log_sent/after_log_failed 훅으로 그 로그 id 를 연결한다.

- 결과 조회는 파라미터 없는 GET /dispatch-results/recent 로 최근 결과 맵을 받아 row.id 매칭
 (목록 로드 순서에 무관 — 빈 배열 전송·타이밍으로 결과가 비던 문제 해소).
- 코어 이력 datagrid 에 결과 컬럼을 layout_extensions 로 주입하고, 행 토글에도 상세 결과를
 얹는다. 메일·사이트내알림 탭에선 컬럼(헤더 포함)을 숨긴다. 다크모드 배지 색 보강.
- 브라우저 검수용 데모 시더(4상태·엣지 케이스 21건) + 전 계층 테스트(백엔드·Vitest 렌더)
 + 시나리오 매니페스트 + API 레퍼런스 동반.
2026-07-28 12:36:26 +09:00
chym1217 af43a7c41d feat(message_bizppurio): 알림톡 연동 편집모달 전용칸 즉시저장 + 시딩 필터 훅 template 증강
Phase 6 재설계 — 코어 알림 설정 화면을 그대로 쓰고 알림톡 편집 시 전용 칸만 얹는다.

- 시딩 필터 훅(seed.*.notifications.translations) 편승으로 회원 알림에 sms·alimtalk
 template 증강 (코어·모듈 무수정, cleanupStaleTemplates 에도 유지)
- 코어 편집 모달에 overlay 로 전용 칸 append(연결 템플릿·SMS 대체) — 변경 즉시 저장,
 코어 저장 버튼과 무관 (코어 템플릿 무오염)
- 알림톡·SMS 탭 상태 배너(설정 미완료/테스트 모드)
- 1차 구현(우리 목록 통째 교체·게이트·우리 편집 모달) 폐기

전 계층 테스트 통과 (백엔드 170 / 프론트 63), audit 위반 0.
2026-07-28 12:36:24 +09:00
chym1217 73b05aa42f feat(message_bizppurio): 알림톡 템플릿 관리 화면 (설정 페이지 탭)
설정 페이지 알림톡 템플릿 탭에서 카카오 알림톡 템플릿을 등록·수정·삭제·검수·
상태변경한다. 진입은 코어 소유 설정 페이지 하나로 통일하고 getAdminMenus 는
폐기했다. 템플릿은 kapi 에 실시간 위임하며 DB 에 저장하지 않는다.

등록 폼은 계획서 §6-4 전체를 구현한다: 템플릿 코드(자동 생성/직접 입력),
카테고리 2단 드롭다운, 템플릿 유형(기본형/이미지형/강조표기형), 이미지형
파일 업로드, 본문 변수 클릭 삽입 + 알림별 변수 참고표, 선택 항목 6개
체크펼침(부가정보·미리보기·버튼·바로연결·대표링크·보안), 등록/등록 후
검수요청 2버튼.
2026-07-28 12:36:22 +09:00
chym1217 fd7e216639 feat(message_bizppurio): 설정 화면 KG이니시스식 개편 + 검수 모드 전환
- 설정 화면을 공용 클래스·2단 그리드·상단 안내 패널·필드 인라인 에러로 통일
- 연동 환경(dev/live)을 검수 모드 Toggle(is_test_mode)로 전환, 독립 카드로
 분리하고 운영 경고 박스를 API 연동 카드 상단에 배치
- 검수 모드를 끄면(운영) 발송 자격증명(아이디·비밀번호·발신번호)을
 required 로 강제하는 조건부 검증 필터 훅 추가
- 리포트 수신 주소를 설정 화면에서 확인·복사 (플러그인 라우트가
 config('app.url') 기준 절대 URL 반환, 코어 무수정)
- 명칭 "메시징→메시지 발송", 설명 "자동발송→발송", "(다우기술)" 제거
- 설정 저장 테스트가 실제 런타임 설정 파일을 오염시키던 결함 격리
2026-07-28 12:36:20 +09:00
chym1217 a3495d8dc6 feat(message_bizppurio): 문자·알림톡 채널 등록 + 자동발송
Phase 3 — 코어 알림 시스템에 sms·alimtalk 채널을 코어 무수정으로 등록하고,
가입·주문 등 이벤트 발생 시 문자를 자동발송한다. 실제 발송·재시도는 Phase 2
발송 Job 에 위임한다.

- filter_available_channels 훅으로 sms·alimtalk 채널 노출(비회원 발송 허용).
 channel_readiness 로 발신 정보 미설정 시 필요한 항목을 안내.
- 코어/게시판/이커머스 3영역의 채널 후보 훅을 구독해 자동발송 커버.
- sms 채널 드라이버를 ChannelManager 에 등록(코어 무수정) — 전화번호 해석
 (회원=프로필, 비회원=주문 연락처) → 본문 길이로 SMS/LMS 판별 → 발송 위임.
- 비회원 주문 전화번호는 이커머스 알림 데이터 훅을 구독해 채운다. 이커머스
 모듈은 무수정(자체 관행대로 배송지 연락처를 직접 읽음).

알림톡은 채널 등록·readiness 까지만. 실제 발송·템플릿 연동·탭 UI 는 Phase 5·6,
발송 이력 DB 는 Phase 4 로 이관.
2026-07-28 12:36:19 +09:00
chym1217 b48ac91fec feat(message_bizppurio): 비즈뿌리오 메시징 플러그인 골격 + 환경설정
Phase 1 — 플러그인 설치·활성화 시 권한·메뉴·환경설정 화면이 뜨는 기반 구축.
이후 발송엔진·채널·이력·템플릿 Phase 의 전제가 된다.

- 관리자 환경설정 화면(3섹션: API 연동/발송 설정/연동 안내) — 비즈뿌리오
 아이디·비밀번호·API 키·발신번호·알림톡 발신프로필 키·연동 환경(검수/운영).
 크리덴셜은 마스킹 + 프론트 미노출.
- 조회/관리 권한 2개 + 「메시지 발송 관리」 관리자 메뉴(알림톡 템플릿·발송 이력 하위).
- 잔액 부족 시 관리자 알림 정의(webhook 결과코드 감지는 Phase 4).
- 발송 관련 Enum 4종(채널/상태/출처/결과분류) — Phase 2~4 소비용 골격.

알림톡 채널 기본 body 시드는 채널 등록(Phase 3)·탭 연동(Phase 6)과 강결합이라
Phase 6 으로 이관(plugin.php 주석 명시).

테스트: PHPUnit 12건(설치·권한·메뉴·알림 정의·Enum) + Vitest 22건(환경설정 레이아웃).
설치→활성화 실검증으로 권한 4·메뉴 3·알림 1·설정 초기값 로드 확인.
2026-07-28 12:36:18 +09:00