Newer
Older
TIASjudge / docs / 04_SPEC / SPEC_01_画面仕様.md

画面仕様 (Screen Specification)

現行アプリの画面構成を踏襲する.画面は 2 つ(メイン画面・結果画面).

画面遷移 (Screen Flow)

メイン画面
  ├─ 変換行列 CSV 選択 → 画像 PNG 選択 → 画像上を 1〜4 点クリック
  ├─ [舌色診断] → 結果画面(モードレス表示)
  └─ [診断続行] → 入力をリセットして次の診断へ

メイン画面 (Main Window)

要素仕様
変換行列選択ファイル参照(.csv のみ受付.他拡張子はエラー表示)
画像選択ファイル参照(.png のみ受付).読込時に中央基準で 1024×1280 にクロップ
画像表示クロップ後画像を 1/2 縮小表示.未読込時はプレースホルダ画像
ROI 指定画像上の左クリックで 51×51 px の ROI を追加(最大 4 点.5 点目はエラー).クリック位置に赤枠を描画,クリック済みマーク(●1〜●4)を表示
リセット右クリックで全クリックを取り消し,画像を元に戻す
舌色診断 ボタン1 点以上クリックで有効化.診断を実行し結果画面を開く.実行後は再クリック防止のため無効化
L*a*b* 表示診断時に算出した L*・a*・b* を表示
5 色スコア表示紫・暗赤・紅・淡紅・淡白 の各一致率(%)を表示
診断続行 ボタン診断後に有効化.「同じ変換行列を使用するか」を確認し,画像・クリック状態をリセット
結果画面の操作: 言語切替ボタン開いている全結果画面の表示言語を切替(ボタンラベルは切替先の言語名.日本語表示中は "English").常時有効で,次に開く結果画面にも適用される(診断続行後も維持).言語状態はメイン画面が保持(初期値は日本語)
結果画面の操作: 結果画面を閉じる ボタン開いている全結果画面を閉じる.結果画面が 1 枚も無いときは無効

入力ガード(エラー表示)(Input Guards)

  • 変換行列未読込でクリック → 「変換行列を読み込んでください」
  • 画像未読込でクリック → 「画像を読み込んでください」
  • クリック 0 点で診断 → 「1 点以上 4 点以下クリックしてください」
  • 画像の端付近(ROI 51×51 が画像外にはみ出す位置)をクリック → 「画像の端から 25 px 以上内側をクリックしてください」

※ 端クリックのガードは旧実装に無い追加仕様(旧実装は OpenCV 例外でクラッシュしていた.ステップ 6 で追加).

結果画面 (Result Window)

要素仕様
診断画像クロップ後の元画像を 1/2 縮小表示
結果パネル5 色の行(色名 + 説明)を一覧表示し,上位 2 色のみスコア(%)と下線を描画
診断失敗表示診断失敗時(SPEC_02「診断失敗の判定」参照)に「Diagnosis failed / Please try again.」を表示
注記「本結果は疾患の診断を行うものではない」「表示画像は明るさ補正されている」

※ 結果画面は表示専用(患者側モニタに操作 UI を出さないため,ボタンを持たない).言語切替と「閉じる」はメイン画面の「結果画面の操作」から行う(タイトルバーの × でのみ直接閉じられる).当初は結果画面内に言語切替・閉じるボタンがあったが,2 画面運用に合わせてメイン画面へ移した. ※ 英語の説明文は長文の行のみフォントサイズを小さく固定する(Red / Dark red は 36 px,Pale red は 30 px,他は 40 px.スコア表示と重ならない実測最大値.強調の有無でサイズは変えない).

表示先モニタ(2 画面運用)(Target Monitor)

2 画面運用(施術者側=メイン画面,患者側=結果画面)を前提とし,結果画面はメイン画面が表示されているモニタとは別のモニタに最大化して表示する.

  • 基準はメイン画面が実際に載っているモニタ(プライマリ固定ではない.メイン画面をサブ側に移せば結果はプライマリ側に出る)
  • モニタが 1 台の場合は同一モニタに通常サイズで表示する(フォールバック)
  • 結果パネルは 644×644 の固定描画のため,最大化時はスケーリングせず余白が増える.内容はウィンドウ中央に配置する
  • デバッグ用 --preview-result はメイン画面が無いため,プライマリ以外のモニタを表示先とする

※ 2 画面表示は旧実装に無い追加仕様(ユーザー要望による).

5 色の表示内容 (Color Rows)

色名(日)色名(英)説明(英語版)
淡紅PinkNormal
紅RedHot flush / feverish
暗赤Dark redBlood slightly thick
紫PurpleBlood is thick
淡白紅Pale redCold / fatigue / anemia

※ 現行の日本語版は文字入り背景画像(img_student2.bmp)を使用している.新実装では日英とも描画で生成し,画像アセット依存を無くす(見た目は現行踏襲).

※ 描画生成の色は旧背景画像からのピクセル実測値を使用する(見出し RGB(233,113,50),5 色の色名は result_window.py の COLOR_SWATCHES 参照).5 色の色名のみ黒縁取り(幅 2 px)を付ける.フォントサイズ・太さも旧画像のインク高実測に基づく(説明文は Medium).

※ 5 色目の日本語表記は画面間で異なる: メイン画面は「淡白」,結果画面は「淡白紅」.旧実装(メイン画面ダイアログと結果画面の背景画像)がこの表記だったため,現行踏襲としてどちらもそのまま維持する(ステップ 7 で背景画像を実確認して確定).