# MySQL 行前資訊填寫範本

## 1. 文件目的

本文件提供 MySQL TaskStore PoC 行前資訊填寫範本。

此範本用於讓使用者確認 MySQL 測試環境是否已準備完成，並提供後續最小連線測試、Dry Run SQL 與 AutoCreateSchema 測試所需資訊。

本文件不得填入真實密碼。若需要提供 password，請使用安全通道、環境變數或臨時輸入方式。

## 2. 可寫入文件的資訊

| 項目 | 填寫值 | 狀態 | 備註 |
|---|---|---|---|
| MySQL 版本 | `5.6.2` | 待確認 | 若非 5.6.2，需先標註版本差異 |
| Host / IP | 待填 | 待確認 | 可填內網 IP 或主機名稱 |
| Port | `3306` | 待確認 | 若非 3306，請填實際 port |
| Database Name | `hs_device_control` | 待確認 | 建議先建立 database |
| User | 待填 | 待確認 | 建議使用 PoC 專用帳號 |
| Charset | `utf8` | 待確認 | MySQL 5.6.2 第一版建議 `utf8` |
| AutoCreateSchema | `true` / `false` | 待確認 | 是否允許程式自動建表 |
| DryRunSchemaSql | `true` / `false` | 待確認 | 首次建議先 `true` |
| StopOnSchemaMismatch | `true` | 待確認 | 欄位型別不一致時是否停止 |

## 3. 不得寫入文件的資訊

| 項目 | 原因 | 建議提供方式 |
|---|---|---|
| Password | 不得進入 repo、文件、commit | 環境變數或臨時輸入 |
| 完整 ConnectionString | 可能包含密碼 | 使用遮蔽版本 |
| 可登入正式 DB 的高權限帳號 | 風險過高 | 建議建立 PoC 專用帳號 |

## 4. 密碼提供狀態

| 項目 | 狀態 | 備註 |
|---|---|---|
| Password 是否已準備 | 待確認 | 不填入本文件 |
| Password 提供方式 | 待確認 | 環境變數 / 臨時輸入 / 其他安全通道 |
| 是否已確認不會提交到 repo | 待確認 | `.env.local` 不得 commit |

## 5. 建議環境變數填寫方式

本段只記錄變數名稱，不填真實值。

```text
HS_DB_HOST=
HS_DB_PORT=
HS_DB_NAME=
HS_DB_USER=
HS_DB_PASSWORD=
```

若要在本機使用 `.env.local`，需確認該檔案不會提交到 repo。

## 6. 遮蔽版 ConnectionString

```text
Server={HOST};Port={PORT};Database={DB_NAME};Uid={USER};Pwd=***;CharSet=utf8;
```

範例：

```text
Server=127.0.0.1;Port=3306;Database=hs_device_control;Uid=hs_app;Pwd=***;CharSet=utf8;
```

## 7. 權限確認表

| 權限 | 是否需要 | 狀態 | 備註 |
|---|---|---|---|
| `SELECT` | 是 | 待確認 | 查詢任務紀錄與 `information_schema` |
| `INSERT` | 是 | 待確認 | 寫入任務歷程 |
| `UPDATE` | 是 | 待確認 | 更新任務狀態 |
| `CREATE` | 是 | 待確認 | 建立缺少 table |
| `ALTER` | 是 | 待確認 | 補缺少 column |
| `INDEX` | 是 | 待確認 | 建立缺少 index |
| `DROP` | 否 | 不需要 | 第一版不允許自動刪表 |
| `DELETE` | 否 | 不需要 | 第一版不需要刪除資料 |
| `GRANT` | 否 | 不需要 | 不使用管理權限 |

## 8. Database 建立確認

| 項目 | 狀態 | 備註 |
|---|---|---|
| Database 是否已建立 | 待確認 | 建議 `hs_device_control` |
| 建立方式 | 待確認 | 使用者 / DBA / 部署流程 |
| 是否允許程式自動建立 database | 不建議 | 第一版不建議 |
| 是否允許程式自動建立 table | 待確認 | 對應 `AutoCreateSchema` |

建議建立語法：

```sql
CREATE DATABASE hs_device_control DEFAULT CHARACTER SET utf8;
```

## 9. 行前測試紀錄欄位

