2.6 KiB
2.6 KiB
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.9captured_empty清单。
修复缺陷
- 拒绝 MariaDB 伪装版本。
- 严格校验触发器时机、事件和执行顺序。
- 防止目录、元数据和 SHOW CREATE 直接 API 泄露数据库错误。
- 保留
EXPORT_TIMEOUT语义,避免包装器降级为普通查询错误。 - 防止全局正则改写例程字符串中的
AUTO_INCREMENT,并拒绝导出定义中的主机信息。 - 兼容真实 MySQL 5.7.42 缺少
VIEW_TABLE_USAGE的目录差异。
未完成与延期项
globhigh 依赖风险按用户批准的范围例外保留为独立治理欠项,未在 GOV-012 中升级前端测试依赖。- GOV-012 尚未合并到
main、发布v0.0.10或封存v0.0.10基线;这些是后续 Task 8/9 的发布步骤。 - MCP GitNexus 传输故障仍待工具环境恢复,不影响已保存的 CLI/静态替代证据。
关键提交
06466f3、8e954a3、54fd928、7e9d906、dc8ad7dc11de09、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 已提交并推送。