Files
AIclinicalresearch/docs/03-业务模块/RVW-稿件审查系统/00-系统设计/V3.0/RVW V4.0 期刊租户配置中心开发需求0315.md
HaHafeng 83e395824b feat(rvw): complete journal config center MVP and tenant login routing
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
2026-03-15 11:51:35 +08:00

10 KiB
Raw Blame History

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-configUPSERT 期刊 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 端权限开发。
  • 登录页背景图定制:暂不开发,统一使用系统默认干净纯色底即可。