# 核心问题解答

> **创建日期：** 2025-11-06  
> **文档目的：** 回答用户提出的关键架构问题

---

## 📋 您提出的问题

您提出了非常核心的架构问题，这些问题直接影响了整个系统的设计。让我逐一深入解答：

---

## 1️⃣ 文档系统重构

### 您的建议

> （1）系统总体架构、总体需求PRD、系统总体设计、系统总体部署等，应该是一个独立的文件夹  
> （2）7个模块应该是独立的7个文件夹，每个模块有：项目概述、设计文档、业务规则、开发计划、每日进度、部署文档

### 我的回复

✅ **完全认同！这是非常正确的架构思路！**

我已经创建了详细的文档重构方案：
- 📄 [文档体系重构方案](./02-文档体系重构方案.md)

**新文档结构：**
```
docs/
  ├── 00-系统总体设计/          # ✅ 总体独立
  │   ├── 01-系统架构分层设计.md
  │   ├── 02-文档体系重构方案.md
  │   ├── 03-总体需求文档(PRD).md
  │   ├── 04-技术架构白皮书.md
  │   └── 05-部署架构设计.md
  │
  ├── 01-平台基础层/           # 平台层（用户权限、存储、通知等）
  ├── 02-通用能力层/           # 通用能力（LLM网关、文档处理、RAG等）
  │
  └── 03-业务模块/             # ✅ 7个模块独立
      ├── AIA-AI智能问答/
      ├── ASL-AI智能文献/
      ├── PKB-个人知识库/
      ├── DC-数据清洗整理/
      ├── SSA-智能统计分析/
      ├── ST-统计分析工具/
      └── RVW-稿件审查系统/
```

**每个模块的标准结构：**
```
XXX-模块名称/
  ├── 00-项目概述/         # PRD、功能清单、用户故事
  ├── 01-设计文档/         # 技术架构、数据库、API、前端组件、UI原型
  ├── 02-业务规则/         # 业务规则、验证规则
  ├── 03-开发计划/         # 里程碑、任务分解
  ├── 04-测试文档/         # 测试计划、测试用例
  ├── 05-部署文档/         # 部署指南、配置说明
  ├── 06-开发进度/         # 每日/每周进度（可选）
  └── README.md           # 模块导航
```

**核心优势：**
- ✅ 总体与模块分离
- ✅ 层次清晰（平台层、通用能力层、业务模块层）
- ✅ 支持模块独立销售（每个模块文档可独立打包）
- ✅ 易于扩展（新增模块复制模板即可）

---

## 2️⃣ 不考虑混合部署

### 您的决策

> 只考虑云端、本地化（私有化）、单机版，不考虑混合部署

### 我的回复

✅ **完全赞同！混合部署技术难度极高，需求不明确，应该暂缓。**

**调整后的部署模式：**
| 部署模式 | 目标用户 | 技术难度 | 优先级 |
|---------|---------|---------|-------|
| **云端SaaS版** | 个人用户、小机构 | ⭐⭐⭐ 中等 | P0（当前） |
| **私有化部署** | 医院、大机构 | ⭐⭐⭐⭐ 高 | P1（阶段二） |
| **单机版（Electron）** | 个人医生 | ⭐⭐⭐⭐⭐ 很高 | P2（阶段二） |
| ~~混合部署~~ | ~~高级客户~~ | ~~⭐⭐⭐⭐⭐ 极高~~ | ❌ 不考虑 |

**简化后的好处：**
- ✅ 降低技术复杂度
- ✅ 聚焦核心场景
- ✅ 加快开发速度
- ✅ 降低维护成本

**阶段规划：**
```
阶段一（当前-6个月）：云端SaaS版
- 专注云端部署
- 验证市场需求
- 快速迭代

阶段二（6-18个月）：私有化部署
- 触发条件：有客户明确要求
- 引入K8s
- Docker一键部署

阶段三（18个月+）：单机版（可选）
- 触发条件：有大量单机版需求
- 开发Electron应用
- 本地化运行
```

