# AGENTS.md - 備品管理ハンズオン

複数のAIコーディングツールで共有する指示書です。本研修の主軸は Claude Code です。Claude Code はプロジェクト直下の `CLAUDE.md` を起動時に自動で読み込み、`.claude/settings.json` でふるまいを調整します。ツール固有の設定は `.github/` `.cursor/` `.codex/` に分けています。

## プロジェクト情報

- 名前: handson（生成AIプログラミング入門 受講者配布プロジェクト）
- 構成: kadaiA（アプリをゼロから作る作業フォルダ）+ kadaiB（Spring Boot バグ修正題材）
- テストコードの置き場所: kadaiB/src/test/java/com/example/equipment/
- 課題Bのパッケージ: com.example.equipment
- 課題Bの技術スタック
  - Java 17
  - Spring Boot 3.4
  - Spring Data JPA
  - H2 Database（インメモリ）
  - Thymeleaf
  - Maven（Maven Wrapper 同梱）

## 課題Bの構造

レイヤードアーキテクチャです。

```
controller → service (interface) → serviceImpl → repository → model (JPA Entity)
```

- controller: 画面コントローラ（EquipmentController、Thymeleaf の一覧・詳細）
- service: ビジネスロジックのインターフェースと実装
- repository: データアクセス（Spring Data JPA）
- model: JPA エンティティ（Equipment）

## ビルド

kadaiB フォルダで Maven Wrapper を使います。

```
./mvnw spring-boot:run    # 起動（Windows PowerShell は .\mvnw.cmd）
./mvnw clean package      # ビルド
./mvnw test               # テスト
```

起動後は http://localhost:8080/equipments で一覧画面が開きます。

## 業務ルール（課題B）

この5項目が仕様の正本です。実装との食い違いが不具合です。正本の全文は `kadaiB/README.md` にあります。

1. 在庫が5個以下の備品は「要補充」として扱う（5個ちょうども含む）
2. 貸出は在庫の範囲内でのみ可能（在庫を0未満にしてはいけない）
3. 日付の画面表示は yyyy/MM/dd 形式に統一する
4. 存在しない備品IDへのアクセスは、エラー画面ではなく「見つかりません」とわかる表示にする
5. 備考が未設定の備品も、詳細画面が正常に表示される

## 規約

- コメントは日本語、識別子は英語
- サービスはインターフェース + Impl パターン
- マジックナンバーは名前付き定数にする
- 詳細は docs/コーディング規約.md

## 禁止事項

- kadaiA/dummy_data.csv と kadaiB の data.sql の書き換え
- 実在する社名・個人情報・機密情報の入力
