リクエスト詳細
🐛 バグ報告
対応完了
対象アプリ: LetterVault - タイムカプセル手紙
ギャラリーの「開封間近順」ソートで未開封手紙が先頭に来ない/開封済み手紙が混入する問題
## 1. 不具合の内容
`_gallery.php` の「開封間近順(soon)」ソートは `ORDER BY l.open_date ASC` のみで並び替えているため、開封日が過去の手紙(すでに開封可能な手紙)が先頭に大量に並び、「もうすぐ開封される未開封手紙」を探す目的を果たせない状態になる。
さらに、ギャラリーには `visibility = 'public'` かつ `is_opened` の絞り込みが存在しないため、開封前・開封後の両方が混在して表示されている。これ自体は意図的設計とも取れるが、「開封間近順」という文脈では open_date が過去の手紙が大量に最上位を占め、本来見せたい「もうすぐ開封される手紙」がその下に埋まる。
## 2. 根拠・発生しそうな条件
`_gallery.php` 該当箇所:
```php
case 'soon':
$order_by = 'l.open_date ASC';
break;
```
ASC 順で open_date を並べると、過去日(開封済み)が先頭に来る。公開手紙が増えるほど顕在化する。
SQL の WHERE 句は `l.visibility = 'public'` のみで、`open_date >= CURDATE()` の絞り込みがない。
## 3. 期待動作
「開封間近順」ソートでは、**開封日が今日以降の未開封手紙**を開封日の近い順(ASC)に表示し、すでに開封可能になった手紙はその後ろに「開封済み」として並ぶか、または別セクションに分けて表示される。
## 4. 修正方針
`_gallery.php` の `soon` ケースを以下のように修正する:
```php
case 'soon':
// 未開封(open_date >= today)を先に開封日昇順、開封済みは後ろに作成日降順
$order_by = 'CASE WHEN l.open_date >= CURDATE() THEN 0 ELSE 1 END ASC, l.open_date ASC';
break;
```
これにより:
- 開封日が今日以降の手紙が先頭グループとして開封日が近い順に並ぶ
- 開封日が過去の手紙は後ろのグループに回る
- 既存の他ソート(new / views / reactions)やギャラリーカードの表示ロジックは一切変更不要
- LIMIT 60 やカード表示の HTML も変更不要で後方互換を保てる
`_gallery.php` の「開封間近順(soon)」ソートは `ORDER BY l.open_date ASC` のみで並び替えているため、開封日が過去の手紙(すでに開封可能な手紙)が先頭に大量に並び、「もうすぐ開封される未開封手紙」を探す目的を果たせない状態になる。
さらに、ギャラリーには `visibility = 'public'` かつ `is_opened` の絞り込みが存在しないため、開封前・開封後の両方が混在して表示されている。これ自体は意図的設計とも取れるが、「開封間近順」という文脈では open_date が過去の手紙が大量に最上位を占め、本来見せたい「もうすぐ開封される手紙」がその下に埋まる。
## 2. 根拠・発生しそうな条件
`_gallery.php` 該当箇所:
```php
case 'soon':
$order_by = 'l.open_date ASC';
break;
```
ASC 順で open_date を並べると、過去日(開封済み)が先頭に来る。公開手紙が増えるほど顕在化する。
SQL の WHERE 句は `l.visibility = 'public'` のみで、`open_date >= CURDATE()` の絞り込みがない。
## 3. 期待動作
「開封間近順」ソートでは、**開封日が今日以降の未開封手紙**を開封日の近い順(ASC)に表示し、すでに開封可能になった手紙はその後ろに「開封済み」として並ぶか、または別セクションに分けて表示される。
## 4. 修正方針
`_gallery.php` の `soon` ケースを以下のように修正する:
```php
case 'soon':
// 未開封(open_date >= today)を先に開封日昇順、開封済みは後ろに作成日降順
$order_by = 'CASE WHEN l.open_date >= CURDATE() THEN 0 ELSE 1 END ASC, l.open_date ASC';
break;
```
これにより:
- 開封日が今日以降の手紙が先頭グループとして開封日が近い順に並ぶ
- 開封日が過去の手紙は後ろのグループに回る
- 既存の他ソート(new / views / reactions)やギャラリーカードの表示ロジックは一切変更不要
- LIMIT 60 やカード表示の HTML も変更不要で後方互換を保てる
💬 返信 (3)
🛠 開発を開始しました (バグ修正 (lettervault))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「LetterVault - タイムカプセル手紙」を修正し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=lettervault
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/lettervault/
ご利用ありがとうございます!
ご要望いただいた「LetterVault - タイムカプセル手紙」を修正し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=lettervault
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/lettervault/
ご利用ありがとうございます!
Echo
Iris