---

## 3️⃣ 审稿系统的独立性

### 您的计划

> 未来还会增加一个审稿系统的开发，目前已经有核心审稿功能了，可能需要独立成一个系统

### 我的回复

✅ **审稿系统非常适合独立！这是一个极具商业价值的决策！**

**为什么审稿系统适合独立？**

**1. 用户群完全不同**
```
主平台用户：临床医生、研究者
审稿系统用户：期刊编辑部、出版社、学会

→ 两类用户没有交集，完全独立
```

**2. 业务逻辑完全独立**
```
主平台：科研全流程（统计分析、文献筛选、数据清洗）
审稿系统：稿件审查流程（投稿、审稿、修改、决策）

→ 业务逻辑无关联
```

**3. 部署场景独立**
```
主平台：云端SaaS为主，部分私有化
审稿系统：期刊编辑部独立部署

→ 部署需求不同
```

**4. 商业模式独立**
```
主平台：按版本订阅（基础版、高级版、旗舰版）
审稿系统：按期刊订阅，或按稿件数量计费

→ 商业模式完全不同
```

**当前状态：**
- ✅ 核心功能已实现（文档提取、规范性评估、方法学评估）
- ✅ 数据库表已独立（review_tasks）
- ⚠️ 需要扩展（审稿人管理、审稿流程、多轮审稿）

**建议：**
```
短期（当前）：
- 审稿系统作为主平台的一个模块
- 但在架构设计上保持独立（独立Schema、独立API）

中期（6-12个月）：
- 开发完整审稿系统（审稿人、流程、多轮审稿）
- 验证市场需求

长期（12个月+）：
- 完全独立为单独产品"AI辅助审稿系统"
- 独立部署、独立销售
- 目标客户：期刊编辑部、出版社
```

**独立销售价值：⭐⭐⭐⭐⭐ 极高！**
- 市场空白：国内缺乏AI审稿工具
- 刚需：期刊编辑部审稿压力大
- 付费能力强：期刊有预算

---

## 4️⃣ 总体 vs 通用 vs 模块独立

### 您的核心问题

> 哪些是总体的？哪些是通用的技术能力？哪些是各模块独立的？  
> 哪些能力是复用的？哪些技术架构可以复用？

### 我的回复

这是最核心的架构问题！我已经创建了详细的架构分层设计：
- 📄 [系统架构分层设计](./01-系统架构分层设计.md)

**三层架构总览：**

### 第一层：平台基础层（Platform Layer）

**定义：** 所有业务模块的地基，提供通用的基础设施能力

**包含模块：**
1. ✅ **用户与权限中心（UAM）** - 用户认证、权限管理、Feature Flag
2. ✅ **存储服务** - 文件上传下载、OSS/本地文件系统
3. ✅ **通知服务** - 站内消息、邮件、WebSocket推送
4. ✅ **监控与日志** - 操作日志、错误日志、审计日志
5. ✅ **系统配置** - 系统级配置管理

**特征：**
- ✅ 全局唯一（整个平台只有一套）
- ✅ 业务无关（不涉及具体业务逻辑）
- ✅ 强依赖性（所有业务模块都必须依赖）
- ✅ 稳定性高（很少变动）

---

### 第二层：通用能力层（Capability Layer）

**定义：** 跨业务模块共享的核心技术能力

**包含能力：**

#### 1. LLM大模型网关 ⭐⭐⭐⭐⭐ **最核心**

**职责：**
- 统一管理所有LLM调用
- 根据用户版本动态切换模型
- 成本控制与限流
- Token计数与计费

**使用模块：**
- ✅ AIA（AI智能问答）
- ✅ ASL（AI智能文献）
- ✅ PKB（个人知识库）
- ✅ DC（数据清洗）
- ✅ RVW（稿件审查）

**复用率：** 5/7 = 71%

