SPIKES GUILD運用マニュアルINTERNAL / NOINDEX

SPIKES GUILD 運用マニュアル

SPIKES GUILD (全学生団体データベース) (4S株式会社) を運用するための実務マニュアル。10画面・49アクションの全ボタンと、7つの業務フロー、押す前に知らないと事故る 落とし穴を記載する。内容は 5 レンズの監査 (UI状態 / ワークフロー / セキュリティ / データ整合性 / 運用) が実際のコードから確認した挙動のみで、推測は書いていない。

設計の真実源: docs/SPIKES_MASTERPLAN.md / 進捗: docs/guildnet/tasks.json (tracker.html) / 仕様ページ: /masterplan/guildnet

0. 不可逆操作 — 先にこれを読む

押すと戻せない (または戻すのに運営の DB 操作が要る) 操作。特に一番上の「暗号鍵」は 事業が止まるレベルなので、本番の鍵は絶対に触らない。

操作何が起きるかルール
暗号鍵 (EMAIL_ENC_KEY) のローテーション全 person の氏名・連絡先・勤務先が永久に読めなくなる。復旧手段は無い。本番の鍵は固定。変えるなら全 PII の再暗号化スクリプトが先。
取込の「承認」在籍レコードと氏名が本テーブルに載る名寄せは承認の後にやる。
会費の「一括請求」対象者全員に請求が飛ぶ先に「対象人数を確認」。
会費プランの「締切」以後は一括請求できない
商談の「成約」手数料が確定し履行チェックリストが展開される金額を確認してから。中止は可能。
年次ロールオーバー団体が休眠・凍結に落ちる (GUILD の公開面・企業検索から消える)4〜5月にだけ押す。プレビューで件数確認。
「引退を記録する」在籍が終了し OB スコープになる唯一の owner は引退できない。
Primary Contact の移譲旧 owner が editor に降格するclaim 済みの人しか指名できない。
戦績の削除行が物理削除される (台帳に記録は残る)二段階クリック。
AI 抽出 (外部送信の同意)委託名簿が外部 API に送られる (取消不能)同意チェックなしなら送られない。
エクスポート氏名込みのデータがローカルに落ちるダウンロードの事実は台帳に残る。

1. 役割と入口

役割できること入口
運営 (4S)全画面。団体の承認・取込・招待・企業審査・年次運用/admin/guildnet
団体の代表・幹部自団体のページ・名簿・年鑑・戦績・協賛メニュー・会費 (現状は運営が代理操作)運営に依頼 → /admin/guildnet/[団体]
OB・OG招待 URL から claim → 自分史を見る・公開範囲を変える・更新提案を承認する・会費を確認する/claim/[招待トークン] → (サインイン後) /guild/me
企業企業パートナー登録 → 運営と協業テーマを整理。公開検索はデータ成立まで停止中/guild/sponsors

現状、団体の幹部・OB会幹事が自分でログインして操作する画面は未実装 — 運営 (4S) が admin から 代理操作する。本人 (OB・現役部員) だけは自分の画面を持つ: 招待 URL から claim したあと、サインインすれば /guild/me で 公開範囲の変更・更新提案の承認・会費の確認ができる (同意の天井は本人しか動かせないため、 運営が代理で変更してはいけない)。

2. 業務フロー (7)

① 団体を立ち上げる

担当: 運営

  1. 団体を開設する (名前・大学名)/admin/guildnet/renewal
  2. slug (公開 URL) を設定する/admin/guildnet/[団体]slug が無いと GUILD の公開面に永久に出ない
  3. 創立年・公認区分を入れる/admin/guildnet/[団体]
  4. 名簿を取り込む → 招待 → claim (フロー②③)
落とし穴
  • PLG で開設した団体は claim 済み 25 人に達するまで公開されない (dormant のまま)。中身が空の GUILD ページを作らないための設計。
  • 既存の承認済み団体 (SPIKES GUILD 由来の 76 団体) は閾値を免除して有効化済み。

② 名簿を取り込む

