改进建议

airsky 总索引 | 工程架构分析 索引

按优先级与投入产出排序,所有结论均有代码佐证(见文末事实锚点)。

P0 — 立即处理(安全 / 低成本高收益)

  1. 清理仓库内敏感配置:将第三方凭据、邮箱配置和默认口令统一改为环境变量占位;吊销并轮换已暴露风险的凭据;示例配置使用无意义占位值,避免「示例即生产」。
  2. 建立 CI 流水线:至少跑后端 go test ./... + go vet + golangci-lint、前端 vue-tsc + vitest + eslint,接入 gitleaks 密钥扫描。测试资产已就绪,这是性价比最高的一步。
  3. 统一网关鉴权:把 JWT 校验从 8 个业务服务上移到网关,业务服务只信任网关注入的身份头,消除 8 份重复鉴权、收敛密钥。

P1 — 中期(架构定调,关键决策)

  1. 明确架构定位——二选一,停止骑墙
    • 路线 A(推荐,低风险):收敛为模块化单体。承认现状本质是单体,合并成 1 个进程(或少数几个),保留 pkg/{域} 模块边界与清晰的包依赖规则(用 go-arch-lint 约束依赖方向)。立刻获得部署简单、调试容易、事务一致的收益,去掉网关转发与多份配置的无谓开销。适合当前团队规模。
    • 路线 B:补齐真正的微服务。若确有独立伸缩/发布/团队并行的硬需求,则需:拆分 module 或切断 service 层跨域 import(改 HTTP/gRPC + 防腐层)、按域拆库或分 schema、每服务独立容器与独立 CI/CD、引入服务发现与链路追踪。成本高,需明确收益支撑。
  2. 引入 repository 层:在 service 与 app.DB 之间加一层接口,隔离 GORM 与表结构,提升可测试性与复杂查询复用。
  3. 多租户隔离加固:从「逐查询 opt-in Scope」改为「连接/会话级默认租户过滤 + 显式 opt-out」,并增加跨租户访问的运行时断言与告警。

P2 — 长期优化方向

  1. 可观测性:项目已间接依赖 OpenTelemetry/Prometheus 但未主动接入。补齐结构化日志(traceId 串联,gin_core 已有 traceIdHandler)、指标、链路追踪三件套并接 Grafana。
  2. 服务级容器化:若走路线 B,把单容器 9 进程拆成 9 个容器,日志/重启/扩缩容下沉到服务粒度,引入 K8s 或 compose profiles。
  3. 异步解耦:已引入 RabbitMQ 但 config.default.yml 默认 useRabbitMQ: false。审计日志、通知、AI 分析、跨域副作用适合走消息队列异步化,降低跨域同步调用耦合。
  4. 前端:token 存储安全加固(CSP / httpOnly Cookie 评估)、大依赖(xlsx/echarts)异步加载与体积监控、按域补充 Pinia store。
  5. 统一仓库策略:改用 git submodule 规范管理 backend/frontend,或合并为 monorepo(配合 CI path filter 分别构建)。同时补回缺失的 ai-service/ 或从 compose 移除,消除文档与现实偏差。

优先级速查表

#改进项类别优先级投入风险
1清理敏感配置 + 轮换安全P0
2建立 CI(测试/lint/密钥扫描)工程P0
3网关统一鉴权架构/安全P0
4架构定调(模块化单体 vs 真微服务)架构P1
5引入 repository 层分层P1
6多租户隔离改默认过滤安全P1
7可观测性三件套运维P2
8服务级容器化部署P2
9消息队列异步解耦架构P2
10前端安全/性能优化前端P2
11统一仓库策略 / 补 ai-service工程P2

事实锚点索引

结论依据文件
Polyrepo + 嵌套 Git,无 submoduleREADME.md:9-30,根目录无 .gitmodules
ai-service 被引用但缺失docker-compose.yml:135-175,根目录无 ai-service/
9 服务共享 module/entitybackend/go.mod:1backend/model/entity/
service 跨域直连pkg/trade import crm/logistics/system service 等
共享单库config.default.yml:18-26 各服务 dbName: airsky
单容器多进程Dockerfile:13-21scripts/docker-start.sh:22-35
网关仅反向代理pkg/gateway/router/router.go:22-76
鉴权下沉各服务pkg/*/router/router.gomiddleware.JWT
无 repository 层customer_service.go:29,66 直接用 app.DB
敏感配置治理不足具体文件位置已在公开版中脱敏
无 CI/CD.github/workflows.gitlab-ci.ymlJenkinsfile
测试资产后端 110 个 _test.go、前端 70 个测试 + playwright.config.ts

详细权限维度分析见 权限体系分析