**为什么是核心？**
```
这是商业模式的技术保障：
- 基础版：只能用DeepSeek-V3（¥1/百万tokens）
- 高级版：可用DeepSeek + Qwen3
- 旗舰版：可用DeepSeek + Qwen3 + Qwen-Long + Claude

成本控制：
- 统一监控所有LLM API调用
- 超出配额自动限流
- 按版本计费
```

**当前状态：** ❌ 未实现（P0优先级）

---

#### 2. 文档处理引擎 ⭐⭐⭐⭐⭐ **最核心**

**职责：**
- 多格式文档提取（PDF/Docx/Txt/Excel）
- 文本清洗与预处理
- OCR处理
- 表格提取

**使用模块：**
- ✅ ASL（文献PDF提取）
- ✅ PKB（知识库文档）
- ✅ DC（Excel/Docx导入）
- ✅ SSA（数据导入）
- ✅ ST（数据导入）
- ✅ RVW（稿件提取）

**复用率：** 6/7 = 86%

**当前状态：** ✅ 已实现（Python微服务）

---

#### 3. RAG引擎 ⭐⭐⭐⭐ **核心**

**职责：**
- 向量化存储（Embedding）
- 语义检索（Semantic Search）
- 检索增强生成（RAG）

**使用模块：**
- ✅ PKB（个人知识库问答）
- ✅ ASL（文献内容检索）
- ✅ AIA（@知识库问答）

**复用率：** 3/7 = 43%

**当前状态：** ✅ 已实现（基于Dify）

---

#### 4. 数据ETL引擎 ⭐⭐⭐ **中等**

**职责：**
- Excel多表JOIN
- 数据清洗
- 数据转换

**使用模块：**
- ✅ DC（数据清洗）
- ✅ SSA（统计分析数据预处理）

**复用率：** 2/7 = 29%

**当前状态：** ❌ 未实现（P2优先级）

---

#### 5. 医学NLP引擎 ⭐⭐⭐ **中等**

**职责：**
- 医学实体识别（NER）
- 医学术语标准化

**使用模块：**
- ✅ DC（病例数据NER提取）

**复用率：** 1/7 = 14%

**当前状态：** ❌ 未实现（P2优先级）

---

### 第三层：业务模块层（Product Layer）

**定义：** 面向用户的产品功能，每个模块都是独立的产品单元

**7个业务模块：**

| 模块 | 名称 | 商业价值 | 独立性 | 状态 |
|------|------|---------|-------|------|
| **AIA** | AI智能问答 | ⭐⭐⭐⭐ | ⭐⭐⭐ | ✅ 已完成 |
| **ASL** | AI智能文献 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⏳ 下一步重点 |
| **PKB** | 个人知识库 | ⭐⭐⭐ | ⭐⭐⭐ | ✅ 已完成 |
| **DC** | 数据清洗整理 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⏳ 规划中 |
| **SSA** | 智能统计分析 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⏳ 规划中 |
| **ST** | 统计分析工具 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⏳ 规划中 |
| **RVW** | 稿件审查系统 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⚡ 独立系统 |

**特征：**
- ✅ 独立部署：可以单独打包部署
- ✅ 独立销售：可以单独售卖
- ✅ 低耦合：模块间不直接依赖
- ✅ 高内聚：模块内功能完整

---

### 可复用能力总结

| 能力 | 使用频率 | 复用模块数 | 优先级 | 状态 |
|------|---------|-----------|--------|------|
| **LLM网关** | 71% | 5/7 | P0 | ❌ 待实现 |
| **文档处理引擎** | 86% | 6/7 | P0 | ✅ 已实现 |
| **RAG引擎** | 43% | 3/7 | P1 | ✅ 已实现 |
| **ETL引擎** | 29% | 2/7 | P2 | ❌ 待实现 |
| **医学NLP** | 14% | 1/7 | P2 | ❌ 待实现 |

---

## 5️⃣ 数据库架构

### 您的问题

> 设计多Schema架构是非常必要的。  
> 目前当前系统的数据库似乎是DIFY的？  
> 目前我们有自己独立的数据库吗？

### 我的回复

✅ **我们有自己独立的PostgreSQL数据库，不是Dify的！**

