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