| 測試項目 | 狀態 | 實際結果 | 備註 |
|---|---|---|---|
| TCP 連線測試 | 待執行 | 待填 | Host / Port 是否可達 |
| 登入測試 | 待執行 | 待填 | User / Password 是否正確 |
| `SELECT VERSION()` | 待執行 | 待填 | 確認 MySQL 版本 |
| Database 存在測試 | 待執行 | 待填 | 確認 DB name |
| 權限測試 | 待執行 | 待填 | 確認建表、補欄位、建索引 |
| Dry Run SQL | 待執行 | 待填 | 只輸出 SQL，不修改 DB |
| AutoCreateSchema 測試 | 待執行 | 待填 | 實作後驗證 |

## 10. 進入 Schema Attribute 實作前確認表

此表用於判斷是否可以開始修改程式 repo。若「是否卡住下一步」為「是」且狀態仍為待確認，需先補齊再進入 Schema Attribute 實作。

| 確認項目 | 目前狀態 | 完成條件 | 是否卡住下一步 | 備註 |
|---|---|---|---|---|
| MySQL 版本已確認 | 待確認 | 明確回覆 `5.6.2` 或相容版本 | 是 | 若版本不同，需先調整相容性假設 |
| Host / IP 已提供 | 待確認 | 提供可由開發環境連線的主機或 IP | 是 | 可為內網 IP 或本機測試環境 |
| Port 已提供 | 待確認 | 提供實際 MySQL port | 是 | 預設建議 `3306` |
| Database Name 已確認 | 待確認 | 確認使用 `hs_device_control` 或指定名稱 | 是 | 程式第一版不自動建立 database |
| PoC User 已確認 | 待確認 | 提供 PoC 專用帳號名稱 | 是 | 不建議使用正式高權限帳號 |
| Password 提供方式已確認 | 待確認 | 使用環境變數、臨時輸入或其他安全通道 | 是 | 不得寫入文件、commit 或 repo |
| Charset 已確認 | 待確認 | 確認使用 `utf8` 或說明差異 | 否 | MySQL 5.6.2 第一版建議 `utf8` |
| AutoCreateSchema 策略已確認 | 待確認 | 確認是否允許程式自動建立 table / column / index | 是 | 會影響 Schema Initializer 行為 |
| DryRunSchemaSql 策略已確認 | 待確認 | 首次建議先 `true` | 是 | 避免第一次執行就修改 DB |
| StopOnSchemaMismatch 策略已確認 | 待確認 | 建議維持 `true` | 是 | 欄位型別不一致時停止，避免破壞既有資料 |
| 權限已確認 | 待確認 | 確認具備 `SELECT / INSERT / UPDATE / CREATE / ALTER / INDEX` | 是 | 權限不足會阻擋 AutoCreateSchema PoC |
| 敏感資訊未進 repo | 待確認 | 確認沒有真實密碼與完整連線字串被提交 | 是 | commit/push 前需再次檢查 |

## 11. 可交給 Codex 的確認摘要

使用者可在對話中提供以下非敏感摘要。Password 請只描述提供方式，不要貼真實值。

| 項目 | 建議填寫 |
|---|---|
| MySQL 版本 | `5.6.2` |
| Host / IP | 待填 |
| Port | `3306` |
| Database Name | `hs_device_control` |
| User | 待填 |
| Password 提供方式 | 環境變數 / 臨時輸入 / 其他安全通道 |
| Charset | `utf8` |
| AutoCreateSchema | `true / false` |
| DryRunSchemaSql | 首次建議 `true` |
| StopOnSchemaMismatch | 建議 `true` |
| 權限確認 | `SELECT / INSERT / UPDATE / CREATE / ALTER / INDEX` 是否具備 |

## 12. 使用者回覆格式建議

使用者可用下列格式回覆，但請不要直接貼真實 password：

```text
MySQL 版本：
Host / IP：
Port：
Database Name：
User：
Password 提供方式：
Charset：
AutoCreateSchema：
DryRunSchemaSql：
StopOnSchemaMismatch：
權限確認：
```

## 13. 建議下一步

建議下一步由使用者填寫本範本中的非敏感資訊，並用安全方式提供 password。

資訊確認後，再進入「Schema Attribute 實作前確認」。