**当前数据库情况：**

```typescript
// 数据源：backend/prisma/schema.prisma
datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}
```

**当前表结构：**
```
当前数据库（PostgreSQL，独立于Dify）：
├── users                    # 用户表
├── projects                 # 项目表
├── conversations            # 对话表（AI问答）
├── messages                 # 消息表
├── knowledge_bases          # 知识库表
├── documents                # 文档表
├── admin_logs               # 管理员日志
├── general_conversations    # 通用对话
├── general_messages         # 通用消息
├── batch_tasks              # 批处理任务（Phase 3）
├── batch_results            # 批处理结果
├── task_templates           # 任务模板
└── review_tasks             # 稿件审查任务

Dify数据库（完全独立）：
├── dify自己的表（不在我们的数据库）
└── 通过Dify API调用，不直接访问
```

**关键澄清：**
- ✅ 我们有自己的PostgreSQL数据库
- ✅ Dify有自己的数据库（我们不直接访问）
- ✅ 我们通过Dify API调用（HTTP REST API）
- ✅ 两个数据库完全独立

**但是存在的问题：**
- ❌ **所有表在同一Schema（public）**
- ❌ 未来微服务拆分困难
- ❌ 不支持模块独立部署

---

### Schema隔离方案

**目标架构：**
```sql
-- 平台层Schema
CREATE SCHEMA platform_schema;
  ├── users
  ├── roles
  ├── permissions
  ├── feature_flags
  ├── notifications
  └── admin_logs

-- 通用能力Schema
CREATE SCHEMA capability_schema;
  ├── llm_usage_logs
  ├── llm_quotas
  └── document_processing_logs

-- 业务模块Schema
CREATE SCHEMA aia_schema;        -- AI智能问答
  ├── aia_projects
  ├── aia_conversations
  └── aia_messages

CREATE SCHEMA asl_schema;        -- AI智能文献
  ├── asl_projects
  ├── asl_literature_items
  ├── asl_screening_results
  └── ...

CREATE SCHEMA pkb_schema;        -- 个人知识库
  ├── pkb_knowledge_bases
  └── pkb_documents

CREATE SCHEMA dc_schema;         -- 数据清洗
  ├── dc_projects
  ├── dc_raw_files
  └── dc_cleaned_data

CREATE SCHEMA ssa_schema;        -- 智能统计分析
  ├── ssa_projects
  └── ssa_analysis_tasks

CREATE SCHEMA st_schema;         -- 统计分析工具
  └── st_tool_usage

CREATE SCHEMA review_schema;     -- 稿件审查
  ├── review_tasks
  ├── review_journals
  ├── review_reviewers
  └── review_workflows
```

---

### 迁移策略

**阶段一：逻辑隔离（当前阶段，立即实施）**
```
目标：在代码层面按Schema组织，但数据库还是public
方式：Prisma中使用@@map指定表名前缀

例如：
model AiaProject {
  id        String @id @default(uuid())
  // ...
  @@map("aia_projects")     // 表名前缀标识模块
}

model AslProject {
  id        String @id @default(uuid())
  // ...
  @@map("asl_projects")
}

model DcProject {
  id        String @id @default(uuid())
  // ...
  @@map("dc_projects")
}
```

**好处：**
- ✅ 立即可实施，无需数据迁移
- ✅ 为未来物理隔离打基础
- ✅ 代码层面已经按模块组织

---

**阶段二：物理隔离（微服务拆分时，阶段二）**
```
目标：真正创建独立Schema
时机：当需要拆分某个模块为独立微服务时

步骤：
1. CREATE SCHEMA xxx_schema;
2. CREATE TABLE xxx_schema.table_name ...
3. INSERT INTO xxx_schema.table SELECT * FROM public.old_table;
4. 更新Prisma Schema（指定schema）
5. 测试验证
6. 切换生产
```

---

## 6️⃣ 下一步开发重点

### 您的决策

