Skip to content

入って1週間のユーザーにはメンターにしか表示されないマークを表示した#8700

Merged
komagata merged 37 commits intomainfrom
feature/add-mark-to-new-user-only-mentor
Jul 16, 2025
Merged

入って1週間のユーザーにはメンターにしか表示されないマークを表示した#8700
komagata merged 37 commits intomainfrom
feature/add-mark-to-new-user-only-mentor

Conversation

@hirokiej
Copy link
Copy Markdown
Contributor

@hirokiej hirokiej commented May 26, 2025

Issue

  • 入って1週間のユーザーにはメンターにしか表示されないマークを表示する。
    #8269

概要

  • メンターがログインしている状態で、メンターモードをONにした場合、入会して1週間のユーザーのアイコンにis-new-userが付与され、新規ユーザーのマークが表示されるようにしました。

  • 通常ユーザーには is-standard-user クラスを付与されます。

  • joining_statusで動的にクラスを付与されるようになっています。

  • Slim、React、Vueファイルのそれぞれで共通化をしました。

    • 将来的に、非Vue化するとのことなので、Vueは共通化していません。

変更確認方法

  1. feature/add-mark-to-new-user-only-mentorをローカルに取り込む。
git fetch feature/add-mark-to-new-user-only-mentor
git checkout feature/add-mark-to-new-user-only-mentor

2.データを初期化

rails db:seed
  1. 開発環境を立ち上げる。
foreman start -f Procfile.dev
  1. ユーザーotameshi、パスワードtesttestでログインする。
  1. ユーザーkomagata、パスワードtesttestでログインする。
  • 左上のメンターモードがONであることを確認する
  • 右上の検索からotameshiと検索する

6.otameshiにマークがついているかを確認する

  • 検索画面でマークを確認する(Reactファイル)
    • メンターモードをオフにしてマークが外れることを確認
  • 検索画面からotameshiをクリックしユーザーページでマークを確認する(Slimファイル)
    • メンターモードをオフにしてマークが外れることを確認
  • ユーザー画面から提出物をクリックし、提出されている提出物もクリックしマークを確認する(Vueファイル)
    • メンターモードをオフにしてマークが外れることを確認

変更前

image

変更後

image

Summary by CodeRabbit

  • 新機能

    • ユーザーの「joining_status」(新規ユーザーかどうか)情報が各種APIレスポンスや画面上で利用できるようになりました。
    • 新規ユーザーには特別なCSSクラス「is-new-user」が付与され、メンター向けモードでは視覚的な強調表示が追加されます。
  • スタイル

    • ユーザーアイコンのCSSクラス割り当てが一元化され、新規ユーザーや役割ごとの見た目が改善されました。
  • バグ修正

    • 各画面・リストでユーザーアイコンの表示ロジックが統一され、表示の不整合が解消されました。
  • テスト

    • 「joining_status」属性や新しいCSSクラスに関するテストが追加・更新されました。

@hirokiej hirokiej assigned hirokiej and machida and unassigned hirokiej May 26, 2025
@hirokiej hirokiej changed the title Feature/add mark to new user only mentor 入って1週間のユーザーにはメンターにしか表示されないマークを表示した May 26, 2025
@hirokiej
Copy link
Copy Markdown
Contributor Author

@machida さん
お疲れ様です。
issueに関する実装を行いました。
前任者の方と同じで、新規会員の場合はis-new-user、そうでない場合は、is-standard-userのクラスを付与されるよう実装いたしました。
デザインでの調整をよろしくお願いいたします🙇

@machida
Copy link
Copy Markdown
Member

machida commented May 26, 2025

@hirokiej デザイン入れましたー

これはコードレビューでやりとりをしていただきたい部分なのですが、is-standard-user は不要に感じました。

例えば、エラーが出た場合、is-errorって出しますが、エラーが出てないときに エラーが出ていないというclassは付与しないのと同じで、特別な意味がないのであれば standard ではなく nil を返した方が HTML が無意味に複雑にならなくていいと思いました。

@hirokiej
Copy link
Copy Markdown
Contributor Author

@machida さん
デザイン付とご意見ありがとうございます!
当初、nilで対応しようと思っていたのですが、is-を残すのが良くないとのことで、is-#{}ではなく、is-new-userにしようと思っていました。しかし、拡張性の面からis-#{}で対応しました。
しかし、

エラーが出た場合、is-errorって出しますが、エラーが出てないときに エラーが出ていないというclassは付与しない

is-error-pageを拝見しましたが、動的にクラスを付与しているわけではないのですね!
コードレビューの際に、new-userでなく、is-new-userで渡すべきかどうかやり取りしていきたいと思います。
ありがとうございます!🙏

