# 管理者用環境構築手順 (Administrator Setup)

プロジェクト作成時に**一度だけ**行う初期設定．

## GitHub リポジトリの作成 (Repository Creation)

Private リポジトリとして作成する（臨床データは含めないが，研究途中のコードを公開しないため）．2026-10-02 時点で作成済み．

```bash
gh repo create rintoHasegawa/TIASDataHub --private --source=. --remote=origin \
  --description "舌診研究のデータを研究室 PC で一元管理する共有データ基盤"
```

## リポジトリのセキュリティ設定 (Repository Security Settings)

Dependabot alerts（脆弱性検出）と Dependabot security updates は**リポジトリごとに既定で OFF** なので，作成直後に有効化する（冪等なので再実行してよい）．2026-10-02 に実施し，検証済み．

```bash
gh api -X PUT repos/rintoHasegawa/TIASDataHub/vulnerability-alerts
gh api -X PUT repos/rintoHasegawa/TIASDataHub/automated-security-fixes
```

検証:

```bash
gh api repos/rintoHasegawa/TIASDataHub/vulnerability-alerts -i       # 204 なら有効（404 なら無効）
gh api repos/rintoHasegawa/TIASDataHub/automated-security-fixes      # {"enabled":true,...} なら有効
```

※ 依存バージョンの定期更新は `.github/dependabot.yml` で設定する（`uv`・`github-actions`．リポジトリ設定とは独立に動く）．

## 研究室 PC のツール導入 (Lab PC Tools)

2026-10-02 に手元 PC から SSH（`ssh labpc`）で実施．研究室 PC には `git` はあったが，`uv`・`gh` は無く，`python` は Microsoft Store の案内用スタブだけだった．

```powershell
powershell -NoProfile -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
C:\Users\Papin\.local\bin\uv.exe python install 3.12
```

