# 下一阶段行动计划 V2.1 - 10个Schema完整版

> **计划周期：** 2025-11-07 至 2025-12-06（4周）  
> **核心目标：** 10个Schema隔离完整实施 + 代码分层 + ASL核心功能  
> **制定时间：** 2025-11-07  
> **版本：** V2.1（10个Schema完整版）  
> **最后更新：** 2025-11-09

---

## 💡 核心变化亮点

> **🎯 决定：直接实施10个Schema，不分阶段！**

**为什么？**
- ✅ 额外成本仅6小时（5个空Schema无数据迁移）
- ✅ 现在是测试系统，最佳实施时机
- ✅ 架构一次到位，避免二次迁移
- ✅ Week 1有7天，时间完全够用

**变化：**
- 从"5个核心+5个预留" → **10个全部实施**
- 从"分阶段迁移" → **一次性完成**
- 新增SSA（智能统计分析）和ST（统计分析工具）两个Schema

---

## 🎯 V2.1 vs V2.0 的关键调整

| 项目 | V2.0 | V2.1（完整版）| 原因 |
|------|------|--------------|------|
| Schema数量 | 8个全做 | ✅ **10个全部实施** ⭐ | 额外成本仅6小时，一次到位 |
| 独立部署 | Week 2实施 | ❌ 暂不实施 | 当前重点是云端系统 |
| Docker化 | Week 2做 | ❌ 暂不做 | 不是当前重点 |
| Monorepo | 未提及 | ❌ 暂不采用 | 目录分层已够用 |
| 总时长 | 5周 | 4周 ⭐ | 去掉独立部署实施，节省1周 |

---

## 📊 整体规划 - 四周四阶段

```
Week 1（Schema基础）      Week 2（代码架构）      Week 3-4（ASL开发）
10个Schema全部隔离  →  代码分层+LLM网关  →  标题摘要初筛+全文复筛
```

| 阶段 | 时间 | 核心任务 | 交付成果 | 优先级 |
|------|------|---------|---------|--------|
| **阶段1** | Week 1 | **10个Schema全部隔离** ⭐ | 10个Schema完成 | P0 ⭐⭐⭐ |
| **阶段2** | Week 2 | 代码分层+LLM网关 | 三层架构+LLM网关 | P0 ⭐⭐⭐ |
| **阶段3** | Week 3 | ASL标题摘要初筛 | 双模型筛选功能 | P0 ⭐⭐ |
| **阶段4** | Week 4 | ASL全文复筛+测试 | 完整筛选流程 | P0 ⭐⭐ |

---

## 🚀 阶段1：10个Schema完整隔离（Week 1）

> **时间：** 2025-11-07 至 2025-11-13（7天）  
> **目标：** 一次性完成10个Schema的完整隔离，架构一步到位

### 核心原则：一次到位 ⭐⭐⭐

**全部创建的Schema（10个）：**

### 详细设计+迁移（3个）⭐ Week 1重点

**1. platform_schema** - 平台基础
- 迁移现有的users表（~10条数据）
- 为平台基础服务预留

**2. aia_schema** - AI智能问答 ⭐ 现有功能
- 迁移5个表：projects, conversations, messages, general_conversations, general_messages
- 数据量：~20个项目，~50条对话，~500条消息

**3. pkb_schema** - 个人知识库 ⭐ 现有功能
- 迁移2个表：knowledge_bases, documents
- 数据量：~5个知识库，~30个文档

---

### 只创建空Schema（7个）📋 命名空间预留

**4. asl_schema** - AI智能文献
- 📋 Week 3开发前再详细设计
- 避免现在过度设计，需求更明确时再做

**5. common_schema** - 通用能力
- 📋 需要时再创建表（LLM使用记录、Feature Flags）

**6. dc_schema** - 数据清洗
**7. rvw_schema** - 审稿系统
**8. admin_schema** - 运营管理
**9. ssa_schema** - 智能统计分析 ✨
**10. st_schema** - 统计分析工具 ✨

---

### 为什么采用"3详细+7空"策略？⭐⭐⭐

