-- Growth plans + favorites; scale matrix seeds (≥8 official scales) CREATE TABLE IF NOT EXISTS growth_plans ( id uuid PRIMARY KEY DEFAULT gen_random_uuid(), user_id uuid NOT NULL REFERENCES users(id), title text NOT NULL, focus text NOT NULL DEFAULT '', status varchar(32) NOT NULL DEFAULT 'active', created_at timestamptz NOT NULL DEFAULT now(), updated_at timestamptz NOT NULL DEFAULT now(), deleted_at timestamptz NULL ); CREATE INDEX IF NOT EXISTS idx_growth_plans_user_id ON growth_plans(user_id); CREATE TABLE IF NOT EXISTS growth_checkins ( id uuid PRIMARY KEY DEFAULT gen_random_uuid(), plan_id uuid NOT NULL REFERENCES growth_plans(id), user_id uuid NOT NULL REFERENCES users(id), day date NOT NULL, note text NULL, created_at timestamptz NOT NULL DEFAULT now(), UNIQUE (plan_id, day) ); CREATE INDEX IF NOT EXISTS idx_growth_checkins_user_id ON growth_checkins(user_id); CREATE TABLE IF NOT EXISTS favorites ( id uuid PRIMARY KEY DEFAULT gen_random_uuid(), user_id uuid NOT NULL REFERENCES users(id), kind varchar(32) NOT NULL, ref_id uuid NOT NULL, created_at timestamptz NOT NULL DEFAULT now(), UNIQUE (user_id, kind, ref_id) ); -- Helper: insert scale if missing (ids fixed for idempotency) INSERT INTO scales (id, slug, title, description, status) VALUES ('22222222-2222-2222-2222-222222222201', 'mbti-lite', '人格类型探索', '了解能量来源与决策偏好的轻量探索。', 'published'), ('22222222-2222-2222-2222-222222222202', 'enneagram-lite', '动机模式探索', '觉察内在动机与压力反应。', 'published'), ('22222222-2222-2222-2222-222222222203', 'bigfive-lite', '性格五维探索', '稳定特质的自我速览。', 'published'), ('22222222-2222-2222-2222-222222222204', 'love-style', '亲密互动探索', '亲密关系中的表达与边界偏好。', 'published'), ('22222222-2222-2222-2222-222222222205', 'eq-lite', '情绪觉察探索', '识别与调节情绪的习惯。', 'published'), ('22222222-2222-2222-2222-222222222206', 'stress-index', '压力负荷探索', '近期压力与恢复方式。', 'published'), ('22222222-2222-2222-2222-222222222207', 'career-interest', '职业兴趣探索', '工作动力与环境偏好。', 'published') ON CONFLICT (slug) DO NOTHING; -- Questions: 3 each (MVP); scoring handled by existing engine via option keys INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222201', 1, '{"prompt":"周末充电,你更想?","options":[{"key":"E","text":"和朋友见面聊天"},{"key":"I","text":"独处安静恢复"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222201' AND sort=1); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222201', 2, '{"prompt":"做决定时你更看重?","options":[{"key":"T","text":"逻辑与公平"},{"key":"F","text":"感受与关系"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222201' AND sort=2); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222201', 3, '{"prompt":"面对计划,你更倾向?","options":[{"key":"J","text":"提前安排清楚"},{"key":"P","text":"保持弹性随机"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222201' AND sort=3); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222202', 1, '{"prompt":"压力大时你最先?","options":[{"key":"A","text":"想把事情做对"},{"key":"B","text":"想被理解和支持"},{"key":"C","text":"想先躲开冲突"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222202' AND sort=1); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222202', 2, '{"prompt":"你最在意别人怎么看你?","options":[{"key":"A","text":"是否可靠靠谱"},{"key":"B","text":"是否温暖有情"},{"key":"C","text":"是否独特有想法"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222202' AND sort=2); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222202', 3, '{"prompt":"成长路上你常提醒自己?","options":[{"key":"A","text":"再努力一点就好"},{"key":"B","text":"别忽略自己的感受"},{"key":"C","text":"保持真实就好"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222202' AND sort=3); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222203', 1, '{"prompt":"新环境里你通常?","options":[{"key":"O","text":"好奇尝试新事物"},{"key":"C","text":"先观察再行动"},{"key":"E","text":"主动认识新朋友"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222203' AND sort=1); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222203', 2, '{"prompt":"做事风格更接近?","options":[{"key":"C","text":"有条理、按计划"},{"key":"A","text":"随情境灵活调整"},{"key":"N","text":"容易想很多细节"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222203' AND sort=2); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222203', 3, '{"prompt":"相处中你更常?","options":[{"key":"A","text":"温和配合"},{"key":"E","text":"直接表达立场"},{"key":"O","text":"提出新点子"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222203' AND sort=3); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222204', 1, '{"prompt":"亲密关系里你更需要?","options":[{"key":"A","text":"稳定陪伴与承诺"},{"key":"B","text":"深度交流与共鸣"},{"key":"C","text":"各自空间与自由"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222204' AND sort=1); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222204', 2, '{"prompt":"发生误解时你会?","options":[{"key":"A","text":"尽快说开"},{"key":"B","text":"先冷静再谈"},{"key":"C","text":"用行动表达关心"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222204' AND sort=2); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222204', 3, '{"prompt":"表达喜欢时你更习惯?","options":[{"key":"A","text":"说出来"},{"key":"B","text":"做具体的事"},{"key":"C","text":"制造共同回忆"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222204' AND sort=3); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222205', 1, '{"prompt":"情绪上来时你最先?","options":[{"key":"A","text":"能叫出它的名字"},{"key":"B","text":"想马上做点什么压下去"},{"key":"C","text":"不太确定自己怎么了"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222205' AND sort=1); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222205', 2, '{"prompt":"朋友难过时你更会?","options":[{"key":"A","text":"陪着听"},{"key":"B","text":"给建议"},{"key":"C","text":"一起转移注意"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222205' AND sort=2); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222205', 3, '{"prompt":"调节自己时最有效的是?","options":[{"key":"A","text":"散步或运动"},{"key":"B","text":"写下来或说出来"},{"key":"C","text":"睡一觉再说"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222205' AND sort=3); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222206', 1, '{"prompt":"最近一周睡眠?","options":[{"key":"A","text":"大体规律"},{"key":"B","text":"时好时坏"},{"key":"C","text":"经常不足"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222206' AND sort=1); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222206', 2, '{"prompt":"任务堆积时你?","options":[{"key":"A","text":"列清单逐个清"},{"key":"B","text":"先做紧迫的"},{"key":"C","text":"容易拖延焦虑"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222206' AND sort=2); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222206', 3, '{"prompt":"恢复精力最依赖?","options":[{"key":"A","text":"运动与日照"},{"key":"B","text":"社交倾诉"},{"key":"C","text":"独处安静"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222206' AND sort=3); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222207', 1, '{"prompt":"理想工作更像?","options":[{"key":"A","text":"创造与表达"},{"key":"B","text":"帮助与支持他人"},{"key":"C","text":"分析与解决问题"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222207' AND sort=1); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222207', 2, '{"prompt":"团队里你自然扮演?","options":[{"key":"A","text":"提出方向的人"},{"key":"B","text":"协调氛围的人"},{"key":"C","text":"把细节落地的人"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222207' AND sort=2); INSERT INTO scale_questions (scale_id, sort, body) SELECT '22222222-2222-2222-2222-222222222207', 3, '{"prompt":"职业选择你最在意?","options":[{"key":"A","text":"意义感"},{"key":"B","text":"成长空间"},{"key":"C","text":"稳定与平衡"}]}' WHERE NOT EXISTS (SELECT 1 FROM scale_questions WHERE scale_id='22222222-2222-2222-2222-222222222207' AND sort=3);