feat: 重构CLAUDE.md文档体系,实现模块化轻量级设计
Some checks failed
部署后端服务 / 🚀 构建并部署 (push) Failing after 7m20s

- 重构根目录CLAUDE.md为项目总览(60行精简版)
- 细化backend模块CLAUDE.md为开发指南
- 新增各子模块CLAUDE.md文件:
  - api/desc/ - API定义模块
  - internal/handler/ - 请求处理器
  - internal/logic/ - 业务逻辑层
  - internal/model/ - 数据模型层
  - internal/middleware/ - 中间件层
  - internal/svc/ - 服务上下文
  - configs/ - 配置目录
  - deploy/ - 部署配置
  - pkg/ - 公共库
  - scripts/ - 工具脚本
  - configs/sql/ - SQL脚本
- 修复PostgreSQL SSL配置参数
- 清理旧的backend-old目录

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
xujiang
2025-07-16 13:16:01 +08:00
parent 28eef98a0b
commit 386666660f
94 changed files with 492 additions and 20878 deletions

View File

@ -0,0 +1,40 @@
# Handler层 - 请求处理器
## 📋 目录结构
```
internal/handler/
├── auth/ # 认证处理器
├── category/ # 分类处理器
├── photo/ # 照片处理器
├── user/ # 用户处理器
├── health/ # 健康检查
└── routes.go # 路由注册
```
## 🎯 处理器职责
- **接收请求**: HTTP请求入口
- **参数验证**: 请求参数校验
- **调用逻辑**: 调用logic层处理
- **返回响应**: 格式化响应
## 🚀 开发流程
1. **新增处理器**: 在对应目录创建handler文件
2. **注册路由**: 在routes.go中添加路由
3. **绑定逻辑**: 调用对应的logic层方法
## 📊 代码模板
```go
// 示例处理器结构
func (h *CreatePhotoHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
// 1. 解析请求参数
// 2. 调用logic层
// 3. 返回响应
}
```
## 🔗 对应关系
| Handler | Logic | Model |
|---|---|---|
| `auth/` | `logic/auth/` | `model/user/` |
| `photo/` | `logic/photo/` | `model/photo/` |
| `category/` | `logic/category/` | `model/category/` |

View File

@ -0,0 +1,43 @@
# Logic层 - 业务逻辑
## 📋 目录结构
```
internal/logic/
├── auth/ # 认证逻辑
├── category/ # 分类业务逻辑
├── photo/ # 照片业务逻辑
├── user/ # 用户业务逻辑
└── health/ # 健康检查逻辑
```
## 🎯 逻辑层职责
- **业务处理**: 核心业务逻辑实现
- **数据验证**: 业务规则验证
- **事务管理**: 数据库事务控制
- **错误处理**: 业务异常处理
## 🚀 开发流程
1. **实现接口**: 根据API定义实现逻辑
2. **调用模型**: 使用model层操作数据
3. **处理异常**: 返回标准化错误
## 📊 代码结构
```go
// 业务逻辑模板
func (l *CreatePhotoLogic) CreatePhoto(req types.CreatePhotoRequest) (*types.Photo, error) {
// 1. 业务验证
// 2. 数据操作
// 3. 返回结果
}
```
## 🔗 层级关系
```
Handler → Logic → Model → Database
```
## 🎯 最佳实践
- **单一职责**: 每个logic方法只做一件事
- **错误处理**: 使用pkg/errorx定义错误
- **日志记录**: 关键操作添加日志
- **事务边界**: 复杂操作使用事务

View File

@ -0,0 +1,46 @@
# Middleware层 - 中间件
## 📋 文件结构
```
internal/middleware/
├── auth.go # JWT认证中间件
├── cors.go # 跨域处理中间件
├── logger.go # 日志中间件
├── error.go # 错误处理中间件
└── middleware.go # 中间件管理器
```
## 🎯 中间件职责
- **认证授权**: JWT令牌验证
- **跨域处理**: CORS配置
- **日志记录**: 请求日志
- **错误处理**: 统一错误响应
- **限流熔断**: 请求限流
## 🚀 中间件顺序
```
请求 → Logger → CORS → Auth → RateLimit → Handler
```
## 📊 配置参数
| 中间件 | 配置项 | 默认值 |
|---|---|---|
| **CORS** | 允许域名 | localhost:3000 |
| **Logger** | 日志级别 | info |
| **Auth** | 过期时间 | 24小时 |
## 🎯 使用方式
```go
// 在路由中使用
r.Use(middleware.Cors())
r.Use(middleware.Logger())
r.Use(middleware.Auth())
```
## 🔄 扩展中间件
1. **新增文件**: 创建新的中间件文件
2. **注册使用**: 在routes.go中添加
3. **配置参数**: 在配置文件中设置
## ⚙️ 配置位置
- 配置项: `etc/photography-api.yaml` -> `middleware` 部分

View File

@ -0,0 +1,49 @@
# Model层 - 数据模型
## 📋 目录结构
```
internal/model/
├── user.go # 用户模型
├── photo.go # 照片模型
├── category.go # 分类模型
├── vars.go # 模型变量
├── sql/ # SQL定义文件
│ ├── user.sql # 用户表结构
│ ├── photo.sql # 照片表结构
│ └── category.sql # 分类表结构
└── *_gen.go # 自动生成代码
```
## 🎯 模型职责
- **数据定义**: 数据库表结构
- **CRUD操作**: 基础数据操作
- **关联关系**: 表间关系定义
- **验证规则**: 数据验证
## 🚀 开发流程
1. **定义SQL**: 在sql/目录创建表结构
2. **生成模型**: `make generate-model`
3. **扩展方法**: 在对应模型文件添加自定义方法
## 📊 表结构关系
```
User 1:N Photo (用户拥有多张照片)
Category 1:N Photo (分类包含多张照片)
```
## 🎯 文件说明
| 文件 | 用途 | 修改频率 |
|---|---|---|
| `user.sql` | 用户表定义 | 低 |
| `photo.sql` | 照片表定义 | 中 |
| `category.sql` | 分类表定义 | 低 |
| `*_gen.go` | 自动生成代码 | 不修改 |
## 🔄 生成命令
```bash
# 生成所有模型
make generate-model
# 生成单个模型
goctl model mysql ddl -src sql/user.sql -dir ./internal/model/
```

View File

@ -0,0 +1,39 @@
# Service Context - 服务上下文
## 📁 文件结构
```
internal/svc/
└── servicecontext.go # 服务上下文定义
```
## 🎯 核心职责
- **服务初始化**: 集中管理所有服务依赖
- **依赖注入**: 为handler提供所需组件
- **生命周期**: 管理服务生命周期
## 🔧 组件管理
```go
type ServiceContext struct {
Config config.Config // 配置
DB *gorm.DB // 数据库连接
UserModel model.UserModel // 用户模型
PhotoModel model.PhotoModel // 照片模型
CategoryModel model.CategoryModel // 分类模型
Middleware *middleware.MiddlewareManager // 中间件管理
}
```
## 🚀 初始化流程
```
启动服务 → 加载配置 → 初始化数据库 → 创建模型 → 注册中间件 → 启动HTTP服务
```
## 📋 扩展方式
1. **新增模型**: 在ServiceContext中添加新字段
2. **初始化**: 在NewServiceContext中初始化
3. **使用**: 在handler中通过svc访问
## 🎯 设计模式
- **单例模式**: 整个服务生命周期只创建一次
- **依赖注入**: 通过构造函数传递依赖
- **门面模式**: 为上层提供统一的访问接口