Files
gochat/docs/HANDOVER_DOCUMENT.md
T
2026-06-04 15:44:48 +08:00

5.6 KiB
Raw Blame History

GoChat 项目交接文档

项目简介

GoChat 是 Chatwoot 的 1:1 Go 语言重写,提供高性能、可扩展的全功能客服平台。

  • 仓库位置: ~/Workspace/gochat/
  • Module: github.com/gochat/gochat
  • 语言: Go 1.22+
  • 代码量: 32,228 行源代码 + 8,746 行测试代码

项目结构

gochat/
├── cmd/main.go                   # 入口程序
├── internal/
│   ├── app/bootstrap.go          # DI编排(核心入口)
│   ├── router/router.go          # 104路由注册
│   ├── handler/api/v1/           # 15个handlerHTTP层)
│   ├── service/                  # 业务逻辑层
│   ├── repository/               # 数据访问层(GORM
│   ├── model/                    # 28个领域模型
│   ├── auth/                     # JWT+RBAC+MFA+OAuth+SAML
│   ├── channel/provider/         # Telegram/WebWidget/API渠道
│   ├── llm/                      # Captain/Copilot AI
│   ├── middleware/                # 11个中间件(安全+限流+XSS+上传)
│   ├── security/                 # 加密+Webhook签名+SQL安全+SSRF
│   ├── ws/                       # WebSocket hub
│   ├── pubsub/                   # Watermill事件驱动
│   ├── config/                   # 配置管理
│   └── reporting/                # 报表+指标
├── pkg/crypto/                   # JWT+加密工具
├── tests/e2e/                    # E2E测试套件(9个测试全通过)
├── configs/                      # 配置文件
├── docs/                         # 项目文档(P15产出)
├── Dockerfile                    # Docker构建
├── .env.example                  # 环境变量示例
└── seed.sh                       # 数据库种子脚本

构建和运行

构建

GOPROXY=https://goproxy.cn,direct go build -ldflags "-X main.version=$(git describe --tags)" ./cmd/main.go

运行

# 开发模式
go run cmd/main.go

# Docker
docker build -t gochat .
docker run -p 8080:8080 gochat

测试

# 全量测试
GOPROXY=https://goproxy.cn,direct go test ./...

# E2E测试
go test -v ./tests/e2e/

# 性能基准
go test -bench=. -benchmem ./internal/repository/ ./internal/auth/

# 覆盖率
go test -cover ./internal/model/ ./internal/auth/ ./pkg/crypto/

编译验证

go build ./...   # 编译检查
go vet ./...     # 代码规范检查

阶段完成状态

阶段 内容 状态
P1 核心框架搭建(Gin+GORM+config 完成
P2 用户认证体系(JWT+bcrypt+RBAC 完成
P3 基础数据模型(Account/User/Contact 完成
P4 对话+消息核心 完成
P5 渠道抽象层(Provider接口+工厂) 完成
P6 API+认证完善(REST endpoints 完成
P7 WebWidget渠道 完成
P7 Telegram渠道 完成
P8 Notification系统 完成
P9 WebSocket实时通信 完成
P10 Captain AI8repo+5handler+LLM 完成
P11 报表系统(3model+3repo+2service+3handler 完成
P12 Docker部署(Dockerfile+health+graceful shutdown 完成
P13 测试完善(e2e全通过+RBAC修复) 完成
P14 安全加固(14个安全模块1851行) 完成
P15 架构评审+集成验证+文档 完成

关键设计约定

约定 说明
Module path github.com/gochat/gochat
Handler依赖 Service 接口(不依赖 app.App
Service依赖 Repo 接口(不依赖 app.DB()
Logger格式 applogger.L().Errorf("msg: %v", err)
RefreshTokenStore NewRefreshTokenStore(client *redis.Client, cfg *config.JWTConfig)
Handler构造 NewAccountHandler(&service.AccountService{})(取指针)
LLM路径 internal/llm/(不是 internal/service/llm/
EnableAutoAssignment 默认 false
GORM Update 无记录时 Error=nil,需检查 RowsAffected
JWT Claims JSON 数字=float64,需 uint(claims["user_id"].(float64))
GOPROXY https://goproxy.cn,direct(所有 go 命令必须使用)

文档清单

文档 路径
架构评审 docs/ARCHITECTURE_REVIEW.md
API覆盖报告 docs/API_COVERAGE_REPORT.md
性能基准 docs/PERFORMANCE_BENCHMARK.md
安全审计 docs/SECURITY_AUDIT_REPORT.md
集成验证 docs/INTEGRATION_VERIFICATION_REPORT.md
阶段二规划 docs/PHASE2_PLAN.md
项目交接 docs/HANDOVER_DOCUMENT.md

安全模块清单

  • JWT安全(HMAC-SHA256 + Redis refresh token
  • SSRF防护(私有IP检测 + URL验证)
  • Rate LimitingIP+路径限流)
  • MFATOTP 二步验证)
  • OAuth2 + SAML(企业认证)
  • 文件上传安全(MIME验证+大小限制+ZIP防护)
  • XSS防护(bluemonday HTML净化)
  • 安全头部(CSP/HSTS/X-Frame-Options等,已集成到bootstrap
  • 数据加密(AES-256-GCM
  • Webhook签名(HMAC-SHA256+防重放)
  • SQL注入防护(GORM参数化+安全审计)
  • RBAC权限矩阵(管理员/super_admin fast path

下一步行动

详见 docs/PHASE2_PLAN.md

  1. P0: PostgreSQL迁移 + Redis集成 + Service测试覆盖率提升
  2. P1: Agent Availability + Email/Meta渠道 + Swagger文档
  3. P2: 索引优化 + 缓存层 + 连接池
  4. P3: Prometheus + CI/CD + Kubernetes + OpenTelemetry

交接日期: 2026-05-23 项目状态: 阶段一(P1-P15)全部完成 全量验证: build | vet | unit | e2e | benchmark