Schema Automation 第一輪收尾檢查
1. 檢查目的
本文件用來確認第二階段目前的 Schema Automation 第一輪是否已形成完整邊界,並判斷是否可以進入下一個節點。
本次收尾檢查涵蓋:
- Schema Attribute / SQL Generator 設計。
- MySQL 5.6.2 DDL 規則。
- ALTER TABLE Dry Run Plan。
ISchemaInspector與MockSchemaInspector。SchemaDryRunPlanner。- ConsoleHost Schema Dry Run 顯示與人工驗證。
SchemaInitializerDryRun 第一版。- ConsoleHost 透過
SchemaInitializer顯示 dry run result 與人工驗證。
2. 收尾結論
Schema Automation 第一輪可以標記完成。
完成的範圍是:
C# schema definition
-> SQL Generator
-> Mock Inspector
-> Dry Run Plan
-> Schema Initializer
-> ConsoleHost 顯示
-> 人工驗證紀錄
目前已足以作為「真實 MySQL Inspector」前的完成邊界。
下一步建議進入:
真實 MySQL Inspector 前置確認
但真實 MySQL 套件、DB 連線、information_schema 查詢與任何 DDL / Apply 行為仍需要獨立確認,不應直接自動執行。
3. 完成項目總表
| 項目 | 狀態 | 證據 / 文件 |
|---|---|---|
| MySQL Schema 自動建表設計 | 已完成 | mysql-schema-auto-create-design.md |
| MySQL schema Class 初稿 | 已完成 | mysql-schema-class-draft.md |
| Schema Attribute 實作前確認 | 已完成 | mysql-schema-attribute-preimplementation-checklist.md |
| Schema Attribute 與 SQL Generator 設計 | 已完成 | mysql-schema-attribute-sql-generator-design.md |
| SQL Generator 實作前確認 | 已完成 | mysql-sql-generator-preimplementation-checklist.md |
| MySqlSchemaSqlGenerator 第一版 | 已完成 | mysql-sql-generator-implementation-record.md |
| ALTER TABLE / Initializer 實作前確認 | 已完成 | mysql-alter-schema-initializer-preimplementation-checklist.md |
| ALTER TABLE SQL 與 Dry Run Plan 第一版 | 已完成 | mysql-alter-dry-run-implementation-record.md |
| Schema Inspector 前置分析 | 已完成 | mysql-schema-inspector-preimplementation-checklist.md |
ISchemaInspector / mock inspector 確認 | 已完成 | mysql-schema-inspector-interface-mock-preimplementation-checklist.md |
ISchemaInspector / mock inspector 實作 | 已完成 | schema-inspector-interface-mock-implementation-record.md |
SchemaDryRunPlanner 設計 | 已完成 | schema-dry-run-planner-design.md |
SchemaDryRunPlanner 第一版 | 已完成 | schema-dry-run-planner-implementation-record.md |
| ConsoleHost dry run 顯示 | 已完成 | schema-dry-run-planner-consolehost-display-record.md |
| ConsoleHost dry run 人工驗證 | 已完成 | consolehost-schema-dry-run-display-verification-record.md |
SchemaInitializer DryRun 設計 | 已完成 | schema-initializer-dryrun-flow-design.md |
SchemaInitializer DryRun 第一版 | 已完成 | schema-initializer-dryrun-implementation-record.md |
ConsoleHost 接入 SchemaInitializer | 已完成 | schema-initializer-dryrun-consolehost-integration-implementation-record.md |
| ConsoleHost Schema Initializer DryRun 人工驗證 | 已完成 | consolehost-schema-initializer-dryrun-verification-record.md |
4. 目前已驗證能力
| 能力 | 結論 |
|---|---|
| 從 C# class / schema definition 表達 table、column、index、comment | 已具備 |
產生 MySQL 5.6.2 相容的 CREATE TABLE IF NOT EXISTS | 已具備 |
產生非破壞性的 ADD COLUMN / ADD INDEX | 已具備 |
禁止自動產生 DROP、MODIFY、CHANGE | 已具備 |
| 使用 mock schema snapshot 產生 Dry Run Plan | 已具備 |
| 保留 warnings 與 manual review items | 已具備 |
將 DryRun 包裝成 SchemaInitializerResult | 已具備 |
| ConsoleHost 顯示 SQL preview | 已具備 |
ConsoleHost 顯示 Mode / Source / CorrelationId | 已具備 |
| 人工驗證 ConsoleHost 實際輸出 | 已完成 |
| 全專案測試 | 已通過 318 個測試 |
5. 尚未完成但不屬於第一輪的項目
| 項目 | 判斷 |
|---|---|
| 真實 MySQL Inspector | 下一輪進入前置確認 |
| MySQL package 導入 | 需先確認套件與連線策略 |
information_schema 查詢 | 需先確認 MySQL 5.6.2 欄位與權限 |
| 真實 DB 連線測試 | 需要使用者提供環境與敏感資訊處理方式 |
| DDL executor / Apply 模式 | 需獨立設計確認 |
--schema-dry-run / --schema-apply 啟動參數 | 需獨立設計確認 |
| TaskStore 實作 | 屬於資料持久化下一階段 |
| WebApi / ServiceHost / WinForms Debug Tool | 屬於後續平台化階段 |
6. 進入真實 MySQL Inspector 前需確認
進入下一階段前,需先確認:
| 確認項目 | 建議 |
|---|---|
| MySQL 套件 | 沿用前面建議,第一版採 MySqlConnector |
| 連線資訊 | 不寫入 repo;使用 local config、環境變數或使用者本機安全設定 |
| 查詢範圍 | 第一版只讀 information_schema.TABLES、COLUMNS、STATISTICS |
| 權限 | 只需要 metadata read 權限,不需要 DDL 權限 |
| 測試方式 | 先做 unit test + mock,再做可選的本機 MySQL integration test |
| 失敗處理 | 需回傳標準 ErrorInfo,不得吞掉 exception |
| 安全邊界 | 不執行 CREATE、ALTER、DROP |
7. 必須停下確認的項目
以下項目不得直接自動執行:
- 新增
MySqlConnectorpackage。 - 建立真實 MySQL 連線。
- 要求或使用 DB password / token。
- 讀取真實
information_schema。 - 執行任何 DDL。
- 新增 Apply / DDL executor。
- 修改 ConsoleHost 啟動參數。
- 修改資料模型或正式資料庫欄位。
8. 建議下一步
建議下一步進入:
真實 MySQL Inspector 前置確認
建議先整理:
- 是否導入
MySqlConnector。 IMySqlConnectionFactory或同等抽象是否必要。information_schema查詢欄位清單。- 連線資訊提供方式與禁止寫入 repo 的規則。
- 單元測試與 integration test 的分界。
- 仍不執行 DDL 的安全邊界。