Add premium My Case MVP
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
-- Migration 001: Premium "My Case" tier
|
||||
-- Run against dobetternorge_maindb:
|
||||
-- mysql -u root dobetternorge_maindb < scripts/sql/001_premium_my_case.sql
|
||||
--
|
||||
-- This migration:
|
||||
-- 1. Creates case_tool_results — persists every tool run for paid users
|
||||
-- 2. Adds trial_* columns to user_tool_credits — mirrors Stripe trial state
|
||||
-- 3. Simplifies tier enums to the MVP ladder (free|plus|pro)
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
-- ── 1. case_tool_results ────────────────────────────────────────────────────
|
||||
CREATE TABLE IF NOT EXISTS case_tool_results (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
user_id INT UNSIGNED NOT NULL COMMENT 'Session user (may be a family member)',
|
||||
owner_user_id INT UNSIGNED NOT NULL COMMENT 'caseResolveClientId result; whose corpus was queried',
|
||||
tool VARCHAR(40) NOT NULL COMMENT 'korrespond | advocate | barnevernet | deep-research | discrepancy | timeline',
|
||||
title VARCHAR(200) NULL COMMENT 'User-editable; defaults to first 80 chars of input',
|
||||
used_case_context TINYINT(1) NOT NULL DEFAULT 0,
|
||||
case_doc_ids JSON NULL COMMENT 'case_documents.id values that contributed chunks',
|
||||
input_payload JSON NOT NULL COMMENT 'Full request body for re-run',
|
||||
output_payload JSON NOT NULL COMMENT 'Full tool response',
|
||||
model VARCHAR(60) NULL COMMENT 'Azure deployment name actually used',
|
||||
latency_ms INT UNSIGNED NULL,
|
||||
credits_charged TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
pinned TINYINT(1) NOT NULL DEFAULT 0,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at DATETIME NULL,
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_user_created (user_id, created_at DESC),
|
||||
KEY idx_owner_tool (owner_user_id, tool, created_at DESC),
|
||||
KEY idx_pinned (user_id, pinned, created_at DESC)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='Saved tool outputs per case — premium "My Case" feature';
|
||||
|
||||
-- ── 2. trial columns on user_tool_credits ───────────────────────────────────
|
||||
ALTER TABLE user_tool_credits
|
||||
ADD COLUMN trial_started_at DATETIME NULL AFTER tier,
|
||||
ADD COLUMN trial_expires_at DATETIME NULL AFTER trial_started_at,
|
||||
ADD COLUMN trial_downgraded_at DATETIME NULL AFTER trial_expires_at;
|
||||
|
||||
-- ── 3. simplify tier enum ───────────────────────────────────────────────────
|
||||
-- No production subscribers exist (demo configuration only) — safe to collapse.
|
||||
UPDATE user_tool_credits SET tier = 'plus' WHERE tier = 'light';
|
||||
UPDATE user_tool_credits SET tier = 'pro' WHERE tier = 'pro_plus';
|
||||
|
||||
ALTER TABLE user_tool_credits
|
||||
MODIFY COLUMN tier ENUM('free','plus','pro') NOT NULL DEFAULT 'free';
|
||||
|
||||
UPDATE user_subscriptions SET tier = 'plus' WHERE tier = 'light';
|
||||
UPDATE user_subscriptions SET tier = 'pro' WHERE tier = 'pro_plus';
|
||||
|
||||
ALTER TABLE user_subscriptions
|
||||
MODIFY COLUMN tier ENUM('plus','pro') NOT NULL;
|
||||
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user