7.5 KiB
7.5 KiB
Technology Stack
Analysis Date: 2026-03-27
Languages
Primary:
- Go 1.25.x - 应用代码、API、Worker、OpenAPI 生成和基础设施脚本,依据
go.mod、cmd/api/main.go、cmd/worker/main.go、cmd/gendocs/main.go
Secondary:
- YAML - 配置与部署编排,见
pkg/config/defaults/config.yaml、docker-compose.prod.yml、.gitea/workflows/deploy.yaml - Dockerfile - API/Worker 容器构建,见
Dockerfile.api、Dockerfile.worker - Makefile - 本地构建、文档生成、迁移命令,见
Makefile
Runtime
Environment:
- Go runtime;API 服务基于 Fiber HTTP 服务器,见
cmd/api/main.go - 独立 Worker 进程处理异步任务与调度,见
cmd/worker/main.go - 生产容器基础镜像为 Alpine,构建镜像使用 Go 1.25.6 Alpine,见
Dockerfile.api、Dockerfile.worker
Package Manager:
- Go Modules,见
go.mod - Lockfile:
go.sumpresent
Frameworks
Core:
- Fiber v2.52.9 - HTTP 框架与路由宿主,见
go.mod、cmd/api/main.go - GORM v1.31.1 +
gorm.io/driver/postgresv1.6.0 - PostgreSQL ORM 与连接层,见go.mod、pkg/database/postgres.go - Viper v1.21.0 - 嵌入式默认配置 + 环境变量覆盖,见
go.mod、pkg/config/loader.go
Queue / Scheduling:
- Asynq v0.25.1 - 任务提交、Worker 消费、定时任务,见
go.mod、pkg/queue/client.go、pkg/queue/server.go、cmd/worker/main.go
Serialization / Validation:
- sonic v1.14.2 - Fiber JSON 编解码与任务载荷序列化,见
go.mod、cmd/api/main.go、pkg/queue/client.go - validator/v10 v10.28.0 - DTO 校验依赖,见
go.mod
Logging:
- zap v1.27.1 - 应用日志与 SQL 日志,见
go.mod、pkg/logger/logger.go、pkg/database/postgres.go - lumberjack.v2 v2.2.1 - 日志轮转,见
go.mod、pkg/logger/logger.go
Docs tooling:
- swaggest/openapi-go v0.2.60 - OpenAPI 3.0.3 文档生成,见
go.mod、pkg/openapi/generator.go
Build / Dev / Deploy
Build:
Makefile定义build、run、run-worker、docs、migrate-*目标,见Makefile- API 与 Worker 使用多阶段 Docker 构建,编译产物分别来自
./cmd/api与./cmd/worker,见Dockerfile.api、Dockerfile.worker
Deploy:
- 生产编排使用 Docker Compose,运行
api与worker两个服务,见docker-compose.prod.yml - Gitea Actions 工作流构建镜像、推送私有镜像仓库并在主分支执行
docker compose up -d,见.gitea/workflows/deploy.yaml
Docs generation:
- API 启动时会生成
logs/openapi.yaml,见cmd/api/main.go、cmd/api/docs.go - 手动文档命令
make docs运行cmd/gendocs/main.go,输出docs/admin-openapi.yaml,见Makefile、cmd/gendocs/main.go
Storage, Data, Messaging
Database:
- PostgreSQL 是唯一检测到的主数据库;连接、连接池、GORM logger、Ping 校验位于
pkg/database/postgres.go
Cache / KV:
- Redis 用于认证、缓存、队列后端、限流存储和配置缓存,见
pkg/database/redis.go、cmd/api/main.go、internal/service/wechat_config/service.go
Messaging / Queue:
- Asynq 直接复用 Redis 连接配置作为消息后端,见
pkg/queue/client.go、pkg/queue/server.go - Worker 内注册订单超时、告警检查、数据清理等调度任务,见
cmd/worker/main.go
Object storage:
- S3 兼容对象存储通过 AWS SDK v1 实现,支持上传、下载、预签名 URL、临时文件下载,见
pkg/storage/s3.go、pkg/storage/service.go
Configuration
Loading model:
- 默认配置从嵌入文件
pkg/config/defaults/config.yaml读取,见pkg/config/embedded.go - 运行时使用
JUNHONG_前缀环境变量覆盖,见pkg/config/loader.go - 必填配置校验包括数据库、Redis、JWT,见
pkg/config/config.go
Key config areas:
- 服务与超时:
server.*,见pkg/config/config.go - PostgreSQL:
database.*,见pkg/config/config.go - Redis:
redis.*,见pkg/config/config.go - Asynq:
queue.*,见pkg/config/config.go - 日志:
logging.*,见pkg/config/config.go - 短信:
sms.*,见pkg/config/config.go - 对象存储:
storage.*,见pkg/config/config.go - 外部 Gateway:
gateway.*,见pkg/config/config.go
WeChat config exception:
- 微信公众号/小程序/支付配置不走 Viper 主配置,业务侧从数据库表
tb_wechat_config读取并缓存到 Redis,见internal/model/wechat_config.go、internal/service/wechat_config/service.go、pkg/wechat/config.go
Logging & Observability
Application logs:
pkg/logger/logger.go初始化 app/access 双 logger;生产模式写 JSON,开发模式 app logger 同时输出控制台
Access logs:
pkg/logger/middleware.go记录 method、path、query、status、duration、request_id、ip、user_agent、user_id、请求/响应 body
SQL logs:
pkg/database/postgres.go自定义 GORM logger,记录错误、慢查询和普通 SQL trace
Health checks:
Dockerfile.api与docker-compose.prod.yml均通过GET /health做容器健康检查
Notable Dependencies
HTTP / App:
github.com/gofiber/fiber/v2- API 服务核心框架,见go.mod、cmd/api/main.gogithub.com/google/uuid- 请求 ID 生成,见cmd/api/main.go
Persistence / Cache:
gorm.io/gorm、gorm.io/driver/postgres- ORM 与 PostgreSQL 驱动,见go.mod、pkg/database/postgres.gogithub.com/redis/go-redis/v9- Redis 客户端,见go.mod、pkg/database/redis.go
Queue / Async:
github.com/hibiken/asynq- 队列与调度器,见go.mod、pkg/queue/*.go、cmd/worker/main.go
Serialization / File processing:
github.com/bytedance/sonic- JSON 编解码,见cmd/api/main.go、pkg/queue/client.gogithub.com/xuri/excelize/v2- Excel 导入处理依赖,见go.mod; 任务消费方在internal/task/iot_card_import.go、internal/task/device_import.go调用 Excel 解析
External SDKs:
github.com/ArtisanCloud/PowerWeChat/v3- 微信公众号与微信支付 SDK,见go.mod、pkg/wechat/official_account.go、pkg/wechat/payment.gogithub.com/aws/aws-sdk-go- S3 兼容对象存储客户端,见go.mod、pkg/storage/s3.go
Platform Requirements
Development:
- 需要 PostgreSQL、Redis、JWT 密钥与
JUNHONG_环境变量;config.Load()在启动时强校验,见pkg/config/config.go make docs需要 Go 环境;migrate-*目标需要系统安装migrate命令,见Makefile
Production:
- 目标运行形态是 Docker 化 API + Worker 双进程部署,见
Dockerfile.api、Dockerfile.worker、docker-compose.prod.yml - 镜像发布到私有仓库
registry.boss160.cn,见.gitea/workflows/deploy.yaml
Evidence
go.modREADME.mdcmd/api/main.gocmd/api/docs.gocmd/worker/main.gocmd/gendocs/main.gopkg/config/config.gopkg/config/loader.gopkg/config/embedded.gopkg/config/defaults/config.yamlpkg/database/postgres.gopkg/database/redis.gopkg/queue/client.gopkg/queue/server.gopkg/queue/handler.gopkg/logger/logger.gopkg/logger/middleware.gopkg/openapi/generator.gopkg/openapi/handlers.gopkg/storage/s3.gopkg/storage/service.gopkg/wechat/config.gopkg/wechat/official_account.gopkg/wechat/payment.gopkg/sms/client.gointernal/gateway/client.goMakefileDockerfile.apiDockerfile.workerdocker-compose.prod.yml.gitea/workflows/deploy.yaml
Stack analysis: 2026-03-27