**核心原则：聚焦当前，架构预留**

**成本分析：**
- Week 1只处理3个Schema的迁移
- 其余7个只是`CREATE SCHEMA`（几秒钟）
- 总工作量从2天降低到**1.5天** ✅

**收益分析：**
1. ✅ **聚焦当前需求** - Week 1专注架构和迁移
2. ✅ **避免过度设计** - ASL等模块需求未最终确定
3. ✅ **Just-in-time设计** - 开发前再详细设计，更准确
4. ✅ **架构完整** - 10个命名空间已预留，随时扩展
5. ✅ **降低返工风险** - Week 3需求可能调整

---

### Day 1-2：Schema迁移准备（聚焦3个）

#### Day 1上午：10个Schema架构规划

**任务：规划完整的10个Schema架构**
- [ ] 绘制10个Schema的完整架构图（架构层面）
- [ ] 明确3个需要迁移的Schema
- [ ] 明确7个空Schema的用途
- [ ] 编写Schema架构文档

**输出文档：**
- `09-架构实施/01-Schema隔离架构设计（10个）.md`

**Schema依赖关系：**
```
业务模块Schema（AIA/PKB/ASL/DC/RVW/ADMIN/SSA/ST）
    ↓ 引用
Common Schema（通用数据，暂为空）
    ↓ 引用  
Platform Schema（用户、权限）
```

---

#### Day 1下午-Day 2上午：3个Schema详细设计 ⭐ 核心工作

**只详细设计需要迁移的3个Schema：**

**1. platform_schema（平台基础）**
```sql
CREATE SCHEMA platform_schema;

-- 用户表（从public.users迁移）
CREATE TABLE platform_schema.users (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    email VARCHAR(255) UNIQUE NOT NULL,
    password_hash VARCHAR(255) NOT NULL,
    name VARCHAR(255),
    avatar_url VARCHAR(500),
    role VARCHAR(50) NOT NULL DEFAULT 'user',
    status VARCHAR(50) DEFAULT 'active',
    kb_quota INT DEFAULT 3, -- 知识库配额
    kb_used INT DEFAULT 0,  -- 已使用
    trial_ends_at TIMESTAMP,
    is_trial BOOLEAN DEFAULT true,
    last_login_at TIMESTAMP,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```

**说明：** 用户表是所有Schema的基础，其他Schema的user_id都引用platform_schema.users。

---

**2. aia_schema（AI智能问答）** ⭐ 现有功能迁移
```sql
CREATE SCHEMA aia_schema;

-- 项目管理（从public.projects迁移）
CREATE TABLE aia_schema.projects (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    user_id UUID NOT NULL, -- 引用platform_schema.users
    name VARCHAR(255) NOT NULL,
    background TEXT DEFAULT '',
    research_type VARCHAR(50) DEFAULT 'observational',
    conversation_count INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    deleted_at TIMESTAMP
);

-- 对话（从public.conversations迁移）
CREATE TABLE aia_schema.conversations (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    user_id UUID NOT NULL,
    project_id UUID REFERENCES aia_schema.projects(id) ON DELETE CASCADE,
    agent_id VARCHAR(100) NOT NULL,
    title VARCHAR(255) NOT NULL,
    model_name VARCHAR(50) DEFAULT 'deepseek-v3',
    message_count INT DEFAULT 0,
    total_tokens INT DEFAULT 0,
    metadata JSONB,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    deleted_at TIMESTAMP
);

-- 消息（从public.messages迁移）
CREATE TABLE aia_schema.messages (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    conversation_id UUID REFERENCES aia_schema.conversations(id) ON DELETE CASCADE,
    role VARCHAR(20) NOT NULL, -- user/assistant
    content TEXT NOT NULL,
    model VARCHAR(50),
    metadata JSONB,
    tokens INT,
    is_pinned BOOLEAN DEFAULT false,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 通用对话（从public.general_conversations迁移）
CREATE TABLE aia_schema.general_conversations (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    user_id UUID NOT NULL,
    title VARCHAR(255) NOT NULL,
    model_name VARCHAR(50),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    deleted_at TIMESTAMP
);

-- 通用消息（从public.general_messages迁移）
CREATE TABLE aia_schema.general_messages (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    conversation_id UUID REFERENCES aia_schema.general_conversations(id) ON DELETE CASCADE,
    role VARCHAR(20) NOT NULL,
    content TEXT NOT NULL,
    model VARCHAR(50),
    metadata JSONB,
    tokens INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```

