name: CI

# PRを作ったとき / 更新したとき、および main に入ったときに走ります。
# 現時点では「結果を表示するだけ」で、赤くてもマージはできます。
# 運用が安定したら Ruleset の "Require status checks to pass" をONにして必須化します。
on:
  pull_request:
  push:
    branches: [main]

jobs:
  check:
    name: Lint / Test / Build
    runs-on: ubuntu-latest

    steps:
      - name: リポジトリを取得
        uses: actions/checkout@v4

      - name: Node.js をセットアップ
        uses: actions/setup-node@v4
        with:
          node-version: 24
          cache: npm

      - name: 依存パッケージをインストール
        run: npm ci

      # ★Prisma クライアントを生成する★
      #
      # 生成先の `lib/generated/prisma` は .gitignore 対象（`.gitignore:47`）なので、
      # ★チェックアウト直後には存在しない★。生成しないと `@/lib/generated/prisma/client`
      # が解決できず、★ビルドが module-not-found で落ちる★（2026-09-17 に PR #6 で発生）。
      #
      # ★DBには接続しない★ — `prisma generate` はスキーマだけを読む。
      # 接続先（`prisma7.config.ts` の `datasource.url`）が未設定でも生成できる。
      - name: Prisma クライアントを生成
        run: npx prisma generate

      - name: Lint
        run: npm run lint --if-present

      # 判定ロジックの期待値表テスト。
      # `--if-present` は M1 以前の名残で、現在は test スクリプトが存在する。
      - name: テスト
        run: npm test --if-present

      - name: ビルド
        run: npm run build
        env:
          # DBには接続しない。サンプルデータでビルドが通ることを確認する
          USE_FIXTURES: "true"
