組織一覧の並べ替え機能の追加

state: done

2026-06-05 07:58 セッション。組織一覧を作成日時・画像生成数で並べ替えられるようにした。

ゴール

システム管理画面の組織一覧(/organizations)で、 「組織作成日時(デフォルト)」「画像生成数」の昇順/降順の並べ替えをできるようにする。

決定事項

  1. 「画像生成数」の定義GenerationLog の件数。全期間累計全生成種別を合算論理削除(deletedAt)は除外。本データ構造では 1ログ = 1出力画像のため「生成回数=生成枚数」。
  2. データ取得方式: B案(全件メモリソート)はページネーション拡張に不向きのため不採用。 RAW SQL($queryRaw)で絞り込み+並べ替え済みの組織ID+画像生成数を取得 → findMany で表示用データ取得 → ID順に並べ直す方式を採用。 画像生成数は COUNT(... WHERE deleted_at IS NULL) で算出し、定義と完全一致させる。
  3. スコープ:本セッションは並べ替えに集中。ページネーションUIは対象外。 ただしRAW SQLは後段に LIMIT/OFFSET を足せば対応できる構造にした。
  4. UI(並び順の選択):既存の検索フォームに統合し、「検索」ボタンでまとめて反映。 1つのセレクトに4択(作成日時 新しい順/古い順、画像生成数 多い順/少ない順)。 内部的に sort(createdAt / generationCount)+ order(asc / desc)の2パラメータへ展開してURLへ保持。
  5. 既定作成日時の新しい順(createdAt desc)。 従来の「組織名昇順」既定は廃止。sort 未指定のURLは createdAt desc にフォールバック。
  6. 一覧カードの表示:並べ替えキーの値を表示。 指標行に 生成枚数、日付行に 登録日(createdAt) を追加。 テキストラベルは付けずアイコンのみとし、各アイコンに title ツールチップを付与。 日付3種は別々のアイコンで判別(CalendarPlus/CalendarCheck/CalendarX)。

データフロー

検索フォーム sort / order page.tsx searchParams 解釈 listOrganization ①RAW SQL: 並替ID+件数 ②findMany: 表示データ ③ID順に並べ直し 一覧カード アイコン+値

変更したファイル

検証