Skip to content

Conversation

rakuda-san-desu
Copy link
Contributor

@rakuda-san-desu rakuda-san-desu commented Aug 8, 2025

close: #1728
doorkeeperのイベント取得で、イベントデータのキーをシンボルに変更し、正常にイベントデータを収集できるようにしました🛠️

🔽 更新後表示例
スクリーンショット 2025-08-08 16 04 52

@rakuda-san-desu
Copy link
Contributor Author

テストの確認をしていきます👀

@yasulab
Copy link
Member

yasulab commented Aug 8, 2025

@claude Investigate this Actions's log and suggest how to fix errors in CI? ultrathink.

Copy link
Contributor

claude bot commented Aug 8, 2025

Claude finished @yasulab's task —— View job


タスクリスト

  • CI のステータスを確認
  • 失敗したジョブのログを取得・分析
  • 変更されたファイルを確認
  • エラーの原因を特定
  • 修正方法を提案

🔍 分析結果

CI の失敗原因を特定しました。

エラー内容

Statistics::Aggregation.run is expected to change `EventHistory.count` from 0 to 2
Failure/Error: expect{ subject }.to change{ EventHistory.count }.from(0).to(2)
  expected `EventHistory.count` to have changed to 2, but is now 1

根本原因

PR で Doorkeeper のイベントデータのキーを文字列からシンボルに変更しましたが、Statistics::Tasks::Doorkeeper クラス(lib/statistics/tasks/doorkeeper.rb)が更新されていません。このクラスはまだ文字列キーでアクセスしようとしています。

問題のあるコード(23-32行目):

# 現在のコード(文字列キーを使用)
next unless e['group'].to_s == dojo_event_service.group_id

EventHistory.create!(dojo_id:          dojo.id,
                     dojo_name:        dojo.name,
                     service_name:     dojo_event_service.name,
                     service_group_id: dojo_event_service.group_id,
                     event_id:     e['id'],        # ← 文字列キー
                     event_url:    e['public_url'], # ← 文字列キー
                     participants: e['participants'], # ← 文字列キー
                     evented_at:   Time.zone.parse(e['starts_at'])) # ← 文字列キー

修正方法

lib/statistics/tasks/doorkeeper.rb の 23-32 行目を以下のように修正する必要があります:

# 修正後(シンボルキーを使用)
next unless e[:group].to_s == dojo_event_service.group_id

EventHistory.create!(dojo_id:          dojo.id,
                     dojo_name:        dojo.name,
                     service_name:     dojo_event_service.name,
                     service_group_id: dojo_event_service.group_id,
                     event_id:     e[:id],        # ← シンボルキー
                     event_url:    e[:public_url], # ← シンボルキー
                     participants: e[:participants], # ← シンボルキー
                     evented_at:   Time.zone.parse(e[:starts_at])) # ← シンボルキー

なぜこのエラーが発生したか

  1. EventService::Providers::Doorkeeper#fetch_events が返すイベントデータは e[:event] という構造で、シンボルキーになりました
  2. しかし、Statistics::Tasks::Doorkeeper は古い文字列キーでアクセスしているため、データを正しく取得できません
  3. 結果として、Doorkeeper のイベントが EventHistory に保存されず、テストが期待する 2 件(Connpass 1件 + Doorkeeper 1件)ではなく 1 件(Connpass のみ)になっています

追加の修正が必要な可能性

UpcomingEvents::Tasks::Doorkeeper では既にシンボルキーに対応していますが、Statistics::Tasks::Doorkeeper でも同様の修正が必要です。この不整合が CI の失敗を引き起こしています。

Statistics::Tasks::Doorkeeperで文字列キーでアクセスしていたが、
EventService::Providers::Doorkeeperがシンボルキーで返すように
変更されたため、統計集計でDoorkeeperイベントが作成されない問題を修正。

また、テストスタブの日付を動的に生成するように変更し、
期間に応じた正しいイベント数が作成されるように調整した。
@yasulab
Copy link
Member

yasulab commented Aug 8, 2025

CI 通ったのでマージします!🚀✨

@yasulab yasulab merged commit e4cbb71 into main Aug 8, 2025
5 checks passed
@yasulab yasulab deleted the update_event_data_keys_to_symbol branch August 8, 2025 10:49
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.

近日開催イベントでDoorkeeperのイベントが取得されていないようです

2 participants