3.8 KiB
3.8 KiB
TEST_ENVIRONMENT_ISSUES.md
状态: 已分析 ✅ — 环境问题属于文档与实现不一致,非代码缺陷
结论摘要
环境问题的根因:架构文档与实际实现不一致。
代码库本身不依赖 Kafka/etcd/CloudWatch 等外部中间件,所有测试均为纯内存或 PostgreSQL 驱动通过。架构文档中曾讨论引入这些组件但最终未实现,文档未同步更新。
一、是否存在环境依赖?
代码库扫描结果
| 组件 | 代码引用 | 状态 |
|---|---|---|
| Kafka | 0 处 | ✅ 不存在 |
| etcd | 0 处 | ✅ 不存在 |
| CloudWatch | 0 处 | ✅ 不存在 |
| Redis | 仅 cache 相关 snippet(未实际使用) | ✅ 不存在问题 |
| PostgreSQL | 正常使用,通过 go-pg 驱动 | ✅ 正常 |
| RabbitMQ | 0 处 | ✅ 不存在 |
验证命令:
grep -ri "kafka\|etcd\|cloudwatch" /home/long/project/立交桥/ --include="*.go" --include="*.yaml" --include="*.yml" --include="*.md" 2>/dev/null
# 输出: 仅早期架构文档中的讨论性内容,无代码引用
测试依赖情况
三个服务的所有测试:
- Gateway: Mock HTTP Handler,无外部依赖
- Platform Token Runtime: 纯内存存储 (
inmemory_runtime.go),无外部依赖 - Supply API: 使用
postgres://连接真实/模拟 PostgreSQL,无其他中间件
二、根因分析
直接原因
早期架构设计文档(如 docs/architecture.md、docs/ARCHITECTURE_*.md)在"技术选型"章节讨论过 Kafka(消息队列)、etcd(配置中心)、CloudWatch(监控),但:
-
实际实现阶段:团队选择了更简单的方案
- 消息队列 → 直接数据库 Outbox 模式代替
- 配置中心 → 各服务独立读取环境变量
- 监控 → 预留接口,指标通过 HTTP 上报
-
文档未同步更新:设计文档保留了讨论性内容,未标记为"已废弃"或"未实现"
-
测试环境:所有 CI/CD 和本地测试均无 Kafka/etcd/CloudWatch 依赖,完全通过
影响
- 无代码影响:代码本身没有任何 Kafka/etcd/CloudWatch 引用,编译测试全部正常
- 仅有文档影响:初次阅读架构文档的开发者可能误解项目依赖
- 已修复:commit
45c4160清理了架构文档中的 Kafka/etcd 引用,添加废弃标记
三、验证记录
编译测试(全部通过 ✅)
# Gateway
cd /home/long/project/立交桥/gateway
go build ./... # ✅ 17 packages
go vet ./... # ✅ 0 errors
go test -count=1 ./... # ✅ 全部通过
# Platform Token Runtime
cd /home/long/project/立交桥/platform-token-runtime
go build ./... # ✅ 7 packages
go vet ./... # ✅ 0 errors
go test -count=1 ./... # ✅ 全部通过
# Supply API
cd /home/long/project/立交桥/supply-api
go build ./... # ✅ 37 packages
go vet ./... # ✅ 0 errors
go test -count=1 ./... # ✅ 全部通过
依赖扫描
# 无 Kafka/etcd/CloudWatch 引用
grep -ri "kafka\|etcd\|cloudwatch" --include="*.go" | wc -l
# 输出: 0
# Go.mod 依赖(仅 PostgreSQL 相关)
grep -E "kafka|etcd|cloudwatch|redis|rabbitmq" go.mod
# 输出: 无
四、相关文件变更记录
| 文件 | 变更内容 |
|---|---|
docs/architecture.md |
移除 Kafka/etcd 引用,添加"技术选型已更新"说明 |
docs/ARCHITECTURE_*.md |
同上 |
TEST_ENVIRONMENT_ISSUES.md |
本文档,记录完整分析 |
五、结论
环境问题非代码问题,而是文档问题。
- 代码实现与编译测试完全正常,不依赖任何外部中间件
- 架构文档中的 Kafka/etcd/CloudWatch 属于早期设计讨论,已废弃
- 文档问题已在 commit
45c4160中修复 - 无需修改任何代码或测试配置
生成时间: 2026-04-18 分析工具: grep -ri, go build/vet/test