**3. pkb_schema（个人知识库）** ⭐ 现有功能迁移
```sql
CREATE SCHEMA pkb_schema;

-- 知识库（从public.knowledge_bases迁移）
CREATE TABLE pkb_schema.knowledge_bases (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    user_id UUID NOT NULL, -- 引用platform_schema.users
    name VARCHAR(255) NOT NULL,
    description TEXT,
    dify_dataset_id VARCHAR(255) NOT NULL, -- Dify知识库ID
    file_count INT DEFAULT 0,
    total_size_bytes BIGINT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 文档（从public.documents迁移）
CREATE TABLE pkb_schema.documents (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    kb_id UUID REFERENCES pkb_schema.knowledge_bases(id) ON DELETE CASCADE,
    user_id UUID NOT NULL,
    filename VARCHAR(255) NOT NULL,
    file_type VARCHAR(50) NOT NULL,
    file_size_bytes BIGINT NOT NULL,
    file_url TEXT NOT NULL,
    dify_document_id VARCHAR(255) NOT NULL, -- Dify文档ID
    status VARCHAR(50) DEFAULT 'uploading', -- uploading/processing/completed/failed
    progress INT DEFAULT 0,
    error_message TEXT,
    segments_count INT,
    tokens_count INT,
    -- Phase 2: 全文阅读模式字段
    extraction_method VARCHAR(50), -- pymupdf/nougat/mammoth/direct
    extraction_quality FLOAT, -- 0-1质量分数
    char_count INT,
    language VARCHAR(20), -- chinese/english
    extracted_text TEXT,
    uploaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    processed_at TIMESTAMP
);
```

---

#### Day 2下午：7个空Schema创建SQL 📋

**只需创建空Schema，不设计表结构：**

```sql
-- 创建7个空Schema（命名空间预留）
CREATE SCHEMA IF NOT EXISTS asl_schema;     -- AI智能文献，Week 3开发前再设计
CREATE SCHEMA IF NOT EXISTS common_schema;  -- 通用能力，需要时再创建表
CREATE SCHEMA IF NOT EXISTS dc_schema;      -- 数据清洗
CREATE SCHEMA IF NOT EXISTS rvw_schema;     -- 审稿系统
CREATE SCHEMA IF NOT EXISTS admin_schema;   -- 运营管理
CREATE SCHEMA IF NOT EXISTS ssa_schema;     -- 智能统计分析
CREATE SCHEMA IF NOT EXISTS st_schema;      -- 统计分析工具
```

**说明：**
- ✅ 只需几秒钟执行完成
- ✅ 命名空间已预留，不会冲突
- ✅ 需要时随时可以在对应Schema中创建表
- ✅ Prisma配置中可以先预留，暂不定义模型

---

---

#### Day 2下午：迁移脚本编写 ⭐

**任务：**
- [ ] 编写创建10个Schema的SQL脚本（3个详细+7个空）
- [ ] 编写3个Schema的数据迁移脚本
- [ ] 编写数据验证脚本
- [ ] 在本地测试环境验证

**迁移策略：**
1. 创建10个新Schema（3个详细+7个空，一次性）
2. 在3个Schema中创建表结构并迁移数据
3. 验证数据完整性
4. 清理public schema旧表（可选，因为是测试系统）

**输出脚本（5个）：**