担当: 運営

  1. CSV を貼り付けて「プレビュー」/admin/guildnet/importDB には書かない
  2. 「ドラフトを作成」同上この時点では誰にも見えない (org 隔離ドラフト)
  3. 「レビュー」→ 行を確認 → 「承認」同上承認した行だけが名簿に載る
  4. (必要なら) 名寄せ候補を確認/admin/guildnet/merges**承認の後**にやる
落とし穴
  • 名寄せ (merges の統合) を承認より先にやってはいけない。 統合された仮 person に後から承認で在籍を足すと、部員数にも会費にも現れない幽霊行ができる。順序は「取込 → 承認 → 名寄せ」。
  • CSV には退部年 (卒業年) の列を必ず入れる。 無いと全員が「現役」扱いになり、OB 会費の対象者が 0 人になる (逆に現役会費が OB 全員に飛ぶ)。
  • 同じ CSV を二度取り込むと二重人物になるため、DB レベルで拒否される (既存ドラフトへ誘導)。
  • AI 抽出 (AiExtractPanel) は外部送信の同意チェックが必須。未チェックなら決定論パースに落ちる — 委託名簿を Anthropic に送るのは個情法の「委託先への提供」に当たるため。

③ OB を招待して claim してもらう

担当: 運営 → 本人

  1. 団体を選ぶ → 未 claim の人を選択 → 「招待を発行」/admin/guildnet/invites「メールでも送る」にチェックすると、登録済みアドレスへ claim URL を自動送信する (既定 off)
  2. **すぐに「全 URL をコピー」して保存する**同上平文 URL はこの応答にしか存在しない
  3. メール未登録・LINE 等それ以外の経路の人には URL を手動で送る自動送信があるのはメールだけ (既定 off・チェックで有効化)。LINE 等の自動送信は無い
  4. 本人が claim → 18歳申告 → 公開範囲を選ぶ → 自分史が見える/claim/[token]
  5. 本人がサインインして継続利用する (公開範囲の変更・提案承認・会費確認)/guild/meログイン中に claim すれば自動で紐づく。後からでも招待リンクを貼れば紐づく
落とし穴
  • 招待 URL は画面を閉じると二度と取得できない (DB には HMAC ハッシュしか無い)。再発行はできるが、古い URL も 90 日間は有効なまま残る。
  • 招待を出した日から 24 ヶ月で claim されなければ、氏名等が暗号鍵ごと自動破棄される (保持期限)。
  • 本人に案内するプライバシーポリシーは /guild/privacy。/privacy は SPIKES LP の別物。
  • claim だけで終わると本人は迷子になる。 トークンを失った本人には公開範囲を変える手段が無くなるので、claim 後に /guild/me へのサインインまで案内する (通知の遷移先もすべてこの画面)。

④ 会費を集める

担当: 運営 / OB会幹事

  1. プランを作る (年度・金額・対象・期限・振込先案内)/admin/guildnet/fees
  2. **「対象人数を確認」を必ず押す**同上0人・想定外の人数なら止める
  3. 「一括請求」同上対象者に請求が飛ぶ (取り消せない)
  4. 「明細」で氏名を出す → メール/郵送で連絡 (手動)同上
  5. 入金を「入金」ボタンで記録同上
落とし穴
  • 「未納督促」は記録と同時に本人へ督促メールを自動送信する (登録済みメールアドレスへ best-effort・冷却7日・上限3回)。メール未登録の人には送れないので、その分だけ「明細」で氏名を出して人力で連絡する。
  • 資金は預からない。 振込先は団体の口座を案内文に書く。プラットフォームは納付状況を管理するだけ。
  • 徴収率の分母: 免除 (waived) は分母から外すが、連絡不能 (lost) は外さない — lost を外すと名簿の腐敗が数字から消えるため。
  • 「締切」は片道。締切後は一括請求ができなくなる。

⑤ 協賛を取る

担当: 運営 / 団体 / 企業

  1. 団体の協賛メニューを棚に置く (種別・価格・履行内容)/admin/guildnet/sponsor
  2. 企業がパートナー登録し、協業テーマを送る/guild/sponsors
  3. 運営が企業を審査 → 「承認」/admin/guildnet/sponsor
  4. 運営が条件の合う団体へ個別に接続する同上公開検索はデータ成立まで停止中
  5. 交渉 → 「成約」(手数料が自動確定)同上
  6. 履行チェックリストを提出 → 承認 → 「完了」同上完了で履行実績が付く
