echo/supabase/migrations/202601120003_onboarding_fix.sql
ddshi 4c42d6b6f5 feat: 完成阶段 2 - 用户系统与智能体初始化
## 完成的功能
- 用户登录/注册(邮箱 + Google OAuth)
- 初始问题引导流程(4 个问题)
- 智能体自动生成(根据用户回答)
- 智能体列表页面

## 新增文件
- 登录/注册页面和组件
- Onboarding 页面和组件
- 智能体列表页面
- 智能体 API 端点
- 智能体 Prompt 设计

## 数据库迁移
- onboarding_fix 迁移(users.has_completed_onboarding)

## 测试
- 登录/注册:100% 通过
- Onboarding:85% 通过
- 智能体功能:85% 通过

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 14:08:12 +08:00

91 lines
3.4 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================================================
-- Echo (回声) - Onboarding 功能 Schema 修复迁移脚本
-- 版本: 202601120003
-- 创建日期: 2026-01-12
-- 修复内容:
-- 1. users 表添加 has_completed_onboarding 字段
-- 2. onboarding_answers 表添加 updated_at 字段
-- 3. onboarding_answers 表添加 updated_at 触发器
-- 4. 确保 onboarding_answers RLS 策略存在
-- ============================================================================
-- ============================================================================
-- 修复 1: users 表添加 has_completed_onboarding 字段
-- ============================================================================
ALTER TABLE users ADD COLUMN IF NOT EXISTS has_completed_onboarding BOOLEAN DEFAULT FALSE;
-- ============================================================================
-- 修复 2: onboarding_answers 表添加 updated_at 字段
-- ============================================================================
ALTER TABLE onboarding_answers ADD COLUMN IF NOT EXISTS updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW();
-- ============================================================================
-- 修复 3: onboarding_answers 表添加 updated_at 触发器
-- ============================================================================
-- 检查触发器是否已存在
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.triggers
WHERE trigger_name = 'update_onboarding_answers_updated_at'
AND table_name = 'onboarding_answers'
) THEN
CREATE TRIGGER update_onboarding_answers_updated_at
BEFORE UPDATE ON onboarding_answers
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
END IF;
END $$;
-- ============================================================================
-- 修复 4: 确保 onboarding_answers RLS 策略存在
-- ============================================================================
-- 启用 RLS如果尚未启用
ALTER TABLE onboarding_answers ENABLE ROW LEVEL SECURITY;
-- 检查并创建 SELECT 策略
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_policies
WHERE tablename = 'onboarding_answers'
AND policyname = 'Users can view own onboarding answers'
) THEN
CREATE POLICY "Users can view own onboarding answers" ON onboarding_answers
FOR SELECT USING (auth.uid() = user_id);
END IF;
END $$;
-- 检查并创建 INSERT 策略
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_policies
WHERE tablename = 'onboarding_answers'
AND policyname = 'Users can create onboarding answers'
) THEN
CREATE POLICY "Users can create onboarding answers" ON onboarding_answers
FOR INSERT WITH CHECK (auth.uid() = user_id);
END IF;
END $$;
-- 检查并创建 UPDATE 策略
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_policies
WHERE tablename = 'onboarding_answers'
AND policyname = 'Users can update own onboarding answers'
) THEN
CREATE POLICY "Users can update own onboarding answers" ON onboarding_answers
FOR UPDATE USING (auth.uid() = user_id);
END IF;
END $$;
-- ============================================================================
-- 迁移完成
-- ============================================================================