@hirokiej hirokiej force-pushed the feature/add-mark-to-new-user-only-mentor branch 4 times, most recently from 47321b1 to 2140a89 Compare May 29, 2025 05:13
@hirokiej hirokiej force-pushed the feature/add-mark-to-new-user-only-mentor branch 4 times, most recently from 0f1f77c to c0fa4d8 Compare June 5, 2025 06:14
@hirokiej
Copy link
Copy Markdown
Contributor Author

hirokiej commented Jun 6, 2025

@machida さん
Flakyなテストを通したい際に、何度かコミットの履歴がごちゃごちゃになってしまったりして、町田さんのデザインのコミットを消してしまったかもしれません…
git reflogで該当のコミットを探してみましたが見当たりませんでした💦

大変お手数をおかけしてしまい申し訳ないのですが、再度デザイン付けをしていただいても良いでしょうか…?
お忙しいのに申し訳ございません。

@hirokiej
Copy link
Copy Markdown
Contributor Author

hirokiej commented Jun 6, 2025

@machida

これはコードレビューでやりとりをしていただきたい部分なのですが、is-standard-user は不要に感じました。

レビューの際に上記を検討したいので、先日と同様のデザイン付をしていただけると幸いです🙇

@hirokiej hirokiej assigned machida and unassigned machida Jun 6, 2025
@hirokiej hirokiej force-pushed the feature/add-mark-to-new-user-only-mentor branch 3 times, most recently from 29e6ab1 to 0a2a569 Compare June 16, 2025 04:04
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Jun 16, 2025

## Walkthrough

ユーザーアイコンの表示とAPIレスポンスに「joining_status(新規ユーザー状態)」を統一的に追加し、CSSクラスの決定ロジックを各所で共通化しました。新規ユーザーには特定の装飾が適用され、関連するテストやJSON出力もこの属性を反映するよう更新されています。

## Changes

| ファイル群・パス                                 | 変更概要                                                                                       |
|--------------------------------------------------|-----------------------------------------------------------------------------------------------|
| app/decorators/user_decorator.rb<br>test/decorators/user_decorator_test.rb | joining_status判定・user_icon_frame_classメソッド追加、テスト追加                                 |
| app/components/products/product_component.html.slim<br>app/components/products/product_component.rb | ユーザーアイコンのCSSクラス決定ロジックを共通化、joining_status_classメソッド追加                 |
| app/views/**/_user.html.slim<br>app/views/**/_icon.html.slim<br>app/views/**/_profile.html.slim<br>app/views/**/_footprint.html.slim<br>app/views/**/_answer.html.slim<br>app/views/**/_new_answer.html.slim<br>app/views/**/_table.html.slim<br>app/views/**/show.html.slim<br>app/views/**/index.html.slim<br>app/views/**/_regular_event.html.slim<br>app/views/**/_regular_event_meta.html.slim<br>app/views/**/_event.html.slim<br>app/views/**/_practice_user_icon.html.slim<br>app/views/**/_user_icons.json.jbuilder<br>app/views/**/_searchable.json.jbuilder<br>app/views/**/_list_user.json.jbuilder<br>app/views/**/_user.json.jbuilder<br>app/views/**/_product.json.jbuilder<br>app/views/**/_comment.html.slim<br>app/views/application/_current_user.html.erb<br>app/views/companies/products/_product.html.slim<br>app/views/companies/users/_user.html.slim<br>app/views/courses/practices/_practice_user_icon.html.slim<br>app/views/generations/index.html.slim<br>app/views/questions/_answer.html.slim<br>app/views/questions/_new_answer.html.slim<br>app/views/regular_events/_regular_event.html.slim<br>app/views/regular_events/_regular_event_meta.html.slim<br>app/views/tags/_user.html.slim<br>app/views/users/areas/index.html.slim | ユーザーアイコン枠のCSSクラスをuser_icon_frame_classで一元化、joining_statusを反映                |
| app/javascript/components/UserIconFrameClass.jsx | UserIconFrameClass関数新規追加、ユーザーの状態に応じたクラス名を返す                            |
| app/javascript/components/User.jsx<br>app/javascript/components/ListComment.jsx<br>app/javascript/components/NotificationsBell/Notifications.jsx<br>app/javascript/components/Report.jsx<br>app/javascript/components/question.vue | UserIconFrameClassを利用し、ユーザーアイコンのクラス名生成を共通化、joining_status_classを反映     |
| app/javascript/user-icon.js                      | userIcon関数でjoining_statusに応じてis-new-userクラスを追加                                    |
| app/javascript/stylesheets/config/mixins/_user-role.sass | is-new-user向けの装飾(メンターモード時の枠線・影)を追加                                      |
| app/javascript/components/CommentUserIcon.jsx    | 旧コンポーネント削除(役割をUserIconFrameClassに統一)                                         |
| test/integration/api/users_test.rb               | APIレスポンスにjoining_statusの存在を検証するテストに修正                                      |
| test/system/practice/pages_test.rb               | テストのCSSセレクタをクラス指定方式に変更                                                      |