落とし穴
  • 履行内容のラベルには「SNS投稿」の語を必ず入れる。 #PR 必須チェックはラベルの正規表現で判定するため、「リール告知」等だと #PR なしで提出できてしまう (ステマ規制違反)。
  • 企業には個人データを一切見せない (職安法)。公開検索を再開する場合も団体レベルの集計だけを扱う。
  • 協賛メニューの「停止」は掲載を止めるだけ。団体が休眠に落ちると、その団体のメニューは企業検索から消える。
  • 高野連加盟団体は協賛の掲載自体ができない (協賛可否マトリクスが自動で弾く)。

⑥ 代替わりする (年次)

担当: 運営 / 団体

  1. 3-5月: 新入部員の追加・新歓ページ更新など通常の管理操作をする各画面
  2. 「副産物を自動判定して完了にする」/admin/guildnet/renewal管理操作のあった団体を再登録完了にする
  3. 引き継ぎチェックリストを埋める同上財務・SNS認証情報・スポンサー連絡先など7項目
  4. 「Primary Contact を移譲」で新代表を立てる同上
  5. 引退部員の「引退を記録する」 (OB 意思表明)同上OB・OG 向け GUILD 面の獲得タッチポイント
落とし穴
  • 次期代表に指名できるのは claim 済み (18歳申告済み) の人だけ。 未 claim の部員を選ぶと必ず失敗する → 先に招待して claim してもらう。
  • 年次ロールオーバー (団体を休眠に落とす操作) は 4〜5月にだけ押す。 1〜3月に押すと、その年度の再登録を完了した団体まで休眠に落ちる。押す前に必ず「副産物を自動判定」を先に実行し、プレビューで件数を確認する。
  • 唯一の owner は引退できない (先に代替わりが必要)。OB が現役ページを編集する事故を防ぐため。

⑦ 年鑑と戦績を残す

担当: 運営 / 団体

  1. 戦績を追加 (大会・年・部門・成績・出典URL)/admin/guildnet/[団体]
  2. 年鑑を作成 (年度を指定)同上ロスターと戦績は自動で入る
  3. 年鑑を「公開」同上
落とし穴
  • 出典 URL を付けると検証レベルが「自己申告 → 出典あり」に上がる。 出典なしの記録はランキング等の集計対象にならない。
  • 戦績は自由テキストではなく「大会 × 年 × 部門 × ラウンド + 成績の型」で持つ。テンプレートは対戦トーナメント型と審査採点型の2種。
  • 年鑑を公開しても個人名は出ない (ロスターは「部員52名 (公開12名)」の集計表示)。

3. 全画面・全ボタン

不可逆準不可逆可逆読取のみ

ハブ /admin/guildnet

担当: 運営団体の状態 (稼働/休眠/凍結) の把握と、年次ロールオーバー。全画面への導線。

ボタン何をするか危険度押す前に
年次ロールオーバー実行再登録が未完了の団体を 稼働 → 休眠 → 凍結 に落とす (ページは消さない)不可逆4〜5月にだけ押す。1〜3月に押すと当年度の再登録済み団体まで落ちる。実行前にプレビューで件数を確認し、先に renewal の「副産物を自動判定」を回すこと。

団体編集 /admin/guildnet/[団体]

担当: 運営プロフィール (創立年・公認区分・slug)・可視性の既定・年鑑・戦績。

ボタン何をするか危険度押す前に
保存 (プロフィール)創立年・公認区分を台帳に記録可逆
slug を設定公開 URL (/guild/orgs/[slug]) を決める準不可逆slug が無いと GUILD の公開面に出ない。変更すると旧 URL は 404 になる。
可視性の既定を変更氏名・勤務先・連絡先を団体としてどこまで見せるかの既定値可逆本人の同意の天井を超えては広がらない (三層 ACL)。
年鑑を作成 / 公開 / 非公開に戻す年度の年鑑を作り公開する可逆
戦績を追加大会 × 年 × 部門 × 成績を台帳に記録可逆出典 URL を付けると検証レベルが上がる (集計対象になる)。
戦績を削除戦績を物理削除不可逆二段階クリック。台帳には削除の記録が残るが、行は戻らない。
今年度の再登録を完了にする稼働状態に戻し、最終確認年度を更新準不可逆

