# 開発コマンド (Development Commands)

日常の開発で使うコマンド一覧．**コマンドを実行する前に必ず本ファイルを参照する**（推測でコマンドを試さない）．
コマンドが新しく確定・変更されたときは本ファイルを更新する．

前提: [ENV_02_環境構築手順.md](ENV_02_環境構築手順.md) のセットアップが済んでいること．
すべてリポジトリ直下（`pyproject.toml` のある場所）で実行する．OS（Windows / macOS）による差は無い．

## 環境 (Environment)

| 目的 | コマンド |
| --- | --- |
| 依存パッケージを同期（初回・`uv.lock` 更新時） | `uv sync` |
| 依存パッケージを追加 | `uv add <パッケージ>` |
| 開発用（テスト・lint 等）の依存を追加 | `uv add --dev <パッケージ>` |
| 依存パッケージを削除 | `uv remove <パッケージ>` |
| インストール済みパッケージを確認 | `uv pip list` |

※ `pip install` は使わない（ENV_02「環境再現性のルール」）．

## 起動 (Run)

| 目的 | コマンド |
| --- | --- |
| アプリを起動 | `uv run python -m tiasjudge` |
| コンソールスクリプトで起動 | `uv run tiasjudge` |

※ GUI は PLAN_02 ステップ 6〜7 で実装する．それまでは未実装のメッセージを表示して終了する．

## テスト (Test)

| 目的 | コマンド |
| --- | --- |
| 全テストを実行 | `uv run pytest` |
| 特定ファイルを実行 | `uv run pytest tests/core/test_color.py` |
| 特定テストを実行 | `uv run pytest tests/core/test_color.py::test_xyz_to_lab` |
| 失敗時に詳細を表示 | `uv run pytest -vv` |
| 最初の失敗で中断 | `uv run pytest -x` |

※ テストが 1 件も収集されない場合，pytest は終了コード 5 で終わる．テスト対象の指定ミスを疑うこと．

## lint・フォーマット (Lint & Format)

| 目的 | コマンド |
| --- | --- |
| lint チェック | `uv run ruff check .` |
| lint の自動修正 | `uv run ruff check --fix .` |
| フォーマット実行 | `uv run ruff format .` |
| フォーマット差分の確認のみ | `uv run ruff format --check .` |

## コミット前の確認 (Pre-commit Checks)

以下の 3 つがすべて通ることを確認してからコミットする．

```bash
uv run ruff check .
uv run ruff format --check .
uv run pytest
```

## 同梱データ (Bundled Data)

| ファイル | 内容 |
| --- | --- |
| `data/data.csv` | SVM 学習データ（旧実装の `data.csv` を UTF-8 に変換して同梱．SPEC_02 参照） |

※ 変換行列 CSV・舌画像は実行時にユーザーが選択するためリポジトリに含めない．
