feat(rvw): deliver tenant portal v4 flow and config foundation
Implement RVW V4.0 tenant-aware backend/frontend flow with tenant routing, config APIs, and full portal UX updates. Sync system/RVW/deployment docs to capture verified upload-review-report workflow and next-step admin configuration work. Made-with: Cursor
This commit is contained in:
99
backend/scripts/test-data/01_seed_jtim_tenant.sql
Normal file
99
backend/scripts/test-data/01_seed_jtim_tenant.sql
Normal file
@@ -0,0 +1,99 @@
|
||||
-- =============================================================
|
||||
-- RVW V4.0 本地测试数据:创建 jtim 期刊租户及测试账号
|
||||
-- 执行方式:docker cp 此文件 到容器后 psql -f 执行
|
||||
-- =============================================================
|
||||
|
||||
-- 1. 创建 jtim 期刊租户
|
||||
INSERT INTO platform_schema.tenants (id, name, code, type, status, created_at, updated_at)
|
||||
VALUES (
|
||||
'tenant-jtim-001',
|
||||
'中华内科杂志',
|
||||
'jtim',
|
||||
'HOSPITAL', -- 暂用 HOSPITAL 类型(期刊类型未来可扩展枚举值 JOURNAL)
|
||||
'ACTIVE',
|
||||
CURRENT_TIMESTAMP,
|
||||
CURRENT_TIMESTAMP
|
||||
)
|
||||
ON CONFLICT (id) DO NOTHING;
|
||||
|
||||
-- 2. 创建 jtim 专属测试用户(密码 bcrypt hash = "Test@1234")
|
||||
-- 使用 bcrypt hash: $2b$10$hashed_value... 实际用已存在用户代替
|
||||
-- 注意:users.tenant_id 是主租户(用于主站),tenant_members 表决定跨租户访问权限
|
||||
INSERT INTO platform_schema.users (
|
||||
id, phone, password, email, name, tenant_id,
|
||||
role, status, is_default_password, is_trial, kb_quota, kb_used, token_version,
|
||||
created_at, updated_at
|
||||
)
|
||||
VALUES (
|
||||
'user-jtim-reviewer-001',
|
||||
'13900139001',
|
||||
'$2a$10$OzlvWo.N5FKeU9BgBVuZ1e1DPonG7bF/WVO6PVW5d5di.fK7oxUnW', -- Test@1234
|
||||
'jtim-reviewer@test.com',
|
||||
'张审稿人',
|
||||
'tenant-jtim-001', -- 主租户 = jtim
|
||||
'USER',
|
||||
'active',
|
||||
false,
|
||||
false,
|
||||
10,
|
||||
0,
|
||||
0,
|
||||
CURRENT_TIMESTAMP,
|
||||
CURRENT_TIMESTAMP
|
||||
)
|
||||
ON CONFLICT (id) DO NOTHING;
|
||||
|
||||
-- 3. 绑定用户到 jtim 租户(tenant_members 表 - 用于 rvwTenantMiddleware 权限校验)
|
||||
INSERT INTO platform_schema.tenant_members (id, tenant_id, user_id, role, joined_at)
|
||||
VALUES (
|
||||
'member-jtim-reviewer-001',
|
||||
'tenant-jtim-001',
|
||||
'user-jtim-reviewer-001',
|
||||
'USER',
|
||||
CURRENT_TIMESTAMP
|
||||
)
|
||||
ON CONFLICT (tenant_id, user_id) DO NOTHING;
|
||||
|
||||
-- 4. 赋予 RVW 模块权限(user_modules 表)
|
||||
INSERT INTO platform_schema.user_modules (id, user_id, tenant_id, module_code, is_enabled, created_at, updated_at)
|
||||
VALUES (
|
||||
'umod-jtim-rvw-001',
|
||||
'user-jtim-reviewer-001',
|
||||
'tenant-jtim-001',
|
||||
'RVW',
|
||||
true,
|
||||
CURRENT_TIMESTAMP,
|
||||
CURRENT_TIMESTAMP
|
||||
)
|
||||
ON CONFLICT (user_id, tenant_id, module_code) DO NOTHING;
|
||||
|
||||
-- 5. 创建 jtim 租户的智能审稿配置(使用系统默认,可后续在 ADMIN 修改)
|
||||
INSERT INTO platform_schema.tenant_rvw_configs (
|
||||
id, tenant_id, data_forensics_level,
|
||||
created_at, updated_at
|
||||
)
|
||||
VALUES (
|
||||
'rvwcfg-jtim-001',
|
||||
'tenant-jtim-001',
|
||||
'L2',
|
||||
CURRENT_TIMESTAMP,
|
||||
CURRENT_TIMESTAMP
|
||||
)
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- 6. 验证数据
|
||||
SELECT
|
||||
t.id AS tenant_id,
|
||||
t.name AS tenant_name,
|
||||
t.code AS tenant_code,
|
||||
u.id AS user_id,
|
||||
u.name AS user_name,
|
||||
u.phone,
|
||||
u.email,
|
||||
tm.role AS member_role,
|
||||
rc.data_forensics_level
|
||||
FROM platform_schema.tenants t
|
||||
JOIN platform_schema.users u ON u.tenant_id = t.id
|
||||
JOIN platform_schema.tenant_members tm ON tm.tenant_id = t.id AND tm.user_id = u.id
|
||||
LEFT JOIN platform_schema.tenant_rvw_configs rc ON rc.tenant_id = t.id
|
||||
WHERE t.code = 'jtim';
|
||||
Reference in New Issue
Block a user