| 脚本 | 说明 | 工作量 |
|------|------|--------|
| `001-create-all-10-schemas.sql` | 创建10个Schema ⭐ | 5分钟 |
| `002-migrate-platform.sql` | 迁移users表到platform_schema | 15分钟 |
| `003-migrate-aia.sql` | 迁移5个表到aia_schema | 30分钟 |
| `004-migrate-pkb.sql` | 迁移2个表到pkb_schema | 20分钟 |
| `005-validate-all.sql` | 验证数据完整性 | 10分钟 |

**总工作量：** ~1.5小时 ✅

---

### Day 3：执行3个Schema迁移 ⭐

**上午：执行迁移**
- [ ] 备份当前数据库（虽然是测试数据，但还是备份）
- [ ] 执行001脚本：创建10个Schema（3详细+7空）
- [ ] 执行002-004脚本：迁移3个Schema的数据（platform/aia/pkb）
- [ ] 执行005脚本：验证数据完整性

**下午：验证现有功能**
- [ ] 测试AI智能问答功能（使用aia_schema）
- [ ] 测试知识库功能（使用pkb_schema）
- [ ] 验证10个Schema全部创建
- [ ] 修复发现的问题

**验收标准：**
- [ ] ✅ 10个Schema全部创建成功
- [ ] ✅ 7个空Schema验证通过（ASL/Common/DC/RVW/ADMIN/SSA/ST）
- [ ] ✅ 现有功能（AIA、PKB）正常运行
- [ ] ✅ 数据迁移100%成功（~10条用户 + 50+对话 + 30+文档）

**预计时间：** 2-3小时 ✅

---

### Day 4-5：Prisma Schema更新 + 补充文档

#### Day 4上午：Prisma多Schema配置（3个详细+7个预留）

**任务：**
- [ ] 更新Prisma配置支持10个Schema
- [ ] 为3个Schema创建完整的Prisma模型（Platform/AIA/PKB）
- [ ] 为7个空Schema预留配置（只配置Schema名，无模型）
- [ ] 生成Prisma Client
- [ ] 单元测试

**Prisma配置示例：**
```prisma
// schema.prisma
generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["multiSchema"]
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
  schemas  = [
    "platform_schema",     // ✅ 已迁移，有模型
    "aia_schema",          // ✅ 已迁移，有模型
    "pkb_schema",          // ✅ 已迁移，有模型
    "asl_schema",          // 📋 空Schema，Week 3再定义模型
    "common_schema",       // 📋 空Schema，需要时再定义
    "dc_schema",           // 📋 空Schema
    "rvw_schema",          // 📋 空Schema
    "admin_schema",        // 📋 空Schema
    "ssa_schema",          // 📋 空Schema
    "st_schema"            // 📋 空Schema
  ]
}

// ===== 1. Platform Schema（平台基础）=====
model User {
  id           String   @id @default(uuid())
  email        String   @unique
  passwordHash String   @map("password_hash")
  name         String?
  avatarUrl    String?  @map("avatar_url")
  role         String   @default("user")
  status       String   @default("active")
  kbQuota      Int      @default(3) @map("kb_quota")
  kbUsed       Int      @default(0) @map("kb_used")
  trialEndsAt  DateTime? @map("trial_ends_at")
  isTrial      Boolean  @default(true) @map("is_trial")
  lastLoginAt  DateTime? @map("last_login_at")
  createdAt    DateTime @default(now()) @map("created_at")
  updatedAt    DateTime @updatedAt @map("updated_at")
  
  @@map("users")
  @@schema("platform_schema")
}

// ===== 2. AIA Schema（AI智能问答 - 迁移现有表）=====
model Project {
  id          String   @id @default(uuid())
  userId      String   @map("user_id")
  name        String
  description String?
  createdAt   DateTime @default(now()) @map("created_at")
  
  conversations Conversation[]
  
  @@map("projects")
  @@schema("aia_schema")
}

// ... 其他AIA模型

// ===== 3. PKB Schema（个人知识库 - 迁移现有表）=====
model KnowledgeBase {
  id             String   @id @default(uuid())
  userId         String   @map("user_id")
  name           String
  description    String?
  difyDatasetId  String   @map("dify_dataset_id")
  fileCount      Int      @default(0) @map("file_count")
  totalSizeBytes BigInt   @default(0) @map("total_size_bytes")
  createdAt      DateTime @default(now()) @map("created_at")
  updatedAt      DateTime @updatedAt @map("updated_at")
  
  documents Document[]
  
  @@map("knowledge_bases")
  @@schema("pkb_schema")
}

model Document {
  id                 String   @id @default(uuid())
  kbId               String   @map("kb_id")
  userId             String   @map("user_id")
  filename           String
  fileType           String   @map("file_type")
  fileSizeBytes      BigInt   @map("file_size_bytes")
  fileUrl            String   @map("file_url")
  difyDocumentId     String   @map("dify_document_id")
  status             String   @default("uploading")
  progress           Int      @default(0)
  errorMessage       String?  @map("error_message") @db.Text
  segmentsCount      Int?     @map("segments_count")
  tokensCount        Int?     @map("tokens_count")
  // Phase 2: 全文阅读字段
  extractionMethod   String?  @map("extraction_method")
  extractionQuality  Float?   @map("extraction_quality")
  charCount          Int?     @map("char_count")
  language           String?
  extractedText      String?  @map("extracted_text") @db.Text
  uploadedAt         DateTime @default(now()) @map("uploaded_at")
  processedAt        DateTime? @map("processed_at")
  
  knowledgeBase      KnowledgeBase @relation(fields: [kbId], references: [id], onDelete: Cascade)
  
  @@map("documents")
  @@schema("pkb_schema")
}
```

