Skip to content

[WIP] Dojo モデルに global_club_id を追加し、Clubs API とのデータ同期機能を実装#1747

Open
yasulab wants to merge 3 commits intomainfrom
add-global_club_id-to-dojo-model
Open

[WIP] Dojo モデルに global_club_id を追加し、Clubs API とのデータ同期機能を実装#1747
yasulab wants to merge 3 commits intomainfrom
add-global_club_id-to-dojo-model

Conversation

@yasulab
Copy link
Copy Markdown
Member

@yasulab yasulab commented Aug 18, 2025

概要

Raspberry Pi Foundation の Clubs DB と CoderDojo Japan の Japan DB を連携させるための設計文書を追加します。

Fix #1616

背景

新しい Dojo が追加されるたびに、DojoMap に表示させるために手動で CSV を更新する必要があります。この作業を自動化するため、Clubs DB の ID(global_club_id)を Japan DB の Dojo と紐付けます。

設計概要

データモデル

class AddGlobalClubIdToDojos < ActiveRecord::Migration[8.0]
  def change
    # UUID 文字列型
    add_column :dojos, :global_club_id, :string, null: false
    add_index :dojos, :global_club_id, unique: true
  end
end

重要な仕様

  • データ型: UUID文字列(例: "18704b53-1042-4464-9d49-8820c6ff8c97"
  • 制約: NOT NULL、ユニーク制約
  • API: 読み取り専用(認証不要)
  • 同期: 一度きりのマッピング(継続的同期は不要)

運用フロー

  1. 既存 Dojo: スクリプトで一括設定
  2. 新規 Dojo: 申請時に global_club_id を必須入力
  3. データ管理: db/dojos.yml で管理(既存の運用通り)

Clubs DB と Japan DB の違い

  • 名前: Clubs DB は英語、Japan DB は日本語(違いは正常)
  • 位置情報: Clubs DB のみに存在(Japan DB にはない)
  • 用途: DojoMap で英語名→日本語名の変換に使用

実装タスク

  • 設計文書の作成(doc/global_club_id_design.md
  • マイグレーションの実装
  • 既存 Dojo への一括マッピングスクリプト
  • 申請フォームへの入力欄追加

詳細は doc/global_club_id_design.md をご参照ください。

Raspberry Pi Foundation の Clubs DB と CoderDojo Japan の Japan DB を
連携させるための設計文書。

主な内容:
- global_club_id カラムの追加(string型、UUID、NOT NULL)
- 一度きりのマッピング(継続的同期は不要)
- 新規 Dojo は申請時に global_club_id を必須入力
- データ管理は db/dojos.yml で行う(既存の運用通り)

Fix #1616
@yasulab yasulab force-pushed the add-global_club_id-to-dojo-model branch from 9483aaf to 4c19a72 Compare August 18, 2025 11:27
@yasulab yasulab changed the title [WIP] Dojo モデルに global_club_id を追加し、Clubs API とのデータ同期機能を実装 [WIP] Dojo モデルに global_club_id を追加し、Clubs API とのデータ同期機能を実装 Nov 15, 2025
@yasulab yasulab marked this pull request as ready for review November 15, 2025 10:52
@yasulab
Copy link
Copy Markdown
Member Author

yasulab commented Nov 15, 2025

@copilot git pull main to this branch?

Copy link
Copy Markdown

Copilot AI commented Nov 15, 2025

@yasulab I've opened a new pull request, #1764, to work on those changes. Once the pull request is ready, I'll request review from you.

yasulab added a commit to coderdojo-japan/map.coderdojo.jp that referenced this pull request Dec 31, 2025
coderdojo.jp PR #1747 の実装のため、Clubs API と Japan DB の
名前マッピングを比較するエンドポイントを追加

## 変更内容
1. upsert_dojos_geojson.rb に名寄せデータ記録機能を追加
   - Clubs API の名前 (name_earth) と Japan DB の名前 (name_japan) を記録
   - _data/dojo2dojo.json として出力

2. Jekyll エンドポイント /dojo2dojo.json を追加
   - _data/dojo2dojo.json のデータを JSON で提供
   - japan.json と同じパターンで実装

## 用途
- coderdojo-japan/coderdojo.jp#1747 の実装で
  name_japan と name_earth および ID の比較に使用
- dojo2dojo.csv のメンテナンスにも活用可能

## 記録データ
- id: Dojo ID
- name_japan: Japan DB での名前(名寄せ後)
- name_earth: Clubs API での名前(名寄せ前)
- countryCode: JP
- urlSlug: URL スラッグ
- status: ステータス
yasulab added a commit to coderdojo-japan/map.coderdojo.jp that referenced this pull request Dec 31, 2025
coderdojo.jp PR #1747 の実装のため、Clubs API と Japan DB の
名前マッピングを比較するエンドポイントを追加

## 変更内容
1. upsert_dojos_geojson.rb に名寄せデータ記録機能を追加
   - Clubs API の名前 (name_earth) と Japan DB の名前 (name_japan) を記録
   - _data/dojo2dojo.json として出力

2. Jekyll エンドポイント /dojo2dojo.json を追加
   - _data/dojo2dojo.json のデータを JSON で提供
   - japan.json と同じパターンで実装

## 目的
- coderdojo-japan/coderdojo.jp#1747 の実装で
  name_japan と name_earth および ID の比較に使用
- global_club_id を使用した自動化により、手動管理の dojo2dojo.csv を
  廃止するための準備

## 記録データ
- id: Dojo ID (global_club_id)
- name_japan: Japan DB での名前(名寄せ後)
- name_earth: Clubs API での名前(名寄せ前)
- countryCode: JP
- urlSlug: URL スラッグ
- status: ステータス
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.

ラズパイ財団側にある Clubs データベースの ID と、coderdojo.jp の Dojo ID を紐付ける ***_id を用意したい

2 participants