feat: add generic file conversion sdk example
This commit is contained in:
34
docs/reports/phase-7-file-conversion.md
Normal file
34
docs/reports/phase-7-file-conversion.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# P7:通用文件转换示例
|
||||
|
||||
验证日期:2026-09-20。本批补齐首版接入清单中“提交任务 → Worker 实际转换 → 查询结果”的通用场景,使用独立 Go SDK 和真实 Orbit HTTP/WebSocket 链路,不包含特定行业或接入方规则。
|
||||
|
||||
## 实现内容
|
||||
|
||||
- 新增 [`sdk/go/examples/file-conversion`](../../sdk/go/examples/file-conversion/main.go):提交两行 CSV 快照,由版本化 `file.convert.csv-json` Worker 转成 JSON 结果。
|
||||
- 处理器只读取任务输入和执行上下文,使用稳定提交键;同一个运行身份重复提交不创建第二个任务。
|
||||
- 结果包含输出文件名、格式、转换正文和行数;输入标题重复、行列数不匹配或格式不支持时返回固定 `INVALID_FILE`,不把原始异常正文写入结果。
|
||||
- 示例结束前等待 Worker 排空,任务与审计历史保留;单元测试覆盖正常 CSV、重复标题和列数错误。
|
||||
- 小文件正文仅为可复现演示。生产大文件应由接入方保存不可变对象引用,处理器使用对象版本和业务幂等键;平台不承担对象存储、病毒扫描或外部副作用核查。
|
||||
|
||||
## 验证证据
|
||||
|
||||
SDK 单元与静态检查使用 Docker Go 1.25 临时模块文件通过:
|
||||
|
||||
```text
|
||||
go test -race ./examples/file-conversion PASS
|
||||
go test ./... PASS
|
||||
go vet ./... PASS
|
||||
```
|
||||
|
||||
真实链路使用 macOS arm64 主机、Docker MySQL 8.4、当前迁移 28、现有 Orbit HTTP 服务,以及 Docker Go 1.25 交叉编译的 darwin/arm64 示例二进制。一次性命名空间和 Worker 凭据运行结果为:
|
||||
|
||||
```text
|
||||
input=records.csv output=records.json rows=2 state=SUCCEEDED worker_drained=true
|
||||
{"schema_version":28,"migration_count":28,"foreign_key_count":0,"required_index_count":6,"complete":true}
|
||||
```
|
||||
|
||||
脚本语法、Markdown 本地链接(1242 个,错误 0)和 `git diff --check` 通过。标准 `scripts/test-mysql.sh` 已加入该示例;本次尝试用 Go 1.27.1 启动标准全量回归时,第一组集成测试进程被执行环境 `SIGKILL` 终止,未将其记为代码通过或失败,后续仍需在资源充足的环境完成完整回归。
|
||||
|
||||
## 验收边界
|
||||
|
||||
本批证明通用 SDK 示例能在真实平台链路完成一次小文件格式转换。它不证明对象存储持久性、恶意文件处理、外部业务副作用 exactly-once、生产容量、数据库切换、跨故障域可用性或 RPO/RTO;这些仍按 [生产验收门槛](../05-production-acceptance.md) 和 [持续开发计划](../08-development-plan.md) 单独验证。
|
||||
Reference in New Issue
Block a user