45 lines
2.6 KiB
Markdown
45 lines
2.6 KiB
Markdown
# GOV-012 开发总结
|
||
|
||
## 原始开发需求
|
||
|
||
将 Schema 版本基线从本机 `mysql`/`mysqldump` 子进程迁移为 Node.js 22.x 与 mysql2 直接读取 MySQL 5.7.x,保留历史格式兼容、恢复开发门禁,并满足安全、性能、可追溯和 Gitea 推送规范。
|
||
|
||
## 需求与范围变化
|
||
|
||
- 原计划使用 MySQL 5.7 `VIEW_TABLE_USAGE` 读取视图依赖;真实 5.7.42 不提供该表,增加仅针对 ER_UNKNOWN_TABLE 的 `information_schema.VIEWS` 定义解析回退。
|
||
- 原计划空库 exporter 返回会话 SET;实际 format v3 空库必须返回空 SQL,修正为 `captured_empty`。
|
||
- GOV-012 不接入 HTTP/OpenAPI、Web、Redis、RocketMQ、API、Scheduler 或 Worker 运行时。
|
||
|
||
## 实际完成需求
|
||
|
||
- 新增 mysql2 单连接导出器:元数据校验、目录读取、视图排序、六类 `SHOW CREATE`、确定性渲染、并发漂移检测、超时/大小/对象上限和错误脱敏。
|
||
- `schema-baseline.mjs` 支持 format v3、异步 exporter 注入、原子文件操作故障注入、CLI 异步入口,并永久只读兼容 v1/v2。
|
||
- 更新当前开发规范、开发流程、README、设计和测试计划;真实开发库生成并推送 `v0.0.9` `captured_empty` 清单。
|
||
|
||
## 修复缺陷
|
||
|
||
- 拒绝 MariaDB 伪装版本。
|
||
- 严格校验触发器时机、事件和执行顺序。
|
||
- 防止目录、元数据和 SHOW CREATE 直接 API 泄露数据库错误。
|
||
- 保留 `EXPORT_TIMEOUT` 语义,避免包装器降级为普通查询错误。
|
||
- 防止全局正则改写例程字符串中的 `AUTO_INCREMENT`,并拒绝导出定义中的主机信息。
|
||
- 兼容真实 MySQL 5.7.42 缺少 `VIEW_TABLE_USAGE` 的目录差异。
|
||
|
||
## 未完成与延期项
|
||
|
||
- `glob` high 依赖风险按用户批准的范围例外保留为独立治理欠项,未在 GOV-012 中升级前端测试依赖。
|
||
- GOV-012 尚未合并到 `main`、发布 `v0.0.10` 或封存 `v0.0.10` 基线;这些是后续 Task 8/9 的发布步骤。
|
||
- MCP GitNexus 传输故障仍待工具环境恢复,不影响已保存的 CLI/静态替代证据。
|
||
|
||
## 关键提交
|
||
|
||
- `06466f3`、`8e954a3`、`54fd928`、`7e9d906`、`dc8ad7d`
|
||
- `c11de09`、`3d12c83`、`874796a`、`afd186c`、`f1c412b`
|
||
|
||
## 验证证据
|
||
|
||
- `npm run test:schema-baseline`:52/52;`npm run test:governance`:10/10;`npm run test:mysql-baseline`:2/2。
|
||
- `npm run test:environment-baseline`:10/10;contracts:3/3;boundaries:16/16;deployment:6/6。
|
||
- `pnpm lint`、`pnpm typecheck`、Prettier、`npm run schema:verify` 均通过。
|
||
- 真实 development MySQL 5.7.42 连接成功,`a_share_analysis_dev` 五类对象均为 0,v0.0.9 manifest 已提交并推送。
|