Skip to content

検索結果一覧を非React化した#8801

Closed
nakamu-kazu222 wants to merge 228 commits intomainfrom
feature/change-searchables-not-react2
Closed

検索結果一覧を非React化した#8801
nakamu-kazu222 wants to merge 228 commits intomainfrom
feature/change-searchables-not-react2

Conversation

@nakamu-kazu222
Copy link
Copy Markdown
Contributor

@nakamu-kazu222 nakamu-kazu222 commented Jun 15, 2025

本PRは、#8203 の実装を移行したものです。
#8203 で多数のコンフリクトが発生したので、本PRおよびブランチを再作成しました。

Issue

概要

変更確認方法

1. 環境構築

  1. feature/change-searchables-not-reactをローカルに取り込む
  2. rails db:resetを実行する
  3. bin/setupを実行する
  4. foreman start -f Procfile.devを実行する
  5. 適当なユーザーでログインする(以下の手順の画像では、machidaユーザーでログインしている)

2. 検索の確認

検索ワードなしでの検索

  1. 右上の検索バーで「すべて」を選び、検索ワードはなしで検索する
  • すべての検索結果が表示されることを確認する
スクリーンショット 2025-03-21 23 02 55
  • 検索結果は、「提出物などの検索結果の種類」、「検索結果のタイトル(リンク付き)」、「検索結果のDescription」、「ユーザーアイコン、ユーザー名(リンク付き)」、「更新時間」が表示されていること
スクリーンショット 2025-03-21 23 50 27
  • コメントの場合は、タイトルの横に「コメント」と表示されていること
スクリーンショット 2025-03-21 23 08 06
  • WIPの場合は、タイトルの横に「WIP」と表示されていること
スクリーンショット 2025-03-21 23 36 40
  1. 右上の検索バーで「お知らせ」を選び、検索ワードはなしで検索する
  • お知らせのみ検索結果が表示されることを確認する
  • コメントの場合は、「更新時間」の右に「お知らせを作成したユーザー名(リンク付き)お知らせ」が表示されていること
スクリーンショット 2025-03-21 23 03 16
  1. 右上の検索バーで「プラクティス」を選び、検索ワードはなしで検索する
  • プラクティスのみの検索結果が表示されることを確認する
スクリーンショット 2025-03-21 23 03 31
  1. 右上の検索バーで「日報」を選び、検索ワードはなしで検索する
  • 日報のみ検索結果が表示されることを確認する
  • コメントの場合は、「更新時間」の右に「日報を作成したユーザー名(リンク付き)日報」が表示されていること
スクリーンショット 2025-03-21 23 03 50
  1. 右上の検索バーで「提出物」を選び、検索ワードはなしで検索する
  • 提出物のみ検索結果が表示されることを確認する
  • コメントの場合は、「更新時間」の右に「提出物を作成したユーザー名(リンク付き)提出物」が表示されていること
スクリーンショット 2025-03-21 23 04 08
  1. 右上の検索バーで「Q&A」を選び、検索ワードはなしで検索する
  • Q&Aのみ検索結果が表示されることを確認する
  • コメントの場合は、「更新時間」の右に「Q&Aを作成したユーザー名(リンク付き)Q&A」が表示されていること
スクリーンショット 2025-03-22 0 21 35
  1. 右上の検索バーで「Docs」を選び、検索ワードはなしで検索する
  • Docsのみ検索結果が表示されることを確認する
  • コメントの場合は、「更新時間」の右に「Docsを作成したユーザー名(リンク付き)Docs」が表示されていること
スクリーンショット 2025-03-22 0 22 06
  1. 右上の検索バーで「イベント」を選び、検索ワードはなしで検索する
  • イベントのみ検索結果が表示されることを確認する
  • コメントの場合は、「更新時間」の右に「イベントを作成したユーザー名(リンク付き)イベント」が表示されていること
スクリーンショット 2025-03-22 0 22 39
  1. 右上の検索バーで「定期イベント」を選び、検索ワードはなしで検索する
  • 定期イベントのみ検索結果が表示されることを確認する
  • コメントの場合は、「更新時間」の右に「定期イベントを作成したユーザー名(リンク付き)定期イベント」が表示されていること
スクリーンショット 2025-03-22 0 23 15
  1. 右上の検索バーで「ユーザー」を選び、検索ワードはなしで検索する
  • ユーザーのみ検索結果が表示されることを確認する
スクリーンショット 2025-03-21 23 05 49

検索ワードありでの検索

  1. 「すべて」を選び、1語の単語で検索する
  • 検索した1語の単語が含まれる検索結果が表示されること
  • 検索ワードが太字で表示されること
スクリーンショット 2025-03-22 0 11 50
  1. 「すべて」を選び、2語以上の単語で検索する
  • 検索した2語以上の単語が含まれる検索結果が表示されること
  • 検索ワードが太字で表示されること
