技术选型
# 技术选型
下表是当前可以依赖的选择。目标架构里还有未认证的数据库、消息后端和工作流,那些不能当作已经支持的技术栈。完整取舍见 总体架构。
| 部位 | 当前选择 | 约束 |
|---|---|---|
| 语言 | Go 1.27.3 | go.work、各 go.mod、脚本和 CI 使用同一补丁版本 |
| HTTP | Gin 1.12.0 | Gin Context 不传入业务层 |
| 数据访问 | GORM 1.31.1 | 业务事务由调用方显式划定 |
| 业务库 | MySQL 8.4、PostgreSQL 16 | 一次部署选一种;其他库未认证 |
| 缓存与限流 | Redis | 登录限流、生产请求号去重;权限权威数据在主库 |
| 前端 | Vben 5,应用为 web-antd | 保留依赖闭包和 MIT 许可;运行页面不依赖 mock |
| 合同 | OpenAPI 3.0.3 | 仓库根目录 api/openapi.yaml,当前 76 个操作 |
| 错误 | github.com/samber/oops | HTTP 只返回公开中文提示和业务码 |
| 内容加密 | JWE,生产强制;可选 SM2/SM4-GCM | 开发与测试默认明文 JSON;缺省套件 rsa-aes |
APP_API_ENCRYPTION_SUITE 覆盖 YAML 的 api_encryption.suite。sm2-sm4 使用 SM2 PKCS#8 PEM,切换套件必须更换 PEM。SM4 密钥为 16 字节。SM2 与 SM4 的安全强度按 128 位计。TLCP、口令 SM3 和商用密码产品认证未实现,不表示二级等保或商密认证已通过。
模块通过窄契约协作,由 apps/fago-server 显式装配。不要跨模块引用 internal。
本地核对 Go 与合同版本(外层仓库根目录,须先 source scripts/go-env.sh):
source scripts/go-env.sh
go version | grep 'go1.27.3'
wc -l api/openapi.yaml
最后更新: 2026/10/28 10:34:52