## Sequence Diagram(s)

```mermaid
sequenceDiagram
    participant Frontend
    participant API
    participant UserDecorator

    Frontend->>API: ユーザー情報をリクエスト
    API->>UserDecorator: joining_status, user_icon_frame_classを呼び出し
    UserDecorator-->>API: joining_status, user_icon_frame_classを返却
    API-->>Frontend: joining_status入りのユーザー情報JSONを返却
    Frontend->>Frontend: UserIconFrameClassでクラス名決定
    Frontend-->>UserIcon表示: 適切なCSSクラスで描画

Suggested reviewers

  • komagata

Poem

うさぎがぴょんと跳ねて言う、
新しい仲間には光る枠、
クラスもAPIもひとつに統一、
新人さんには特別な印、
みんなで迎える春の野原、

(∩。•o•。)っ.゚☆。'`
ようこそ、うさぎの輪へ!


<!-- walkthrough_end -->
<!-- This is an auto-generated comment: all tool run failures by coderabbit.ai -->

> [!WARNING]
> There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.
> 
> <details>
> <summary>🔧 RuboCop (1.75.5)</summary>
> 
> <details>
> <summary>app/components/products/product_component.rb</summary>
> 
> rubocop-minitest extension supports plugin, specify `plugins: rubocop-minitest` instead of `require: rubocop-minitest` in /.rubocop.yml.
> For more information, see https://docs.rubocop.org/rubocop/plugin_migration_guide.html.
> rubocop-capybara extension supports plugin, specify `plugins: rubocop-capybara` instead of `require: rubocop-capybara` in /.rubocop.yml.
> For more information, see https://docs.rubocop.org/rubocop/plugin_migration_guide.html.
> Unable to find gem rubocop-fjord; is the gem installed? Gem::MissingSpecError
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:309:in `rescue in gem_config_path'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:293:in `gem_config_path'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:84:in `block (2 levels) in resolve_inheritance_from_gems'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:82:in `reverse_each'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:82:in `block in resolve_inheritance_from_gems'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:76:in `each_pair'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:76:in `resolve_inheritance_from_gems'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader.rb:66:in `load_file'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_store.rb:29:in `options_config='
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/cli.rb:160:in `act_on_options'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/cli.rb:47:in `block in run'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/cli.rb:81:in `profile_if_needed'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/cli.rb:43:in `run'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/exe/rubocop:19:in `<top (required)>'
> /usr/local/bin/rubocop:25:in `load'
> /usr/local/bin/rubocop:25:in `<main>'
> 
> </details>
> 
> <details>
> <summary>app/decorators/user_decorator.rb</summary>
> 
> rubocop-minitest extension supports plugin, specify `plugins: rubocop-minitest` instead of `require: rubocop-minitest` in /.rubocop.yml.
> For more information, see https://docs.rubocop.org/rubocop/plugin_migration_guide.html.
> rubocop-capybara extension supports plugin, specify `plugins: rubocop-capybara` instead of `require: rubocop-capybara` in /.rubocop.yml.
> For more information, see https://docs.rubocop.org/rubocop/plugin_migration_guide.html.
> Unable to find gem rubocop-fjord; is the gem installed? Gem::MissingSpecError
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:309:in `rescue in gem_config_path'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:293:in `gem_config_path'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:84:in `block (2 levels) in resolve_inheritance_from_gems'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:82:in `reverse_each'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:82:in `block in resolve_inheritance_from_gems'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:76:in `each_pair'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:76:in `resolve_inheritance_from_gems'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader.rb:66:in `load_file'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_store.rb:29:in `options_config='
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/cli.rb:160:in `act_on_options'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/cli.rb:47:in `block in run'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/cli.rb:81:in `profile_if_needed'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/cli.rb:43:in `run'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/exe/rubocop:19:in `<top (required)>'
> /usr/local/bin/rubocop:25:in `load'
> /usr/local/bin/rubocop:25:in `<main>'
> 
> </details>
> 
> <details>
> <summary>app/views/api/users/_user.json.jbuilder</summary>
> 
> rubocop-minitest extension supports plugin, specify `plugins: rubocop-minitest` instead of `require: rubocop-minitest` in /.rubocop.yml.
> For more information, see https://docs.rubocop.org/rubocop/plugin_migration_guide.html.
> rubocop-capybara extension supports plugin, specify `plugins: rubocop-capybara` instead of `require: rubocop-capybara` in /.rubocop.yml.
> For more information, see https://docs.rubocop.org/rubocop/plugin_migration_guide.html.
> Unable to find gem rubocop-fjord; is the gem installed? Gem::MissingSpecError
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:309:in `rescue in gem_config_path'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:293:in `gem_config_path'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:84:in `block (2 levels) in resolve_inheritance_from_gems'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:82:in `reverse_each'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:82:in `block in resolve_inheritance_from_gems'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:76:in `each_pair'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader_resolver.rb:76:in `resolve_inheritance_from_gems'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_loader.rb:66:in `load_file'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/config_store.rb:29:in `options_config='
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/cli.rb:160:in `act_on_options'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/cli.rb:47:in `block in run'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/cli.rb:81:in `profile_if_needed'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/lib/rubocop/cli.rb:43:in `run'
> /var/lib/gems/3.1.0/gems/rubocop-1.77.0/exe/rubocop:19:in `<top (required)>'
> /usr/local/bin/rubocop:25:in `load'
> /usr/local/bin/rubocop:25:in `<main>'
> 
> </details>
> 
> + 9 others
> 
> </details>

