diff --git a/CLAUDE.md b/CLAUDE.md index 3c32d18..bf5c17e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,7 +4,7 @@ ## 開発進捗 -最新: /setup フェーズ 5(規約整備)まで完了.次はフェーズ 6(開発計画) +最新: /setup フェーズ 6(開発計画)まで完了.次はフェーズ 7(実装開始: CLAUDE.md 最終更新) ※ 本欄は**最新ステップ 1 行のみ上書き更新**.詳細な進捗履歴(動機・設計判断・失敗パターン)は [docs/PROGRESS.md](docs/PROGRESS.md) に追記する.運用ルールは `.claude/rules/progress-log.md` を参照(該当ファイル編集時に自動ロードされる). ## 必須ルール(コード実装時) diff --git "a/docs/03_PLAN/PLAN_02_\351\226\213\347\231\272\343\202\271\343\203\206\343\203\203\343\203\227.md" "b/docs/03_PLAN/PLAN_02_\351\226\213\347\231\272\343\202\271\343\203\206\343\203\203\343\203\227.md" new file mode 100644 index 0000000..359cddc --- /dev/null +++ "b/docs/03_PLAN/PLAN_02_\351\226\213\347\231\272\343\202\271\343\203\206\343\203\203\343\203\227.md" @@ -0,0 +1,35 @@ +# 開発ステップ (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 完了)**: アプリとして旧実装を置き換え可能になる diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index a250dcb..eb1e078 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -17,3 +17,4 @@ - [x] **/setup フェーズ 4 完了(仕様設計)**: 旧実装の解析から SPEC_01(画面仕様)・SPEC_02(診断ロジック仕様)を作成. - 設計判断: ① 診断失敗検出は現行のマジックナンバー比較(スコア 42/0/5/11/3 一致)をやめ原因の直接検出に変更 / ② 日本語結果画面は文字入りビットマップ背景をやめ描画生成に変更(アセット非依存・表示は現行踏襲)/ ③ Lab 変換は CIE 標準の低輝度分岐を持たない現行式を意図的に踏襲(結果同一性優先) - [x] **/setup フェーズ 5 完了(規約整備)**: Python スタック向け path-scoped rules(coding-style / project-structure / testing / error-handling)を作成.パッケージ名は `tiasjudge`(src レイアウト,core と gui を分離),テストは旧実装との回帰テストを最重視,GUI 自動テストは書かない方針 +- [x] **/setup フェーズ 6 完了(開発計画)**: PLAN_02 を作成.core 先行の 8 ステップ構成(骨格 → csv_io → color → svm → 回帰テスト → GUI 2 画面 → 配布).M1 = 旧実装との結果一致の証明(ステップ 5,旧 exe での入出力採取にユーザー協力が必要),M2 = アプリ置き換え可能