# [AI对接] ADMIN快速上下文

> **阅读时间：** 5分钟 | **Token消耗：** ~2000 tokens  
> **层级：** L2 | **优先级：** P1  
> **前置阅读：** 03-业务模块/[AI对接] 业务模块快速上下文.md

---

## 📋 模块定位

**运营管理端是SaaS商业模式的运营基础，管理用户、权限、LLM模型、成本等15个功能模块。**

**商业价值：** ⭐⭐⭐⭐⭐ SaaS运营必备  
**开发状态：** ⏳ 规划中（P1优先级）  
**依赖能力：** 平台基础层（UAM、监控日志）、LLM网关

---

## 🎯 核心功能（15个模块）

### P0优先级（4个）⭐ 最核心

| 模块 | 功能 | 商业价值 |
|------|------|---------|
| **用户管理** | 用户CRUD、套餐管理、禁用/启用 | 基础运营 |
| **Feature Flag管理** | 功能开关配置、版本权限控制 | 商业模式基础 |
| **LLM模型管理** | 模型配置、价格管理、可用性控制 | 成本控制 |
| **系统配置** | 全局配置、环境切换、参数管理 | 系统运维 |

---

### P1优先级（8个）

| 模块 | 功能 | 说明 |
|------|------|------|
| **Prompt管理** | 智能体Prompt模板管理 | 提高AI效果 |
| **监控与日志** | 操作日志查询、错误监控 | 运维支持 |
| **成本分析** | LLM成本统计、用户消费排行 | 成本优化 |
| **数据报表** | 用户活跃度、功能使用率 | 运营决策 |
| **业务数据管理** | 文献项目、知识库等业务数据查看 | 运营支持 |
| **审核管理** | 稿件审查任务管理（RVW模块） | 业务支持 |
| **系统监控** | 服务健康度、API响应时间 | 技术运维 |
| **备份管理** | 数据备份、恢复 | 数据安全 |

---

### P2优先级（3个）

| 模块 | 功能 |
|------|------|
| **租户管理** | SaaS多租户管理（高级功能） |
| **公告管理** | 系统公告发布 |
| **帮助文档** | 在线帮助文档管理 |

---

## 🏗️ 技术架构

### 前端（React）
```
src/pages/Admin/
  ├── Dashboard/              # 首页仪表盘
  ├── Users/                  # 用户管理 ⭐ P0
  │   ├── UserList.tsx
  │   ├── UserDetail.tsx
  │   └── UserEdit.tsx
  ├── FeatureFlags/           # Feature Flag管理 ⭐ P0
  │   ├── FlagList.tsx
  │   └── FlagConfig.tsx
  ├── LLM/                    # LLM模型管理 ⭐ P0
  │   ├── ModelList.tsx
  │   ├── ModelConfig.tsx
  │   └── CostAnalysis.tsx
  ├── Prompts/                # Prompt管理 P1
  ├── Logs/                   # 日志查询 P1
  ├── Reports/                # 数据报表 P1
  └── Settings/               # 系统配置 ⭐ P0
```

### 后端（Node.js）
```
backend/src/modules/admin/
  ├── controllers/
  │   ├── userController.ts           # 用户管理 ⭐
  │   ├── featureFlagController.ts    # Feature Flag ⭐
  │   ├── llmController.ts            # LLM模型管理 ⭐
  │   ├── promptController.ts
  │   ├── logController.ts
  │   └── reportController.ts
  ├── services/
  │   ├── userService.ts
  │   ├── featureFlagService.ts
  │   ├── llmService.ts
  │   └── reportService.ts
  └── routes/
      └── adminRoutes.ts
```

### 数据库（platform_schema）
```sql
-- 已有表
- users                    # 用户基础信息
- roles                    # 角色
- permissions              # 权限
- feature_flags            # Feature Flag配置
- user_feature_flags       # 用户Feature Flag关联
- llm_usage                # LLM使用记录
- llm_quotas               # LLM配额
- admin_logs               # 管理员操作日志

-- 需要新增
- llm_models               # LLM模型配置 ⭐ P0
- prompt_templates         # Prompt模板 P1
- system_configs           # 系统配置 ⭐ P0
- announcements            # 系统公告 P2
```