<!-- end of auto-generated comment: all tool run failures by coderabbit.ai -->


---

<details>
<summary>📜 Recent review details</summary>

**Configuration used: .coderabbit.yaml**
**Review profile: CHILL**
**Plan: Pro**


<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 37d40161f7a980c11bbd5ae2893b99b024ee92ac and 625d78a02a382ccc452065c8c1a59487487be548.

</details>

<details>
<summary>📒 Files selected for processing (43)</summary>

* `app/components/products/product_component.html.slim` (2 hunks)
* `app/components/products/product_component.rb` (1 hunks)
* `app/components/works/work_component.html.slim` (1 hunks)
* `app/decorators/user_decorator.rb` (2 hunks)
* `app/javascript/components/CommentUserIcon.jsx` (0 hunks)
* `app/javascript/components/ListComment.jsx` (2 hunks)
* `app/javascript/components/NotificationsBell/Notifications.jsx` (2 hunks)
* `app/javascript/components/Report.jsx` (2 hunks)
* `app/javascript/components/User.jsx` (3 hunks)
* `app/javascript/components/UserIconFrameClass.jsx` (1 hunks)
* `app/javascript/components/question.vue` (2 hunks)
* `app/javascript/stylesheets/config/mixins/_user-role.sass` (1 hunks)
* `app/javascript/user-icon.js` (1 hunks)
* `app/views/admin/users/_table.html.slim` (1 hunks)
* `app/views/api/comments/_user_icons.json.jbuilder` (1 hunks)
* `app/views/api/courses/practices/index.json.jbuilder` (1 hunks)
* `app/views/api/generations/users/_user.json.jbuilder` (1 hunks)
* `app/views/api/products/_product.json.jbuilder` (1 hunks)
* `app/views/api/searchables/_searchable.json.jbuilder` (2 hunks)
* `app/views/api/users/_list_user.json.jbuilder` (1 hunks)
* `app/views/api/users/_user.json.jbuilder` (1 hunks)
* `app/views/application/_current_user.html.erb` (1 hunks)
* `app/views/coding_tests/coding_test_submissions/show.html.slim` (1 hunks)
* `app/views/companies/products/_product.html.slim` (1 hunks)
* `app/views/companies/users/_user.html.slim` (1 hunks)
* `app/views/courses/practices/_practice_user_icon.html.slim` (1 hunks)
* `app/views/events/_event.html.slim` (1 hunks)
* `app/views/footprints/_footprint.html.slim` (1 hunks)
* `app/views/generations/index.html.slim` (1 hunks)
* `app/views/questions/_answer.html.slim` (1 hunks)
* `app/views/questions/_new_answer.html.slim` (1 hunks)
* `app/views/regular_events/_regular_event.html.slim` (1 hunks)
* `app/views/regular_events/_regular_event_meta.html.slim` (1 hunks)
* `app/views/tags/_user.html.slim` (1 hunks)
* `app/views/users/_icon.html.slim` (1 hunks)
* `app/views/users/_profile.html.slim` (1 hunks)
* `app/views/users/_user.html.slim` (1 hunks)
* `app/views/users/areas/index.html.slim` (1 hunks)
* `app/views/users/comments/_comment.html.slim` (1 hunks)
* `app/views/works/show.html.slim` (1 hunks)
* `test/decorators/user_decorator_test.rb` (1 hunks)
* `test/integration/api/users_test.rb` (3 hunks)
* `test/system/practice/pages_test.rb` (1 hunks)