> 下一步着重开发的功能肯定是AI智能文献模块。  
> 当然在总体架构讨论清楚前，我们先不开发。

### 我的回复

✅ **完全赞同！AI智能文献是核心竞争力，应该是下一步重点。**

**开发顺序建议：**

**第一步：架构设计（本周，1-2天）**
```
P0文档（必须完成）：
1. ✅ 系统架构分层设计（已完成）
2. ✅ 文档体系重构方案（已完成）
3. ⚠️ LLM大模型网关设计（关键）
4. ⚠️ 数据库Schema隔离方案（关键）
```

**第二步：文档整理（本周，1-2天）**
```
1. 调整ASL模块文档结构（按新模板）
2. 补充缺失的设计文档
3. 明确开发里程碑
```

**第三步：关键技术验证（下周，1-2天）**
```
1. ⚠️ R语言技术验证（SSA模块需要，可延后）
2. ⚠️ LLM Gateway原型验证
3. ⚠️ Schema隔离迁移测试
```

**第四步：开始ASL模块开发（下周开始）**
```
优先级：
- P0：标题摘要初筛（核心功能，已有原型）
- P1：全文复筛（核心功能，已有原型）
- P2：全文解析与数据提取
- P3：数据分析与报告生成
```

---

## 🎯 总体策略建议

### 核心原则

**1. 架构先行，文档先行**
```
✅ 先把总体架构讨论清楚
✅ 先把文档结构调整好
✅ 然后再开始开发
```

**2. 聚焦核心，逐步扩展**
```
阶段一（当前-6个月）：
- 云端SaaS版
- 核心模块：ASL、DC、AIA优化
- 关键能力：LLM网关、Schema隔离

阶段二（6-18个月）：
- 私有化部署
- 扩展模块：SSA、ST
- 独立系统：RVW（审稿系统）

阶段三（18个月+）：
- 单机版（可选）
- 全面微服务
```

**3. 模块独立，能力复用**
```
✅ 业务模块独立设计（低耦合）
✅ 通用能力统一提供（高复用）
✅ 支持模块独立销售
```

---

## ✅ 立即行动清单

### 本周行动（P0）

**1. 架构设计（1-2天）**
- [x] 系统架构分层设计 ✅
- [x] 文档体系重构方案 ✅
- [ ] LLM大模型网关设计
- [ ] 数据库Schema隔离方案

**2. 文档迁移（1-2天）**
- [ ] 创建新文件夹结构
- [ ] 迁移ASL模块文档
- [ ] 调整文档结构（按新模板）

---

### 下周行动（P1）

**3. 关键文档补充（2-3天）**
- [ ] ASL模块缺失文档
- [ ] LLM网关详细设计
- [ ] RVW独立系统规划

**4. 开始ASL模块开发（启动）**
- [ ] 数据库表设计（asl_schema）
- [ ] API设计
- [ ] 前端组件设计

---

## 📊 总结

### 您的想法非常正确！

1. ✅ **文档系统重构**：总体独立，模块独立
2. ✅ **不考虑混合部署**：简化技术复杂度
3. ✅ **审稿系统独立**：极具商业价值
4. ✅ **架构分层清晰**：平台层、通用能力层、业务模块层
5. ✅ **Schema隔离必要**：支持模块独立和微服务拆分
6. ✅ **ASL是下一步重点**：核心竞争力

### 当前最关键的工作

**P0（本周）：**
1. 完成架构设计文档（LLM网关、Schema隔离）
2. 调整文档结构（迁移ASL模块）

**P1（下周）：**
3. 补充关键文档
4. 开始ASL模块开发

### 我们不着急，先把总体思路沟通清楚

✅ **完全认同您的想法！**

架构设计是地基，地基不牢，后面开发会很痛苦。

我们先把架构和文档梳理清楚，再开始开发。

---

**接下来您想讨论什么？**
1. LLM大模型网关的详细设计？
2. 数据库Schema隔离的具体实施？
3. ASL模块的开发计划？
4. 审稿系统的独立规划？
5. 其他架构问题？