**说明：**
- ✅ 只为3个已迁移的Schema定义模型
- 📋 7个空Schema已在schemas列表中，但暂无模型
- 📋 ASL模型将在Week 3开发前定义
- 📋 Common模型需要时再添加

---

#### Day 4下午：补充AIA和PKB设计文档 ⭐ 新增任务

**任务：为已迁移的2个模块补充完整设计文档**

**1. 创建AIA数据库设计文档**
- [ ] 创建 `03-业务模块/AIA-AI智能问答/02-技术设计/01-数据库设计.md`
- [ ] 基于已迁移的5个表编写完整文档
- [ ] 包括：表结构、字段说明、索引设计、关系说明

**2. 创建PKB数据库设计文档**
- [ ] 创建 `03-业务模块/PKB-个人知识库/02-技术设计/01-数据库设计.md`
- [ ] 基于已迁移的2个表编写完整文档
- [ ] 重点说明Phase 2全文阅读相关字段

**工作量估算：** 各1小时，共2小时 ✅

**为什么现在补充？**
- ✅ 趁着对表结构熟悉，立即文档化
- ✅ 为Week 2代码重构提供文档支持
- ✅ 与ASL保持一致的文档结构

---

#### Day 5上午：代码适配 + API文档补充

**任务1：更新代码以使用新Schema**
- [ ] 更新所有数据库查询代码
- [ ] 使用新的Prisma Client
- [ ] 更新API路由
- [ ] 运行集成测试

**任务2：补充API设计文档**
- [ ] 创建 `03-业务模块/AIA-AI智能问答/02-技术设计/02-API设计规范.md`
- [ ] 创建 `03-业务模块/PKB-个人知识库/02-技术设计/02-API设计规范.md`
- [ ] 基于现有API routes整理文档

**验收标准：**
- [ ] ✅ 所有API正常工作
- [ ] ✅ 测试通过
- [ ] ✅ 现有功能无回归
- [ ] ✅ AIA和PKB模块文档完整（数据库+API）

---

#### Day 5下午：Week 1总结 + Week 2准备

**任务：**
- [ ] 验证10个Schema全部创建
- [ ] 验证3个详细Schema数据迁移完整
- [ ] 更新文档：记录迁移过程和结果
- [ ] 编写Week 1总结报告
- [ ] 规划Week 2代码重构细节

**Week 1交付物检查清单：**
- [ ] ✅ 10个Schema全部创建（3详细+7空）
- [ ] ✅ Platform/AIA/PKB数据100%迁移
- [ ] ✅ Prisma模型更新完成（3个详细Schema）
- [ ] ✅ 现有功能正常运行
- [ ] ✅ AIA和PKB完整文档（数据库+API）
- [ ] ✅ 迁移脚本文档化

