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
7.0 KiB
RVW V4.0 期刊租户配置中心开发需求
模块定位: 依托现有 ADMIN 运营端 TenantDetailPage,为每个期刊客户建立独立的配置中枢。
核心目标: 实现期刊 SaaS 的“千刊千面”,包括基础品牌信息定制与底层 AI 审稿 Skills 规则的动态编排。
🎯 一、 前端 UI 与功能分区要求
在现有的 ADMIN 租户详情页(TenantDetailPage)中,构建两大核心配置区块(可作为独立的 Tab 或折叠面板):
区块 1:期刊基础信息与门户配置 (Basic Info & Portal)
用于定义该期刊的对外面貌和访问入口。
| 配置项名称 | 字段类型 | UI 组件 | 功能说明 |
|---|---|---|---|
| 期刊全称 | String | 文本输入框 | 如:Journal of Translational Internal Medicine。显示在登录页及工作台顶部。 |
| 访问路径 (URL Slug) | String | 文本输入框 (需正则校验) | 极重要:用于生成 review.xunzhengyixue.com/{slug}。仅允许小写字母、数字和连字符。 |
| 期刊 Logo | String | 图片上传组件 | 上传至 OSS 后保存 URL。用于替换默认的系统 Logo。 |
| 品牌主色调 | String | 颜色拾取器 (Color Picker) | 支持 HEX 色值(如 #0284c7)。用于动态渲染按钮和高亮文字。 |
| 专属登录页背景图 | String | 图片上传组件 | (可选) 替换登录页的默认背景,增强品牌沉浸感。 |
区块 2:智能审稿配置 (RVW Skills Config)
这是该模块的核心,分为 4 个独立的配置面板(Panel):
Panel A: 稿约规范评估 (Editorial)
- 规则列表维护:支持增删改查。每条规则需包含 规则编号 (Code) 和 规则描述 (Description)。
- 致命错误开关 (Fatal Flag):每条规则后跟随一个 Switch 开关。开启后,该项缺陷将作为“一票否决”项在前端红底高亮。
Panel B: 方法学评估 (Methodology) - 【需支持动静分离与预览】
- 专家评判标准 (Prompt):大文本框。供运营人员输入该期刊特有的统计学和方法学要求(大模型读取)。
- 报告展示模板 (Handlebars):大文本框。用于配置最终输出给责编的 Markdown 格式。
- ⚠️ 强依赖功能:测试渲染 (Test Render):必须在模板编辑区提供一个“预览”按钮。点击后,使用系统内置的假 JSON 数据(Mock Data)与当前模板进行结合,在右侧弹出抽屉实时渲染出 Markdown 结果,以防止语法错误。
Panel C: 数据验证 (Data Forensics)
- 验证深度 (Level):提供三个单选按钮(Radio):
- L1 算术验证:仅核对行列加总、百分比。
- L2 统计验证:包含 L1,增加 CI↔P 一致性逆向验证(推荐)。
- L3 双通道核查:包含 L2,增加大模型智能深度核查(耗时较长)。
Panel D: 临床专业评估 (Clinical)
- FINER 权重占比:提供 5 个数字输入框(或滑块),分别对应 Feasibility, Innovation, Novelty, Ethical, Relevant。前端需实时校验总和是否等于 100%。
- 专科特色要求:文本区,填写该期刊的专科倾向性偏好(如:心血管领域的特殊要求)。
💾 二、 数据库 Schema 设计 (Prisma)
本模块涉及两部分数据的存储:基础信息存入已有的 Tenants 表,审稿配置存入新增的 TenantRvwConfig 表。
1. 基础信息存储 (platform_schema.tenants)
利用现有的租户表。假设现有表结构已有 code (即 URL Slug) 和 name (期刊名称)。对于 Logo、颜色等品牌视觉资产,建议统一存入 config JSON 字段中。
// 无需新建表,在原 Tenants 表中合理利用字段
model Tenant {
id String @id @default(uuid())
code String @unique // 对应 URL Slug,如 'jtim'
name String // 期刊全称
// 品牌视觉信息存入此 JSON 字段,避免频繁改表结构
config Json? // 格式:{ logoUrl: "...", brandColor: "#...", bgImgUrl: "..." }
rvwConfig TenantRvwConfig? // 关联 RVW 配置表
}
2. RVW Skills 配置存储 (新增表)
执行 prisma migrate dev 创建以下 1对1 扩展表:
model TenantRvwConfig {
id String @id @default(uuid())
tenantId String @unique
tenant Tenant @relation(fields: [tenantId], references: [id])
// Panel A: 稿约规范 (存为 JSON 数组)
// 结构: [{ code: 'ED-01', desc: '摘要需控制在250字内', isFatal: true }]
editorialRules Json?
// Panel B: 方法学评估
methodologyExpertPrompt String? @db.Text
methodologyHandlebarsTemplate String? @db.Text
// Panel C: 数据验证
dataForensicsLevel String @default("L2") // 'L1', 'L2', 'L3'
// Panel D: 临床评估 (存为 JSON)
// 结构: { f: 20, i: 20, n: 20, e: 20, r: 20 }
finerWeights Json?
clinicalExpertPrompt String? @db.Text
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@schema("platform_schema")
}
🔌 三、 后端 API 接口设计
新增统一的租户管理与 RVW 配置接口:
1. 内部 ADMIN 配置接口 (需要 ops:user-ops 权限)
- PUT /api/admin/tenants/:id/basic-info:更新期刊名称、Slug、品牌 Logo 等信息。
- GET /api/admin/tenants/:id/rvw-config:获取指定期刊的 Skills 配置。
- PUT /api/admin/tenants/:id/rvw-config:UPSERT (更新或创建) 期刊 Skills 配置。
2. 公开业务接口 (无 Auth,用于动态登录页渲染)
- GET /api/v1/tenants/public-info/:slug
- 参数:slug (例如 'jtim')
- 返回:{ name, logoUrl, brandColor, bgImgUrl }
- 限流要求:必须添加 Rate Limiting (防刷防爬)。
👥 四、 实施 SOP:用户与期刊绑定(无需开发)
给开发团队的提示:业务上,客户(责编)登录 /jtim 后能看到 JTIM 的稿件,依赖于正确的账号绑定。这部分不需要开发新功能,但需要通知实施团队遵循以下 SOP:
- 客户在主站注册账号(或由超管分配账号)。
- 内部超管在 ADMIN 端的 【用户管理 -> 租户成员管理】 页面,将该用户的账号添加到目标期刊租户(如 JTIM)下。
- 确保该用户拥有 RVW 模块的使用权限。
- 验证:此后该用户访问 review.xunzhengyixue.com/jtim 时,JWT 中会自动带上该租户身份,接口方可放行。
✅ 五、 验收标准 (Definition of Done)
- 运营人员可在后台顺滑配置 JTIM 和 CMJ 两套截然不同的方法学 Prompt 和 Handlebars 模板。
- 在 Handlebars 编辑器中点击“预览”,能立刻看到正确渲染的 Markdown 格式报告,不报错。
- 未登录用户访问 review.xunzhengyixue.com/jtim 时,登录页自动变更为 JTIM 的名称、Logo 和主色调。