---

## 💡 核心业务流程

### 1. Feature Flag配置流程 ⭐⭐⭐⭐⭐

```
1. ADMIN在管理端配置Feature Flag
   - 功能名称：claude_access
   - 描述：是否可以使用Claude模型
   - 默认值：false
   ↓
2. 为不同套餐配置不同的Feature Flag
   - 专业版：只有 deepseek_access
   - 高级版：deepseek_access + qwen3_access
   - 旗舰版：全部模型访问权限
   ↓
3. 用户升级套餐时，自动更新Feature Flag
   ↓
4. 业务模块（ASL、AIA等）调用LLM网关时，自动检查Feature Flag
```

**关键表结构：**
```sql
-- Feature Flag定义
CREATE TABLE platform_schema.feature_flags (
  id SERIAL PRIMARY KEY,
  flag_key VARCHAR(100) UNIQUE NOT NULL,  -- 'claude_access'
  flag_name VARCHAR(200) NOT NULL,        -- 'Claude模型访问权限'
  description TEXT,
  default_value BOOLEAN DEFAULT FALSE,
  created_at TIMESTAMP DEFAULT NOW()
);

-- 用户Feature Flag（覆盖默认值）
CREATE TABLE platform_schema.user_feature_flags (
  id SERIAL PRIMARY KEY,
  user_id INTEGER REFERENCES platform_schema.users(id),
  flag_id INTEGER REFERENCES platform_schema.feature_flags(id),
  value BOOLEAN NOT NULL,
  created_at TIMESTAMP DEFAULT NOW(),
  
  UNIQUE(user_id, flag_id)
);
```

---

### 2. LLM模型管理流程 ⭐⭐⭐⭐

```
1. ADMIN配置LLM模型
   - 模型名称：DeepSeek-V3
   - API Key
   - 价格：¥1/百万tokens
   - 是否启用
   ↓
2. LLM网关根据配置调用模型
   ↓
3. 记录每次调用的成本
   ↓
4. ADMIN查看成本分析报表
   - 总成本
   - 各模型成本占比
   - 用户消费排行
```

**关键表结构：**
```sql
CREATE TABLE platform_schema.llm_models (
  id SERIAL PRIMARY KEY,
  model_key VARCHAR(50) UNIQUE NOT NULL,   -- 'deepseek-v3'
  model_name VARCHAR(100) NOT NULL,        -- 'DeepSeek-V3'
  provider VARCHAR(50),                    -- 'deepseek', 'openai', 'anthropic'
  api_endpoint TEXT,
  api_key_encrypted TEXT,                  -- 加密存储
  price_per_million_tokens DECIMAL(10, 6), -- 每百万tokens价格
  is_enabled BOOLEAN DEFAULT TRUE,
  created_at TIMESTAMP DEFAULT NOW(),
  updated_at TIMESTAMP DEFAULT NOW()
);
```

---

### 3. 用户管理流程

```
1. ADMIN创建用户
   - 基础信息（姓名、邮箱等）
   - 选择套餐（professional/premium/enterprise）
   - 自动配置对应的Feature Flag
   ↓
2. ADMIN管理用户
   - 修改套餐（Feature Flag自动更新）
   - 禁用/启用账号
   - 重置密码
   - 调整LLM配额
   ↓
3. ADMIN查看用户详情
   - 基础信息
   - LLM使用统计
   - 功能使用记录
   - 文献项目、知识库等业务数据
```

---

## 📋 核心API端点

### 用户管理 ⭐ P0
```
GET    /api/v1/admin/users                 # 用户列表（分页、筛选）
GET    /api/v1/admin/users/:id             # 用户详情
POST   /api/v1/admin/users                 # 创建用户
PUT    /api/v1/admin/users/:id             # 更新用户
DELETE /api/v1/admin/users/:id             # 删除用户
POST   /api/v1/admin/users/:id/disable     # 禁用用户
POST   /api/v1/admin/users/:id/enable      # 启用用户
PUT    /api/v1/admin/users/:id/plan        # 修改套餐
```