---

## Week 2：代码分层重构（2025-11-14 至 2025-11-20）

> **重点：** 建立清晰的代码分层架构，为模块化开发打好基础

### 目标
- 建立3层代码结构（Platform/Common/Business）
- 完成现有代码重构
- 建立代码规范和最佳实践

### Day 6-7：Platform层和Common层重构

**任务：**
- [ ] 提取平台基础服务（认证、权限）
- [ ] 提取通用能力（LLM调用、文件处理）
- [ ] 建立统一的错误处理
- [ ] 建立统一的日志系统

**代码结构：**
```
backend/src/
├── platform/
│   ├── auth/           # 认证服务
│   ├── permissions/    # 权限管理
│   └── users/          # 用户管理
├── common/
│   ├── llm/            # LLM网关
│   ├── files/          # 文件处理
│   └── utils/          # 工具函数
└── modules/
    ├── aia/            # AI智能问答
    ├── pkb/            # 个人知识库
    └── asl/            # AI智能文献（准备）
```

### Day 8-10：Business模块重构

**任务：**
- [ ] 重构AIA模块代码
- [ ] 重构PKB模块代码
- [ ] 建立模块间调用规范
- [ ] 完善单元测试

**验收标准：**
- [ ] ✅ 代码分层清晰
- [ ] ✅ 模块边界明确
- [ ] ✅ 测试覆盖率 > 80%
- [ ] ✅ 现有功能无回归

---

## Week 3-4：ASL模块开发（2025-11-21 至 2025-12-04）

> **重点：** 完成AI智能文献核心功能

### Week 3 Day 1-2：ASL详细设计 ⭐ 此时再设计

**任务：**
- [ ] 详细设计asl_schema表结构
- [ ] 编写ASL数据库设计文档
- [ ] 编写ASL API设计文档
- [ ] 创建ASL表结构
- [ ] 更新Prisma模型（添加ASL模型）

**为什么Week 3再设计？**
- ✅ Week 1-2架构已搭好，有了清晰的参考
- ✅ 需求经过Week 1-2的思考更加明确
- ✅ 避免Week 1过度设计和返工
- ✅ Just-in-time设计，更高效

### Week 3 Day 3-5：ASL Phase 1核心功能

**功能1：文献项目管理**
- [ ] 创建/编辑/删除项目
- [ ] PICO配置
- [ ] 项目列表展示

**功能2：文献导入**
- [ ] CSV导入
- [ ] 批量导入
- [ ] 数据验证

**功能3：AI双模型筛选**
- [ ] 集成2个大模型
- [ ] 并行筛选
- [ ] 结果对比

### Week 4：ASL Phase 1完善

**功能4：筛选结果管理**
- [ ] 结果展示
- [ ] 人工复核
- [ ] 导出功能

**功能5：测试和优化**
- [ ] 完整功能测试
- [ ] 性能优化
- [ ] 用户体验优化

---

## Week 5-6：DC和RVW模块规划（2025-12-05 至 2025-12-18）

> **重点：** 根据ASL开发经验，规划后续模块

### 数据清洗模块（DC）设计

**此时根据需求再设计dc_schema：**
- 清洗任务管理
- 规则引擎
- 清洗结果

### 审稿系统模块（RVW）设计

**此时根据需求再设计rvw_schema：**
- 审稿项目管理
- 审稿任务分配
- 审稿意见管理

**说明：** 这两个模块的详细Schema设计推迟到开发前，避免现在过度设计。

---

## 后续规划（Week 7+）

### ADMIN模块（运营管理）
- 设计admin_schema
- 组织管理
- 订阅管理
- 使用统计

### SSA和ST模块（智能统计）
- 根据需求设计ssa_schema和st_schema
- 统计分析引擎
- 分析工具集成

---

## 📊 工作量总结（务实版）

