Repository: fjordllc/bootcamp
Pull request #8468: 卒業後に就職したかどうかなどを登録できるようにした
Author: login: kitarou888
Created: 2025-03-20T12:41:32Z | Merged: 2025-05-07T16:29:01Z

## Issue

- #8176 

## 概要
ユーザー情報に「卒業後の進路」を追加し、管理者のみ閲覧、編集できるようにした。
また、既存の「就活中かどうか（Boolean）」は同情報に統合した。

- 進路（Enum）
    - 就職した（Lokkaの紹介）
    - 就職した（Lokkaの紹介を使わず）
    - IT系以外に就職した
    - 社内転職でプログラマーになった
    - 就職していない
- 進路に関するメモ（Text）

## 変更確認方法

1. 本PRのブランチをローカルに取り込む
    1. `git fetch origin pull/8468/head:pr-8468-review`
    2. `git switch pr-8468-review`
2. `bin/rails db:reset`を実行する（migrateする＆seedデータを更新するため）
3. `foreman start -f Procfile.dev`でローカルサーバーを起動する
4. ユーザー名`machida`、パスワード`testtest`でログインする（管理者アカウント）
5. [sotugyouさんのプロフィールページ](http://localhost:3000/users/609827778)にアクセスする
6. 表示確認
    1. 右上に「卒業後の進路」欄が表示されていることを確認する<br><img width="966" alt="image" src="https://github.com/user-attachments/assets/96d405c6-22f8-40c3-8916-7b357d6547a1" />

7. 編集確認
    1. 右下「管理者として情報変更」ボタンを押下する
    2. 「卒業生の進路」欄のラジオボタンを「就職活動中」以外のいずれかに変更し、メモ（卒業後の進路）に任意のテキストを入力する<br><img width="709" alt="image" src="https://github.com/user-attachments/assets/1020e4e9-e580-4123-8806-82d189e44f7e" />
    3. 一番下「更新する」ボタンを押下する
    4. 「卒業後の進路」欄が更新されていることを確認する<br><img width="963" alt="image" src="https://github.com/user-attachments/assets/76d643f0-eeb1-41bd-a1cc-852012b45519" />

8. 「就職活動中」ユーザー表示機能のデグレ確認
    1. [就職活動中のユーザー一覧ページ](http://localhost:3000/users?target=job_seeking)にアクセスする
    2. sotugyouユーザーが表示されないことを確認する
    3. 上記7.の手順にて「卒業生の進路」欄のラジオボタンを「就職活動中」に変更し、「更新する」ボタンを押下する<br><img width="643" alt="image" src="https://github.com/user-attachments/assets/a0350337-3d19-4bd6-a339-37d859475f8f" />
    4. 再度[就職活動中のユーザー一覧ページ](http://localhost:3000/users?target=job_seeking)にアクセスし、sotugyouユーザーが表示されることを確認する<br><img width="1051" alt="image" src="https://github.com/user-attachments/assets/807351dd-5f25-4cf6-b8b6-3dcf55eb4a0c" />


### DBを元に戻す
このブランチで`bin/rails db:reset`を実行した後に、元のDBスキーマに戻すには以下を実行してください。

1. `bin/rails db:migrate:down VERSION=20250323213623`、`bin/rails db:migrate:down VERSION=20250320090236`の順にロールバックを実行する
2. `schema.rb`が変更されるので、`git restore db/schema.rb`で戻す（mainブランチにswitchするため）
- `git switch main`でmainブランチへswitchする
- `bin/rails db:reset`を実行し、元のDBスキーマに戻す


## Screenshot

### １．（管理者から見た）ユーザー詳細ページの「卒業後の進路」欄
#### 変更前
<img width="1332" alt="image" src="https://github.com/user-attachments/assets/27e73f9e-15ce-4729-8720-1bdbd91c30f1" />

#### 変更後
<img width="1329" alt="image" src="https://github.com/user-attachments/assets/8a2facc3-dfbc-40f4-8434-07255b74683e" />

### ２．管理者によるユーザー編集ページ
#### 変更前
<img width="1277" alt="image" src="https://github.com/user-attachments/assets/7b645500-0010-4771-a7af-e7bfad89bc7e" />

#### 変更後
<img width="1222" alt="image" src="https://github.com/user-attachments/assets/af802fc5-1372-454e-add4-2cd4aef4f1e7" />

### ３．就職活動中のトグルスイッチ（（管理者から見た）ユーザー詳細ページ）
#### 変更前
![image](https://github.com/user-attachments/assets/93018bc4-aa95-464d-9ed3-396ec344025f)

#### 変更後
![image](https://github.com/user-attachments/assets/45b173bf-efcc-4b50-9779-7225f5824096)


### ４．就職活動中のトグルスイッチ（相談ページ）
#### 変更前
![image](https://github.com/user-attachments/assets/23e3aa25-e465-43fc-8f12-8c12c13de24d)

#### 変更後
![image](https://github.com/user-attachments/assets/b5e02030-7d52-455d-952a-36c84df609dc)



Diff:
diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb
index ef0253eb0a3..77bc9a080fe 100644
--- a/app/controllers/admin/users_controller.rb
+++ b/app/controllers/admin/users_controller.rb
@@ -62,10 +62,11 @@ def user_params
       :password, :password_confirmation, :job,
       :organization, :os, :study_place,
       { experiences: [] }, :company_id,
-      :trainee, :job_seeking, :nda, :avatar,
+      :trainee, :nda, :avatar,
       :graduated_on, :retired_on,
       :job_seeker, :github_collaborator,
       :officekey_permission, :tag_list, :training_ends_on,
+      :career_path, :career_memo,
       :auto_retire, :invoice_payment, :hide_mentor_profile,
       :profile_image, :profile_name, :profile_job, :mentor,
       :profile_text, { authored_books_attributes: %i[id title url cover _destroy] },
diff --git a/app/controllers/current_user_controller.rb b/app/controllers/current_user_controller.rb
index 8a7828cb9f0..845753a9ac1 100644
--- a/app/controllers/current_user_controller.rb
+++ b/app/controllers/current_user_controller.rb
@@ -22,7 +22,7 @@ def user_params
     user_attribute = [
       :adviser, :login_name, :name,
       :name_kana, :email, :course_id,
-      :description, :job_seeking,
+      :description,
       :github_account, :twitter_account, :facebook_url,
       :blog_url, :password, :password_confirmation,
       :job, :organization, :os,
diff --git a/app/controllers/job_seek_controller.rb b/app/controllers/job_seek_controller.rb
deleted file mode 100644
index 7ab57587280..00000000000
--- a/app/controllers/job_seek_controller.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-# frozen_string_literal: true
-
-class JobSeekController < ApplicationController
-  skip_before_action :require_active_user_login, raise: false
-
-  before_action :set_user, only: %i[update]
-  before_action :set_redirect_url, only: %i[update]
-
-  def update
-    return unless current_user.admin?
-
-    if @user.update(user_params)
-      redirect_to @redirect_url, notice: "#{@user.login_name}の就職活動中の情報を更新しました。"
-    else
-      redirect_to @redirect_url, alert: "#{@user.login_name}の就職活動中の情報を更新できませんでした。"
-    end
-  end
-
-  private
-
-  def set_user
-    @user = User.find(params[:user_id])
-  end
-
-  def set_redirect_url
-    @redirect_url = request.referer || admin_users_url
-  end
-
-  def user_params
-    params.require(:user).permit(:job_seeking)
-  end
-end
diff --git a/app/models/unfinished_data_destroyer.rb b/app/models/unfinished_data_destroyer.rb
index 8558314874e..6af72f7484e 100644
--- a/app/models/unfinished_data_destroyer.rb
+++ b/app/models/unfinished_data_destroyer.rb
@@ -5,6 +5,6 @@ def call(payload)
     user = payload[:user]
     Product.where(user:).unchecked.destroy_all
     Report.where(user:).wip.destroy_all
-    user.update(job_seeking: false)
+    user.update(career_path: 0)
   end
 end
diff --git a/app/models/user.rb b/app/models/user.rb
index 8c2c58cdc95..a6d2a67a728 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -85,6 +85,16 @@ class User < ApplicationRecord
     other: 99
   }, _prefix: true
 
+  enum career_path: {
+    unset: 0,
+    job_seeking: 1,
+    employed_via_referral: 2,
+    employed_without_referral: 3,
+    employed_non_it: 4,
+    internal_transfer_to_programmer: 5,
+    not_employed: 6
+  }, _prefix: true
+
   belongs_to :company, optional: true
   belongs_to :course
   has_many :learnings, dependent: :destroy
@@ -405,7 +415,7 @@ class User < ApplicationRecord
   scope :admins, -> { where(admin: true) }
   scope :admins_and_mentors, -> { admins.or(mentor) }
   scope :trainees, -> { where(trainee: true) }
-  scope :job_seeking, -> { where(job_seeking: true) }
+  scope :job_seeking, -> { where(career_path: 'job_seeking') }
   scope :job_seekers, lambda {
     where(
       admin: false,
diff --git a/app/views/talks/_seeking_switch.html.slim b/app/views/talks/_seeking_switch.html.slim
deleted file mode 100644
index 44eb65d0cd3..00000000000
--- a/app/views/talks/_seeking_switch.html.slim
+++ /dev/null
@@ -1,5 +0,0 @@
-.form-item.is-inline.is-centered#seeking-flag
-  = f.label :job_seeking, class: 'a-form-label is-sm'
-  label.a-on-off-checkbox.is-sm
-    = f.check_box :job_seeking, onchange: 'this.form.submit()', class: 'is-job -seeking-checkbox'
-    span#checkbox-seeking-flag
diff --git a/app/views/talks/show.html.slim b/app/views/talks/show.html.slim
index 8bae38cdfd4..3eeea769288 100644
--- a/app/views/talks/show.html.slim
+++ b/app/views/talks/show.html.slim
@@ -87,9 +87,6 @@
                     .user-statuses__items
                       .user-statuses__item
                         = link_to 'ユーザー情報変更', edit_admin_user_path(@talk.user), class: 'card-main-actions__action a-button is-sm is-secondary is-block'
-                      .user-statuses__item
-                        = form_with model: @user, local: true, url: user_job_seek_path(@user), class: 'form', html: { name: 'jobseeking' } do |f|
-                          = render 'talks/seeking_switch', f:
                       .user-statuses__item
                         .graduation_button
                           - if @user.graduated_on?
diff --git a/app/views/users/_form.html.slim b/app/views/users/_form.html.slim
index 45fef0a010b..db31649b023 100644
--- a/app/views/users/_form.html.slim
+++ b/app/views/users/_form.html.slim
@@ -103,13 +103,25 @@
             .form-item-block__title
               | ユーザーステータス
           .form-item-block__items
-            .form-item-block__item
-              = render 'users/form/job_seeking', f: f
             .form-item-block__item
               = render 'users/form/retire', f: f
             .form-item-block__item
               = render 'users/form/graduate', f: f
 
+      .form-item
+        label.a-form-label
+          | 卒業後の進路
+        ul.block-checks.is-2-items.mt-4
+          - career_paths = User.career_paths.keys
+          - career_paths.each do |career_path|
+            li.block-checks__item
+              .a-block-check.is-radio
+                = f.radio_button :career_path, career_path, id: career_path, class: 'a-toggle-checkbox'
+                = f.label :career_path, for: career_path, class: 'a-block-check__label has-icon is-ta-left' do
+                  = t("activerecord.enums.user.career_path.#{career_path}")
+      .form-item
+        = render 'users/form/career_memo', f: f, user: user
+
       .form-item-block
         .form-item-block__inner
           header.form-item-block__header
diff --git a/app/views/users/form/_career_memo.html.slim b/app/views/users/form/_career_memo.html.slim
new file mode 100644
index 00000000000..105c07f2b71
--- /dev/null
+++ b/app/views/users/form/_career_memo.html.slim
@@ -0,0 +1,4 @@
+.form-item
+  - placeholder = '◯◯社に2025年1月入社'
+  = f.label :career_memo, class: 'a-form-label'
+  = f.text_area :career_memo, class: 'a-text-input is-sm', placeholder: placeholder
diff --git a/app/views/users/form/_job_seeking.html.slim b/app/views/users/form/_job_seeking.html.slim
deleted file mode 100644
index d688f45e322..00000000000
--- a/app/views/users/form/_job_seeking.html.slim
+++ /dev/null
@@ -1,6 +0,0 @@
-ul.block-checks.is-1-item
-  li.block-checks__item
-    .a-block-check.is-checkbox
-      = f.check_box :job_seeking, class: 'a-toggle-checkbox'
-      = f.label :job_seeking, class: 'a-block-check__label is-ta-left' do
-        = User.human_attribute_name :job_seeking
diff --git a/app/views/users/show.html.slim b/app/views/users/show.html.slim
index d0a6944de67..48092d8acdd 100644
--- a/app/views/users/show.html.slim
+++ b/app/views/users/show.html.slim
@@ -67,6 +67,24 @@
                     = render 'users/metas', user: @user, user_course_practice: UserCoursePractice.new(@user)
 
           .col-xs-12(class="#{visible_learning_time_frames?(@user) ? 'col-lg-4 col-xxl-4' : 'col-lg-6 col-xxl-6'}")
+            - if admin_login?
+              .a-card.is-only-mentor
+                .card-header.is-sm
+                  h2.card-header__title
+                    | 卒業後の進路
+                    | （#{t("activerecord.enums.user.career_path.#{@user.career_path}")}）
+                hr.a-border-tint
+                .card-body
+                  .card-body__description
+                    - if @user.career_memo.present?
+                      .a-long-text.is-sm
+                        = simple_format(@user.career_memo)
+                    - else
+                      .o-empty-message
+                        .o-empty-message__icon
+                          i.fa-regular.fa-sad-tear
+                        .o-empty-message__text
+                          | 進路メモはまだありません。
             - if admin_or_mentor_login?
               = render 'users/user_mentor_memo', user_id: @user.id
             - unless @user.total_learning_time.zero? || @user.mentor?
@@ -88,9 +106,6 @@
                   .user-statuses__items
                     .user-statuses__item
                       = link_to '管理者として情報変更', edit_admin_user_path, class: 'card-main-actions__action a-button is-sm is-secondary is-block'
-                    .user-statuses__item
-                      = form_with model: @user, local: true, url: user_job_seek_path(@user), class: 'form', html: { name: 'jobseeking' } do |f|
-                        = render 'talks/seeking_switch', f:
                     .user-statuses__item
                       - if @user.graduated?
                         .a-button.is-sm.is-disabled.is-block
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 5dae6c05566..3f3b6384afe 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -57,6 +57,7 @@ ja:
         login_name: アカウント
         name: 名前（ニックネームも可）
         name_kana: 名前（カナ）
+        career_memo: メモ（卒業後の進路）
         course_id: コース
         description: 自己紹介
         email: Email
@@ -392,6 +393,14 @@ ja:
           average: どちらでもない
           poor: 悪い
           very_poor: とても悪い
+        career_path:
+          unset: 未設定
+          job_seeking: 就職活動中
+          employed_via_referral: 就職した（Lokkaの紹介）
+          employed_without_referral: 就職した（Lokkaの紹介を使わず）
+          employed_non_it: IT系以外に就職した
+          internal_transfer_to_programmer: 社内転職でプログラマーになった
+          not_employed: 就職していない
       learning:
         status:
           unstarted: 未着手
diff --git a/config/routes/users.rb b/config/routes/users.rb
index 945ca97ce4e..764e84e12a2 100644
--- a/config/routes/users.rb
+++ b/config/routes/users.rb
@@ -19,7 +19,6 @@
     resources :micro_reports, only: %i[index create], controller: "users/micro_reports"
     get "portfolio" => "users/works#index", as: :portfolio
     patch "graduation", to: "graduation#update", as: :graduation
-    patch "job_seek", to: "job_seek#update"
     resource :mail_notification, only: %i(edit update), controller: "users/mail_notification"
   end
 
diff --git a/db/data/20250321000000_migrate_job_seeking_status.rb b/db/data/20250321000000_migrate_job_seeking_status.rb
new file mode 100644
index 00000000000..1a79c5259cf
--- /dev/null
+++ b/db/data/20250321000000_migrate_job_seeking_status.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class MigrateJobSeekingStatus < ActiveRecord::Migration[6.1]
+  def up
+    User.where(job_seeking: true).find_each do |user|
+      user.update!(career_path: 1)
+    end
+  end
+
+  def down
+    raise ActiveRecord::IrreversibleMigration
+  end
+end
diff --git a/db/fixtures/users.yml b/db/fixtures/users.yml
index db6721eabdc..7cc7a9ae5cf 100644
--- a/db/fixtures/users.yml
+++ b/db/fixtures/users.yml
@@ -552,7 +552,7 @@ sumi:
   os: mac_apple
   experiences: 1
   job_seeker: true
-  job_seeking: true
+  career_path: 1
   unsubscribe_email_token: iIT7nlauOm7TOhQFoLs3UA
   updated_at: "2021-01-01 00:00:18"
   created_at: "2021-01-01 00:00:18"
@@ -749,7 +749,7 @@ take8:
   job: office_worker
   os: mac
   job_seeker: true
-  job_seeking: true
+  career_path: 1
   unsubscribe_email_token: iIT7nlauOm7TOhQFoLs3UA
   updated_at: "2021-01-01 00:00:27"
   created_at: "2021-01-01 00:00:27"
diff --git a/db/migrate/20250320090236_add_career_path_to_users.rb b/db/migrate/20250320090236_add_career_path_to_users.rb
new file mode 100644
index 00000000000..31db5638cc2
--- /dev/null
+++ b/db/migrate/20250320090236_add_career_path_to_users.rb
@@ -0,0 +1,6 @@
+class AddCareerPathToUsers < ActiveRecord::Migration[6.1]
+  def change
+    add_column :users, :career_path, :integer, null: false, default: 0
+    add_column :users, :career_memo, :text
+  end
+end
diff --git a/db/migrate/20250323213623_remove_job_seeking_from_users.rb b/db/migrate/20250323213623_remove_job_seeking_from_users.rb
new file mode 100644
index 00000000000..542d9b949c2
--- /dev/null
+++ b/db/migrate/20250323213623_remove_job_seeking_from_users.rb
@@ -0,0 +1,5 @@
+class RemoveJobSeekingFromUsers < ActiveRecord::Migration[6.1]
+  def change
+    remove_column :users, :job_seeking, :boolean
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 02ebd9dbda5..4e599bbddeb 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -922,6 +922,8 @@
     t.integer "experiences", default: 0, null: false
     t.integer "referral_source"
     t.text "other_referral_source"
+    t.integer "career_path", default: 0, null: false
+    t.text "career_memo"
     t.index ["course_id"], name: "index_users_on_course_id"
     t.index ["email"], name: "index_users_on_email", unique: true
     t.index ["github_id"], name: "index_users_on_github_id", unique: true
diff --git a/test/fixtures/discord_profiles.yml b/test/fixtures/discord_profiles.yml
index 06ef80677a4..3445a75f568 100644
--- a/test/fixtures/discord_profiles.yml
+++ b/test/fixtures/discord_profiles.yml
@@ -234,3 +234,8 @@ discord_profire_ios-course:
   user: ios-course
   account_name:
   times_url:
+
+discord_profile_jobseeking:
+  user: jobseeking
+  account_name:
+  times_url:
diff --git a/test/fixtures/talks.yml b/test/fixtures/talks.yml
index d954453a19b..30c103b4a08 100644
--- a/test/fixtures/talks.yml
+++ b/test/fixtures/talks.yml
@@ -170,3 +170,7 @@ talk45:
 talk46:
   user: ios-course
   action_completed: true
+
+talk47:
+  user: jobseeking
+  action_completed: true
diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml
index 63fdd65d984..6005946cab5 100644
--- a/test/fixtures/users.yml
+++ b/test/fixtures/users.yml
@@ -449,6 +449,30 @@ jobseeker: #就活希望するユーザー
   last_activity_at: "2020-01-01 00:00:12"
   sent_student_followup_message: true
 
+jobseeking: # 就職活動中の卒業生
+  login_name: jobseeking
+  email: jobseeking@fjord.jp
+  crypted_password: $2a$10$n/xv4/1luueN6plzm2OyDezWlZFyGHjQEf4hwAW1r3k.lCm0frPK. # testtest
+  salt: zW3kQ9ubsxQQtzzzs4ap
+  name: 就活 中
+  name_kana: シュウカツ チュウ
+  github_account: jobseeking
+  twitter_account: jobseeking
+  facebook_url: https://www.facebook.com/fjordllc/exmaple
+  blog_url: http://example.org
+  description: "卒業しました。就職活動中です。"
+  course: course1
+  job: office_worker
+  os: mac
+  experiences: 6
+  job_seeker: true
+  career_path: 1
+  graduated_on: "2015-01-01"
+  unsubscribe_email_token: Z2tKHxSjj7FreyqQ95Yd9g
+  updated_at: "2020-01-01 00:50:12"
+  created_at: "2020-01-01 00:50:12"
+  last_activity_at: "2020-01-01 00:50:12"
+
 nippounashi: # 日報を投稿していないユーザー
   login_name: nippounashi
   email: nippounashi@fjord.jp
diff --git a/test/models/user_test.rb b/test/models/user_test.rb
index c1d97e8d51f..bb3844d62d2 100644
--- a/test/models/user_test.rb
+++ b/test/models/user_test.rb
@@ -761,4 +761,9 @@ class UserTest < ActiveSupport::TestCase
     assert_nil user.country_code
     assert_nil user.subdivision_code
   end
+
+  test '.job_seeking' do
+    user = users(:jobseeking)
+    assert_includes User.job_seeking, user
+  end
 end
diff --git a/test/system/auto_retire_test.rb b/test/system/auto_retire_test.rb
index cbbce6f0ca0..df660e09202 100644
--- a/test/system/auto_retire_test.rb
+++ b/test/system/auto_retire_test.rb
@@ -91,7 +91,7 @@ class AutoRetireTest < ApplicationSystemTestCase
 
   test 'delete unfinished data when retire' do
     user = users(:kyuukai)
-    user.update!(job_seeking: true)
+    user.update!(career_path: 1)
     assert user.products.unchecked.count.positive?
     assert user.reports.wip.count.positive?
 
@@ -104,7 +104,7 @@ class AutoRetireTest < ApplicationSystemTestCase
       assert_equal Date.current, user.reload.retired_on
     end
 
-    assert_not user.job_seeking
+    assert_not_equal user.career_path, 1
     assert_equal 0, user.products.unchecked.count
     assert_equal 0, user.reports.wip.count
   end
diff --git a/test/system/talks_test.rb b/test/system/talks_test.rb
index 466132effaa..909006d3e01 100644
--- a/test/system/talks_test.rb
+++ b/test/system/talks_test.rb
@@ -423,15 +423,6 @@ class TalksTest < ApplicationSystemTestCase
     has_no_css?('page-tabs')
   end
 
-  test 'change job seeking flag when click toggle button' do
-    user = users(:hajime)
-
-    visit_with_auth talk_path(user.talk), 'komagata'
-
-    check '就職活動中', allow_label_click: true
-    assert user.reload.job_seeking
-  end
-
   test 'hide user icon from recent reports in talk show' do
     user = users(:hajime)
     visit_with_auth "/talks/#{user.talk.id}", 'komagata'
diff --git a/test/system/users_test.rb b/test/system/users_test.rb
index a837f28bbfe..31d7ab39909 100644
--- a/test/system/users_test.rb
+++ b/test/system/users_test.rb
@@ -377,13 +377,6 @@ class UsersTest < ApplicationSystemTestCase
     assert_no_selector 'label.a-form-label', text: '活動時間'
   end
 
-  test 'change job seeking flag when click toggle button' do
-    user = users(:hajime)
-    visit_with_auth user_path(user.id), 'komagata'
-    check '就職活動中', allow_label_click: true
-    assert user.reload.job_seeking
-  end
-
   test 'GET /users/new' do
     visit '/users/new'
     assert_equal 'FBC参加登録 | FJORD BOOT CAMP（フィヨルドブートキャンプ）', title
@@ -482,7 +475,7 @@ class UsersTest < ApplicationSystemTestCase
 
   test 'search only graduated students when target is graduate' do
     visit_with_auth '/users?target=graduate', 'komagata'
-    assert_selector '.users-item', count: 3
+    assert_selector '.users-item', count: 4
     fill_in 'js-user-search-input', with: '卒業 就職済美'
     find('#js-user-search-input').send_keys :return
     assert_text '卒業 就職済美', count: 1
@@ -559,9 +552,14 @@ class UsersTest < ApplicationSystemTestCase
   end
 
   test "don't show incremental search when target's users aren't exist" do
+    user = users(:jobseeking)
+    user.update!(career_path: 0)
+
     visit_with_auth '/users?target=job_seeking', 'komagata'
     assert_no_selector '.users-item'
     assert has_no_field? 'js-user-search-input'
+
+    user.update!(career_path: 1)
   end
 
   test 'only show incremental search in all tab' do


Reviews:
user: login: nakamu-kazu222
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-12T14:10:03Z
user: login: komagata
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-22T16:42:06Z
user: login: kitarou888
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-23T00:09:32Z
user: login: kitarou888
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-23T13:36:13Z
user: login: komagata
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-04T20:49:38Z
user: login: komagata
body: 確認させて頂きました。OKです〜🙆‍♂️
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-07T16:28:53Z

Review comments:
diff_hunk: @@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class MigrateJobSeekingStatus < ActiveRecord::Migration[6.1]
path: db/data/20250321000000_migrate_job_seeking_status.rb
user: login: komagata
body: 👍 
created_at: 2025-04-22T16:41:23Z
author_association: MEMBER
diff_hunk: @@ -127,8 +127,8 @@
   end
 
   create_table "categories", id: :serial, force: :cascade do |t|
-    t.string "name", limit: 255
-    t.string "slug", limit: 255
+    t.string "name"
+    t.string "slug"
path: db/schema.rb
user: login: komagata
body: 関係ないところが変わっているかもです。
created_at: 2025-04-22T16:41:59Z
author_association: MEMBER
diff_hunk: @@ -127,8 +127,8 @@
   end
 
   create_table "categories", id: :serial, force: :cascade do |t|
-    t.string "name", limit: 255
-    t.string "slug", limit: 255
+    t.string "name"
+    t.string "slug"
path: db/schema.rb
user: login: kitarou888
body: 承知しました。
修正の仕方の確認なのですが、差分を手直しするので問題ないでしょうか？
created_at: 2025-04-23T00:09:32Z
author_association: CONTRIBUTOR
diff_hunk: @@ -127,8 +127,8 @@
   end
 
   create_table "categories", id: :serial, force: :cascade do |t|
-    t.string "name", limit: 255
-    t.string "slug", limit: 255
+    t.string "name"
+    t.string "slug"
path: db/schema.rb
user: login: kitarou888
body: メモ）
本日の質問タイムで駒形さんより確認済
（手書きで差分をなくしてよい）
created_at: 2025-04-23T13:36:13Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,5 @@
+.form-item
+  ruby:
+    placeholder = '◯◯社に2025年1月入社'
path: app/views/users/form/_career_memo.html.slim
user: login: komagata
body: ```suggestion
  - placeholder = '◯◯社に2025年1月入社'
```

1行であればこちらがいいかもです。
created_at: 2025-05-04T20:48:31Z
author_association: MEMBER
diff_hunk: @@ -449,6 +449,30 @@ jobseeker: #就活希望するユーザー
   last_activity_at: "2020-01-01 00:00:12"
   sent_student_followup_message: true
 
+jobseeking: #就職活動中の卒業生
path: test/fixtures/users.yml
user: login: komagata
body: ```suggestion
jobseeking: # 就職活動中の卒業生
```

慣習でコメントの後は1スペース開けるのがいいかなと思います。
created_at: 2025-05-04T20:49:27Z
author_association: MEMBER

PR comments:
user: login: kitarou888
created_at: 2025-03-24T12:44:28Z
body: @machida 
すみません、以下の2箇所にデザイン入れおよび確認をお願いできますでしょうか🙏

1. 管理者から見たユーザー詳細ページ
    - `app/views/users/show.html.slim`、75〜81行目
<img width="1213" alt="image" src="https://github.com/user-attachments/assets/d0081c8f-5466-486d-ba77-5bfa6c9d231b" />


2. 管理者編集ページ
    - `app/views/users/_form.html.slim`、112〜123行目
    - `app/views/users/form/_career_memo.html.slim`
<img width="894" alt="image" src="https://github.com/user-attachments/assets/cb6d2e06-3f79-45ed-b5ea-1d671b0b9144" />


author_association: CONTRIBUTOR
user: login: machida
created_at: 2025-03-30T23:46:59Z
body: @kitarou888 お待たせしました！デザインいれましたー

author_association: MEMBER
user: login: kitarou888
created_at: 2025-04-03T05:10:12Z
body: @nakamu-kazu222 
お疲れさまです！
こちらのコードレビューをお願いできますでしょうか？？
全然急いでいませんので、ご検討いただけるとうれしいです🙏
もし難しいようでしたらご連絡いただければと思います！
author_association: CONTRIBUTOR
user: login: nakamu-kazu222
created_at: 2025-04-06T10:12:31Z
body: @kitarou888

申し訳ございません、確認遅れました

1週間程度レビューにお時間いただけますと幸いです
よろしくお願い致します

また、コンフリクトが発生していますので、解消していただけますと幸いです
author_association: CONTRIBUTOR
user: login: kitarou888
created_at: 2025-04-09T04:58:41Z
body: @nakamu-kazu222 
コンフリクトのご指摘ありがとうございます
先ほど対応が完了しましたのでご連絡します
author_association: CONTRIBUTOR
user: login: nakamu-kazu222
created_at: 2025-04-10T15:58:55Z
body:  @kitarou888 

すみません、`db/schema.rb`のコンフリクトが出ています

`db/schema.rb`のコンフリクト以外は動作、コードで問題ございませんでした
`db/schema.rb`のコンフリクトが解消しましたら、再度ご連絡ください
author_association: CONTRIBUTOR
user: login: kitarou888
created_at: 2025-04-11T15:27:34Z
body: @nakamu-kazu222 
コードの確認をありがとうございました！

コンフリクトも先ほど解消しましたので、お手数ですがご確認お願いできますでしょうか？

また、以下2点を差分として追加していますのでこちらもご確認いただければ幸いです

1. `db/data/20250321000000_migrate_job_seeking_status.rb`ファイルの追加（本番環境データ更新用）
https://github.com/fjordllc/bootcamp/pull/8468/files#diff-e62c9d97433b96288e8f2ac39cc0ac8ef2f44198ca9ba86648ad8e2d64ecedb7
1. PRにスクリーンショット追加（「就職活動中」トグルスイッチをUIから削除）
「３．就職活動中のトグルスイッチ（（管理者から見た）ユーザー詳細ページ）」と「４．就職活動中のトグルスイッチ（相談ページ）」
author_association: CONTRIBUTOR
user: login: nakamu-kazu222
created_at: 2025-04-12T14:11:54Z
body: @kitarou888

ご対応いただきありがとうございます
動作、コードで問題がないと判断しましたので、Approveしました
author_association: CONTRIBUTOR
user: login: kitarou888
created_at: 2025-04-12T14:46:15Z
body: @nakamu-kazu222 
承知しました！
レビューいただきありがとうございました🙏

@komagata 
メンバーレビューでApproveいただきましたので、コードレビューのほどお願いします！
author_association: CONTRIBUTOR
user: login: komagata
created_at: 2025-04-20T11:19:12Z
body: @kitarou888 DraftになっているのでレビューOKでしたら変更お願いします。
author_association: MEMBER
user: login: kitarou888
created_at: 2025-04-20T11:25:01Z
body: @komagata 
すみません、Draftから「ready for review」に変更しましたのでレビューをお願いします！
author_association: CONTRIBUTOR
user: login: kitarou888
created_at: 2025-04-23T22:39:59Z
body: @komagata 
`db/schema.rb`の差分修正が完了しましたので、再レビューのほどお願いします！
author_association: CONTRIBUTOR
user: login: kitarou888
created_at: 2025-05-07T05:54:05Z
body: @komagata 
修正が完了しましたので再レビューをお願いします！

※`test/fixtures/users.yml`のコメント文には # の後に半角スペースを含んでいないものが他にも見られるため（私はそれを参考にしてしまいました）、別PRを立てて私の方で修正しようと思います。
author_association: CONTRIBUTOR
user: login: komagata
created_at: 2025-05-08T07:01:00Z
body: @kitarou888 
ステージング環境で動作を確認しました。
（ミーティング後にマージしてしまったため、今日のリリースに間に合わせるためにこちらで確認作業をさせていただきました）
author_association: MEMBER
user: login: kitarou888
created_at: 2025-05-08T07:10:47Z
body: @komagata 
承知しました。
ご対応ありがとうございました。
author_association: CONTRIBUTOR
user: login: machida
created_at: 2025-05-08T09:55:54Z
body: @kitarou888 本番で確認できましたー🙆🏻‍♂️
author_association: MEMBER