Files
goalfylearning-admin/discuss/README.md

246 lines
8.7 KiB
Markdown

# GoalfyMax Admin 架构探索文档
欢迎使用本架构探索指南。这个文档集合帮助开发者快速理解和实现新的功能模块。
## 文档导航
### 1. [详细架构指南](./architecture_guide.md) (1182 行)
**适合**: 需要深入理解项目架构的开发者
**内容包括**:
- 项目整体架构和目录结构
- 菜单系统实现 (Page 模型)
- 用户等级配置模块完整实现示例
- Handler/Controller 层实现模式
- 路由配置详解
- 数据库迁移方式
- 配置管理
- 添加新"通用配置"功能的完整 7 步骤
- 最佳实践总结
- 快速查找表
### 2. [快速开发指南](./QUICK_START.md) (336 行)
**适合**: 想快速添加新功能模块的开发者
**内容包括**:
- 5 分钟快速步骤 (7 个步骤)
- 文件复制清单
- API 端点快速查询
- 常见错误排查
- 测试方法 (curl 示例)
- 关键对比表
- 模板代码片段
- 内存关键点
### 3. [架构可视化图](./ARCHITECTURE_DIAGRAM.md) (473 行)
**适合**: 喜欢通过图表理解架构的开发者
**内容包括**:
- 项目分层架构图
- 请求处理流程图
- 文件依赖关系图
- 三层架构详解 (代码示例)
- 数据模型关系图
- 请求-响应周期示例
- 关键文件交互图
- 菜单权限系统图
- 配置流程图
---
## 快速导航
### 我想...
#### 了解项目的整体架构
开始阅读: [详细架构指南 - 第 1-2 节](./architecture_guide.md#1-项目整体架构)
#### 理解菜单系统如何实现的
开始阅读: [详细架构指南 - 第 2 节](./architecture_guide.md#2-菜单系统实现-页面管理)
#### 学习现有配置模块的实现
开始阅读: [详细架构指南 - 第 3 节](./architecture_guide.md#3-现有配置模块实现-用户等级配置)
#### 快速添加一个新的配置模块
开始阅读: [快速开发指南](./QUICK_START.md)
#### 看懂 Handler 层如何工作的
开始阅读: [详细架构指南 - 第 4 节](./architecture_guide.md#4-handlerlcontroller-层实现模式) 或 [架构可视化图 - 三层架构](./ARCHITECTURE_DIAGRAM.md#三层架构详解)
#### 了解路由是如何配置的
开始阅读: [详细架构指南 - 第 5 节](./architecture_guide.md#5-路由配置)
#### 理解数据库迁移的过程
开始阅读: [详细架构指南 - 第 6 节](./architecture_guide.md#6-数据库迁移)
#### 查看配置文件的结构
开始阅读: [详细架构指南 - 第 7 节](./architecture_guide.md#7-配置管理)
#### 看实现新功能的完整步骤
开始阅读: [详细架构指南 - 第 8 节](./architecture_guide.md#8-实现新功能的完整步骤)
#### 通过图表理解三层架构
开始阅读: [架构可视化图 - 项目分层架构](./ARCHITECTURE_DIAGRAM.md#项目分层架构)
#### 看请求处理的完整流程
开始阅读: [架构可视化图 - 请求处理流程](./ARCHITECTURE_DIAGRAM.md#请求处理流程)
#### 找到项目中某个文件的位置
开始查看: [详细架构指南 - 第 10 节](./architecture_guide.md#10-相关文件快速查找表)
---
## 关键文件列表
### 模型层
- `/Users/youziba/goalfyagent/goalfymax-admin/internal/models/user_level_config.go` - 用户等级配置模型
- `/Users/youziba/goalfyagent/goalfymax-admin/internal/models/request.go` - 所有请求模型
- `/Users/youziba/goalfyagent/goalfymax-admin/internal/models/rbac.go` - 页面和权限模型
- `/Users/youziba/goalfyagent/goalfymax-admin/internal/models/common.go` - 基础模型
### 存储层
- `/Users/youziba/goalfyagent/goalfymax-admin/internal/storage/user_level_config_storage.go` - 用户等级配置存储
- `/Users/youziba/goalfyagent/goalfymax-admin/internal/storage/page_storage.go` - 页面存储
- `/Users/youziba/goalfyagent/goalfymax-admin/internal/storage/database.go` - 数据库初始化和迁移
### 服务层
- `/Users/youziba/goalfyagent/goalfymax-admin/internal/services/user_level_config_service.go` - 用户等级配置服务
- `/Users/youziba/goalfyagent/goalfymax-admin/internal/services/page_service.go` - 页面服务
### Handler 层
- `/Users/youziba/goalfyagent/goalfymax-admin/internal/api/handlers/user_level_config_handler.go` - 用户等级配置处理器
- `/Users/youziba/goalfyagent/goalfymax-admin/internal/api/handlers/page_handler.go` - 页面处理器
### 路由和配置
- `/Users/youziba/goalfyagent/goalfymax-admin/internal/api/routes/routes.go` - 路由配置 (203-213 行有用户等级配置的路由)
- `/Users/youziba/goalfyagent/goalfymax-admin/internal/api/routes/routes.go` (174-181 行有页面管理的路由)
- `/Users/youziba/goalfyagent/goalfymax-admin/cmd/server/main.go` - 应用入口点
- `/Users/youziba/goalfyagent/goalfymax-admin/internal/config/config.go` - 配置管理
- `/Users/youziba/goalfyagent/goalfymax-admin/etc/config.yaml` - YAML 配置文件
---
## 核心概念
### 三层架构
项目采用**三层架构模式**:
```
HTTP 请求
[Handler 层] - 处理 HTTP 请求和响应
[Service 层] - 实现业务逻辑和验证
[Storage 层] - 操作数据库
[数据库]
```
### 菜单系统
项目中的"菜单"通过 **Page 模型**实现,其中:
- `admin_pages` 表存储菜单项
- `admin_role_page_permissions` 表关联角色和菜单权限
### 配置模块
用户等级配置是一个典范的配置模块,包含:
- 模型定义 (Model)
- 数据访问 (Storage)
- 业务逻辑 (Service)
- HTTP 处理 (Handler)
- 路由配置 (Routes)
### 数据库迁移
项目使用 **GORM 的 AutoMigrate** 自动迁移,无需手写 SQL 脚本。
---
## 添加新功能的基本步骤
1. **创建模型** - `internal/models/new_feature.go`
2. **创建存储层** - `internal/storage/new_feature_storage.go`
3. **创建服务层** - `internal/services/new_feature_service.go`
4. **创建处理器** - `internal/api/handlers/new_feature_handler.go`
5. **注册路由** - 在 `routes.go` 中添加路由
6. **创建服务实例** - 在 `main.go` 中创建服务
7. **数据库迁移** - 在 `database.go``AutoMigrate` 中添加模型
**预计耗时**: 5-10 分钟
---
## 最佳实践速查
| 主题 | 快速查看 |
|------|---------|
| 错误处理 | [详细架构 - 4.3](./architecture_guide.md#43-错误处理) |
| 字段验证 | [详细架构 - 4.2](./architecture_guide.md#42-标准响应处理) |
| 数据库操作 | [详细架构 - 3.2b](./architecture_guide.md#b-存储层接口-user_level_config_storagego) |
| 业务逻辑 | [详细架构 - 3.2c](./architecture_guide.md#c-服务层-user_level_config_servicego) |
| 日志记录 | [详细架构 - 9.6](./architecture_guide.md#96-日志记录) |
| 代码组织 | [详细架构 - 9.1](./architecture_guide.md#91-代码组织) |
---
## 常见问题
### Q: 如何添加新的配置模块?
A: 参考[快速开发指南](./QUICK_START.md)中的 7 个步骤,预计 5-10 分钟。
### Q: 页面权限是如何工作的?
A: 查看[详细架构 - 2.5 节](./architecture_guide.md#25-权限检查流程)和[架构可视化 - 菜单权限系统](./ARCHITECTURE_DIAGRAM.md#菜单权限系统)。
### Q: 数据库表是如何自动创建的?
A: GORM 根据模型定义自动创建表。详见[详细架构 - 6.2 节](./architecture_guide.md#62-表结构生成规则)。
### Q: 如何测试新的 API?
A: 使用 curl 命令。参考[快速开发指南 - 测试新模块](./QUICK_START.md#测试新模块)。
### Q: 项目中使用了哪些技术栈?
A: Gin (Web), GORM (ORM), MySQL (数据库), Zap (日志), Viper (配置)。详见[详细架构 - 1.2](./architecture_guide.md#12-技术栈)。
---
## 文件大小和内容
| 文件 | 大小 | 行数 | 内容 |
|-----|------|------|------|
| architecture_guide.md | 34 KB | 1182 | 详细的架构和实现指南 |
| QUICK_START.md | 8.6 KB | 336 | 快速开发清单和示例 |
| ARCHITECTURE_DIAGRAM.md | 18 KB | 473 | 可视化架构图表 |
---
## 后续步骤
1. **阅读文档**: 根据需要选择上面的文档
2. **参考示例**: 查看 `user_level_config` 模块的实现
3. **实施新功能**: 按照[快速开发指南](./QUICK_START.md)的步骤
4. **测试验证**: 使用 curl 或其他工具测试 API
5. **提交代码**: 遵循项目的 Git 工作流
---
## 需要帮助?
如果您对任何内容有疑问,请参考对应的文档部分。所有文件都是自包含的,包含完整的代码示例和解释。
## 相关链接
- 项目根目录: `/Users/youziba/goalfyagent/goalfymax-admin/`
- Models: `/Users/youziba/goalfyagent/goalfymax-admin/internal/models/`
- Storage: `/Users/youziba/goalfyagent/goalfymax-admin/internal/storage/`
- Services: `/Users/youziba/goalfyagent/goalfymax-admin/internal/services/`
- Handlers: `/Users/youziba/goalfyagent/goalfymax-admin/internal/api/handlers/`
- Routes: `/Users/youziba/goalfyagent/goalfymax-admin/internal/api/routes/`
---
**文档生成日期**: 2024-10-28
**文档版本**: 1.0
**作者**: Claude Code