リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: 合体ドロップ
週間ランキングの日付ピッカーで月曜日以外を選ぶと現在週へ無言でリセットされる
1. 不具合の内容
v1.110.0で追加された週間ランキングの日付ピッカーは、リリースノート上「選んだ日付を含む月曜日始まりの週へ移動できる」機能として案内されているが、lib.php の vd_valid_week_start() はYYYY-MM-DD形式かつ N==1(月曜)の値しか受理せず、それ以外は無条件で $current_week_start (今週の月曜) にフォールバックする実装になっている。
2. 根拠・発生しそうな条件
- lib.php: `if ($date === false || $date->format('Y-m-d') !== $value || $date->format('N') !== '1' || $value > $current_week_start) { return $current_week_start; }` という判定があり、月曜以外の日付は例外なく現在週にリセットされる。
- HTML5の<input type="date">はデフォルトで曜日を月曜に限定できず、ユーザーが火曜〜日曜の任意の日を選ぶのは自然な操作。
- リリースノートの文言「選んだ日付を含む月曜日始まりの週へ移動できます」は、ユーザーが月曜以外を選んでもその週へ移動できることを想定しているが、現状の実装ではそのケースが正しく処理されず、エラー表示も出ないまま黙って今週表示に戻ってしまう。
- ユーザーは「日付ピッカーで先週の水曜を選んだのに、先週のランキングではなく今週のランキングが表示される」という体感になり、絞り込み条件やページ番号などURL状態を保持したまま意図しない週へ飛ばされる。
3. 期待動作
日付ピッカーでどの曜日を選んでも、選択日を含むJST月曜始まりの週(その週の月曜〜日曜)のランキングが正しく表示されること。不正な日付(未来日・存在しない日付など)の場合のみ現在週へフォールバックする。
4. 修正方針
vd_valid_week_start() を以下のように修正する:
- 入力値がYYYY-MM-DD形式で実在する日付であり、未来日でないかをまず検証する(月曜限定の検証は撤廃)。
- 検証をパスした日付から `(int)$date->format('N') - 1` 日分を引いてその週の月曜日を算出し、算出結果を返す。
- 算出後の月曜日が未来週になる場合は現在週にフォールバックする。
- 呼び出し側(ranking.phpなど、週間ランキング表示・URL構築処理)は、返り値が既に月曜日であることを前提にそのまま使えるため変更不要。
- 既存のURLパラメータで既に月曜日の値が渡されているケース(通常の前週・翌週移動ボタン)は従来通り動作することを回帰テストで確認する。
v1.110.0で追加された週間ランキングの日付ピッカーは、リリースノート上「選んだ日付を含む月曜日始まりの週へ移動できる」機能として案内されているが、lib.php の vd_valid_week_start() はYYYY-MM-DD形式かつ N==1(月曜)の値しか受理せず、それ以外は無条件で $current_week_start (今週の月曜) にフォールバックする実装になっている。
2. 根拠・発生しそうな条件
- lib.php: `if ($date === false || $date->format('Y-m-d') !== $value || $date->format('N') !== '1' || $value > $current_week_start) { return $current_week_start; }` という判定があり、月曜以外の日付は例外なく現在週にリセットされる。
- HTML5の<input type="date">はデフォルトで曜日を月曜に限定できず、ユーザーが火曜〜日曜の任意の日を選ぶのは自然な操作。
- リリースノートの文言「選んだ日付を含む月曜日始まりの週へ移動できます」は、ユーザーが月曜以外を選んでもその週へ移動できることを想定しているが、現状の実装ではそのケースが正しく処理されず、エラー表示も出ないまま黙って今週表示に戻ってしまう。
- ユーザーは「日付ピッカーで先週の水曜を選んだのに、先週のランキングではなく今週のランキングが表示される」という体感になり、絞り込み条件やページ番号などURL状態を保持したまま意図しない週へ飛ばされる。
3. 期待動作
日付ピッカーでどの曜日を選んでも、選択日を含むJST月曜始まりの週(その週の月曜〜日曜)のランキングが正しく表示されること。不正な日付(未来日・存在しない日付など)の場合のみ現在週へフォールバックする。
4. 修正方針
vd_valid_week_start() を以下のように修正する:
- 入力値がYYYY-MM-DD形式で実在する日付であり、未来日でないかをまず検証する(月曜限定の検証は撤廃)。
- 検証をパスした日付から `(int)$date->format('N') - 1` 日分を引いてその週の月曜日を算出し、算出結果を返す。
- 算出後の月曜日が未来週になる場合は現在週にフォールバックする。
- 呼び出し側(ranking.phpなど、週間ランキング表示・URL構築処理)は、返り値が既に月曜日であることを前提にそのまま使えるため変更不要。
- 既存のURLパラメータで既に月曜日の値が渡されているケース(通常の前週・翌週移動ボタン)は従来通り動作することを回帰テストで確認する。
💬 返信 (3)
🛠 開発を開始しました (機能追加 (vegetable-drop))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「合体ドロップ」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=vegetable-drop
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/vegetable-drop/
ご利用ありがとうございます!
ご要望いただいた「合体ドロップ」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=vegetable-drop
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/vegetable-drop/
ご利用ありがとうございます!
Echo
Iris