修复订单显示bug

This commit is contained in:
2026-06-10 20:20:47 +08:00
parent de62513987
commit 9fbc6f8cd1
45 changed files with 7514 additions and 2025 deletions

View File

@@ -0,0 +1,269 @@
-- =====================================================================================
-- 脚本:创建居家服务员测试账号及完整档案(一站式 SQL
-- 用途:为 delivery 端登录提供真实的服务人员档案
-- 执行环境Supabase SQL Editor需 postgres/superuser 权限)
-- 对应前端配置:医疗-delivery/ak/config.uts
-- - SUPA_URL: http://119.146.131.237:9126
-- - 测试账号: homecare_worker@test.com / Homecare123!
-- =====================================================================================
-- 0. 确保 pgcrypto 扩展可用(用于 bcrypt 密码哈希)
CREATE EXTENSION IF NOT EXISTS pgcrypto;
DO $$
DECLARE
v_auth_id UUID;
v_instance_id UUID;
v_email TEXT := 'homecare_worker@test.com';
v_password TEXT := 'Homecare123!';
v_nickname TEXT := '居家服务员';
v_phone TEXT := '13800138000';
BEGIN
-- -------------------------------------------------------------------------
-- 步骤 1获取 instance_id自托管 Supabase 通常只有一个 instance
-- -------------------------------------------------------------------------
SELECT id INTO v_instance_id FROM auth.instances LIMIT 1;
IF v_instance_id IS NULL THEN
v_instance_id := '00000000-0000-0000-0000-000000000000'::UUID;
END IF;
-- -------------------------------------------------------------------------
-- 步骤 2创建/更新 auth.usersSupabase Auth 核心用户表)
-- 使用 crypt(..., gen_salt('bf')) 生成 bcrypt 哈希,与 gotrue 兼容
-- -------------------------------------------------------------------------
INSERT INTO auth.users (
instance_id,
id,
aud,
role,
email,
encrypted_password,
email_confirmed_at,
confirmation_sent_at,
recovery_sent_at,
email_change_sent_at,
new_email,
invited_at,
confirmation_token,
recovery_token,
email_change_token_new,
email_change_token_current,
email_change,
email_change_confirm_status,
banned_until,
reauthentication_token,
reauthentication_sent_at,
is_super_admin,
created_at,
updated_at,
phone,
phone_confirmed_at,
phone_change,
phone_change_token,
phone_change_sent_at,
confirmed_at,
raw_app_meta_data,
raw_user_meta_data,
is_sso_user,
deleted_at,
is_anonymous
) VALUES (
v_instance_id,
gen_random_uuid(),
'authenticated',
'authenticated',
v_email,
crypt(v_password, gen_salt('bf')),
NOW(),
NULL,
NULL,
NULL,
NULL,
NULL,
'',
'',
'',
'',
'',
0,
NULL,
'',
NULL,
FALSE,
NOW(),
NOW(),
NULL,
NULL,
NULL,
'',
NULL,
NOW(),
'{"provider":"email","providers":["email"]}'::jsonb,
'{"name":"居家服务员","role":"delivery","nickname":"居家服务员"}'::jsonb,
FALSE,
NULL,
FALSE
)
ON CONFLICT (email) DO UPDATE SET
encrypted_password = crypt(v_password, gen_salt('bf')),
email_confirmed_at = COALESCE(auth.users.email_confirmed_at, NOW()),
confirmed_at = COALESCE(auth.users.confirmed_at, NOW()),
updated_at = NOW(),
raw_user_meta_data = '{"name":"居家服务员","role":"delivery","nickname":"居家服务员"}'::jsonb,
deleted_at = NULL,
is_anonymous = FALSE;
-- 获取刚创建/更新的用户 ID
SELECT id INTO v_auth_id FROM auth.users WHERE email = v_email LIMIT 1;
IF v_auth_id IS NULL THEN
RAISE EXCEPTION 'auth.users 插入失败,请检查权限或表结构';
END IF;
RAISE NOTICE '✓ auth.users 已创建/更新: % (ID: %)', v_email, v_auth_id;
-- -------------------------------------------------------------------------
-- 步骤 3创建 auth.identitiesSupabase Auth 身份表,某些版本必需)
-- -------------------------------------------------------------------------
INSERT INTO auth.identities (
id,
user_id,
identity_data,
provider,
created_at,
updated_at
) VALUES (
v_auth_id::TEXT,
v_auth_id,
jsonb_build_object('sub', v_auth_id::TEXT, 'email', v_email),
'email',
NOW(),
NOW()
)
ON CONFLICT (id) DO UPDATE SET
identity_data = jsonb_build_object('sub', v_auth_id::TEXT, 'email', v_email),
updated_at = NOW();
RAISE NOTICE '✓ auth.identities 已创建/更新';
-- -------------------------------------------------------------------------
-- 步骤 4创建 public.ak_users业务用户资料表
-- -------------------------------------------------------------------------
INSERT INTO public.ak_users (
id,
username,
email,
gender,
birthday,
height_cm,
weight_kg,
bio,
avatar_url,
preferred_language,
health_goal,
service_address,
emergency_contact,
chronic_notes,
care_preference,
role,
school_id,
grade_id,
class_id,
created_at,
updated_at
) VALUES (
v_auth_id,
v_nickname,
v_email,
'unknown',
NULL,
0,
0,
'居家养老护理员,具备基础护理和康复训练资质',
'https://api.dicebear.com/7.x/avataaars/svg?seed=homecare',
'zh-CN',
'',
'',
'',
'',
'',
'delivery',
'',
'',
'',
NOW(),
NOW()
)
ON CONFLICT (id) DO UPDATE SET
username = EXCLUDED.username,
email = EXCLUDED.email,
role = EXCLUDED.role,
bio = EXCLUDED.bio,
avatar_url = EXCLUDED.avatar_url,
updated_at = NOW();
RAISE NOTICE '✓ public.ak_users 已插入/更新';
-- -------------------------------------------------------------------------
-- 步骤 5创建 public.ml_delivery_staff服务人员档案表
-- -------------------------------------------------------------------------
INSERT INTO public.ml_delivery_staff (
id,
uid,
nickname,
avatar,
phone,
status,
is_active,
station_id,
staff_no,
online_status,
certificate_status,
certificate_expire_at,
service_area,
skills,
created_at,
updated_at
) VALUES (
gen_random_uuid(),
v_auth_id,
v_nickname,
'https://api.dicebear.com/7.x/avataaars/svg?seed=homecare',
v_phone,
1, -- 状态: 1-启用
TRUE, -- 是否激活
NULL, -- 所属站点(可选)
'HC' || EXTRACT(YEAR FROM NOW()) || LPAD(FLOOR(RANDOM() * 10000)::TEXT, 4, '0'), -- 工号
'resting', -- 在线状态
'valid', -- 资质状态
(NOW() + INTERVAL '1 year')::DATE, -- 资质到期日
'北京市朝阳区',
'["基础护理", "康复训练", "上门照护", "健康监测"]'::jsonb,
NOW(),
NOW()
)
ON CONFLICT (uid) WHERE deleted_at IS NULL DO UPDATE SET
nickname = EXCLUDED.nickname,
phone = EXCLUDED.phone,
status = EXCLUDED.status,
is_active = EXCLUDED.is_active,
online_status = EXCLUDED.online_status,
certificate_status = EXCLUDED.certificate_status,
service_area = EXCLUDED.service_area,
skills = EXCLUDED.skills,
updated_at = NOW();
RAISE NOTICE '✓ public.ml_delivery_staff 已插入/更新';
-- -------------------------------------------------------------------------
-- 完成
-- -------------------------------------------------------------------------
RAISE NOTICE '============================================';
RAISE NOTICE '居家服务员账号初始化完成!';
RAISE NOTICE '邮箱: %', v_email;
RAISE NOTICE '密码: %', v_password;
RAISE NOTICE '用户ID: %', v_auth_id;
RAISE NOTICE 'SUPA_URL: http://119.146.131.237:9126';
RAISE NOTICE '============================================';
END $$;