# 研究室 PC の操作ルール (Lab PC Operation)

研究室 PC（`ssh labpc`）や計算サーバに SSH でコマンドを送るときは，常に本ルールに従うこと．運用の背景は [ENV_02「研究室 PC の操作方針」](../../docs/02_ENV/ENV_02_環境構築手順.md)．

## 禁止 (Prohibited)

- **データの中身を表示しない**: `type`・`Get-Content`・`cat`・`more`・`sqlite3` 等で，取り込み元・ストア・目録・対応表・バンドル（`E:\clinical-data\` 配下，サーバの `~/data/` 配下）を読まない．フック（`.claude/repo-access.json`）は SSH の先の読み取りを止められないため，ここで守る
- **データの一覧を表示しない**: `dir`・`ls`・`Get-ChildItem` でデータのフォルダの中身（ファイル名）を表示しない．件数が必要なら `tiasdata stats`・`tiasdata check` を使う（CLI が無い段階で件数が必要なら，ファイル名を出さずに数だけを返すコマンドにする）
- **研究室 PC で編集・コミットしない**: 研究室 PC のリポジトリは `git pull` と `uv sync --no-dev` だけにする
- **原本・ストア・目録を手で消さない・動かさない**: 削除・移動が必要な場合は，実行するコマンドを提示してユーザーに依頼する

## 許可 (Allowed)

- `tiasdata` CLI の実行（出力は [SPEC_03「出力の規則」](../../docs/04_SPEC/SPEC_03_データセットと受け渡し.md)で個人情報を含まないことが保証されている）
- ツールの有無・版の確認（`where`・`--version`），`git pull`・`uv sync --no-dev`
- ツールの導入は，コマンド・入る場所を示してユーザーの承認を得てから行う

## 書き方 (Conventions)

- 非対話で実行する（`ssh -n labpc "..."`）．パスワード入力・GUI が必要な操作は SSH で行わず，ユーザーに依頼する
- 研究室 PC の uv は絶対パス（`C:\Users\Papin\.local\bin\uv.exe`）で呼ぶ
- 出力が文字化けしたら手元で `iconv -f cp932 -t utf-8` を通す
- コマンドにデータのパスを書かない（`tiasdata` は設定ファイルで付けた名前で指定する）

## 使い捨てのスクリプト (One-off Scripts)

一度きりの調査・整理のスクリプトは，**研究室 PC にコピーせず，SSH の標準入力で流して実行する**（研究室 PC にファイルを残さず，後始末を不要にするため．2026-10-03 のユーザー判断）．

```bash
ssh labpc "set PYTHONIOENCODING=utf-8&& C:\Users\Papin\.local\bin\uv.exe run --no-project --python 3.12 --with <パッケージ> python -" < script.py
```

- スクリプトは手元の一時フォルダ（スクラッチパッド）に置き，`scp` で研究室 PC に置かない．標準入力を使うので `ssh -n` は付けない．引数は `python - --apply` のように `-` の後に渡す
- データのパス（日本語を含む）はスクリプトの中に書く（UTF-8 のまま渡せることを確認済み）
- 途中の結果（患者 ID を含む対応表等）をファイルに書き出さない．1 回の実行の中で照合から処理までを済ませ，結果はメモリ上だけで持つ．どうしても残す必要がある場合は，残す場所と削除の手順をユーザーに示して承認を得る
- 出力は件数・番号・種類名等に限る（上記「禁止」）
- 移動・削除を伴うスクリプトは，既定を試走（ファイルに触らず件数だけを出す）にし，本番（`--apply` 等）はユーザーが `!` で実行する
- 繰り返し使う処理（点検・集計・取り込み等）は使い捨てのスクリプトにせず，`tiasdata` CLI のコマンドとして実装する
