# 示例：使用 team-debug 进行调试

本示例展示 `team-debug` 如何系统性地定位根因。

## 问题描述

用户报告："登录接口间歇性返回 500 错误。"

## 第一步：收集证据

```bash
/team-debug 登录接口间歇性 500 错误
```

调试 Agent 开始收集：

- 过去一小时的错误日志
- 请求/响应模式
- 最近的代码变更
- 依赖版本

## 第二步：生成假设

```
H1：数据库连接池耗尽
H2：会话创建时的竞态条件
H3：认证中间件内存泄漏
H4：第三方限流
```

## 第三步：判别性验证

每个假设通过特定实验验证：

| 假设 | 实验 | 结果 |
|------|------|------|
| H1：连接池耗尽 | 检查 max_connections vs 活跃连接数 | ❌ 活跃连接 < 连接池 50% |
| H2：竞态条件 | 在会话创建前后增加日志 | ✅ 两个并发请求创建了重复会话 |
| H3：内存泄漏 | 监控认证前后的堆内存 | ❌ 无明显变化 |
| H4：第三方限流 | 检查第三方 API 响应码 | ❌ 无 429 响应 |

## 第四步：找到根因

**竞态条件**：当两个登录请求同时到达同一个新用户时，两个请求都通过了"用户是否存在"检查，然后都尝试创建会话。第二个请求因为第一个已创建而失败。

## 第五步：修复

```python
# 修复前（存在竞态条件）
if not user.has_session():
    user.create_session()

# 修复后（原子操作）
user.create_session_if_not_exists()  # 数据库级别的原子操作
```

## 第六步：验证

```bash
# 运行模拟并发登录的测试
pytest tests/test_login_concurrent.py -v
# ✅ 所有测试通过
```
