-- ==================== Postgres-Only 改造：手动迁移 ====================
-- 文件: 001_add_postgres_cache_and_checkpoint.sql
-- 目的: 添加缓存表和断点续传字段
-- 日期: 2025-12-13
-- 说明: 避免Prisma migrate的shadow database问题，手动添加所需表和字段

-- ==================== 1. 创建缓存表 (AppCache) ====================

CREATE TABLE IF NOT EXISTS platform_schema.app_cache (
  id         SERIAL PRIMARY KEY,
  key        VARCHAR(500) UNIQUE NOT NULL,
  value      JSONB NOT NULL,
  expires_at TIMESTAMP NOT NULL,
  created_at TIMESTAMP DEFAULT NOW()
);

-- 创建索引（优化过期查询和key查询）
CREATE INDEX IF NOT EXISTS idx_app_cache_expires 
  ON platform_schema.app_cache(expires_at);
  
CREATE INDEX IF NOT EXISTS idx_app_cache_key_expires 
  ON platform_schema.app_cache(key, expires_at);

-- ==================== 2. 为AslScreeningTask添加新字段 ====================

-- 任务拆分支持字段
ALTER TABLE asl_schema.screening_tasks 
  ADD COLUMN IF NOT EXISTS total_batches INTEGER DEFAULT 1,
  ADD COLUMN IF NOT EXISTS processed_batches INTEGER DEFAULT 0,
  ADD COLUMN IF NOT EXISTS current_batch_index INTEGER DEFAULT 0;

-- 断点续传支持字段
ALTER TABLE asl_schema.screening_tasks 
  ADD COLUMN IF NOT EXISTS current_index INTEGER DEFAULT 0,
  ADD COLUMN IF NOT EXISTS last_checkpoint TIMESTAMP,
  ADD COLUMN IF NOT EXISTS checkpoint_data JSONB;

-- ==================== 3. 验证创建结果 ====================

-- 查看app_cache表结构
SELECT 
  column_name, 
  data_type, 
  is_nullable,
  column_default
FROM information_schema.columns
WHERE table_schema = 'platform_schema' 
  AND table_name = 'app_cache'
ORDER BY ordinal_position;

-- 查看screening_tasks新增字段
SELECT 
  column_name, 
  data_type, 
  is_nullable,
  column_default
FROM information_schema.columns
WHERE table_schema = 'asl_schema' 
  AND table_name = 'screening_tasks'
  AND column_name IN (
    'total_batches', 'processed_batches', 'current_batch_index',
    'current_index', 'last_checkpoint', 'checkpoint_data'
  )
ORDER BY ordinal_position;

-- ==================== 完成 ====================
-- ✅ 缓存表已创建
-- ✅ 任务拆分字段已添加
-- ✅ 断点续传字段已添加



























































