リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: 合体ドロップ
タイトルのモードカードに「今月の1位」を追加
1. 目的:
タイトル画面(pages/play.php の #start-overlay モード選択カード)では現在、各モードの「今日」「今週」「歴代」の1位プレイヤーとスコアのみが表示されている(v1.80.0)。一方ランキング画面には既に「今月」タブがあり(v1.104.0)、ゲームオーバー直後の順位プレビューにも今月の順位が表示されている(v1.105.0)。タイトルのモードカードだけ「今月」が欠けており表示の一貫性がない。今月の1位もカードに表示することで、日替わり・週替わりに次ぐ中期スパンの競争状況を選択前に把握できるようにする。
2. 具体的な仕様:
- pages/play.php で $today_top_scores, $weekly_top_scores, $alltime_top_scores と同様に $monthly_top_scores をサーバー側で計算する。vd_jst_month_start() と vd_jst_month_end() を使い、各モードごとに `SELECT player_name, score FROM scores WHERE mode=? AND score_date BETWEEN ? AND ? ORDER BY score DESC, created_at ASC LIMIT 1` を実行し、既存の $weekly_top_scores 計算と同じ try/catch パターンで例外時は空配列にフォールバックする。
- render_layout に渡すクロージャの use 節へ $monthly_top_scores を追加し、モードカードを描画している既存のPHP/JSテンプレート(今日・今週・歴代のブロックのすぐ隣、歴代の前)に「今月」の行を1つ追加する。表示形式は既存の今週表示(プレイヤー名・スコア)に揃える。データが無い場合は既存の「まだ記録がありません」等の空表示ロジックをそのまま流用する。
- クライアントJS側でモードカードをレンダリングしている箇所(JSON_HEX系フラグでエスケープ済みの today_top_scores 等と同じ経路)に monthly_top_scores を追加し、既存の今日/今週/歴代と並列に描画する。既存のDOM構造・クラス名は変更せず、行を1行追加するのみ。
- 言語(ja/en)は既存の t() 辞書に 'label_monthly_top' 等のキーを追加し、既存の今週ラベルと同じ命名規則で用意する。
3. 既存機能との整合:
- 既存の today_top_scores / weekly_top_scores / alltime_top_scores の計算・表示ロジック、DOM、CSSクラスは変更しない。追加のクエリはモードごとに1件のLIMIT1 SELECTで、既存の月間ランキングと同じインデックス(idx_mode_date_score)を利用でき負荷増は小さい。取得失敗時は空配列にフォールバックしカード全体の表示が壊れないようにする。ランキング画面・ゲームオーバー画面の既存の今月表示ロジックとは独立した実装で、それらの動作には影響しない。
タイトル画面(pages/play.php の #start-overlay モード選択カード)では現在、各モードの「今日」「今週」「歴代」の1位プレイヤーとスコアのみが表示されている(v1.80.0)。一方ランキング画面には既に「今月」タブがあり(v1.104.0)、ゲームオーバー直後の順位プレビューにも今月の順位が表示されている(v1.105.0)。タイトルのモードカードだけ「今月」が欠けており表示の一貫性がない。今月の1位もカードに表示することで、日替わり・週替わりに次ぐ中期スパンの競争状況を選択前に把握できるようにする。
2. 具体的な仕様:
- pages/play.php で $today_top_scores, $weekly_top_scores, $alltime_top_scores と同様に $monthly_top_scores をサーバー側で計算する。vd_jst_month_start() と vd_jst_month_end() を使い、各モードごとに `SELECT player_name, score FROM scores WHERE mode=? AND score_date BETWEEN ? AND ? ORDER BY score DESC, created_at ASC LIMIT 1` を実行し、既存の $weekly_top_scores 計算と同じ try/catch パターンで例外時は空配列にフォールバックする。
- render_layout に渡すクロージャの use 節へ $monthly_top_scores を追加し、モードカードを描画している既存のPHP/JSテンプレート(今日・今週・歴代のブロックのすぐ隣、歴代の前)に「今月」の行を1つ追加する。表示形式は既存の今週表示(プレイヤー名・スコア)に揃える。データが無い場合は既存の「まだ記録がありません」等の空表示ロジックをそのまま流用する。
- クライアントJS側でモードカードをレンダリングしている箇所(JSON_HEX系フラグでエスケープ済みの today_top_scores 等と同じ経路)に monthly_top_scores を追加し、既存の今日/今週/歴代と並列に描画する。既存のDOM構造・クラス名は変更せず、行を1行追加するのみ。
- 言語(ja/en)は既存の t() 辞書に 'label_monthly_top' 等のキーを追加し、既存の今週ラベルと同じ命名規則で用意する。
3. 既存機能との整合:
- 既存の today_top_scores / weekly_top_scores / alltime_top_scores の計算・表示ロジック、DOM、CSSクラスは変更しない。追加のクエリはモードごとに1件のLIMIT1 SELECTで、既存の月間ランキングと同じインデックス(idx_mode_date_score)を利用でき負荷増は小さい。取得失敗時は空配列にフォールバックしカード全体の表示が壊れないようにする。ランキング画面・ゲームオーバー画面の既存の今月表示ロジックとは独立した実装で、それらの動作には影響しない。
💬 返信 (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