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
131 lines
7.0 KiB
Markdown
131 lines
7.0 KiB
Markdown
# **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:
|
||
|
||
1. 客户在主站注册账号(或由超管分配账号)。
|
||
2. 内部超管在 ADMIN 端的 **【用户管理 \-\> 租户成员管理】** 页面,将该用户的账号添加到目标期刊租户(如 JTIM)下。
|
||
3. 确保该用户拥有 RVW 模块的使用权限。
|
||
4. **验证**:此后该用户访问 review.xunzhengyixue.com/jtim 时,JWT 中会自动带上该租户身份,接口方可放行。
|
||
|
||
## **✅ 五、 验收标准 (Definition of Done)**
|
||
|
||
1. 运营人员可在后台顺滑配置 JTIM 和 CMJ 两套截然不同的方法学 Prompt 和 Handlebars 模板。
|
||
2. 在 Handlebars 编辑器中点击“预览”,能立刻看到正确渲染的 Markdown 格式报告,不报错。
|
||
3. 未登录用户访问 review.xunzhengyixue.com/jtim 时,登录页自动变更为 JTIM 的名称、Logo 和主色调。 |