Files
go-omni/performance/responsePoliciesAcceptance.md

41 lines
4.1 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.
# v0.8.0-preview 公共响应模板验收
已发布 `v0.8.0-preview`,固定标签提交为 `7670b222acbad18d1fd19d54bbbac38d9cf5030b`。发布后只在 main 更新验收工具与记录,没有移动标签。
## 完成范围
- `.api` 具名公共体支持导入、分组引用、单接口覆盖、嵌套 JSON、独立 errorBody、常量与类型保持的占位符。业务返回类型放入 `${data}`。
- `int32` / `int64` / `string` 业务码、默认成功/失败码与提示、按逻辑码映射和 null/省略行为可配置;OpenAPI 同步结构、整数位宽和错误示例,旧 integer 写法保持兼容。
- `@response raw` 成功返回原始业务 JSON,错误继承组级模板。文本/XML及特殊状态回调使用 Go 编码器,由应用维护对应文档。
- 配置在创建与快照时复制,应用间独立;空模板往返序列化有效,非法占位符、冲突、越界和过深模板拒绝。
- 接口策略在全局中间件前生效,提前拒绝、panic、Context 克隆与错误边界使用正确格式;已提交响应不追加内容。
- 内置 App 的 404/405 使用应用策略;TLS/HTTP解析与连接级过载发生在进入应用之前,仍由 transport 处理。
## 发布前验证
- 最终代码 `GO_OMNI_SCAFFOLD_INTEGRATION=1 go test -race -p=1 -count=1 -timeout=300s ./...`:40 个有测试的包全部通过,见 [封版测试](responseReleaseTests.txt)。
- `go vet ./...`、`go build ./...`、格式/差异检查和 userService `api generate --check` 通过。
- 临时生成项目执行真实路由和业务 Service,验证数字 401、raw JSON、路由覆盖、完整 int64 输出、OpenAPI 和重复生成保护;nethttp/native 真实 TCP 检查配置响应、callback panic 和超时。
- 本机隔离 MySQL 下,nethttp/native 共 34 项 HTTP/业务/生命周期检查通过;包含事务提交、错误/panic/取消回滚、初始化清理、迁移、日志与优雅退出,见 [本地业务报告](responsePoliciesWorkflowLocal.json)。
- 开发阶段额外完成 54 项 API 实际 HTTP 回归与类型专项检查,见 [API 回归](responsePoliciesAPI.json)、[类型专项](responseCodeTypesTests.txt)。这些历史报告分别记录当时的源码哈希。
- 开发阶段原有 S3 fixture 曾出现一次 10 秒 deadline,单包及后续全量复跑通过;本次封版全量也通过,未修改 S3 逻辑或放宽断言。
## 远程发布验证
两个验收分别使用全新的 module cache 安装 `v0.8.0-preview`,实际消费者都无本地 replace,模块校验和一致:
`h1:lB4rU4FPsoFr3IedKx/K9xvvsGBO5SO/qdjnjKJ2mvQ=`
1. [公共响应远程报告](responsePoliciesRemote.json):实际下载 CLI,解析 int32 示例,生成并运行公共模板消费者;完整 int64 最大值、数字鉴权错误、raw JSON、路由覆盖、业务文件保护、race 检查和固定版本依赖校验全部通过。
2. [完整业务远程报告](responsePoliciesWorkflowRemote.json):远程 CLI 新建 MySQL + local 项目并编译;用户示例在 nethttp/native 共 34 项 HTTP/业务/生命周期检查通过,事务/初始化清理测试同时通过,重生成保留 29 份开发者文件。
首次公共响应远程验收从框架源码目录启动 CLI,触发原有本地开发检测并加入 replace;验收正确拒绝了这种结果。main 的测试工具已改为从独立临时目录启动,随后上述纯远程校验通过。此修复只涉及验收测试的工作目录,不改变已发布 CLI 或框架;复现远程验收请使用 main 的验收脚本和测试。
报告中保留各自实际测试源码哈希,已逐项核对;通过 module version、checksum 和无 Replace 三项确认消费者使用的是固定发布模块。
## 资源与使用
只使用本机回环监听、临时目录和受限 MySQL 容器(1 CPU / 768 MiB),结束均清理,没有连接业务服务器。未执行 OSS/R2 云账号实网验收或网络压力长测。
[发布说明](../RELEASE.md)、[公共响应说明](../RESPONSE.md) 与 [完整 .api 示例](../examples/contracts/responses.api)。CLI 与框架依赖一起固定到 `v0.8.0-preview`;源码开发可使用 `--framework-dir`。