3.4 KiB
3.4 KiB
通用生成体验验收(v0.17.0-preview)
本轮完成公共字段组合、可选结构映射、带依赖的中间件工厂与 Repository 骨架开关。没有添加项目特定金额、授权或数据库规则。
实际生成项目
TestCompositionMappingConsumer 从 .api 生成独立模块,安装项目自己的 Money scalar、业务类型、转换函数、依赖与中间件,然后生成企业/租户/管理三端的请求和响应映射。在生成模块内执行 go test -race ./...、go build .,用真实生成 Handler 处理 HTTP 请求。
验证:
- 公共字段生成平铺 DTO;字段注释、长度校验、绑定和 OpenAPI 同步;未知组合、同名字段/来源冲突、循环和展开上限均拒绝。
- 三端正确处理正常输入、缺失、null、零值、非法金额、空金额、数值金额拒绝和完整表单更新。项目示例的精确十进制保留
90071992547409.91,1.005按项目规则得到1.01;可空单位金额保持 nil,ID 字符串保持大整数精度。 - 同名同类型直接赋值;重命名、指针取值、金额默认值和 ID 字符串由显式转换函数控制;Go 值嵌入按明确路径映射。
- slice/等长 array 的显式逐项映射、nil 与非 nil 空 slice、普通引用赋值、错误链、零结果与 32 个并发调用通过 race 检查。
- 新增源/目标字段未处理、错误转换签名、指针差异未声明、遗漏企业范围字段处理、无效忽略规则、数组长度不匹配均在写入前失败;Go 文件、模块文件和 manifest 快照不变。未知/循环映射、冲突转换声明、不可访问 internal 包等在类型加载前拒绝。
- 重复生成字节一致、业务文件保留,
--check只读。macOS/var别名统一到真实路径,新增 DTO 字段不会被旧 Go 导出数据掩盖。 - 依赖先初始化,再调用工厂自动注册。工厂失败、返回 nil、panic、依赖初始化失败和监听失败都会正确释放已登记资源,真实错误链保留;正常重复 Close 不重复释放资源。
- Repository 默认关闭,group 模式补齐骨架,切回 none 保留已有业务实现。旧项目默认保持 handlers 模式;新配置建立后若丢失,明确报错,防止静默切换生成策略。
回归结果
回归记录:全仓库 44 个有测试的包通过 race,发布版本的 go vet、go build 通过。记录包含命令、日志摘要和变更 Go 源码 SHA256。
实际进程验收:根目录 go run/go build、重复生成、生成检查、业务保留、nethttp/native 的 SIGINT/SIGTERM、监听端口释放、下载/原始回调/multipart、错误目录与默认 404/405 通过,耗时 4.99 秒;临时进程和目录均由脚本清理。
现有 examples/managedService 更新生成配置基线后 generate --check 与模块编译测试通过。远程发布验收将在固定标签发布后补充;本轮不涉及 eTax 业务迁移。
使用边界
映射是显式启用的 CLI 能力,使用 Go 编译器类型信息,不执行项目初始化或转换函数;运行时只有生成的赋值/调用代码。转换函数包应独立于生成输出包,类型依赖需提前解析。普通指针输入中已经合并的缺失/null 不会被重新推断;普通指针/map/slice 赋值保持 Go 共享引用语义。完整使用与迁移见 生成能力指南。