Newer
Older
TIASjudge / .claude / rules / project-structure.md

paths: ["src/", "tests/", "data/**", "pyproject.toml"]

プロジェクト構成 (Project Structure)

ファイルを新規作成・移動するときは本構成に従うこと.

ディレクトリ構成 (Directory Layout)

TIASjudge/
├── src/
│   └── tiasjudge/
│       ├── core/          # 診断ロジック(UI 非依存)
│       │   ├── color.py   # RGB→XYZ→Lab 変換(SPEC_02 (1)(2))
│       │   ├── svm.py     # SVM 学習・5 色分類(SPEC_02 (3))
│       │   ├── roi.py     # ROI 平均色の算出(SPEC_02 (0))
│       │   └── csv_io.py  # 変換行列・data.csv の読込
│       ├── gui/           # PySide6 画面(SPEC_01)
│       │   ├── main_window.py
│       │   └── result_window.py
│       └── __main__.py    # エントリポイント(python -m tiasjudge)
├── tests/                 # pytest(src/ と同じ構造をミラーする)
├── data/                  # 学習データ等の同梱ファイル(data.csv)
├── docs/                  # ドキュメント(docs-naming.md 参照)
└── org/                   # 旧実装(Git 管理外・参照専用)

依存方向のルール (Dependency Rules)

  • core/ は PySide6・GUI に依存してはならない(import 禁止).純粋な計算・入出力のみ
  • gui/ は表示とイベント処理に徹し,診断計算を実装しない(必ず core/ を呼ぶ)
  • core/ はファイルパスを引数で受け取る.モジュール内でパスを固定しない(テスト容易性と再現性のため)

配置ルール (Placement Rules)

  • 新しいロジックは まず core/ に置けないか検討する(UI 非依存にできるものは core へ)
  • テストは tests/ 配下に test_<モジュール名>.py で置く(例: core/color.py → tests/core/test_color.py)
  • 同梱データは data/ に置き Git 管理する.ユーザーが実行時に選択するファイル(変換行列 CSV・舌画像)はリポジトリに含めない