</details>

<details>
<summary>💤 Files with no reviewable changes (1)</summary>

* app/javascript/components/CommentUserIcon.jsx

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (42)</summary>

* app/views/api/comments/_user_icons.json.jbuilder
* app/views/users/_profile.html.slim
* app/views/generations/index.html.slim
* app/components/products/product_component.rb
* app/views/questions/_new_answer.html.slim
* app/views/api/searchables/_searchable.json.jbuilder
* app/javascript/user-icon.js
* app/views/courses/practices/_practice_user_icon.html.slim
* app/views/events/_event.html.slim
* app/views/coding_tests/coding_test_submissions/show.html.slim
* app/components/works/work_component.html.slim
* app/views/companies/users/_user.html.slim
* app/views/api/generations/users/_user.json.jbuilder
* app/views/admin/users/_table.html.slim
* app/views/api/products/_product.json.jbuilder
* app/views/users/comments/_comment.html.slim
* app/views/tags/_user.html.slim
* app/views/regular_events/_regular_event.html.slim
* app/views/api/users/_user.json.jbuilder
* app/views/works/show.html.slim
* app/javascript/components/UserIconFrameClass.jsx
* app/views/users/areas/index.html.slim
* app/views/application/_current_user.html.erb
* app/javascript/components/NotificationsBell/Notifications.jsx
* app/views/api/courses/practices/index.json.jbuilder
* app/javascript/components/ListComment.jsx
* app/components/products/product_component.html.slim
* app/javascript/components/question.vue
* app/javascript/components/Report.jsx
* app/views/users/_user.html.slim
* test/integration/api/users_test.rb
* app/views/users/_icon.html.slim
* app/views/api/users/_list_user.json.jbuilder
* app/views/questions/_answer.html.slim
* test/system/practice/pages_test.rb
* app/views/regular_events/_regular_event_meta.html.slim
* app/javascript/components/User.jsx
* app/views/footprints/_footprint.html.slim
* app/javascript/stylesheets/config/mixins/_user-role.sass
* test/decorators/user_decorator_test.rb
* app/decorators/user_decorator.rb
* app/views/companies/products/_product.html.slim

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)</summary>

* GitHub Check: build_and_test

</details>

</details>
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- finishing_touch_checkbox_start -->

<details open="true">
<summary>✨ Finishing Touches</summary>

- [ ] <!-- {"checkboxId": "7962f53c-55bc-4827-bfbf-6a18da830691"} --> 📝 Generate Docstrings

</details>

<!-- finishing_touch_checkbox_end -->
<!-- tips_start -->

---

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

<details>
<summary>❤️ Share</summary>

- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

</details>

<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=fjordllc/bootcamp&utm_content=8700):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Explain this complex logic.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai explain this code block.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and explain its main purpose.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

### Support

Need help? Create a ticket on our [support page](https://www.coderabbit.ai/contact-us/support) for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai generate sequence diagram` to generate a sequence diagram of the changes in this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->

@hirokiej hirokiej force-pushed the feature/add-mark-to-new-user-only-mentor branch 5 times, most recently from e6f2c5b to e48bb86 Compare June 17, 2025 15:56
@hirokiej hirokiej force-pushed the feature/add-mark-to-new-user-only-mentor branch from 37d4016 to 625d78a Compare July 14, 2025 15:07
@hirokiej
Copy link
Copy Markdown
Contributor Author

@komagata さん
修正いたしました。
再度、お手隙でご確認よろしくお願いいたします🙇

Copy link
Copy Markdown
Member

@komagata komagata left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

確認させて頂きました。OKです〜🙆‍♂️

@komagata komagata merged commit 212be33 into main Jul 16, 2025
4 checks passed
@komagata komagata deleted the feature/add-mark-to-new-user-only-mentor branch July 16, 2025 07:50
@github-actions github-actions bot mentioned this pull request Jul 16, 2025
87 tasks
@hirokiej
Copy link
Copy Markdown
Contributor Author

@komagata さん
レビュー待ちの段階でmainに動きがあった場合、コンフリクトが起こるということを知らなかったので、今後は待ちの状態でもコンフリクトが発生していないか確認するようにします🙇
ご確認ありがとうございました🙇

@coderabbitai coderabbitai bot mentioned this pull request Mar 11, 2026
12 tasks
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.

4 participants