- uv 0.12.22・Python 3.12.15 がユーザー領域（`C:\Users\Papin\.local\bin`・`C:\Users\Papin\AppData\Roaming\uv\python\`）に入った．管理者権限は不要
- `gh` は入れない（研究室 PC では編集・コミットしない）

## 研究室 PC のデプロイキー (Lab PC Deploy Key)

研究室 PC が GitHub（Private）から取得するため，このリポジトリ専用の**読み取り専用のデプロイキー**を使う（個人のアカウントの認証情報を研究室 PC に置かないため）．2026-10-02 に手元 PC から SSH で実施．

1. 研究室 PC で鍵を作る（パスフレーズなし）

   ```bash
   ssh -n labpc 'ssh-keygen -q -t ed25519 -f C:\Users\Papin\.ssh\id_ed25519_tiasdatahub -N "" -C papin-DESKTOP-1QLOO91-TIASDataHub-deploy'
   ```

2. 公開鍵をデプロイキーとして登録する（手元 PC の `gh`．既定で読み取り専用）

   ```bash
   ssh -n labpc 'type C:\Users\Papin\.ssh\id_ed25519_tiasdatahub.pub' > labpc_deploy.pub
   gh repo deploy-key add labpc_deploy.pub --repo rintoHasegawa/TIASDataHub --title "labpc DESKTOP-1QLOO91 (read-only)"
   ```

3. 研究室 PC の `C:\Users\Papin\.ssh\config` に別名を追加する

   ```text
   Host github-tiasdatahub
       HostName github.com
       User git
       IdentityFile C:/Users/Papin/.ssh/id_ed25519_tiasdatahub
       IdentitiesOnly yes
   ```

4. 接続を確かめる．初回は GitHub のホスト鍵を受け入れる（指紋が GitHub の公開値 `SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU`（ED25519）と一致することを `ssh-keygen -lF github.com` で確認した）

   ```bash
   ssh -n labpc "ssh -o StrictHostKeyChecking=accept-new -T github-tiasdatahub"
   ssh -n labpc "git ls-remote git@github-tiasdatahub:rintoHasegawa/TIASDataHub.git"
   ```

- 別名を鍵ごとに分けているのは，GitHub のデプロイキーが 1 つのリポジトリにしか登録できないため（他のリポジトリを研究室 PC に置く場合は，そのリポジトリ用の鍵と別名を同様に作る）
- 鍵を作り直したら，GitHub の Settings → Deploy keys から古い鍵を削除する

## 研究室 PC のデータの置き場所 (Lab PC Data Location)

臨床データは研究室 PC の **E ドライブ（内蔵 SATA SSD・約 465GB・NTFS）の `E:\clinical-data\`** に置く（配置は [SPEC_01「配置」](../04_SPEC/SPEC_01_アーキテクチャ設計.md)）．E ドライブは OneDrive の同期対象外．

2026-10-06 に C ドライブ（空きが少なかった）から移した．手元 PC から SSH 経由で次のように行った．

1. `C:\Users\Papin\clinical-data\` の全ファイル（26,268 個・45.30GB）を同じ構成で `E:\clinical-data\` へコピーし，コピーしたファイルを読み直して SHA-256 を元と照合した（不一致 0）
2. C と E の構成（相対パス・大きさ・空のフォルダを含むフォルダ）が一致することを確かめてから，C 側を削除した

- コピー・削除はユーザーが実行し，Claude は試走と照合（件数のみ）を行った
- C 側のフォルダには**読み取り専用の属性**が付いたものがあり，Python の `shutil.rmtree` がアクセス拒否で止まった．属性を外して再試行する（`onexc` で `os.chmod(path, stat.S_IWRITE)`）ことで削除できた
- TIASJudgeModel の手順書（ENV_03 等）にある原本のパス `C:\Users\Papin\clinical-data\…` は古くなった（TIASJudgeModel 側で直す）

## 研究室 PC への配置 (Lab PC Deployment)

立ち上げの成果物を `main` に取り込んだ後に行う．手順は [ENV_02「研究室 PC のセットアップ」](ENV_02_環境構築手順.md)．

- 2026-10-09 に実施した（手元 PC から SSH．PLAN_02 Step 6）
  1. GitHub からデプロイキーで clone し，`uv sync --no-dev --extra import`
  2. 設定ファイル `C:\Users\Papin\.config\tiasdata\config.toml` を作成（既にあれば上書きしないスクリプトを標準入力で流した）
  3. `tiasdata init` → `tiasdata import tiasjudgemodel` → `stats`・`check`（問題 0 件）
  4. `tiasdata dataset freeze tongue_color`（版 1・1081 枚）→ `tiasdata backup`（目録・対応表とも整合性 ok）

## Claude のアクセス制限 (Claude Access Restriction)

Claude にデータの中身を読ませないため，`.claude/repo-access.json` の `deny_read` にデータの置き場所を書く．研究室 PC は手元 PC から SSH で操作するため（[ENV_02「研究室 PC の操作方針」](ENV_02_環境構築手順.md)），このフックが効くのは手元 PC のパスと，コマンド文字列に現れたパスだけである．SSH の先での読み取りは，CLI の出力規則と「SSH でデータの中身を表示しない」運用で防ぐ．

```json
{
  "deny_read": [
    "E:/clinical-data",
    "data",
    "exports"
  ]
}
```

- 目録の DB ファイル・データ置き場・manifest の出力先を仕様設計で決めたら，リポジトリの外に置く場所もここに追加する

## 人間が確認すべき事項 (Human Checklist)

Claude は実施できない．

- 倫理審査で定められた臨床データの保管ルール（保管場所・アクセスできる人の範囲・保管期間・計算サーバへのコピーの可否）
- 目録の DB ファイルのバックアップ方法（仕様設計で決める．バックアップ先も OneDrive の同期対象外にする）
- 臨床データを置く E ドライブを BitLocker で暗号化するか（2026-10-06 時点で未暗号化．C ドライブも同じ．有効化には管理者権限が要る）
