Skip to content

活動状況ページのソート順を改善(最新の活動日付を優先)#1786

Merged
yasulab merged 1 commit into
mainfrom
fix-activity-sort-logic
Jan 4, 2026
Merged

活動状況ページのソート順を改善(最新の活動日付を優先)#1786
yasulab merged 1 commit into
mainfrom
fix-activity-sort-logic

Conversation

@yasulab
Copy link
Copy Markdown
Member

@yasulab yasulab commented Jan 4, 2026

📝 概要

活動状況ページ(/dojos/activity)のソート順を改善し、実際に活発な道場が正しくリストの下部(レビュー不要)に配置されるようにしました。

🔍 問題の詳細

発見された問題

和歌山道場が活発にもかかわらず、リストの上位に表示されていました:

  • イベント履歴: 2017-03-12(古い)
  • ノート内の日付: 2025-08-17(新しい、実際の活動状況)
  • 現在のロジック: 古いイベント履歴を優先 → 2017年でソート → 上位表示 ❌

原因

現在のソートロジックは以下の優先順位で日付を選択:

# OR条件:最初に見つかった日付を使用
sort_date = dojo[:latest_event_at] || dojo[:note_date] || dojo[:created_at]

✅ 解決策

実装内容

より新しい日付を使用してソートするように修正:

# MAX条件:最も新しい日付を使用
dates = [dojo[:latest_event_at], dojo[:note_date], dojo[:created_at]].compact
sort_date = dates.max || dojo[:created_at]

改善後の動作

  • 和歌山道場: 2025-08-17でソート → リスト下部へ(直近開催) ✅
  • つくば道場: 2026-01-17でソート → さらに下部へ(直近開催) ✅

📊 効果

道場名 変更前のソート日付 変更後のソート日付 結果
和歌山 2017年(古いイベント) 2025年(最新のnote) 正しく下部へ移動
つくば 2026年(変更なし) 2026年(変更なし) 適切な位置を維持

🧪 テスト

  • 既存のテストがすべて通過
  • Rails runner で具体的な道場のソート順を検証
  • アクティブ・非アクティブ両方に同じロジックを適用

💡 レビューポイント

  • ソートロジックの変更が適切か
  • パフォーマンスへの影響は問題ないか
  • レビュー用途としての使いやすさは向上したか

📚 補足

この修正により、実際の活動状況がより正確に反映され、レビューが必要な道場(古い活動日付)が上位に、活発な道場(新しい活動日付)が下位に正しく配置されるようになります。

活動状況ページで、より新しい日付を使ってソートするように修正しました。
これにより、実際に活発な道場がリストの下の方(レビュー不要)に正しく配置されます。

変更前の問題:
- 古いイベント履歴がある場合、それが優先されて上位に表示
- 例:和歌山道場は2025年のnote日付があるのに、2017年のイベント履歴で上位表示

変更内容:
- latest_event_at、note_date、created_at の中から最も新しい日付を使用
- アクティブな道場、非アクティブな道場の両方に適用

効果:
- 和歌山:2017年 → 2025年でソート(正しくリスト下部へ)
- つくば:2026年でソート(さらに下部へ)
- レビューが必要な古い道場が上位に、活発な道場が下位に正しく配置
@yasulab yasulab merged commit f4c0107 into main Jan 4, 2026
5 checks passed
@yasulab yasulab deleted the fix-activity-sort-logic branch January 4, 2026 08:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant