Deliver the RVW V4.0 journal configuration center across backend, frontend, migration, and docs with zh/en editorial baseline support and tenant-level prompt/template overrides. Unify tenant login to /:tenantCode/login and auto-enable RVW module when tenant type is JOURNAL to prevent post-login access gaps. Made-with: Cursor
161 lines
10 KiB
Markdown
161 lines
10 KiB
Markdown
# **RVW V4.0 期刊租户配置中心开发需求**
|
||
|
||
**模块定位:** 依托现有 ADMIN 运营端 TenantDetailPage,为每个期刊客户建立独立的配置中枢。
|
||
|
||
**核心目标:** 实现期刊 SaaS 的“千刊千面”。
|
||
|
||
**架构原则:**
|
||
|
||
1. **配置继承模式 (Config Inheritance)**:系统提供【标准默认配置】。期刊默认继承系统标准;需要个性化时,可开启【自定义覆盖】。
|
||
2. **中英双轨基线 (Dual-Baseline)**:针对稿约规范,系统提供“英文期刊”与“中文期刊”两套底层标准,供租户自主选择绑定。
|
||
3. **全面 Prompt 化 (All-in-Prompt)**:取消细颗粒度表单,采用“专家评判标准 (Prompt) \+ 报告展示模板 (Handlebars)”的开放式极简架构。
|
||
|
||
## **🎯 一、 前端 UI 与功能分区要求**
|
||
|
||
在现有的 ADMIN 租户详情页(TenantDetailPage)中,构建两大核心配置区块:
|
||
|
||
### **区块 1:期刊基础信息与门户配置 (Basic Info & Portal)**
|
||
|
||
用于定义该期刊的对外面貌和访问入口。
|
||
|
||
| 配置项名称 | 阶段 | 字段类型 | UI 组件 | 功能说明 |
|
||
| :---- | :---- | :---- | :---- | :---- |
|
||
| **期刊全称** | \[P0\] | String | 文本输入框 | 如:*Journal of Translational Internal Medicine*。显示在登录页及工作台顶部。 |
|
||
| **访问路径(Slug)** | \[P0\] | String | 文本输入框(需正则) | **极重要**:用于生成 review.xunzhengyixue.com/{slug}。仅允许小写字母、数字和连字符。 |
|
||
| **期刊 Logo** | \[P1\] | String | 图片上传组件 | 上传至 OSS 后保存 URL。用于替换默认的系统 Logo。 |
|
||
| **品牌主色调** | \[P1\] | String | 颜色拾取器 | 支持 HEX 色值。用于动态渲染按钮和高亮文字。 |
|
||
| **登录页背景图** | \[P2\] | String | 图片上传组件 | (暂不开发) 替换登录页的默认背景。 |
|
||
|
||
### **区块 2:智能审稿配置 (RVW Skills Config) —— 【全维度 Prompt 架构】**
|
||
|
||
这是该模块的核心。对于 4 个配置面板,顶部必须增加一个全局切换组件:
|
||
|
||
* 🔘 **选项 A: 继承系统默认配置 (Inherit System Default)** \[P0\] —— 选中时,下方大文本框置灰只读。
|
||
* 🔘 **选项 B: 启用个性化自定义 (Custom Override)** \[P0\] —— 选中时,解锁下方大文本框,允许大面积修改。
|
||
|
||
#### **Panel A: 稿约规范评估 (Editorial) —— 【支持中英标准选择】**
|
||
|
||
作为特殊的规范模块,当选择 **“继承系统默认配置”** 时,必须提供一个**下拉单选框**供运营人员选择:
|
||
|
||
* 🔘 **标准版英文期刊规范 (English Standard)** \[P0\]:自动绑定英文 SCI 级审查标准(严查伦理声明等)。
|
||
* 🔘 **标准版中文稿约规范 (Chinese Standard)** \[P0\]:自动绑定中文核心期刊审查标准(查中英文摘要对照等)。
|
||
|
||
当选择 **“启用个性化自定义”** 时,展示下方的通用组件。
|
||
|
||
#### **统一的面板配置项(适用于 Panel B / C / D 及自定义状态下的 Panel A)**
|
||
|
||
* **1\. 专家评判标准 (Expert Prompt)** \[P0\]:大文本框。自由输入该期刊特有的审查要求(大模型读取)。
|
||
* **2\. 报告展示模板 (Handlebars Template)** \[P0\]:大文本框。用于配置最终输出给责编的 Markdown 格式。
|
||
* ⚠️ **3\. 测试渲染 (Test Render)** \[P1\]:在模板编辑区提供“预览”按钮。使用假 JSON 数据在右侧实时渲染 Markdown 结果,防语法写错导致线上白屏。(MVP 阶段若来不及,可由运营人员去前台真实传 PDF 测试兜底)。
|
||
|
||
## **💾 二、 数据库 Schema 设计 (Prisma) \[P0\]**
|
||
|
||
**DB 要求**:即便 UI 是分阶段开发,数据库字段必须在 \[P0\] 阶段一次性建好,避免后续频繁 Migrate。
|
||
|
||
利用数据库的 null 语义表达“继承”。取消原有的 JSON 数组,统一为 Text 类型的 Prompt 和 Template 字段。
|
||
|
||
重点新增 editorialBaseStandard 字段,用于持久化期刊的中英文基线选择。
|
||
|
||
model TenantRvwConfig {
|
||
id String @id @default(uuid())
|
||
tenantId String @unique
|
||
tenant Tenant @relation(fields: \[tenantId\], references: \[id\])
|
||
|
||
// Panel A: 稿约规范评估
|
||
// 'en' 代表选用标准英文规范,'zh' 代表选用标准中文规范。
|
||
editorialBaseStandard String @default("en")
|
||
editorialExpertPrompt String? @db.Text
|
||
editorialHandlebarsTemplate String? @db.Text
|
||
|
||
// Panel B: 方法学评估
|
||
methodologyExpertPrompt String? @db.Text
|
||
methodologyHandlebarsTemplate String? @db.Text
|
||
|
||
// Panel C: 数据验证评估
|
||
dataForensicsExpertPrompt String? @db.Text
|
||
dataForensicsHandlebarsTemplate String? @db.Text
|
||
|
||
// Panel D: 临床专业评估
|
||
clinicalExpertPrompt String? @db.Text
|
||
clinicalHandlebarsTemplate String? @db.Text
|
||
|
||
createdAt DateTime @default(now())
|
||
updatedAt DateTime @updatedAt
|
||
|
||
@@schema("platform\_schema")
|
||
}
|
||
|
||
## **🔌 三、 后端 API 与底层引擎继承逻辑 (核心)**
|
||
|
||
### **1\. 内部 ADMIN 配置接口 (需要 ops:user-ops 权限) \[P0\]**
|
||
|
||
* PUT /api/admin/tenants/:id/basic-info:更新期刊名称、Slug (P1阶段再接 Logo 等)。
|
||
* GET /api/admin/tenants/:id/rvw-config:获取指定期刊的 Skills 配置(若不存在,返回 {})。
|
||
* PUT /api/admin/tenants/:id/rvw-config:UPSERT 期刊 Skills 配置。**若前端选择“继承系统默认”,对应的 ExpertPrompt 和 Template 传 null,但 editorialBaseStandard 必须传选中的值('en'或'zh')**。
|
||
|
||
### **2\. 底层引擎运行时的“降级合并 (Fallback Merge)”逻辑 \[P0\]**
|
||
|
||
后端重构 SkillExecutor 时,实施深度合并策略。以 **稿约规范 (EditorialSkill)** 为例:
|
||
|
||
async function executeEditorialSkill(manuscript, tenantConfig) {
|
||
let promptToApply;
|
||
|
||
// 1\. 如果租户自定义了稿约 Prompt,直接使用租户的开放式配置 (优先级最高)
|
||
if (tenantConfig && tenantConfig.editorialExpertPrompt) {
|
||
promptToApply \= tenantConfig.editorialExpertPrompt;
|
||
}
|
||
// 2\. 租户未自定义(为 null),触发系统默认降级逻辑
|
||
else {
|
||
// 2.1 读取该期刊在后台配置的“标准语言基线”
|
||
const baseStandard \= tenantConfig?.editorialBaseStandard || 'en';
|
||
|
||
// 2.2 根据基线拉取对应的【系统标准版规范】Prompt
|
||
if (baseStandard \=== 'en') {
|
||
promptToApply \= await promptService.get('SYSTEM\_DEFAULT\_EDITORIAL\_EN');
|
||
} else if (baseStandard \=== 'zh') {
|
||
promptToApply \= await promptService.get('SYSTEM\_DEFAULT\_EDITORIAL\_ZH');
|
||
}
|
||
}
|
||
|
||
// 3\. 将 promptToApply 喂给 LLM 执行,并使用对应 Handlebars 模板渲染...
|
||
}
|
||
|
||
方法学、数据验证和临床评估的逻辑同理:最终提示词 \= 租户自定义 Prompt ?? 系统默认 Prompt。
|
||
|
||
## **👥 四、 实施 SOP:用户与期刊绑定(无需开发)**
|
||
|
||
1. 客户在主站注册账号(或由超管分配账号)。
|
||
2. 内部超管在 ADMIN 端的 **【用户管理 \-\> 租户成员管理】** 页面,将该用户的账号添加到目标期刊租户(如 JTIM)下。
|
||
3. 确保该用户拥有 RVW 模块的使用权限。
|
||
4. **验证**:此后该用户访问 review.xunzhengyixue.com/jtim 时,JWT 中会自动带上该租户身份,接口方可放行。
|
||
|
||
## **✅ 五、 验收标准 (Definition of Done \- P0 阶段)**
|
||
|
||
1. ADMIN 后台成功渲染出只包含大文本框(Textarea)的极简配置界面。
|
||
2. **中英基线验证**:
|
||
* 将 JTIM 的【稿约规范】设置为“继承系统默认”并选择\*\*【标准版英文期刊规范】\*\*,上传稿件时,系统严格核查伦理声明等英文规则。
|
||
* 将 CMJ 设置为“继承系统默认”并选择\*\*【标准版中文稿约规范】\*\*,系统重点核查中英文摘要对应等中文规则。
|
||
3. 当某期刊在【临床专业评估】开启自定义后,运营人员在大文本框中修改提示词并保存,新上传的稿件严格按该设定执行评估。
|
||
|
||
## **🚀 六、 分阶段实施与 MVP 裁剪指南 (给 PM 与研发团队)**
|
||
|
||
为了保证项目快速上线,坚决执行 Managed SaaS (代运营) 和 All-in-Prompt 的裁剪策略。
|
||
|
||
### **🔴 第一阶段:MVP 必做清单 (P0) —— 目标:系统能跑通双语及个性化**
|
||
|
||
* **数据库**:一次性建好所有 Schema 字段(包含全部 Text 和 BaseStandard 字段)。
|
||
* **核心引擎**:必须完成 SkillExecutor 的降级合并逻辑(?? 合并)和中英文 Prompt 的自动路由。
|
||
* **ADMIN 前端**:只要最基础、最“丑”的表单输入框。实现“继承/自定义”的单选切换,并暴露 Textarea。不做任何复杂的花哨控件。
|
||
* **业务前端**:根据 URL 中的 /:tenantId 成功拦截并获取对应的【期刊名称】(纯文本展示即可)。
|
||
|
||
### **🟡 第二阶段:视觉与防呆增强 (P1) —— 目标:上线后 1-2 周内快反**
|
||
|
||
* **模板预览 (Test Render)**:复用底层 PromptService 补齐预览按钮,防止运营在纯文本框写错 Handlebars 语法导致线上白屏。
|
||
* **品牌视觉提升**:补齐期刊 Logo、主色调配置,并在客户端动态渲染,提升 SaaS 专属感。
|
||
* **接口安全**:为公开的品牌信息拉取接口增加 Redis 缓存与 Rate Limiting 限流防刷。
|
||
|
||
### **🟢 第三阶段:暂缓或砍掉的伪需求 (P2) —— 目标:避免过度工程**
|
||
|
||
* **细颗粒度表单控件**:既然已经全面 Prompt 化,坚决不再开发滑块(如权重分配)、下拉枚举(如验证级别)等细分 UI 控件。全部用 Prompt 解决。
|
||
* **客户自助配置后台**:坚决不做。坚持代运营模式,期刊主编提需求,内部运营人员在 ADMIN 端修改,规避复杂的 B 端权限开发。
|
||
* **登录页背景图定制**:暂不开发,统一使用系统默认干净纯色底即可。 |