# 課題B: 備品管理システム（Spring Boot）

社内備品の一覧・検索・詳細・貸出ができるWebアプリです。このプロジェクトには意図的な不具合が仕込まれています。AIでコードを理解し、Issue駆動で修正していく題材です。

## 技術スタック

- Java 17
- Spring Boot 3.4
- Spring Data JPA + H2 Database（インメモリ）
- Thymeleaf（一覧・詳細の2画面）
- Maven（Maven Wrapper 同梱。Mavenのインストールは不要です）

## 起動

このフォルダ（kadaiB）でターミナルを開いて実行します。

```
# Mac / Git Bash
./mvnw spring-boot:run

# Windows PowerShell
.\mvnw.cmd spring-boot:run
```

初回はライブラリのダウンロードで数分かかります。起動後にブラウザで開きます。

- 一覧画面: http://localhost:8080/equipments
- H2 コンソール: http://localhost:8080/h2-console（JDBC URL: jdbc:h2:mem:equipmentdb、ユーザー名 sa、パスワードは空欄）

停止はターミナルで Ctrl+C です。

## 画面と機能

- 一覧: 備品20件を表形式で表示。備品名の部分一致検索つき
- 詳細: 一覧の備品名をクリックすると全項目を表示。貸出フォームで在庫を減らせる

## 構造

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

- controller/EquipmentController.java: 画面コントローラ
- service/EquipmentService.java + EquipmentServiceImpl.java: ビジネスロジック
- repository/EquipmentRepository.java: データアクセス
- model/Equipment.java: 備品エンティティ
- resources/templates/: list.html（一覧）と detail.html（詳細）
- resources/data.sql: 初期データ20件（書き換えないでください）

## 業務ルール（この仕様との食い違いが不具合です）

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

## Issueの起票

見つけた不具合は issues/ フォルダにMarkdownで起票します。

- issues/ISSUE_TEMPLATE.md: テンプレート
- issues/ISSUE_001_詳細画面がエラーになる備品がある.md: 記入例

進め方の詳細は handson 直下の hints/step04 と step05 を参照してください。
