7.0.9 릴리즈 사전 점검에서 공개 배포물에 실릴 결함을 전수 정리한다. 출시일자: 이번 사이클에 버전이 오르거나 새로 추가된 대상 10건의 CHANGELOG 출시일을 실제 공개일로 정렬. 결제 3종은 직전 릴리즈 페이로드로 이미 나갔으므로 제외했다. 내부 역할 호칭: 공개 배포물 26파일 49곳을 중립 표현으로 치환. 이미 공개된 페이로드에는 실질 0건이라 이번 릴리즈가 첫 유입이었다. 최초 출시 규격: 신규 플러그인과 그 언어팩의 CHANGELOG 를 선례 규격으로 재구성. 작성 중 확인되지 않은 서술 2건은 코드 실측으로 교정했다. 번들 ja 언어팩: 번역 값에 남은 한글 40건 정정. 같은 용어가 세 갈래로 갈려 있던 표기도 함께 통일했다. 정정값의 근거는 저장소가 이미 갖고 있었다 — 테스트가 정답으로 단언하는 값과 배포물이 어긋난 상태였다. 재발 방지: 원인은 번역 생성기의 용어집 미등록이므로 출력만 고치면 다음 빌드에서 되살아난다. 용어집에 8건을 등록하고, 규정 3건과 잔존 검출 룰을 신설했다. 룰은 수정 전 배포물로 red 가 되는지를 픽스처로 고정해 판정기가 모집단에 닿는지를 증명한다.
83 lines
4.6 KiB
YAML
83 lines
4.6 KiB
YAML
# audit:allow test-scenario-coverage reason: |
|
|
# Phase 3 는 코어 알림 채널 등록 + 문자 발송 위임 배선(백엔드)이다. axes cross product 의
|
|
# 런타임 효과(채널 노출/readiness/전화번호 해석/발송 Job 위임)는 PHPUnit 로 전수 가드된다:
|
|
# RegisterNotificationChannelsListenerTest(14) + SmsChannelDriverTest(7) +
|
|
# GuestPhoneExtractListenerTest(6) + ChannelRegistrationHookTest(4, 실제 훅 체인).
|
|
# 프론트 변경 없음(레이아웃 JSON/컴포넌트 미변경) → frontend-change-requires-e2e 비대상이라
|
|
# Playwright spec 은 이번 Phase 미도입. 실발송 왕복(실제 API·webhook)은 계획서 §9 방침대로
|
|
# 직접 수행하는 실연동 검증 단계에서 spec 최초 도입하며, 그때 @scenario/@effects 를 매핑한다.
|
|
|
|
feature: 비즈뿌리오 문자 채널 등록 + 자동발송 (Phase 3)
|
|
|
|
description: |
|
|
코어 알림 시스템에 sms·alimtalk 채널을 등록(코어 무수정 — filter 훅)하고, 3영역
|
|
(코어/게시판/이커머스) 알림 이벤트 발생 시 문자를 자동발송한다. 실제 발송 실행·재시도는
|
|
Phase 2 SendMessageJob 에 위임한다.
|
|
|
|
핵심 동작:
|
|
- filter_available_channels: sms·alimtalk 메타 노출(name_key/allow_guest:true)
|
|
- channel_readiness: 채널별 환경설정 충족 판정(sms=아이디+비번+발신번호, alimtalk=+api_key+sender_key)
|
|
- {core.auth, sirsoft-ecommerce, sirsoft-board}.notification.channels: 3영역 후보 확장
|
|
- ChannelManager::extend('sms'): SmsChannelDriver 로 발송 위임(alimtalk 은 Phase 6, no-op 스텁)
|
|
- 전화번호 해석: 회원=users.mobile / 비회원=data 의 _recipient_phone(D1)
|
|
- 비회원 전화번호 주입: 이커머스 extract_data 구독으로 orderer_phone → data(GuestPhoneExtractListener)
|
|
- sms 본문이 없으면 발송 skip / 본문 byte 로 SMS·LMS 판별
|
|
|
|
※ alimtalk 실발송·탭 UI·본문 시드는 Phase 5·6. 발송 이력 DB(bizppurio_dispatches) 영속화는 Phase 4.
|
|
|
|
※ #597 이후 본문 SSoT 변경: sms 본문 출처는 코어 notification_templates(sms) 가 아니라
|
|
bizppurio_templates.sms_body 이고, 발송 게이트는 (행 존재 && is_active && sms_body 비어있지 않음)
|
|
이다. 알림톡 게이트·대체 SMS·SMS 단독을 포함한 현행 발송 규칙의 정본은
|
|
bizppurio-dispatch.yaml 이며, 본 매니페스트는 채널 등록·준비도·전화번호 해석 축을 담당한다.
|
|
|
|
axes:
|
|
channel: [sms, alimtalk]
|
|
recipient: [member, guest]
|
|
readiness_state: [ready, missing_credentials, missing_sender]
|
|
test_mode: [on, off]
|
|
|
|
exclusions:
|
|
- { channel: alimtalk, recipient: guest, reason: "알림톡 실발송은 Phase 6 — 이번 Phase 는 채널 등록/readiness 만" }
|
|
- { readiness_state: missing_sender, channel: alimtalk, reason: "alimtalk readiness 는 자체 키(api_key/sender_key) 부족을 별도 판정 — sender 축은 sms 로 대표" }
|
|
|
|
effects:
|
|
# 채널 등록 (filter_available_channels)
|
|
- sms_channel_exposed_in_available_channels
|
|
- alimtalk_channel_exposed_in_available_channels
|
|
- both_channels_allow_guest_true
|
|
- alimtalk_has_no_uses_custom_list_flag_yet
|
|
- existing_channel_not_duplicated
|
|
# readiness (channel_readiness)
|
|
- sms_ready_when_id_password_sender_number_set
|
|
- sms_not_ready_reports_credentials_missing_key
|
|
- sms_not_ready_reports_sender_number_missing_key
|
|
- alimtalk_not_ready_when_api_key_or_sender_key_missing
|
|
- non_owned_channel_readiness_passes_through
|
|
# 3영역 후보 (prefix.notification.channels)
|
|
- three_prefixes_subscribed_core_auth_ecommerce_board
|
|
- channel_candidates_deduplicated
|
|
# 발송 위임 (SmsChannelDriver)
|
|
- member_phone_resolved_from_mobile
|
|
- guest_phone_resolved_from_data_recipient_phone
|
|
- dispatch_skipped_when_no_template
|
|
- dispatch_skipped_when_no_phone
|
|
- dispatch_skipped_when_body_blank
|
|
- short_body_dispatched_as_sms
|
|
- long_body_dispatched_as_lms_with_subject
|
|
- send_message_job_dispatched_with_refkey
|
|
# 게스트 전화번호 주입 (extract_data)
|
|
- guest_order_phone_injected_into_data
|
|
- member_order_phone_not_injected
|
|
- non_order_notification_passthrough
|
|
# 훅 위생
|
|
- all_channel_hooks_declared_as_filter_type
|
|
|
|
test_files:
|
|
- plugins/_bundled/sirsoft-message_bizppurio/tests/Unit/Listeners/RegisterNotificationChannelsListenerTest.php
|
|
- plugins/_bundled/sirsoft-message_bizppurio/tests/Unit/Services/SmsChannelDriverTest.php
|
|
- plugins/_bundled/sirsoft-message_bizppurio/tests/Unit/Listeners/GuestPhoneExtractListenerTest.php
|
|
- plugins/_bundled/sirsoft-message_bizppurio/tests/Feature/Notification/ChannelRegistrationHookTest.php
|
|
|
|
audit:
|
|
status: codified
|