Files
a-share-analysis/docs/features/GOV-012-node-schema-exporter/development-summary.md
T

47 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`
- `58026ae`、`16bde94`、`11edeb0`
## 验证证据
- `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 已提交并推送。
- 发布 `v0.0.10` 标签已推送;发布后 `v0.0.10` `captured_empty` manifest 已按标签提交校验并推送 `main`。