diff --git a/CLAUDE.md b/CLAUDE.md index 2d83ce6..4a28aba 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -81,6 +81,7 @@ ### 03_PLAN(計画) - 要件定義書: docs/03_PLAN/PLAN_01_要件定義書.md +- 開発ステップ: docs/03_PLAN/PLAN_02_開発ステップ.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..91e544e --- /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,39 @@ +# 開発ステップ (Development Steps) + +[PLAN_01 要件定義書](PLAN_01_要件定義書.md)の成功基準に向けた実装の順序.仕様は [SPEC_01](../04_SPEC/SPEC_01_アーキテクチャ設計.md)〜[SPEC_03](../04_SPEC/SPEC_03_データセットと受け渡し.md). + +## 方針 (Policy) + +- **マイルストーン 1 は舌色データだけ**で,取り込み → 版 → バンドル → 計算サーバ → TIASJudgeModel までを一通りつなぐ(2026-10-02 のユーザー判断).セグメンテーション用データ・DeepTIAS の派生データはマイルストーン 2 以降にする +- 骨組みが種類の追加に耐えるかは,マイルストーン 1 の中でも**ダミーの所見の種類を 1 つ足すテスト**で確かめる(成功基準 5) +- 各ステップは `/implement` で進め,作業ブランチ → PR で `main` に入れる.Step 1〜5 は手元 PC だけで完結する(ダミーデータ).Step 6 以降は研究室 PC・計算サーバを使う + +## マイルストーン 1: 舌色データを基盤経由で使う (Milestone 1) + +| Step | 内容 | 完了条件 | +| --- | --- | --- | +| 1 | **設定と目録の土台**: `config.py`(設定ファイルの読み込み・検証),`catalog/`(接続・マイグレーションの適用),`migrations/0001`(SPEC_02 の全表と最初の種類),`tiasdata init` | 一時ディレクトリの設定ファイルから `init` で目録ができ,`PRAGMA user_version` が最新になる.テスト(設定ファイル・マイグレーション)が通る | +| 2 | **ストア**: `store.py`(ハッシュ・コピー・照合),テスト用のダミーデータ(小さい画像・取り込み元のフォルダ)を作る `conftest.py` | 同じ中身が 1 つにまとまり,コピー後の照合・上書きしないことがテストで確かめられる | +| 3 | **取り込みと点検**: `kinds/`(`tongue_color` の値の型),`importers/tongue_color_folders`(9 フォルダ → 症例・撮影・ファイル・所見・由来),`tiasdata import`・`stats`・`check` | ダミーの 9 フォルダを取り込め,2 回実行しても同じ結果になる.想定外の構成で停止する.出力に元のファイル名が出ない | +| 4 | **データセットと版**: `datasets/tongue_color.toml`,`datasets.py`(定義の評価・版の作成),`tiasdata dataset freeze`・`list`・`show` | 所見を足す・訂正しても過去の版の構成が変わらない.構成が同じなら版を作らない.ダミーの所見の種類を 1 つ足しても既存の表を変えずに済む | +| 5 | **バンドル**: `bundle.py`(書き出し・読み込み・検証),`tiasdata export`,公開 API(`load`・`open_bundle`・`Bundle.fingerprint`) | 書き出したバンドルを目録なしで読める.改変・欠けを検出する.同じ版から同じ `manifest.csv` が得られる | +| 6 | **研究室 PC での運用開始**: 立ち上げの成果物と Step 1〜5 を `main` に取り込み GitBucket に反映 → 研究室 PC に clone・設定ファイル作成・`init` → 舌色データ(1085 枚)を取り込み → `check`・`stats` → 版 1 を作成 → `tiasdata backup` | すべて手元 PC から SSH で行える.件数が 1085 枚・9 グループで TIASJudgeModel の TEST_01 と一致する.`check` が問題 0 件 | +| 7 | **計算サーバへの受け渡し**: `deliver.py`(tar・scp・展開・`sha256sum -c`・記録),`tiasdata deliver` | 版 1 を Newton・Archimedes に渡し,両方で照合が通り,`deliveries` に記録される.データが手元 PC を通らない | +| 8 | **TIASJudgeModel の切り替え**: TIASJudgeModel にサブモジュールを追加し,`tiasdata.load("tongue_color", version=1)` から現行の manifest の形に変換して学習・評価に使う(TIASJudgeModel 側の作業ブランチで行う) | 変換した manifest が現行の manifest と同じ構成(件数・`label`・`severity` の内訳・1 患者 1 枚)になる.実験記録にバンドルの指紋が残る.研究室 PC の固定パスを書かずに済む | + +- Step 6 の前に,立ち上げの成果物(`chore/project-setup`)を `main` に取り込む +- Step 6・7 はコード(Step 7 の `deliver`)と運用(研究室 PC・サーバでの実行)が混ざる.運用の手順と結果は ENV_02・ENV_03 に記録する +- Step 8 の終了時点で PLAN_01 の成功基準 1〜7 を確認する + +## マイルストーン 2 以降の候補 (Later Milestones) + +優先度はマイルストーン 1 の完了後に決める. + +| 候補 | 内容 | +| --- | --- | +| セグメンテーション用データ | TongueSegmentation(画像・正解マスク)を取り込む importer を追加する | +| DeepTIAS の派生データ | 撮影画像・カラーチャート画像と,DeepTIAS の出力(色補正後の画像・マスク・`analysis.csv`)を由来付きで登録する.旧 exe(2021 年 12 月版)と現行ソースの出力を版で区別する | +| 実際の患者 ID を持つデータ | 対応表(`identity.sqlite`)を使う取り込み.同じ患者の複数枚・経時的な撮影.倫理審査の保管ルールの確認が前提 | +| 他の所見 | 苔の色・厚さ,問診・体質等の種類を追加する | +| バックアップ | 目録・ストアを別の媒体に退避する方法を決めて手順化する | +| TIASjudge・DeepTIAS からの利用 | 使う側を増やす |