feat(message_bizppurio): 임시 삭제된 비즈뿌리오 플러그인 복구 및 현행 규정 정합화

32afe9530 에서 게시판 반응 기능과 함께 임시 제거됐던 비즈뿌리오 메시징
플러그인 본체(137 파일)와 일본어 번들 언어팩(9 파일)을 삭제 직전 상태
(32afe9530~1)로 복구한다. 템플릿 신청·승인 개편의 기반 작업.

복구 범위
- plugins/_bundled/sirsoft-message_bizppurio 전체 + 번들 ja 언어팩
- 공유 파일의 비즈뿌리오 참조 복원: build-language-pack-ja.cjs 팩 정의,
 api-doc-unfilled-baseline.json(32건), docs/backend/api/README.md 표 행,
 audit coverage 노트·vite-sourcemap-env-gate 룰 주석, via 테스트 주석,
 ·AGENTS.md 확장 API 표(자동 재생성), 라우팅 패리티 스냅샷(+1)

삭제 이후 강화된 규정 2건 정합화
- TokenCheckController: 예외 원문을 메시지 키 자리에 전달하던 422 응답을
 키(token_check.failed) + errors.bizppurio_message 페이로드로 분리
 (GenericCatchStatusCodeContractTest 계약). 관리자 토스트는 errors 페이로드로
 상세 사유를 계속 표시하도록 레이아웃 동기 수정, lang ko/en/ja 키 추가
- AlimtalkTemplateController::index: base Request 주입 금지 룰에 따라
 AlimtalkTemplateListRequest FormRequest 신설 (형태 검증만 — kapi 위임 유지)

미복원(의도)
- 게시판·이커머스 CHANGELOG 의 알림톡 연결 문구 2줄은 연결 방식이 로
 재설계되므로 되살리지 않고, 완료 시점에 새 동작 기준으로 차기 버전에 기재

