echo/supabase/migrations/202601120002_fix_schema.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.3 KiB
SQL

-- ============================================================================
-- Echo (回声) - Schema 修复迁移脚本
-- 版本: 202601120002
-- 创建日期: 2026-01-12
-- 修复内容:
-- 1. user_stamps 表外键添加 ON DELETE CASCADE
-- 2. growth_tags 表添加 UPDATE 策略
-- 3. achievements 表添加 UPDATE 策略
-- 4. daily_stats 表添加 INSERT 策略
-- 5. growth_tags 表添加 behavior_tags GIN 索引
-- ============================================================================
-- ============================================================================
-- 修复 1: user_stamps 表外键添加 ON DELETE CASCADE
-- ============================================================================
ALTER TABLE user_stamps DROP CONSTRAINT user_stamps_stamp_def_id_fkey;
ALTER TABLE user_stamps ADD CONSTRAINT user_stamps_stamp_def_id_fkey
FOREIGN KEY (stamp_def_id) REFERENCES stamp_definitions(id) ON DELETE CASCADE;
-- ============================================================================
-- 修复 2: growth_tags 表添加 UPDATE 策略
-- ============================================================================
-- 检查是否已存在 UPDATE 策略
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_policies
WHERE tablename = 'growth_tags'
AND policyname = 'System can update growth tags'
) THEN
CREATE POLICY "System can update growth tags" ON growth_tags
FOR UPDATE USING (auth.role() = 'service_role');
END IF;
END $$;
-- ============================================================================
-- 修复 3: achievements 表添加 UPDATE 策略
-- ============================================================================
-- 检查是否已存在 UPDATE 策略
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_policies
WHERE tablename = 'achievements'
AND policyname = 'System can update achievements'
) THEN
CREATE POLICY "System can update achievements" ON achievements
FOR UPDATE USING (auth.role() = 'service_role');
END IF;
END $$;
-- ============================================================================
-- 修复 4: daily_stats 表添加 INSERT 策略
-- ============================================================================
-- 检查是否已存在 INSERT 策略
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_policies
WHERE tablename = 'daily_stats'
AND policyname = 'System can insert daily stats'
) THEN
CREATE POLICY "System can insert daily stats" ON daily_stats
FOR INSERT WITH CHECK (auth.role() = 'service_role');
END IF;
END $$;
-- ============================================================================
-- 修复 5: growth_tags 表添加 behavior_tags GIN 索引
-- ============================================================================
-- 检查索引是否已存在
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_indexes
WHERE tablename = 'growth_tags'
AND indexname = 'idx_growth_tags_behavior'
) THEN
CREATE INDEX idx_growth_tags_behavior ON growth_tags USING GIN (behavior_tags);
END IF;
END $$;
-- ============================================================================
-- 修复完成
-- ============================================================================