取込 /admin/guildnet/import

担当: 運営名簿 (CSV/貼り付け/AI抽出) → org 隔離ドラフト → レビュー承認 → 名簿反映。

ボタン何をするか危険度押す前に
プレビューパース結果を見る (DB には書かない)読取のみ
ドラフトを作成PII を金庫に封入して非公開ドラフトを作る準不可逆同じ内容の二度目は DB が拒否する (二重人物の防止)。取り込んだ日から24ヶ月で保持期限が始まる。
選択した N 行を承認在籍レコードと氏名を本テーブルに載せる不可逆名寄せ (merges) を先にやってはいけない。 統合済みの person に承認すると幽霊行になる。
却下 / 却下を戻す行をレビュー対象から外す (戻せる)可逆
AI で抽出するLLM で自由形式の名簿を構造化する不可逆外部送信の同意チェックが必須 (委託名簿を外部 API に送るのは個情法の委託先提供)。未チェックなら決定論パースに落ちる。送信の意思決定は監査ログに残る。

claim ファネル /admin/guildnet/invites

担当: 運営招待の発行・claim 率の把握・代理更新提案の承認。

ボタン何をするか危険度押す前に
招待を発行招待 URL を作る (DB にはハッシュのみ)不可逆発行したら即「全 URL をコピー」する。 画面を離れると二度と取得できない。再発行しても古い URL は90日間有効。
全 URL をコピー (TSV)氏名 + URL をクリップボードへ読取のみ
代理更新提案の承認 / 却下仲間からの「転職したよ」提案を反映/破棄準不可逆本人には通知が飛ぶ。検証レベルは peer_confirmed (本人確定は騙らない)。

会費 /admin/guildnet/fees

担当: 運営 / OB会幹事プラン作成 → 一括請求 → 納付管理 → 未納督促 → 回収率。資金は預からない。

ボタン何をするか危険度押す前に
対象人数を確認請求が飛ぶ人数を事前に見る読取のみ一括請求の前に必ず押す。
プランを作る年度・金額・対象・期限を決める (draft)可逆
一括請求対象者全員に請求を発行不可逆対象人数を確認してから。冪等なので再実行しても二重にはならない (差分のみ発行)。
未納督促督促した事実を記録し、通知を作る不可逆メール登録済みの人には自動でメールが送られる (best-effort・冷却7日・上限3回)。メール未登録の人には送れないので、その分だけ「明細」で氏名を出して手動で連絡する。
明細氏名込みの請求一覧 (admin のみ・金庫から復号)読取のみ
入金 / 免除 / 連絡不能 / 取消納付状態を記録可逆
締切プランを閉じる不可逆以後は一括請求できない。

スポンサー市場 /admin/guildnet/sponsor

担当: 運営企業審査・SKU棚・商談・手数料・履行管理。企業に個人データは一切出さない。