검증: TokenCheck 7 + AlimtalkController 10 + GenericCatch 계약 3 (PHPUnit),
플러그인 레이아웃 Vitest 137건, BindingShape 라우팅 패리티 8건 green.
audit 는 복구 전부터 baseline 처리된 API 문서 미채움 32건만 잔존.
This commit is contained in:
HeuJung
2026-08-22 22:39:36 +09:00
parent acdff53792
commit 6a8a537f10
151 changed files with 22226 additions and 2 deletions
@@ -0,0 +1,11 @@
# Changelog
이 언어팩의 모든 주요 변경사항을 기록합니다.
형식은 [Keep a Changelog](https://keepachangelog.com/ko/1.1.0/)를 따르며,
[Semantic Versioning](https://semver.org/lang/ko/)을 준수합니다.
## [1.0.0] - 2026-07-28
### Added
- 비즈뿌리오 메시징 플러그인(sirsoft-message_bizppurio)의 일본어 번들 언어팩을 제공합니다. 환경설정·알림톡 템플릿 관리·발송 이력 화면과 발송 결과 코드 안내가 일본어 로케일에서 자연스럽게 표시됩니다. 요청 과다로 인한 일시적 발송 실패 사유, 미승인 템플릿 연결 시도 시 안내 문구도 포함됩니다.
@@ -0,0 +1,6 @@
<?php
return [
'action' => [],
'description' => [],
];
@@ -0,0 +1,86 @@
<?php
return [
'channel' => [
'sms' => 'SMS',
'lms' => 'LMS',
'alimtalk' => 'アラートトーク',
],
'status' => [
'pending' => '待機中',
'sent' => '送信中',
'success' => '成功',
'failed' => '失敗',
],
'source' => [
'auto' => '自動',
'manual' => '手動',
'bulk' => '一括',
],
'result_category' => [
'success' => '成功',
'retry' => '再試行',
'permanent_failure' => '永久失敗',
'balance_low' => '残高不足',
],
'channels' => [
'source_label' => 'ビズプリオ',
'sms' => [
'name' => 'SMS/LMSテキスト',
'description' => 'ビズプリオを通じてテキスト(SMS/LMS)で通知を送信します。',
],
'alimtalk' => [
'name' => 'カカオアラートトーク',
'description' => 'ビズプリオを通じてカカオアラートトークで通知を送信します。',
],
],
'readiness' => [
'sms_credentials_missing' => 'ビズプリオのアイディとパスワードを設定してください。',
'sms_sender_number_missing' => '発信番号を設定してください。',
'alimtalk_api_key_missing' => 'カカオ管理API キーを設定してください。',
'alimtalk_sender_key_missing' => 'アラートトーク発信プロフィールキーを設定してください。',
],
'settings' => [
'bizppurio_id_attribute' => 'ビズプリオアイディ',
'password_attribute' => 'パスワード',
'sender_number_attribute' => '発信番号',
],
'webhook' => [
'received' => 'レポートを受け取りました。',
],
'error' => [
'credentials_missing' => 'ビズプリオのアイディとパスワードを先に設定してください。',
'token_issue_failed' => 'ビズプリオ認証トークン発行に失敗しました。',
'send_failed' => 'メッセージ送信リクエストに失敗しました。',
'send_retryable' => 'メッセージ送信が一時的に失敗しました。(コード: :code)',
'invalid_response' => 'ビズプリオレスポンスを解析できません。',
'kakao_credentials_missing' => 'カカオ管理API 使用のためにアイディとAPI キーを先に設定してください。',
'kakao_request_failed' => 'カカオ管理API リクエストに失敗しました。',
'sender_key_missing' => 'アラートトーク発信プロフィールキーを先に設定してください。',
'template_not_sendable' => '送信可能(承認)ステータスではないテンプレートです。(コード: :code)',
'token_issue_failed_with_reason' => 'ビズプリオ認証トークンの発行に失敗しました。(:reason)',
'connection_failed' => 'ビズプリオ サーバーに接続できません。しばらく後にもう一度お試しください。',
],
'send_skipped' => [
'alimtalk_binding_missing' => 'アラートトークテンプレートが接続されていないため送信をスキップしました。(通知タイプ: :type)',
'alimtalk_kakao_content_unavailable' => 'カカオ承認テンプレート内容を照会できないため送信をスキップしました。(通知タイプ: :type)',
'sms_template_missing' => 'SMSテンプレートがないため送信をスキップしました。(通知タイプ: :type)',
'recipient_phone_missing' => '受信者の電話番号がないため送信をスキップしました。(通知タイプ: :type)',
'message_body_empty' => '送信本文が空いているため送信をスキップしました。(通知タイプ: :type)',
],
'binding' => [
'saved' => 'アラートトーク連携を保存しました。',
'removed' => 'アラートトーク連携を解除しました。',
],
'cache' => [
'cleared' => 'アラートトークテンプレート内容キャッシュを初期化しました。次回送信から最新内容が反映されます。',
],
'channel_group' => [
'text' => '文字',
'alimtalk' => '通知トーク',
],
'token_check' => [
'success' => '認証が正常に確認されました。ユーザーIDとパスワードが正しいです。',
'failed' => '認証の確認に失敗しました。詳細な理由をご確認ください。',
],
];
@@ -0,0 +1,55 @@
<?php
return [
'1000' => '成功',
'2000' => 'メッセージが無効です',
'3001' => '認証情報が無効です(Basic)',
'3002' => 'トークンが無効です(期限切れ·廃止)',
'3003' => 'IPが無効です',
'3004' => 'アカウントが無効です',
'3005' => '認証情報が無効です(Bearer)',
'3006' => 'アカウントが存在しません',
'3007' => 'アカウントパスワードが無効です',
'3009' => 'アカウントが停止状態です',
'3010' => 'アクセス許可IPが一致しません',
'3011' => '不明なエラー(bizppurio)',
'3013' => '完了処理されていないメッセージ',
'4100' => '成功',
'4400' => '電波の弱い地域',
'4401' => '電源オフ',
'4402' => 'ストレージ超過',
'4410' => '不正な番号',
'4414' => '結番·停止',
'4420' => 'その他端末エラー',
'4430' => 'スパム',
'4431' => '送信制限受信拒否(スパム)',
'4443' => 'スパムブロック',
'5002' => 'リクエストが多すぎます',
'5003' => '一時的な送信エラー',
'5004' => '一時的な送信エラー',
'5005' => '一時的な送信エラー',
'6600' => '成功',
'6603' => '電波の弱い地域',
'6604' => '電源オフ',
'6606' => '不正な番号',
'6621' => 'メッセージ長超過',
'6641' => 'スパムブロック',
'7000' => '成功',
'7103' => '発信プロフィールキーが無効です',
'7106' => '削除された発信キー',
'7107' => 'ブロックされた発信キー',
'7204' => 'メッセージ内容がテンプレートと不一致です',
'7206' => 'シリアルナンバー形式が不一致です',
'7306' => 'カカオシステムエラー',
'7307' => '処理遅延',
'7308' => '電話番号エラー',
'7320' => '受信ブロック',
'7325' => '変数長超過',
'7421' => 'タイムアウト',
'7436' => 'ウォレット残高不足(アラートトーク)',
'7437' => 'メッセージリクエスト失敗',
'7523' => '080受信拒否(スパム)',
'9000' => '一時的なシステムエラー',
'9070' => '残高不足(SMS)',
'9071' => '後払い限度額超過',
];
@@ -0,0 +1,227 @@
{
"name": "ビズプリオ メッセージ発送",
"description": "ビズプリオ 連動 SMS/LMS・カカオ アラート톡 発送プラグインです。",
"settings": {
"title": "ビズプリオ メッセージ発送 設定",
"description": "ビズプリオ 連動情報と発送 設定を管理します。",
"save": "保存",
"saving": "保存 中...",
"save_success": "設定が保存されました。",
"save_failed": "設定 保存に失敗しました。",
"test_mode": {
"label": "検査モード",
"hint": "検査モードでは ビズプリオ 検査ドメインで発送されます。オフにすると運用ドメインで実際に発送されます。",
"account_notice": "検査と運用は別の ビズプリオ アカウントで運営することをお勧めします。"
},
"live_mode_warning_title": "運用環境で発送されます",
"live_mode_warning_body": "検査モードがオフになっているため、実際の顧客にSMS・アラート톡が発送され、発送費用が請求されます。検査段階では検査モードをオンにしてください。",
"sections": {
"api": {
"title": "API 連動",
"description": "発送システムとカカオ管理システムに共通に使用する連動情報です。"
},
"sending": {
"title": "発送 設定",
"description": "文字・アラート톡発送に使用する発信情報です。"
}
},
"fields": {
"bizppurio_id": {
"label": "ビズプリオ ID",
"hint": "発送・カカオ管理に共通に使用する ビズプリオ ID です。"
},
"password": {
"label": "ビズプリオモジュールパスワード",
"hint": "ビズプリオモジュールパスワードを入力してください。(ビズプリオコンソール > モジュール連携環境設定 > モジュールパスワード変更)"
},
"api_key": {
"label": "API キー",
"hint": "API キーは ビズプリオ カスタマーセンターに ID とともに申し込むと確認後、発行されます。"
},
"sender_number": {
"label": "発信番号",
"hint": "文字・アラート톡発送に使用する発信電話番号です。"
},
"sender_key": {
"label": "アラート톡 発信プロファイル キー",
"hint": "アラート톡 発送・テンプレート確認に使用する発信プロファイル キー(40文字)です。"
},
"template_cache_minutes": {
"label": "アラート톡 内容 キャッシュ 時間(分)",
"hint": "カカオ テンプレート内容をこの時間だけ再利用します。0 = 毎回最新(発送が多い場合は非推奨)。",
"clear_cache": "キャッシュ 初期化",
"clear_cache_hint": "カカオでテンプレートを修正した場合は押して即座に反映してください。",
"clear_cache_success": "テンプレート内容 キャッシュを初期化しました。次の発送から最新内容が反映されます。",
"clear_cache_failed": "キャッシュ 初期化に失敗しました。"
},
"connection_check": {
"label": "接続確認",
"hint": "保存されたID·パスワードが有効かどうか、クリックしてすぐに確認してください。(保存後に反映されます)",
"button": "接続確認",
"checking": "確認中...",
"success": "認証が正常に確認されました。IDとパスワードが正しいです。",
"failed": "認証確認に失敗しました。",
"unsaved_changes": "変更内容を先に保存してください。"
}
},
"report": {
"section_title": "レポート受信 設定",
"hint": "ビズプリオ は文字・アラート톡発送後、成功/失敗の結果をこのアドレスに転送(URL PUSH)するレポート受信方式を提供します。以下のアドレスを ビズプリオ ビジネスチーム(または管理コンソールのレポート受信 設定)に登録してください。",
"note": "登録すると発送結果が履歴に自動記録され、実際に到達したかどうかを確認できます。登録前は発送リクエストまで確認され、最終結果(成功/失敗)は更新されません。",
"copy": "コピー",
"copied": "レポート受信アドレスがクリップボードにコピーされました。"
},
"cache": {
"section_title": "アラート톡 発送内容 キャッシュ",
"section_description": "アラート톡は発送する際、カカオに登録されたテンプレート内容(本文・ボタン)をそのまま送信する必要があります。発送するたびにカカオに内容をリクエストしないよう、一度取得した内容を一定時間再利用(キャッシュ)します。これにより、発送が多くてもカカオ確認の制限に引っかからず、素早く発送されます。"
},
"tabs": {
"connection": "環境設定",
"templates": "アラート톡 テンプレート"
},
"preparation": {
"intro": "文字・カカオ アラート톡を発送するには、まず ビズプリオ コンソールで以下の事前準備を完了する必要があります。",
"sms_label": "文字(SMS/LMS)",
"sms_sender": "発信番号を登録してください。",
"kakao_label": "カカオ アラート톡",
"kakao_channel": "카카오톡 ビジネスチャネルを作成し、発信プロファイルを登録してください。",
"kakao_template": "アラート톡 テンプレートを登録して承認を受けてください。",
"kakao_apikey": "カスタマーセンターに API キーをリクエストしてください。",
"console_link": "ビズプリオ コンソールを開く"
}
},
"binding": {
"section_title": "カカオ アラート톡 連動",
"list_guide": "各 通知に発送するカカオ アラート톡 テンプレートを接続してください。[接続]で承認されたテンプレートを指定すると、該当イベント発生時にアラート톡が自動発送されます。",
"section_hint": "承認されたアラート톡 テンプレートのみ接続できます。保存するとこの 通知に即座に反映されます。",
"modal_title": "アラート톡 接続 · {name}",
"unbound": "未接続",
"unavailable": "使用不可 — 再接続が必要",
"btn_connect": "接続",
"btn_change": "接続を変更",
"fallback_on": "SMS 代替 ON",
"fallback_off": "SMS 代替 OFF",
"connected_template": "接続テンプレート",
"none": "接続しない",
"no_approved_templates": "発送可能な(承認された)アラート톡 テンプレートがありません。まずテンプレートを登録・検査してください。",
"templates_load_failed": "テンプレート リストを読み込みできませんでした。プラグイン 設定(認証情報)を確認してください。",
"fallback_sms": "失敗時 SMS で代替発送",
"fallback_hint": "アラート톡 発送が失敗すると、この 通知の本文内容が文字(SMS)で代わりに発送されます。",
"variables_hint": "提供変数(発送時に自動置換)",
"saved": "アラート톡 連動を保存しました。",
"save_error": "アラート톡 連動 保存に失敗しました。"
},
"banner": {
"not_ready": "発送に必要な 設定が完了していません。",
"setup_action": "設定する",
"test_mode": "検査モードです — 実際の発送は行われません。"
},
"dispatch_result": {
"column_header": "文字・アラート톡 結果",
"inspection_label": "検査",
"low_balance": "残高不足",
"fallback": "SMS 代替発送 {status}",
"detail_title": "文字・アラート톡 発送 結果",
"channel_label": "発送チャネル: {channel}",
"sent_content_label": "実際の発送内容",
"sent_content_hint": "アラート톡 はカカオ承認テンプレートの実際の内容で発送され、上記の\"本文\"と異なる場合があります。"
},
"editor": {
"data_source": {
"dispatch_results": "ビズプリオ送信結果"
}
},
"templates": {
"title": "アラームトークテンプレート",
"description": "カカオアラームトークテンプレートを登録·審査·管理します。承認されたテンプレートのみアラーム連動に使用できます。",
"readiness": {
"title": "アラームトークテンプレートを使用するには、以下の設定が必要です",
"go_settings": "環境設定に移動",
"missing_label": "未設定項目",
"api_key_missing": "カカオ管理API キー",
"sender_key_missing": "アラームトーク送信プロフィールキー",
"note": "上記項目を環境設定タブで入力すると、テンプレート照会·登録が可能になります。実際の送信は審査モードをオフにして運用に切り替えた後、カカオ承認を受けたテンプレートのみ使用できます。"
},
"list_error": {
"title": "テンプレート一覧を読み込めませんでした"
},
"list_notice": {
"console_desc": "テンプレートの登録·編集·審査はビズプリオコンソールで進めてください。",
"console_link": "ビズプリオコンソールを開く"
},
"list": {
"refresh": "更新",
"search": "検索",
"search_placeholder": "テンプレート名検索(2~50文字)",
"filter_all": "すべてのステータス",
"empty": "登録されたアラームトークテンプレートがありません。",
"empty_hint": "ビズプリオコンソールで登録したテンプレートがここに表示されます。",
"load_failed": "テンプレート一覧を読み込めませんでした。送信プロフィールキーとAPI キーを確認してください。",
"columns": {
"no": "番号",
"name": "テンプレート名",
"code": "コード",
"status": "ステータス",
"requested_at": "登録申請日",
"processed_at": "処理日",
"actions": "内容"
}
},
"status": {
"sendable": "送信可能",
"inspecting": "審査中",
"rejected": "却下",
"uninspected": "未審査",
"stopped": "停止",
"blocked": "ブロック",
"dormant": "休止",
"unknown": "不明"
},
"status_sub": {
"rdy": "(使用前)"
},
"status_guide": {
"title": "ステータスバッジ",
"sendable_label": "送信可能",
"sendable": "承認完了。このステータスのみアラームに接続·送信できます。",
"inspecting_label": "審査中",
"inspecting": "カカオ審査進行中(営業日2~3日)。",
"pending_label": "未審査·却下",
"pending": "まだ送信できません。コンソールで審査申請·修正してください。"
},
"link_type": {
"WL": "ウェブリンク",
"AL": "アプリリンク",
"DS": "配送追跡",
"BK": "ボットキーワード",
"MD": "メッセージ転送",
"AC": "チャネル追加",
"BC": "相談トーク転換",
"BT": "ボット転換",
"TN": "電話をかける",
"MP": "地図表示",
"P1": "画像セキュア送信",
"P2": "個人情報利用",
"P3": "ワンクリック決済"
},
"actions": {
"detail": "詳細"
},
"detail": {
"title": "テンプレート詳細",
"close": "閉じる",
"buttons": "ボタン",
"extra": "付加情報",
"category": "カテゴリ",
"code": "テンプレートコード",
"content": "テンプレート内容",
"emphasize_type": "テンプレート種別",
"image_upload": "画像添付",
"subtitle_field": "補助文句",
"title_field": "強調表記文句",
"type_image": "画像形",
"type_none": "基本形",
"type_text": "強調表記形"
}
}
}
@@ -0,0 +1,30 @@
{
"identifier": "g7-plugin-sirsoft-message_bizppurio-ja",
"namespace": "g7",
"vendor": "sirsoft",
"name": {
"ko": "G7 플러그인 (sirsoft-message_bizppurio) 일본어 언어팩",
"en": "G7 plugin (sirsoft-message_bizppurio) Japanese language pack",
"ja": "G7 プラグイン (sirsoft-message_bizppurio) 日本語 言語パック"
},
"description": {
"ko": "G7 플러그인 (sirsoft-message_bizppurio) 일본어 언어팩 (번들)",
"en": "G7 plugin (sirsoft-message_bizppurio) Japanese language pack (bundled)",
"ja": "G7 プラグイン (sirsoft-message_bizppurio) 日本語 言語パック(バンドル)"
},
"version": "1.0.0",
"license": "MIT",
"scope": "plugin",
"target_identifier": "sirsoft-message_bizppurio",
"locale": "ja",
"locale_name": "Japanese",
"locale_native_name": "日本語",
"text_direction": "ltr",
"g7_version": ">=7.0.0-beta.4",
"requires": {
"target_version": null,
"depends_on_core_locale": true
},
"github_url": "",
"github_changelog_url": ""
}
@@ -0,0 +1,4 @@
{
"name": "Bizppurio メッセージ発送",
"description": "Bizppurio 連動 SMS/LMS・カカオ アラート トーク発送プラグインです。コア通知システムチャネルとして文字・アラートトークを発送し、発送結果を webhook で受信します。"
}
@@ -0,0 +1,18 @@
{
"bizppurio_balance_low": {
"definition": {
"name": "Bizssprrio残高不足",
"description": "Bizssprrio ウォレット残高が不足しており、SMS/アラートトーク送信に失敗した場合、管理者に送信されます"
},
"templates": {
"mail": {
"subject": "[{app_name}] Bizssprrio 残高が不足しています",
"body": "{name}様、Bizssprrio ウォレット残高が不足しているため、{channel_label} 送信に失敗しました (コード: {result_code})。チャージ後、送信が正常化されます。"
},
"database": {
"subject": "Bizssprrio残高不足",
"body": "Bizssprrio残高不足により、{channel_label} 送信に失敗しました (コード: {result_code})。"
}
}
}
}
@@ -0,0 +1,18 @@
{
"sirsoft-message_bizppurio": {
"name": "ビズプリオ メッセージ発送",
"description": "ビズプリオ メッセージ発送プラグインが提供する権限"
},
"sirsoft-message_bizppurio.messaging": {
"name": "メッセージ発送",
"description": "メッセージ発送ドメイン権限 (閲覧·管理)"
},
"sirsoft-message_bizppurio.messaging.view": {
"name": "メッセージ閲覧",
"description": "発送履歴·アラートトークテンプレート閲覧 (モニタリング)"
},
"sirsoft-message_bizppurio.messaging.manage": {
"name": "メッセージ管理",
"description": "環境設定·アラートトークテンプレート登録/検証·イベント連動管理"
}
}