ryu11wgu/customer-support-lab
GitHub: ryu11wgu/customer-support-lab
一个使用 Java Spring Boot 和 PostgreSQL 模拟的客户支持实验项目,用于实践事件故障排查、SQL 验证与 API 调试。
Stars: 0 | Forks: 0
# 客户支持实验
使用 Java、Spring Boot、PostgreSQL 和 REST API 构建的应用支持实验,用于实践事件故障排查、SQL 验证、API 调试和生产风格的支持工作流程。
## 目的
该项目模拟一个用于应用支持实践的小型客户账户系统。目标是构建真实的故障排查体验,涵盖常见的支持层面:
- REST API 请求
- Spring Boot 后端逻辑
- PostgreSQL 数据库访问
- HTTP 状态码
- 验证错误
- 数据库验证
- 事件风格文档
## 技术栈
- Java 21
- Spring Boot
- Spring Web
- Spring Data JPA
- PostgreSQL
- Jakarta 验证
- Spring Boot Actuator
- Maven
## 当前功能
- 创建客户记录
- 获取所有客户
- 按 ID 获取客户
- 在 PostgreSQL 中持久化客户数据
- 验证客户请求数据
- 暴露基本的 Actuator 健康端点
## API 端点
| 方法 | 端点 | 描述 |
| --- | --- | --- |
| GET | `/api/customers` | 获取所有客户 |
| GET | `/api/customers/{id}` | 按 ID 获取客户 |
| POST | `/api/customers` | 创建客户 |
| GET | `/actuator/health` | 检查应用健康 |
## 客户字段
| 字段 | 描述 |
| --- | --- |
| id | 自动生成的客户 ID |
| firstName | 客户名 |
| lastName | 客户姓 |
| email | 唯一的客户邮箱 |
| status | 客户状态:ACTIVE、SUSPENDED 或 CLOSED |
| createdAt | 创建时间戳 |
| updatedAt | 最后更新时间戳 |
## 创建客户请求示例
```
curl -X POST http://localhost:8081/api/customers \
-H "Content-Type: application/json" \
-d '{
"firstName": "John",
"lastName": "Smith",
"email": "john.smith@example.com",
"status": "ACTIVE"
}'
```
## 数据库验证示例
```
SELECT * FROM customers;
```
## 配置
该项目期望通过环境变量提供数据库凭据。
```
spring:
datasource:
url: jdbc:postgresql://localhost:5432/customer_support_lab
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
```
本地环境设置示例:
```
export DB_USERNAME=your_postgres_user
export DB_PASSWORD='your_postgres_password'
```
## 运行应用
```
./mvnw spring-boot:run
```
然后测试:
```
curl http://localhost:8081/actuator/health
```
预期响应:
```
{
"status": "UP"
}
```
## 支持技能实践
- 使用 curl 测试 REST API
- 阅读 Spring Boot 启动日志
- 排查 PostgreSQL 连接错误
- 使用 SQL 验证数据库记录
- 识别请求验证失败
- 理解分层后端架构
- 映射控制器、服务、仓库和数据层之间的问题
## 已完成的里程碑
- 设置 Spring Boot 项目
- 连接 Spring Boot 到 PostgreSQL
- 创建 Customer 实体和 CustomerStatus 枚举
- 创建 CustomerRepository
- 创建 CustomerService 层
- 创建 CustomerController
- 为客户字段添加验证
- 使用 curl 测试 POST 和 GET 请求
- 直接在 PostgreSQL 中验证持久化记录
## 计划的支持实验
- 由于错误的数据库凭据导致应用无法启动
- API 返回 400(无效客户请求)
- API 返回 404(客户不存在)
- API 返回 500(模拟后端错误)
- 客户状态不一致调查
- 慢端点故障排查
- Actuator 和基础可观测性检查
标签:API调试, HTTP状态码, Incident响应, Jakarta Validation, Maven, PostgreSQL, REST API, Spring Boot, Spring Boot Actuator, Spring Data JPA, Spring Web, SQL验证, TCP/UDP/TLS指纹, 健康检查, 后端开发, 客户账户系统, 应用支持, 技术支持练习, 接口测试, 数据库访问, 日志与文档, 测试用例, 漏洞验证, 生产环境支持, 验证错误