# 注册问题调试指南

## 🔍 当前问题

修改配置后，注册仍然没有创建用户记录。

## 📋 检查清单

### 1. 确认配置已修改并重启服务

```bash
# 检查配置
cd supabase_pro
grep ENABLE_EMAIL_AUTOCONFIRM .env
# 应该显示: ENABLE_EMAIL_AUTOCONFIRM=true

# 重启服务（必须）
docker-compose restart auth
# 或者
docker-compose restart
```

### 2. 检查 Supabase 服务是否正常运行

```bash
cd supabase_pro
docker-compose ps
```

确保 `auth` 服务状态为 `Up`。

### 3. 检查服务日志

```bash
# 查看 auth 服务日志
docker-compose logs auth --tail=50

# 查看是否有错误
docker-compose logs auth | grep -i error
```

### 4. 验证配置是否生效

在 Supabase Dashboard (http://192.168.1.61:3000) 的 SQL Editor 中执行：

```sql
-- 检查当前配置（需要访问 GoTrue 配置）
-- 注意：这个查询可能无法直接执行，但可以通过 API 检查
```

或者直接测试注册，查看返回结果。

---

## 🔧 调试步骤

### 步骤 1：检查前端配置

确认 `ak/config.uts` 中的配置正确：

```typescript
export const SUPA_URL: string = 'http://192.168.1.61:8000'
export const SUPA_KEY: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'
```

### 步骤 2：测试注册并查看日志

1. 打开浏览器开发者工具（F12）
2. 切换到 Console 标签
3. 尝试注册新用户
4. 查看控制台输出：
   - `📝 signUp HTTP 状态码: ...`
   - `📝 注册返回结果: ...`
   - `📝 错误代码: ...`
   - `✅ 找到 user 字段: ...` 或 `⚠️ 未找到 user 信息`

### 步骤 3：检查返回结果

根据控制台日志，判断：

**情况 A：HTTP 状态码 200，有 user 字段**
- ✅ 注册成功
- 检查 `ak_users` 表是否有记录
- 如果没有，检查 `ensureUserProfile` 是否被调用

**情况 B：HTTP 状态码 500，错误信息包含 "confirmation email"**
- ❌ 配置未生效或服务未重启
- 需要重启 Supabase Auth 服务

**情况 C：HTTP 状态码 400，错误信息包含 "already registered"**
- ⚠️ 用户已存在
- 尝试登录或使用其他邮箱

---

## 🐛 常见问题

### 问题 1：配置已修改但服务未重启

**症状**：仍然返回 500 错误

**解决**：
```bash
cd supabase_pro
docker-compose restart auth
# 等待几秒钟让服务启动
docker-compose ps  # 确认服务已启动
```

### 问题 2：服务重启失败

**检查**：
```bash
docker-compose logs auth
```

**可能原因**：
- 配置文件语法错误
- 端口被占用
- Docker 服务未运行

### 问题 3：注册成功但 ak_users 没有记录

**检查**：
1. 查看控制台是否有 `✅ 用户资料创建成功` 日志
2. 如果没有，检查 `ensureUserProfile` 是否被调用
3. 检查 RLS 策略和触发器是否已创建

---

## 📝 已改进的代码

1. **`signUp` 方法**：
   - ✅ 添加 HTTP 状态码检查
   - ✅ 添加详细日志
   - ✅ 返回错误信息时包含状态码

2. **注册页面**：
   - ✅ 添加更详细的日志输出
   - ✅ 检查所有可能的返回结构
   - ✅ 明确错误提示

---

## 🎯 下一步操作

1. **重启 Supabase Auth 服务**（如果还没重启）
2. **测试注册**，查看控制台日志
3. **根据日志判断问题**：
   - 如果 HTTP 状态码是 200 且有 user，说明注册成功
   - 如果 HTTP 状态码是 500，说明配置未生效，需要重启服务
   - 如果 HTTP 状态码是 400，可能是用户已存在或其他错误

4. **检查数据库**：
   ```sql
   -- 检查 auth.users
   SELECT id, email, email_confirmed_at, created_at 
   FROM auth.users 
   ORDER BY created_at DESC 
   LIMIT 5;
   
   -- 检查 ak_users
   SELECT id, email, username, created_at 
   FROM ak_users 
   ORDER BY created_at DESC 
   LIMIT 5;
   ```
