# Windows コマンド手順の書き方（開発・運用共通）

**最優先:** `.cursor/rules/one-step-at-a-time.mdc` — 1STEPずつ送る。途中停止時は当該STEPからのみ再開。

エージェント・ドキュメント作者向け。**ユーザーが cmd にそのまま貼れる単位**で書く。

---

## 絶対ルール（省略禁止）

1. **「git pull してください」だけ書かない** → 必ず下記 `sync_windows_scripts.bat` 相当の **全文コマンド**を書く
2. **「bat が無ければ scp」だけ書かない** → bat 内に git pull → scp → 実行まで含める
3. **1ブロック = 1回の貼り付け**（途中で切れない）
4. **cmd と PowerShell を混ぜない**
5. **SQL の `||` を cmd の一行 `python -c` に入れない** → `.bat` か `.py` を使う
6. **存在しないコマンドを書かない**（`jrvltsql.exe download` 等）
7. **`--spec O1` 単体は使わない**（-111）

### パス固定（oshim PC）

| 用途 | パス |
|------|------|
| jrvltsql | `C:\Users\oshim\jrvltsql` |
| keiba.db | `C:\Users\oshim\jrvltsql\data\keiba.db` |
| jltsql | `C:\Users\oshim\jrvltsql\venv32\Scripts\jltsql.exe` |
| リポジトリ clone | `C:\work\ai-horse-race.maspis.com.gitclone` |
| **コード置き場サーバー** | `root@133.130.90.66`（`ai-horse-race.maspis.com`） |
| **新本番（keiba.db 送り先）** | `root@163.44.117.9`（`tools.kachiumaai.com`） |

**注意:** `163.44.117.9` に `ai-horse-race.maspis.com` のパスは**無い**。手順書・bat の scp 元は **133.130.90.66**。

---

## DataKubun 確認（ネット不要・最優先）

**git / scp 不要。** bat を1回 scp して以降はオフラインで動く。

**STEP 1 — bat を PC に置く（初回だけ・cmd に1回）:**

```bat
cd /d C:\Users\oshim\jrvltsql
scp root@133.130.90.66:/var/www/html/ai-horse-race.maspis.com/scripts/windows/check_o1_datakubun_standalone.bat .
```

**STEP 2 — 実行（cmd に1回）:**

```bat
cd /d C:\Users\oshim\jrvltsql
check_o1_datakubun_standalone.bat 2026
```

**見る行:** `kubun in (4,5):` の右の数字。

---

## 初回だけ — 手順書・bat を PC に揃える（任意）

```bat
cd /d C:\work\ai-horse-race.maspis.com.gitclone\scripts\windows
sync_windows_scripts.bat
```

scp で取る場合のサーバーは **133.130.90.66**（163.44.117.9 ではない）。

---

## よく使う bat（ダブルクリック or cmd に1回）

| 目的 | 実行方法 |
|------|----------|
| **手順書・bat を最新化** | `C:\work\ai-horse-race.maspis.com.gitclone\scripts\windows\sync_windows_scripts.bat` |
| **TanOdds 件数（年別）** | `...\scripts\windows\check_odds_count.bat` |
| **DataKubun 確認（確定オッズの区分）** | `...\scripts\windows\check_o1_datakubun.bat` |
| **DataKubun 2025年** | `check_o1_datakubun.bat 2025` |
| RACE 年別再取得 | `fetch_race_by_year.bat` |
| サーバーへ keiba.db 送信 | `upload_keiba_to_server.bat` |
| jrvltsql 対話取得 | `C:\Users\oshim\jrvltsql\quickstart.bat` |

**cmd に貼る例（DataKubun 2026）:**

```bat
cd /d C:\work\ai-horse-race.maspis.com.gitclone\scripts\windows
check_o1_datakubun.bat 2026
```

bat は **スクリプトが無ければ自動で git pull → scp → 実行** します。ユーザーが別途 pull する必要はありません。

---

## DataKubun とは（Manus 訂正の要点）

JV-Data 仕様（O1 レコード）:

| DataKubun | 意味 |
|-----------|------|
| 1 | 中間 |
| 2 | 前日売最終 |
| 3 | 最終 |
| 4 | 確定 |
| **5** | **確定（月曜）** ← 蓄積データではこちらが主 |
| 9 | レース中止 |

**確定単勝オッズを数えるとき:** `DataKubun IN ('4','5')` かつ `TanOdds > 0`  
Manus の「kubun=4 だけ」は **2026 では 0 件** になり得る。

列名は `JvdDataKubun` ではなく **`DataKubun`**。単勝は **`TanOdds`**。

---

## 悪い例（貼ると壊れる）

```bat
python -c ".... Year||JyoCD||MonthDay ..."
python -c "... q(\"DataKubun IN ('4','5')\") ..."
```

cmd が `||` や `\"` を誤解釈する。

---

## PowerShell で実行する場合

先頭に `.\` が必要なことがある。エクスプローラのダブルクリックなら不要。

---

## 参照

- メイン STEP 手順: `docs/ops_jv_WINDOWS_STEPS.md`
- Manus 正誤: `docs/ops_jv_manus_guides_errata.md`
- オッズトラブル: `docs/ops_jv_o1_odds_troubleshooting.md`
