# 開発ステップ (Development Plan)

実装は以下のステップ順に進める．各ステップは `/implement <タスク>` で開始し，完了時にコミットする．
core（診断ロジック）を先に完成・検証し，GUI は検証済みの core の上に載せる方針とする．

## ステップ一覧 (Steps)

| # | ステップ | 内容 | 完了条件 |
| --- | --- | --- | --- |
| 1 | プロジェクト骨格 | `pyproject.toml`（uv・Ruff・pytest 設定）と `src/tiasjudge/` の骨格を作成．`data.csv` を `data/` に配置（UTF-8 化）．`ENV_04_開発コマンド.md` を作成 | `uv sync` → `uv run pytest` が通る |
| 2 | core: CSV 読込 | `csv_io.py`（変換行列 17×3・data.csv 84×193 の読込と形式検証）＋異常系テスト | 実データを読める．不正形式で専用例外 |
| 3 | core: 色変換 | `color.py`（RGB→XYZ 多項式・XYZ→Lab）＋既知値による単体テスト | SPEC_02 (1)(2) の式を再現 |
| 4 | core: SVM 分類 | `svm.py`（190 列の SVM 学習・予測・5 色スコア集計・失敗検出）＋ `roi.py`（ROI 平均色）＋テスト | SPEC_02 (0)(3) を再現 |
| 5 | 回帰テスト | 旧実装 exe で採取した入出力ペア（RGB → Lab・5 色スコア）を `tests/fixtures/` に固定し，パイプライン全体を照合 | 全ペアで結果一致（不一致時は原因を特定し記録） |
| 6 | GUI: メイン画面 | `main_window.py`（ファイル選択・画像表示・クロップ・ROI クリック・入力ガード・診断続行） | SPEC_01 メイン画面のとおり動作（手動確認） |
| 7 | GUI: 結果画面・結合 | `result_window.py`（5 色表示・上位 2 色強調・日英切替・失敗表示）と全体結合 | SPEC_01 結果画面のとおり動作（手動確認） |
| 8 | 配布（任意） | PyInstaller で Windows exe 化（必要になった時点で実施） | 単体 exe で起動・診断できる |

## 依存関係 (Dependencies)

```text
1 → 2 → 3 → 4 → 5 → 6 → 7 → 8
            （5 は旧 exe での採取作業＝ユーザー協力が必要）
```

## 人間が行う作業 (Human Tasks)

- **ステップ 5**: 旧実装 exe を実行し，検証用の入出力ペアを採取する（クリック位置を固定できないため，AI が用意する手順に沿って実施する）
- **ステップ 6〜7**: 画面の手動動作確認（GUI の自動テストは書かない方針．`.claude/rules/testing.md`）
- GitHub リポジトリの作成（ENV_03．未実施の場合）

## マイルストーン (Milestones)

- **M1（ステップ 5 完了）**: 診断ロジックが旧実装と同一結果を返すことが証明される（本プロジェクトの核心）
- **M2（ステップ 7 完了）**: アプリとして旧実装を置き換え可能になる