ボタン何をするか危険度押す前に
企業を承認 / 停止審査。承認された企業だけが問い合わせできる準不可逆
プラン設定 (標準3万 / 包括10万)企業サブスクの月額可逆
棚に置く (協賛メニュー)種別・価格・履行内容を掲載可逆履行内容に「SNS投稿」の語を入れる (#PR 必須チェックの作動条件)。高野連団体は掲載自体が弾かれる。
停止 / 再開 (掲載)掲載の一時停止可逆
成約成約額を確定し手数料を自動計算 (逆進)。履行チェックリストを自動展開不可逆手数料込みの確認が出る。中止は「中止」ボタンで。
履行の提出 / 承認証跡 URL を登録して承認する準不可逆SNS 履行は #PR チェックが無いと提出できない (ステマ規制)。
完了商談を完了し履行実績を付ける不可逆

再登録・代替わり /admin/guildnet/renewal

担当: 運営年次再登録の自動判定・代替わり・引退OB・復活・PLG開設・エクスポート。

ボタン何をするか危険度押す前に
副産物を自動判定して完了にする3-5月の管理操作があった団体を再登録完了にする準不可逆対象一覧を目視してから押す。稼働団体のみが対象 (凍結団体は迂回復活しない)。
Primary Contact を移譲新代表を立てる (旧 owner は editor に降格)不可逆claim 済み (18歳申告済み) の人しか選べない。 未 claim なら先に招待する。
引退を記録する在籍を終了し OB スコープを付与不可逆唯一の owner は引退できない (先に代替わり)。OB 意思にチェックを入れると claim 招待の通知が出る。
復活させる (系譜を継ぐ)休眠・凍結の団体を稼働に戻す準不可逆新代表の指名が必要。
団体を開設するPLG 開設 (claim 25人まで非公開)準不可逆
claim 数を再判定閾値到達なら公開する準不可逆
エクスポートしてダウンロード団体の全データ (氏名含む) を JSON/CSV で保存不可逆PII がローカルに落ちる。取り扱いに注意。ダウンロードの事実は台帳に残る。

名寄せ /admin/guildnet/merges

担当: 運営同一人物候補の承認・統合・取り消し (unmerge)・誤マージの影響調査。

ボタン何をするか危険度押す前に
同一人物として統合2つの person を1つにまとめる準不可逆取込の承認より先にやらない。 誤マージは他人の勤務先・戦績が見える事故になる。
別人として却下候補を消す可逆
統合を取り消す (unmerge)マージ前の記録 (provenance) を頼りに2人に分け直す準不可逆マージ後に生まれた行は機械には振り分けられないので、レビューキューに戻る。
影響を調べる誤って合成されたプロフィールを誰が見たかを洗い出す読取のみ

マイページ (本人) /guild/me

担当: OB・OG / 現役部員 (本人のみ)本人が自分のデータを操作する唯一の常設面。公開範囲の変更・更新提案の承認/却下・会費の納付状況・通知の受信箱・自分史。

ボタン何をするか危険度押す前に
招待リンクで紐づける招待 URL を貼ってアカウントと GUILD の記録を結びつける準不可逆claim 済みの招待リンクだけが使える。 未 claim のリンクを貼ると claim ページへ誘導される。1 アカウント = 1 person (既に紐づいた記録は奪えない)。
公開範囲を変更 (項目ごと)本人が同意した上限 (天井) を変える。同意ログに追記され、狭める操作は「撤回」として残る可逆天井を広げても表示が広がらないことがある。 実際の見え方は min(団体の既定, 本人の設定, 天井)。団体の既定が狭い場合は画面に「団体の既定が上限」と出る — その先は団体管理者の操作 (/admin/guildnet/[団体]) が要る。勤務先は org_ob まで・連絡先は org_members までしか選べない (許可リストで固定)。
更新提案を承認 / 却下仲間からの「転職したよ」提案を名簿に反映 / 破棄する準不可逆承認すると検証レベル self_reported で名簿に載る (本人確認なので最も強い扱いにはしない)。勤務先は既存の現職を過去にしてから積むので履歴は消えない。提案者の氏名は本人にも表示しない (他人の PII を可視性エンジンの外に出さないため)。
会費の確認請求額・期限・振込先案内・納付状況を見る読取のみこの画面から決済はできない (Stripe Connect 未開通)。振込は団体の口座へ直接。入金の記録は団体側 (/admin/guildnet/fees) が行い、この画面に反映される。
既読にする / すべて既読通知を既読にする可逆

団体間ボード /admin/guildnet/board

担当: 運営 / 団体合同練習・合同イベント・交流・運営募集の掲示と返信。

ボタン何をするか危険度押す前に
掲示する募集を出す可逆本文に連絡先 (メール・電話) は書けない (拒否される)。
返信する掲載元に返信 (相手の管理者に通知)可逆
締切 / 再掲募集を閉じる・戻す可逆

4. 禁止事項 (法務)

コードで機械的に防いでいるものが多いが、運用で破れるものもある。理由まで理解して運用する。

やってはいけない: 団体からもらった名簿をそのまま公開する
なぜ: 個人情報保護法 27 条 (第三者提供の制限)。令和8年改正で課徴金の対象になる。
代わりに: 取込 → 非公開ドラフト → 本人が claim して公開範囲を選ぶ、が唯一の適法ルート。
やってはいけない: 企業に部員・OB の個人データを見せる
なぜ: 職業安定法。学生の個人情報を集めて企業に提供すると「特定募集情報等提供事業」に該当し、届出が必要 (無届出は刑事罰)。
代わりに: 企業に見せるのは団体レベルの集計値だけ (部員数・創立年・戦績数・履行実績)。コードで固定してある。
やってはいけない: 学生の SNS 投稿に #PR を付けずに協賛の宣伝をさせる
なぜ: 景品表示法のステルスマーケティング規制 (2023.10 施行)。
代わりに: 履行内容のラベルに「SNS投稿」を入れる → #PR チェックが必須になる。
やってはいけない: 委託された名簿を同意なく外部 AI に送る
なぜ: 個人情報保護法上の「委託先への提供」。取込元の団体が同意していない外部送信は範囲外。
代わりに: AI 抽出パネルの同意チェックを入れる (入れなければ決定論パースに落ちる)。
やってはいけない: 他の団体のデータと突き合わせて名寄せする
なぜ: claim 前の委託データを別団体のデータと突合するのは委託の範囲を超える。
代わりに: 名寄せは同一団体内のみ。本人が claim した後は本人の意思でマージできる。
やってはいけない: 18歳未満を登録する
なぜ: SPIKES GUILD は 18歳以上のみ (2026-07-13 決裁)。保護者同意フローを実装していない。
代わりに: 年齢不明・未申告は自動的に非公開になる (fail-closed)。

5. トラブルシューティング

招待した人が claim してくれない

URL の有効期限は 90 日。再発行できるが古い URL も生きたまま。claim 率は invites 画面で見える。なお「招待済み」の数字は取り込んだ人数であり、実際に URL を配った人数ではない。

招待 URL を紛失した

DB にはハッシュしか無いので復元できない。再発行する (古い URL も 90 日は有効なまま残る)。次回は発行直後に「全 URL をコピー」して TSV を保存すること。

GUILD の公開面に団体が出ない

3 つの条件を全部満たす必要がある: ① slug が設定されている ② 有効化されている (PLG なら claim 25人 / 既存団体は免除済み) ③ 稼働状態 (休眠・凍結だと出ない)。

公開ページに部員の名前が出ない

仕様。公開面に出るのは「部員52名 (公開12名)」の集計だけ。本人が全体公開を選んでも、団体の既定と同意の天井の min を取るため、既定が団体内のままなら出ない。出したい場合は団体編集画面で可視性の既定を変える。

会費の対象者が 0 人になる

OB の判定は「退部年があり、終了理由が卒業・引退」。CSV に退部年の列が無いと全員が現役扱いになる。取込後に renewal の「引退を記録する」で終了理由を付けるか、CSV を作り直す。

間違えて統合 (マージ) してしまった

merges 画面の「統合を取り消す (unmerge)」。マージ前の記録 (provenance) から2人に分け直す。マージ後に生まれた行はレビューキューに戻る。「影響を調べる」で誰が誤ったプロフィールを見たかを洗い出せる (漏えい評価)。

取込の承認をしたのに部員数が増えない

名寄せを承認より先にやった可能性が高い。統合された person に在籍を足すと幽霊行になる。unmerge して承認済み行を確認する。順序は「取込 → 承認 → 名寄せ」。

督促したのに OB から連絡が来ない

督促ボタンはメール登録済みの人には自動でメールを送る (best-effort)。まず「明細」でその人がメール未登録でないか確認する — 未登録なら送れないので手動でメール・郵送する。登録済みでも迷惑メール・アドレス変更で届かないことはあるので、その場合も手動で連絡する。督促の通知はアプリ内にも積まれ、本人が /guild/me の会費セクションで金額・期限・振込先を確認できる (サインインが必要)。

本人から「公開範囲を変えたい」と言われた

運営が代理で変更してはいけない (同意の天井は本人しか動かせない)。本人に /guild/me へサインインしてもらう。GUILD の記録と紐づいていない場合は、招待リンクを貼ってもらえば紐づく。招待リンクが失効していたら /admin/guildnet/invites で再発行する。

本人が「全体公開にしたのに名前が出ない」と言っている

実際の見え方は min(団体の既定, 本人の設定, 本人が同意した天井)。団体の既定が団体内のままなら本人がいくら開いても出ない。/guild/me の可視性表に「団体の既定が上限」と出ているはず。公開したい場合は団体編集画面 (/admin/guildnet/[団体]) で可視性の既定を広げる。

更新提案がいつまでも承認されない

提案は本人が承認するまで反映されない (これが適法性の要)。本人宛に通知が飛び、/guild/me の提案セクションに承認待ちとして出る。本人が反応しない場合のみ、運営が /admin/guildnet/invites で承認できる (検証レベルは peer_confirmed になる)。

1〜3月に年次ロールオーバーを押してしまった

当年度の再登録済み団体まで休眠に落ちている可能性がある。renewal の「副産物を自動判定」を回すと、管理操作のあった団体は稼働に戻る。ページ自体は消えていないので復旧可能。

企業から「申請が集中しています と出て申請できない」と連絡が来た

レート制限 (公開の書き込み口の防御) に掛かっている。企業申請は同一 IP から 1 時間に 5 回まで。同じ会社の複数人が同じ社内ネットワークから連投すると掛かりうる。時間をおけば自動で解除される (管理画面に解除ボタンは無い)。急ぎなら運営が admin の企業画面から代理で登録する。

管理画面に「試行回数が多すぎます」と出てログインできない

パスワード総当たり防御。同一 IP から 10 分に 8 回まで。10 分待てば自動で解除される。パスワードを忘れた場合は待っても解決しないので、Vercel の環境変数 ADMIN_PASSWORD を確認する。

レート制限を本番で確実に効かせたい (複数インスタンス)

Vercel はリクエスト毎に別インスタンスが立ちうるため、プロセス内カウンタだけでは取りこぼす。Vercel の環境変数に UPSTASH_REDIS_REST_URL と UPSTASH_REDIS_REST_TOKEN を設定すると、共有ストアで全インスタンスを跨いで数える。未設定でもプロセス内カウンタは常に動くので「無制限」にはならない。閾値の一覧は src/lib/rateLimit/policy.ts が唯一の真実源。

6. 用語集

claim本人が招待 URL から自分の記録を引き取る操作。これをして初めて可視性を自分で選べる。適法性の中核。
金庫 (pii_vault)氏名・連絡先・勤務先の保管先。person ごとの鍵で暗号化されており、削除請求は鍵を破棄するだけで台帳・ドラフト・投影を横断して読めなくなる。
三層 ACL見える範囲 = min(団体の既定, 本人の設定, 本人が同意した天井)。管理者は本人の同意を超えて公開を広げられない。
台帳 (assertion) と投影 (projection)事実は追記のみ (上書きしない)。公開値は「検証レベルが高い順 → 信頼度 → 新しさ」で勝者を選んで投影する。
検証レベル自己申告 < 相互確認 < 出典あり < 団体確認 < 連盟公式。出典なしの記録は集計対象にならない。
PLG (25人閾値)誰でも団体を開設できるが、claim 済み 25 人に達するまで公開しない。中身が空の GUILD ページを作らないための仕組み。
3ステート稼働 / 休眠 (再登録1回未完了) / 凍結 (2回連続未完了)。ページは絶対に消さない。
年度の定義再登録・代替わりは 4月始まりの年度。会費プランは暦年。画面ごとに既定値が違うので年欄は必ず目視確認する。
協賛手数料協賛市場と実契約が成立した段階で、実際の契約条件と一致する料金だけを公開する。現在の料金ページは非公開。
履行実績完了した商談の数。次の協賛の成約率を上げる循環をつくる。
レート制限ログイン不要で書き込める口 (企業申請・団体登録・claim・管理ログイン) を接続元ごとに数え、短時間の連投を弾く仕組み。判定に失敗したときは通さず弾く (fail-closed)。ただし配信停止と開封計測だけは例外で、壊れるより通す (法令・メール表示の都合)。接続元は生の IP ではなく復元不能なハッシュで数えるため、IP は保存されない。