スクリーンショット 2025-03-21 23 07 41
  1. 「ユーザー」を選び、ユーザー名で検索する
  • 検索したユーザーが表示されること
  • ログインユーザーが、メンター権限がある場合にユーザーを検索した時に、「更新時間」の右に「相談部屋(リンク付き)」が表示されること
スクリーンショット 2025-03-21 23 06 12
  • ログインユーザーが、メンター権限がない場合にユーザーを検索した時に、「更新時間」の右に何も表示されないこと
スクリーンショット 2025-03-21 23 06 31
  1. 検索したい項目を選び、「user:ユーザー名」で検索する
  • 検索したユーザーが更新した検索結果が表示されること
スクリーンショット 2025-03-21 23 07 24

Screenshot

非React化のみなので、画面の変更はなし

Summary by CodeRabbit

  • 新機能

    • 検索機能を全面的に刷新し、複数キーワードやユーザー指定による絞り込み、権限に応じた検索結果の表示に対応しました。
    • 記事の「注目の記事」タグによる特集記事表示スコープを追加し、トップページなどで動的に表示されるようになりました。
    • 検索結果を表現する新クラスを導入し、検索結果の情報を整理・強化しました。
  • 改善・変更

    • 検索結果ページをサーバーサイドレンダリングに変更し、バッジやユーザー情報、管理者向けリンクなどを詳細に表示。
    • 記事投稿フォームのタグ入力ヘルプを拡充し、各ページへの掲載方法を明記。
    • マークダウンからプレーンテキストへの変換やHTMLサニタイズ処理を統一化し、新たなユーティリティメソッドを追加。
    • ユーザーページのタブ表示条件を環境や権限に応じて制御。
    • 検索ヘルパーのURL生成や表示ロジックを整理し、アクセス制御を強化。
    • タグやフィクスチャデータ、テストデータを「注目の記事」対応で拡充・修正。
    • 検索処理の内部ロジックを分割・整理し、ユーザー視点の絞り込みや複数キーワード対応を実装。
    • コントローラーの検索処理を充実化し、API側の検索エンドポイントを廃止。
    • 検索関連のReactコンポーネントを削除し、サーバーサイドでのレンダリングに統一。
    • 検索対象モデルに検索ヘルパーを追加し、検索関連の振る舞いを統一。
  • バグ修正

    • 一部コントローラーやヘルパーのタイプミス修正・条件分岐の見直し。
  • スタイル

    • 特集記事の説明文に新しいCSSスタイルを追加。
  • テスト

    • 検索・記事・コメント・マークダウン処理・特集記事表示に関するテストを追加・拡充。
    • 検索ヘルパーのURL生成や表示制御に関するテストを強化。
    • マークダウン変換のユーティリティに対する単体テストを追加。
    • API検索エンドポイント関連の統合テストを削除。
    • システムテストのセレクター修正や表示内容の微調整を実施。
  • その他

    • 不要となったAPIエンドポイントやReactコンポーネント、関連テストの削除。
    • スキーマの細かな調整やインデックスの整理を実施。

umizaru and others added 30 commits June 11, 2025 16:12
undefined method `strip_tags'エラーがでたため
strip_tags を使うようにするためActionView::Helpers::SanitizeHelperを利用した
また、明示的に ActionController::Base.helpers.strip_tags を使うように変更した
rails test test/system/pages_test.rb:296が落ちていた
result_forと同じようなメソッド名にした
markdown_to_plain_textでHTMLに変換した影響があるテストエラーを解消した
rails test test/system/current_user/watches_test.rb:53
rails test test/system/current_user/bookmarks_test.rb:25
markdown_to_plain_textでHTMLに変換した影響があるテストエラーを解消した
API::SearchablesTestは不要なので削除した
SearchableTestでテスト結果数が異なったので修正した
SearchResultでstrip_tagsを使用するために、strip_tags をActionView::Base.full_sanitizer.sanitize に置き換えた
テストが落ちていたため修正した
該当プラクティスを修了するまで他の人の提出物へのコメントは見れないようにするテストの修正
test/fixtures/comments.ymlのデータを追加したので、テスト結果を変更した
markdown_to_plain_textでHTMLに変換する部分を修正したので、元に戻した
サマリーのメソッドを変更した
coderabbitaiから、パフォーマンスの問題が発生する可能性があるとのことで、リファクタリングした
@nakamu-kazu222
Copy link
Copy Markdown
Contributor Author

本PRで、コンフリクトが多数発生してしまったので、#8887 を再作成しました
そのため、本PRはCloseしまして、#8887 で実装をさせていただきます

@nakamu-kazu222 nakamu-kazu222 deleted the feature/change-searchables-not-react2 branch July 4, 2025 14:10
@nakamu-kazu222
Copy link
Copy Markdown
Contributor Author

feature/change-searchables-not-react2ブランチを削除しました

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.