| 阶段 | 原计划 | 新计划 | 节省 |
|------|--------|--------|------|
| Week 1 Schema迁移 | 2天（5个详细） | **1.5天（3个详细）** | ✅ 0.5天 |
| Week 1 文档补充 | 0 | **0.5天（AIA/PKB文档）** | 新增 |
| Prisma模型 | 5个详细 | **3个详细** | ✅ 简化 |
| ASL设计 | Week 1 | **Week 3**（推迟） | ✅ 避免返工 |
| 总Week 1工作量 | 2天 | **2天** | 相同，但更合理 |

**关键优势：**
1. ✅ Week 1聚焦架构和迁移，不做新设计
2. ✅ ASL设计推迟到开发前，需求更明确
3. ✅ AIA和PKB文档补充，与ASL保持一致
4. ✅ 7个空Schema预留，随时可扩展
5. ✅ 降低返工风险，提高开发效率

---

## 🎯 下一步行动

1. **立即开始Week 1 Day 1**：规划10个Schema架构
2. **Day 1-2**：编写3个Schema的详细设计和迁移脚本
3. **Day 3**：执行迁移，验证功能
4. **Day 4**：更新Prisma，补充AIA/PKB数据库文档
5. **Day 5**：代码适配，补充AIA/PKB API文档，Week 1总结

**记住：架构预留 + Just-in-time设计 = 高效务实！** ⭐⭐⭐

---

## 附录：Week 1详细交付物清单

**交付物：**
1. ✅ 10个Schema全部创建（3详细+7空）
2. ✅ 完整的Schema架构设计文档
3. ✅ Prisma Schema更新完成（3个详细Schema模型）
4. ✅ 现有功能（AIA、PKB）迁移完成（7个表）
5. ✅ AIA和PKB完整文档（数据库+API）
6. ✅ 7个空Schema创建完成（ASL/Common/DC/RVW/ADMIN/SSA/ST）

**验收标准：**
- [ ] ✅ **10个Schema全部创建成功**
- [ ] ✅ 数据迁移100%成功（platform/aia/pkb三个Schema）
- [ ] ✅ 现有功能正常运行（AI智能问答、知识库）
- [ ] ✅ Prisma Client正常工作（支持10个Schema）
- [ ] ✅ AIA和PKB文档完整
- [ ] ✅ 7个空Schema验证通过（架构预留）

---

## 🔧 阶段2：代码分层 + LLM网关（Week 2）

> **时间：** 2025-11-14 至 2025-11-20（7天）  
> **目标：** 建立三层代码架构 + 实现LLM网关

### 务实策略：只做云端统一系统 ⭐

**做什么：**
- ✅ 三层目录结构（platform/common/modules）
- ✅ 代码迁移和重构
- ✅ LLM网关实现
- ✅ 模块化API路由

**暂不做：**
- ❌ 模块独立部署配置
- ❌ Docker文件
- ❌ 独立运行脚本

**原因：** 当前重点是云端系统开发，独立部署在Week 7+再考虑

---

### Day 6-7：三层目录重构

**任务：**
1. 创建三层目录结构
2. 迁移现有代码到新结构
3. 重构为清晰的分层

**目录结构：**
```
backend/src/
├── platform/           # L1：平台基础层
│   ├── auth/          # 认证（JWT、Session）
│   ├── permissions/   # 权限管理（RBAC）
│   └── users/         # 用户服务
├── common/            # L2：通用能力层
│   ├── llm/           # LLM网关
│   ├── files/         # 文件处理
│   └── utils/         # 工具函数
└── modules/           # L3：业务模块层
    ├── aia/           # AI智能问答
    ├── pkb/           # 个人知识库
    └── asl/           # AI智能文献（准备）
```

---

### Day 8-9：LLM网关实现

**核心功能：**
1. **多模型支持**
   - DeepSeek
   - OpenAI
   - Claude
   - 统一接口

2. **Feature Flags**
   - 模型开关
   - 功能开关
   - 配额管理

3. **使用记录**
   - Token统计
   - 费用计算
   - 日志记录

