org/src(C++ / MFC / OpenCV 2.4)を解析し,同一機能の再構築を目的として PLAN_01・ENV_01 を作成.開発モードは solo.
cv2.ml.SVM)を使い診断結果の同一性を担保する方針org/ に置き参照専用とする(.gitignore で Git 管理外)tiasjudge(src レイアウト,core と gui を分離),テストは旧実装との回帰テストを最重視,GUI 自動テストは書かない方針/implement で開始するsrc/tiasjudge/{core,gui} 骨格・data/data.csv(CP932→UTF-8 変換配置)・ENV_04(開発コマンド)を作成.uv sync → uv run pytest 通過を確認
cv2.ml.SVM の挙動同一性を優先して >=4.10,<5 に固定data.csv の実体は 198 列(医師 39 ブロック)だが末尾ブロックは全 0 の未使用列で,有効データは SPEC_02 どおり 38 名分=193 列(SPEC_02 に注記済み).旧実装の読込列数はステップ 2 で org/src と突き合わせて確定する__main__.py はプレースホルダ(ステップ 6 で GUI 起動に差し替え).pytest-cov はステップ 2 以降で導入検討core/csv_io.py(変換行列 17×3・data.csv の読込と形式検証,専用例外 3 種)を実装(無人運転)
EXP_OUTPUT_DIM=190=38 名 × 5 色,CsvRead cols=193).実ファイル末尾 5 列は旧実装でも未読.SPEC_02 の注記を確定版に更新済みCV_32F・int キャスト)に合わせ lab=float32 / evaluations=int32.変換行列は計算精度優先で float64(旧実装も double で計算)1.0 表記を 1 と解釈する / ③ UTF-8 失敗時の cp932 フォールバックの要否(ENV_01 の UTF-8 統一方針との整合)/ ④ 変換行列は 17 行ちょうどを要求(旧実装は 18 行以上でも先頭 17 行で通す)Readfile() の係数初期化ループが i < 16 までで a[16] 等が未初期化(正常な 17 行ファイルなら影響なし.新実装には持ち込まない)core/color.py(RGB→XYZ 17 項多項式・XYZ→Lab 現行式)を実装(無人運転).C++ 逐語移植の参照実装と 4 ケースでビット一致を確認
core/svm.py(190 列 SVM 学習・予測・5 色スコア・上位 2 色・失敗検出)と core/roi.py(51×51 ROI 平均色)を実装(無人運転)
LEGACY_FAILURE_PERCENTAGES(svm.py)と当該節を戻すことtests/test_regression.py(フィクスチャ CSV があれば照合,無ければ skip)・フィクスチャ形式定義・docs/06_TEST/TEST_01_回帰テスト採取手順.md・単色 PNG 生成スクリプト(scripts/)を作成(無人運転).採取は旧 exe を使うユーザー作業(TEST_01 参照)で,フィクスチャを置くと回帰テストが自動で有効化される
gui/main_window.py(QWidget 非依存ロジック層+画面層の 2 層構成)と __main__.py の GUI 起動化(--check オプション付き)を実装(無人運転).実機での動作確認は未実施(オフスクリーンでの構築・スモークのみ)
gui/result_window.py(純ロジック層+ QPainter 描画生成+モードレス ResultWindow)と main_window との結合(暫定 QMessageBox 削除)を実装(無人運転).実機での動作確認は未実施
uv run tiasjudge --preview-result(/ --failed)を追加: 結果ウィンドウ単体をダミー結果で即起動するデバッグコマンド(毎回の診断操作を省くため.ENV_04 記載)--english オプションで英語確認scripts/auto_capture.py): 旧 exe を 1 枚ごとに起動し,Win32 メッセージ(WM_SETTEXT / クリック / WM_GETTEXT)で操作・読取.手動採取は不要になったscripts/read_legacy_values.py を作成 ② それを発展させ全自動化 ③ 初回失敗の原因は「結果画面(#32770)をエラーダイアログと誤検出」というスクリプト側のバグで,旧 exe への WM_SETTEXT 入力は最初から機能していたlab_to_scores.csv(高精度照合用の任意フィクスチャ)は未採取のまま skip(Debug ビルドが必要.必要になったら TEST_01 末尾の手順で)dist/TIASjudge.exe)を作成.同梱 data.csv での起動・診断を確認し,ユーザーの実機確認も済み(ENV_04「配布用ビルド」に手順記載)
__main__.py 直指定でなく薄いラッパ packaging/entry.py を新設(__main__.py 直指定だと PyInstaller がパッケージを辿れないことがある).同梱リソースのパス解決は frozen 判定+候補リスト方式(環境変数 → sys._MEIPASS → パッケージ同梱 → リポジトリ直下)packaging/TIASjudge.ico に配置(org/ は Git 管理外のため管理下コピーはこれが唯一).exe・ウィンドウ・タスクバーで統一(SPEC_01 に注記)ie4uinit.exe -ClearIconCache+エクスプローラー再起動で解消.ショートカット(.lnk)は別途 IconLocation の再設定が必要--verify-data を追加._verify_bundled_data() は CsvIoError のみ捕捉(diagnose の例外は素通り)・他フラグ併用時は --verify-data 優先で黙って無視,の 2 点は既知の改善余地.リソースパス解決を core/ へ移す案も申し送りあり(現状は gui 層)