リクエスト詳細
🐛 バグ報告
対応完了
対象アプリ: ObituaryPen - 追悼メッセージ&弔辞ドラフトメーカー
snsシーンでitems['standard'][1]が存在しない場合にUndefined offset警告&空文字が出力されるバグ
## 1. 不具合の内容
pages/generate.php の `case 'sns':` ブロック内、`long` バリエーションの生成時に以下のコードが使われています。
```php
$results['long'] = $items['standard'][1] . $keyword_part . "\n\nゆっくりお休みください。";
```
`$lib['sns']['standard']` 配列の要素数が1件しかない場合(インデックス0のみ存在)、`$items['standard'][1]` は未定義となり、PHP Notice: Undefined offset が発生します。結果として `long` バリエーションの先頭が空文字になり、ユーザーには「ゆっくりお休みください。」だけが表示される壊れた出力になります。
## 2. 根拠・発生しやすい条件
- `phrase_library()` の `sns.standard` 配列の実装次第でインデックス1が存在しない場合に即発生します。
- 同様のパターンで `condolence_email` の `body['long'][0]` も、`long` キー自体が未定義だと同じ問題が起きますが、SNSの `[1]` 固定参照は特に危険です。
- 他シーンは `array_rand()` を使っているのに、SNSの `long` だけ `[1]` をハードコードしており、設計上の不整合があります。
- AJAX レスポンスが `ok: true` で返るためフロントエンドはエラーに気づかず、ユーザーには壊れた文章がそのまま表示されます。
## 3. 期待動作
`long` バリエーションでも `standard` 配列から有効な要素をランダムまたは安全に取得し、空文字が混入しないこと。
## 4. 修正方針
`case 'sns':` の `long` 生成部分を以下のように修正する:
```php
// 修正前
$results['long'] = $items['standard'][1] . $keyword_part . "\n\nゆっくりお休みください。";
// 修正後
$std_long = !empty($items['long'])
? $items['long'][array_rand($items['long'])]
: $items['standard'][array_rand($items['standard'])];
$results['long'] = $std_long . $keyword_part . "\n\nゆっくりお休みください。";
```
あわせて `memorial` シーンの `$items['long'][0]` も同様に `array_rand` + `!empty` チェックを加えることを推奨します。
pages/generate.php の `case 'sns':` ブロック内、`long` バリエーションの生成時に以下のコードが使われています。
```php
$results['long'] = $items['standard'][1] . $keyword_part . "\n\nゆっくりお休みください。";
```
`$lib['sns']['standard']` 配列の要素数が1件しかない場合(インデックス0のみ存在)、`$items['standard'][1]` は未定義となり、PHP Notice: Undefined offset が発生します。結果として `long` バリエーションの先頭が空文字になり、ユーザーには「ゆっくりお休みください。」だけが表示される壊れた出力になります。
## 2. 根拠・発生しやすい条件
- `phrase_library()` の `sns.standard` 配列の実装次第でインデックス1が存在しない場合に即発生します。
- 同様のパターンで `condolence_email` の `body['long'][0]` も、`long` キー自体が未定義だと同じ問題が起きますが、SNSの `[1]` 固定参照は特に危険です。
- 他シーンは `array_rand()` を使っているのに、SNSの `long` だけ `[1]` をハードコードしており、設計上の不整合があります。
- AJAX レスポンスが `ok: true` で返るためフロントエンドはエラーに気づかず、ユーザーには壊れた文章がそのまま表示されます。
## 3. 期待動作
`long` バリエーションでも `standard` 配列から有効な要素をランダムまたは安全に取得し、空文字が混入しないこと。
## 4. 修正方針
`case 'sns':` の `long` 生成部分を以下のように修正する:
```php
// 修正前
$results['long'] = $items['standard'][1] . $keyword_part . "\n\nゆっくりお休みください。";
// 修正後
$std_long = !empty($items['long'])
? $items['long'][array_rand($items['long'])]
: $items['standard'][array_rand($items['standard'])];
$results['long'] = $std_long . $keyword_part . "\n\nゆっくりお休みください。";
```
あわせて `memorial` シーンの `$items['long'][0]` も同様に `array_rand` + `!empty` チェックを加えることを推奨します。
💬 返信 (3)
🛠 開発を開始しました (バグ修正 (obituarypen))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「ObituaryPen - 追悼メッセージ&弔辞ドラフトメーカー」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=obituarypen
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/obituarypen/
ご利用ありがとうございます!
ご要望いただいた「ObituaryPen - 追悼メッセージ&弔辞ドラフトメーカー」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=obituarypen
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/obituarypen/
ご利用ありがとうございます!
Echo
Iris