メインコンテンツまでスキップ

システムWorkers仕様書 (system-workers)

1. 概要

system-workers は蒼翔祭システムの各機能を担当するCloudflare Workersの集合である。 gateway-worker がリクエストをルーティングし、各専門Workerがビジネスロジックを処理する。

アーキテクチャ

Note: BFF(Pages Functions)はService Binding経由でWorkerを直接呼び出す。 外部からのHTTPアクセスは v3.api.soshosai.com(Gateway)経由。


2. Worker一覧

Workerパス用途認証
gateway-worker/リクエストルーティングなし
staff-worker/staffsスタッフ管理スタッフ必須
visitor-worker/groups, /guests来場者管理ゲスト可
events-worker/eventsイベント管理ゲスト可
locations-worker/locations場所管理ゲスト可
analytics-worker/analytics分析データスタッフ必須
line-messaging-worker/messagesLINE通知スタッフ必須
equipment-worker/equipments備品管理スタッフ必須

3. コンポーネント詳細

3.1 gateway-worker

リクエストを各Workerにルーティングする。

// ルーティング定義
createRoutes('/events', 'EVENTS_WORKER');
createRoutes('/locations', 'LOCATIONS_WORKER');
createRoutes('/analytics', 'ANALYTICS_WORKER');
createRoutes('/messages', 'LINE_MESSAGING_WORKER');
createRoutes('/staffs', 'STAFF_WORKER');
createRoutes('/groups', 'VISITOR_WORKER');
createRoutes('/guests', 'VISITOR_WORKER');
createRoutes('/equipments', 'EQUIPMENT_WORKER');

システムエンドポイント:

MethodPath説明
GET/healthヘルスチェック
GET/system/infoシステム情報

3.2 staff-worker

スタッフ情報の管理を担当。

エンドポイント:

MethodPath説明認証
GET/スタッフ一覧スタッフ必須
POST/スタッフ登録スタッフ必須
GET/login/discordDiscord認証経由ログインスタッフ必須
GET/login/QRQRトークン生成スタッフ必須
POST/login/QRQRログイン実行なし

QRログインフロー:

  1. スタッフがWebからQRトークンを生成(GET /login/QR
  2. ハンディ端末でQRスキャン
  3. トークンでログイン(POST /login/QR、5分有効)
  4. JWT発行

3.3 visitor-worker

来場者(グループ・ゲスト)の管理を担当。

エンドポイント:

MethodPath説明
GET/groupsグループ一覧
POST/groupsグループ作成
GET/groups/:idグループ詳細
GET/guestsゲスト一覧
POST/guestsゲスト登録
GET/guests/:idゲスト詳細

3.4 events-worker

イベントの管理を担当。

エンドポイント:

MethodPath説明
GET/イベント一覧
POST/イベント作成
PUT/:eventIdイベント更新
DELETE/:eventIdイベント削除(論理)
GET/:eventId/attendees参加者一覧
POST/:eventId/attendees参加登録
GET/attended/:guestIdゲストの参加イベント

3.5 locations-worker

場所マスターの管理を担当。

エンドポイント:

MethodPath説明
GET/場所一覧
POST/場所作成
PUT/:id場所更新
DELETE/:id場所削除

3.6 analytics-worker

分析データの集計・提供を担当。

エンドポイント:

MethodPath説明
GET/summaryサマリーデータ
GET/visitors来場者統計
GET/eventsイベント統計

3.7 line-messaging-worker

LINE通知の送信を担当。

エンドポイント:

MethodPath説明
POST/sendメッセージ送信
POST/broadcast一斉送信
GET/permissions権限確認

3.8 equipment-worker

備品管理を担当。詳細は備品管理システム仕様書を参照。


4. 認証パターン

4.1 認証ミドルウェア

// スタッフ専用(ゲスト不可)
createAuthMiddleware<{ Bindings: Env }>({ allowGuest: false });

// ゲストもアクセス可能
createAuthMiddleware<{ Bindings: Env }>({ allowGuest: true });

4.2 認証フロー


5. 環境変数

5.1 共通

変数名説明
DBD1 Database Binding
AUTH_SERVICEunified-auth-worker Binding
JWT_SECRETJWT署名シークレット

5.2 gateway-worker

変数名説明
EVENTS_WORKERevents-worker Binding
LOCATIONS_WORKERlocations-worker Binding
ANALYTICS_WORKERanalytics-worker Binding
LINE_MESSAGING_WORKERline-messaging-worker Binding
STAFF_WORKERstaff-worker Binding
VISITOR_WORKERvisitor-worker Binding
EQUIPMENT_WORKERequipment-worker Binding
LOGGERlogger-worker Binding(オプション)

6. デプロイ

Service Bindingの依存関係上、以下の順序でデプロイ:

# 1. 認証系(依存なし)
cd packages/api/auth-workers/unified-auth-worker && wrangler deploy

# 2. 各機能Worker(認証に依存)
cd packages/api/system-workers/events-worker && wrangler deploy
cd packages/api/system-workers/locations-worker && wrangler deploy
cd packages/api/system-workers/analytics-worker && wrangler deploy
cd packages/api/system-workers/line-messaging-worker && wrangler deploy
cd packages/api/system-workers/staff-worker && wrangler deploy
cd packages/api/system-workers/visitor-worker && wrangler deploy
cd packages/api/system-workers/equipment-worker && wrangler deploy

# 3. Gateway(全Workerに依存)
cd packages/api/system-workers/gateway-worker && wrangler deploy