### Feature Flag管理 ⭐ P0
```
GET    /api/v1/admin/feature-flags         # Feature Flag列表
POST   /api/v1/admin/feature-flags         # 创建Feature Flag
PUT    /api/v1/admin/feature-flags/:id     # 更新Feature Flag
DELETE /api/v1/admin/feature-flags/:id     # 删除Feature Flag
GET    /api/v1/admin/users/:id/flags       # 查询用户Feature Flag
PUT    /api/v1/admin/users/:id/flags       # 更新用户Feature Flag
```

### LLM模型管理 ⭐ P0
```
GET    /api/v1/admin/llm/models            # 模型列表
POST   /api/v1/admin/llm/models            # 添加模型
PUT    /api/v1/admin/llm/models/:id        # 更新模型
DELETE /api/v1/admin/llm/models/:id        # 删除模型
GET    /api/v1/admin/llm/usage             # LLM使用统计
GET    /api/v1/admin/llm/cost-analysis     # 成本分析
```

### Prompt管理 P1
```
GET    /api/v1/admin/prompts               # Prompt模板列表
POST   /api/v1/admin/prompts               # 创建Prompt
PUT    /api/v1/admin/prompts/:id           # 更新Prompt
DELETE /api/v1/admin/prompts/:id           # 删除Prompt
```

### 日志查询 P1
```
GET    /api/v1/admin/logs                  # 日志列表（分页、筛选）
GET    /api/v1/admin/logs/errors           # 错误日志
GET    /api/v1/admin/logs/operations       # 操作日志
```

### 数据报表 P1
```
GET    /api/v1/admin/reports/overview      # 总览数据
GET    /api/v1/admin/reports/users         # 用户活跃度
GET    /api/v1/admin/reports/features      # 功能使用率
GET    /api/v1/admin/reports/llm           # LLM使用统计
```

---

## 📊 核心页面设计

### 1. 仪表盘（Dashboard）
**核心指标：**
- 总用户数 / 活跃用户数
- 本月LLM调用次数 / 成本
- 各模块使用率
- 错误日志数量

### 2. 用户管理
**功能：**
- 列表：搜索、筛选（套餐、状态）、排序
- 详情：基础信息 + 使用统计 + 业务数据
- 编辑：修改套餐、调整配额、禁用/启用

### 3. Feature Flag管理 ⭐
**核心界面：**
```
┌─────────────────────────────────────────┐
│ Feature Flag管理                         │
├─────────────────────────────────────────┤
│ [+ 新增Flag]                             │
│                                          │
│ Flag Key          | 描述      | 默认值   │
│─────────────────────────────────────────│
│ claude_access     | Claude访问 | ❌      │
│ qwen3_access      | Qwen3访问  | ❌      │
│ deepseek_access   | DeepSeek访问| ✅     │
│─────────────────────────────────────────│
│                                          │
│ 套餐配置：                                │
│ 专业版：deepseek_access                  │
│ 高级版：deepseek_access, qwen3_access   │
│ 旗舰版：全部模型                          │
└─────────────────────────────────────────┘
```

### 4. LLM成本分析 ⭐
**核心图表：**
- 成本趋势图（按天）
- 模型成本占比（饼图）
- 用户消费排行（柱状图）
- 模块使用分布（饼图）

---

## ⚠️ 关键技术难点

### 1. API Key安全存储
**解决方案：** AES-256加密
```typescript
import crypto from 'crypto';

const ENCRYPTION_KEY = process.env.ENCRYPTION_KEY; // 32字节
const IV_LENGTH = 16;

function encrypt(text: string): string {
  const iv = crypto.randomBytes(IV_LENGTH);
  const cipher = crypto.createCipheriv('aes-256-cbc', Buffer.from(ENCRYPTION_KEY), iv);
  let encrypted = cipher.update(text);
  encrypted = Buffer.concat([encrypted, cipher.final()]);
  return iv.toString('hex') + ':' + encrypted.toString('hex');
}

function decrypt(text: string): string {
  const parts = text.split(':');
  const iv = Buffer.from(parts[0], 'hex');
  const encrypted = Buffer.from(parts[1], 'hex');
  const decipher = crypto.createDecipheriv('aes-256-cbc', Buffer.from(ENCRYPTION_KEY), iv);
  let decrypted = decipher.update(encrypted);
  decrypted = Buffer.concat([decrypted, decipher.final()]);
  return decrypted.toString();
}
```

