# Manus マニュアル群 — 正誤一覧（トラブルシューティング編含む）

Manus 提供:
- `JRA-VANデータ取得・Linux連携 完全構築マニュアル.md`
- `JRA-VANデータ取得 最終解決ガイド（トラブルシューティング編）.md`

**このプロジェクトで使う正本:** [ops_jv_WINDOWS_STEPS.md](./ops_jv_WINDOWS_STEPS.md)

oshim PC 固定:
- jrvltsql: `C:\Users\oshim\jrvltsql`
- Python: `venv32\Scripts\python.exe`（32bit）
- サーバー: `root@163.44.117.9` / `/var/www/html/tools.kachiumaai.com`

---

## 採用する（Manus で正しい）

| 内容 | 出典 |
|------|------|
| Windows で jrvltsql → `keiba.db` → Linux へ scp | 両マニュアル §1 |
| JV-Link は 32bit COM・Windows 専用 | TS §1 |
| **32bit Python 必須** | TS §2.1 |
| Git 必要（install 時） | TS §2.2 |
| `config/config.yaml` のサービスキー | TS §2.4 |
| JV-Link 設定アプリでキー・状態確認 | TS §3.1 |
| PC 再起動で JV セッションリセット | TS §3.2 |
| **RACE に確定オッズ含む** | 構築 §2.4 表 |
| scp で Linux 転送 | 両マニュアル §3/§5 |
| jrvltsql 推奨・直接 COM は最終手段 | TS §4 |

---

## 使わない（Manus の誤り・古い記述）

| Manus の記述 | 正しい理解 |
|--------------|------------|
| `jrvltsql.exe download` | **コマンド不存在** → `jltsql fetch` または `quickstart.bat` |
| `quickstart.bat` を1行に書き換え | **禁止** |
| `--from 20200101000000`（14桁） | **`--from 20200101`**（8桁） |
| `--spec O1` 単体 | **JVOpen -111** → `--spec RACE` |
| `--option 1` だけで過去一括 | **Imported 0** になりやすい → セットアップは **option 4** |
| 2020〜2026 一括 fetch | **1年ずつ**（2020 → 確認 → 2021 …） |
| JV-Link「**接続テスト**」ボタン | 実際は「**状態を取得する**」→「正常です」 |
| SQL 列名 `JvdYear`, `JvdWinOdds` | 実 DB: `Year`, `TanOdds`, `JyoCD` 等 |
| 転送先 `/home/ubuntu/jra_data/` | 本番: `root@163.44.117.9:/root/keiba.db` |
| SSH トンネル + `fetch_jv_raw` | Manus に**無し**。別ルート（今回は使わない） |
| TS §3.3 の download 例 | **そのまま実行しない** |

---

## Manus に無いが実際に重要（こちらで追加）

| 現象 | 原因 | 対処 |
|------|------|------|
| option 4 で **70分 0%・ファイル0** | **JV-Link セットアップダイアログ**が裏に隠れている | タスクバー / `Alt+Tab` で OK |
| `jltsql status` が「利用不可」 | モジュール Import の表示バグのことがある | JV-Link「正常」+ `JVInit=0` を正とする |
| `JVInit=0` なのに進まない | 上記ダイアログ待ち | 同上 |
| レースはあるが TanOdds が少ない | option 1 差分では埋まらない | **RACE + option 4** を年単位で |
| Manus「DataKubun=4 だけ確定」 | 蓄積では **5=確定(月曜)** が主。4 が 0 件でも正常 | `check_o1_datakubun.bat` で 4,5 を確認 |
| Manus「-111=サービスキー認証」 | 公式は **dataspec 不正**。画面は「契約外のデータ種別」 | `--spec O1` 単体は使わない |
| `database is locked` / NL_H1 挿入失敗 | **別プロセスが keiba.db を開いている** | 下記「DB ロック」 |

### DB ロック（database is locked）

**原因:** `keiba.db` を同時に触るプロセスが2つ以上（fetch 複数、DB Browser、件数確認 python、quickstart 残り、OneDrive 同期など）。

**対処（この順）:**

1. fetch 以外の **keiba.db を開いているものを全部閉じる**（SQLite ブラウザ、Excel、別 cmd の python）
2. **動いている fetch は1つだけ**。古い fetch / 6年一括が残っていれば `Ctrl+C` で止める
3. 全部閉じたら **30秒待つ**
4. **2020年だけ** fetch を再実行（正本コマンド）
5. 再開中は **STEP 3 の件数確認 python を実行しない**（fetch 完了まで）

fetch 中にロックエラーが **たまに** 出ても、最後に `Imported` が増えていれば続行可。**毎回30秒おきに失敗** なら止めて上記からやり直し。

---

## あなたの環境でのチェック結果（2026-06）

| TS § | 項目 | 状態 |
|------|------|------|
| 2.1 | 32bit Python | **OK**（`venv32` で `JVInit=0`） |
| 2.4 | config.yaml | JV-Link 設定でキー済みなら多くの場合 OK。未設定なら `config\config.yaml` を確認 |
| 3.1 | JV-Link 状態 | **OK**（「正常です」確認済み） |
| 3.3 | 取得コマンド | Manus 例は **NG**。下記正本を使う |

---

## 正本コマンド（トラブル後の再開）

### 事前確認（STEP 1-2-C）

```bat
cd /d C:\Users\oshim\jrvltsql
venv32\Scripts\python.exe -c "import win32com.client;j=win32com.client.Dispatch('JVDTLab.JVLink');print('JVInit=',j.JVInit('TEST'))"
```

`JVInit= 0` であること。

### 取得（STEP 2・2020年だけ）

```bat
cd /d C:\Users\oshim\jrvltsql
venv32\Scripts\jltsql.exe fetch --from 20200101 --to 20201231 --spec RACE --option 4
```

**ダイアログが出たら必ず OK。** 30〜60分いても ファイル:0 なら `Ctrl+C` で止める。

### 件数確認（STEP 3）

```bat
cd /d C:\Users\oshim\jrvltsql
venv32\Scripts\python.exe -c "import sqlite3;s=chr(124)*2;c=sqlite3.connect('data/keiba.db');q='SELECT COUNT(DISTINCT Year'+s+'JyoCD'+s+'MonthDay'+s+'RaceNum) FROM NL_O1 WHERE TanOdds IS NOT NULL AND length(TanOdds)>0';print('races_with_tanodds:',c.execute(q).fetchone()[0])"
```

目標: **18,000+**（全体）。2020 だけならまず **6,734 より増えるか** を見る。

### 転送（STEP 4）

```bat
scp C:\Users\oshim\jrvltsql\data\keiba.db root@163.44.117.9:/root/keiba.db
```

### サーバー取込（STEP 5）

```bash
cd /var/www/html/tools.kachiumaai.com
./scripts/backfill_odds_pipeline.sh /root/keiba.db --repredict
```

---

## TS §4（Python 直接操作）について

Manus が最終手段として提示。**今はやらない。**

- `jrvltsql` が動いている（`JVInit=0`、fetch 起動済み）
- 固定長パースを自前実装する必要があり、工数とバグリスクが大きい
- `jrvltsql` + 年単位 fetch で解決するのが正しい

---

## 参照

- [ops_jv_WINDOWS_STEPS.md](./ops_jv_WINDOWS_STEPS.md)
- [ops_jv_o1_odds_troubleshooting.md](./ops_jv_o1_odds_troubleshooting.md)
- [jrvltsql GitHub](https://github.com/miyamamoto/jrvltsql)
