地域段階展開 (Phase 3-1)

Parky 公開ポータルは「在庫・データ品質が揃った都道府県から順に解禁する」運用を取る。

制御ポイント

環境変数 PUBLIC_PUBLISHED_PREFECTURES を build 時に渡すことで、 公開対象の都道府県 slug を絞り込む。

  • 未設定 / *: 全都道府県を公開 (既定)
  • CSV 指定 (tokyo,kanagawa,osaka): そこに含まれる都道府県のみ公開
  • 空文字列 "": 全都道府県を公開 (= 未設定と同義)

src/lib/site-config.tsPUBLISHED_PREFECTURESisPrefecturePublished() が制御の中枢。 fetchPublishableStationHubs() がこのホワイトリストでハブを封印し、 結果として:

  • 該当 prefecture の駅ハブ → /p/{pref}/... 以下が 1 ページも生成されない
  • 属性フィルタ / スポット詳細 / シーン特集のランキング / メディア記事の 関連リンクからも自然に除外される
  • sitemap も空 (dev 環境の既存挙動と同じ)

段階展開プラン

プラン curious-squishing-bumblebee.md の Phase 3 に沿って、 以下の順で解禁する想定:

  1. tokyo (Phase 1-2 の主戦場、既に検証済み)
  2. kanagawa (横浜駅・川崎駅の在庫が揃い次第)
  3. osaka (梅田・なんば駅)
  4. aichi (名古屋駅)
  5. fukuoka (博多駅・天神)
  6. hokkaido (札幌駅)
  7. 以降、全国 47 都道府県

ワークフローへの組み込み方

prod (parky.co.jp) 用 workflow

.github/workflows/deploy-public-prod.yml 新設時に以下を追加:

      - name: Build
        env:
          PUBLIC_SITE_URL: https://parky.co.jp
          PUBLIC_PUBLISHED_PREFECTURES: tokyo,kanagawa
          PUBLIC_SUPABASE_URL: ${{ env.SUPABASE_URL_PROD }}
          PUBLIC_SUPABASE_ANON_KEY: ${{ env.SUPABASE_ANON_KEY_PROD }}
        run: npm run build -w portal/public

PUBLIC_PUBLISHED_PREFECTURES を更新してコミットするだけで、 次回デプロイから新しい地域が自動的に解禁される。

dev (dev.parky.co.jp) 用 workflow

既存 deploy-public-dev.ymlBuild ステップに同じ env を追加。 dev は検証目的なので全解禁 (* or 未設定) を推奨。

新地域解禁時のチェックリスト

  1. ✅ 該当 prefecture の cities / stations テーブルに seed 投入済み
  2. parking_lot_nearby_spots の rebuild バッチを回し、近隣駅情報が埋まっている
  3. hub_inventory_stats MV を REFRESH MATERIALIZED VIEW で更新
  4. ✅ 在庫 5 件以上の駅が十分にあるか (最低 10 駅目安)
  5. ✅ dev で build し、/p/{pref}/ 配下のページが期待通り生成されるか目視確認
  6. PUBLIC_PUBLISHED_PREFECTURES に slug を追加
  7. ✅ prod デプロイ後、sitemap に新 URL が含まれているか確認
  8. ✅ Search Console の URL 検査で 1-2 ページのインデックス申請

切り戻し

問題が見つかった場合、PUBLIC_PUBLISHED_PREFECTURES から該当 slug を 外して再デプロイすれば即座に封印できる。 URL はそのまま 404 になるため、Google には「削除された URL」として 処理される。インデックスされた URL が気になる場合は、 Search Console から一時削除リクエストを出すことも可能。

↗ Source markdown (regional-rollout.md)