**交付：**
- LLM网关核心代码
- 配置文件
- 使用文档

---

### Day 10：Week 2验收

**验收标准：**
- [ ] ✅ 三层代码架构清晰
- [ ] ✅ LLM网关稳定可用
- [ ] ✅ API路由模块化
- [ ] ✅ ASL可以开始开发

---

## 🎯 阶段3-4：ASL核心功能开发（Week 3-4）

> **时间：** 2025-11-21 至 2025-12-04（2周）  
> **目标：** 完成ASL Phase 1 - 文献初筛功能

### Week 3 Day 1-2：ASL详细设计 ⭐

**任务：**
- [ ] 详细设计asl_schema表结构
- [ ] 编写ASL数据库设计文档
- [ ] 编写ASL API设计文档
- [ ] 创建ASL表结构
- [ ] 更新Prisma模型

**为什么Week 3再设计？**
- Week 1-2架构已搭好
- 需求更加明确
- 避免过度设计

### Week 3 Day 3-5：ASL Phase 1核心功能

**功能1：文献项目管理**
- 创建/编辑/删除项目
- PICO配置
- 项目列表

**功能2：文献导入**
- CSV导入
- 批量导入
- 数据验证

**功能3：AI双模型筛选**
- 集成2个大模型
- 并行筛选
- 结果对比

### Week 4：ASL Phase 1完善

**功能4：筛选结果管理**
- 结果展示
- 人工复核
- 导出功能

**功能5：测试和优化**
- 完整功能测试
- 性能优化
- 用户体验优化

---

## 📊 关键调整总结

**V2.1版（3详细+7空）vs V2.0版（5详细+5空）：**

| 项目 | V2.0 | V2.1 | 变化 |
|------|------|------|------|
| 详细Schema | 5个 | **3个** | ✅ 聚焦现有 |
| 空Schema | 5个 | **7个** | ✅ 更完整预留 |
| Week 1工作量 | 2天 | **1.5天** | ✅ 降低 |
| ASL设计时机 | Week 1 | **Week 3** | ✅ 推迟 |
| 文档补充 | 无 | **AIA/PKB** | ✅ 新增 |

**核心策略：**
1. ✅ 聚焦当前（只迁移现有数据）
2. ✅ 架构预留（10个命名空间）
3. ✅ Just-in-time设计（开发前再详细设计）
4. ✅ 文档完整（与ASL保持一致）

---

## 🎯 成功标准

### Week 1成功标准
- [ ] ✅ 10个Schema全部创建（3详细+7空）
- [ ] ✅ Platform/AIA/PKB数据100%迁移
- [ ] ✅ Prisma模型更新（3个详细）
- [ ] ✅ 现有功能正常运行
- [ ] ✅ AIA和PKB文档完整

### Week 2成功标准
- [ ] ✅ 三层代码架构清晰
- [ ] ✅ LLM网关稳定可用
- [ ] ✅ API路由模块化
- [ ] ✅ ASL可以开始开发

### Week 3-4成功标准
- [ ] ✅ ASL标题摘要初筛完成
- [ ] ✅ ASL全文复筛完成
- [ ] ✅ 用户可以完整使用ASL功能

---

## 📝 关于Monorepo的决策

**决定：暂不采用Monorepo** ✅

**理由：**
1. 目录分层已经足够清晰（platform/common/modules）
2. Monorepo工具（lerna、nx）增加复杂度
3. 单人开发，收益不明显
4. 等未来真正需要独立部署时再考虑

---

**制定人：** AI助手  
**版本：** V2.1（3详细+7空 - 务实版）  
**最后更新：** 2025-11-09  
**核心调整：** 
- ✅ 3个Schema详细迁移（Platform/AIA/PKB）
- ✅ 7个空Schema预留（ASL/Common/DC/RVW/ADMIN/SSA/ST）
- ✅ ASL设计推迟到Week 3
- ✅ 补充AIA/PKB完整文档
- ✅ 架构预留 + Just-in-time设计 = 高效务实 ⭐