---

### 2. 权限控制
**ADMIN角色：**
- 超级管理员：全部权限
- 运营管理员：用户管理、报表查看
- 技术管理员：LLM模型管理、日志查询

```typescript
// 权限检查中间件
async function checkAdminPermission(req, reply, permission: string) {
  const user = req.user;
  
  if (!user.isAdmin) {
    throw new UnauthorizedError('需要管理员权限');
  }
  
  const hasPermission = await permissionService.check(user.id, permission);
  
  if (!hasPermission) {
    throw new ForbiddenError('权限不足');
  }
}

// 使用
app.get('/api/v1/admin/users', {
  preHandler: checkAdminPermission('user:read')
}, userController.list);
```

---

### 3. 数据报表性能优化
**问题：** 大数据量查询慢

**解决方案：**
- Redis缓存（5分钟）
- 数据预聚合（定时任务）
- 分页查询

```typescript
// 缓存报表数据
async function getOverviewReport() {
  const cacheKey = 'admin:report:overview';
  
  // 先查缓存
  const cached = await redis.get(cacheKey);
  if (cached) return JSON.parse(cached);
  
  // 查询数据库
  const data = await db.query(`
    SELECT 
      COUNT(DISTINCT user_id) as total_users,
      SUM(total_tokens) as total_tokens,
      SUM(cost) as total_cost
    FROM platform_schema.llm_usage
    WHERE created_at >= date_trunc('month', NOW())
  `);
  
  // 缓存5分钟
  await redis.set(cacheKey, JSON.stringify(data), 'EX', 300);
  
  return data;
}
```

---

## 📅 开发计划

### Phase 1：P0核心功能（Week 1-2）
- **用户管理**（3天）
  - Day 1: 后端API（CRUD）
  - Day 2: 前端列表和详情
  - Day 3: 套餐管理、禁用/启用

- **Feature Flag管理**（2天）
  - Day 1: 后端API + 数据库
  - Day 2: 前端配置界面

- **LLM模型管理**（2天）
  - Day 1: 后端API + 加密存储
  - Day 2: 前端配置界面

- **系统配置**（1天）

### Phase 2：P1功能（Week 3-4）
- Prompt管理（2天）
- 日志查询（2天）
- 成本分析报表（3天）
- 数据报表（3天）

### Phase 3：P2功能（Week 5）
- 租户管理
- 公告管理
- 帮助文档

---

## ✅ 开发检查清单

**开始前确认：**
- [ ] ADMIN角色和权限已配置
- [ ] 数据库表已创建（llm_models, system_configs等）
- [ ] Redis已部署（用于报表缓存）
- [ ] ENCRYPTION_KEY环境变量已配置

**P0功能完成标准：**
- [ ] ADMIN可以创建/编辑/删除用户
- [ ] ADMIN可以配置Feature Flag
- [ ] ADMIN可以配置LLM模型
- [ ] ADMIN可以查看LLM成本统计
- [ ] 所有敏感操作都记录到admin_logs

---

## 🔗 相关文档

**依赖：**
- [用户与权限中心(UAM)](../../01-平台基础层/01-用户与权限中心(UAM)/README.md)
- [LLM大模型网关](../../02-通用能力层/01-LLM大模型网关/README.md)
- [监控与日志](../../01-平台基础层/04-监控与日志/README.md)

**详细设计：**
- [运营管理端完整设计](./README.md)

---

**最后更新：** 2025-11-06  
**维护人：** 技术架构师  
**优先级：** P1














