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

156 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 # 数据库种子脚本
```
## 构建和运行
### 构建
```bash
GOPROXY=https://goproxy.cn,direct go build -ldflags "-X main.version=$(git describe --tags)" ./cmd/main.go
```
### 运行
```bash
# 开发模式
go run cmd/main.go
# Docker
docker build -t gochat .
docker run -p 8080:8080 gochat
```
### 测试
```bash
# 全量测试
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/
```
### 编译验证
```bash
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 ✅