Files
AIclinicalresearch/docs/03-业务模块/ADMIN-运营管理端/[AI对接] ADMIN快速上下文.md
HaHafeng e3e7e028e8 feat(platform): Complete platform infrastructure implementation and verification
Platform Infrastructure - 8 Core Modules Completed:
- Storage Service (LocalAdapter + OSSAdapter stub)
- Logging System (Winston + JSON format)
- Cache Service (MemoryCache + Redis stub)
- Async Job Queue (MemoryQueue + DatabaseQueue stub)
- Health Check Endpoints (liveness/readiness/detailed)
- Database Connection Pool (with Serverless optimization)
- Environment Configuration Management
- Monitoring Metrics (DB connections/memory/API)

Key Features:
- Adapter Pattern for zero-code environment switching
- Full backward compatibility with legacy modules
- 100% test coverage (all 8 modules verified)
- Complete documentation (11 docs updated)

Technical Improvements:
- Fixed duplicate /health route registration issue
- Fixed TypeScript interface export (export type)
- Installed winston dependency
- Added structured logging with context support
- Implemented graceful shutdown for Serverless
- Added connection pool optimization for SAE

Documentation Updates:
- Platform infrastructure planning (04-骞冲彴鍩虹璁炬柦瑙勫垝.md)
- Implementation report (2025-11-17-骞冲彴鍩虹璁炬柦瀹炴柦瀹屾垚鎶ュ憡.md)
- Verification report (2025-11-17-骞冲彴鍩虹璁炬柦楠岃瘉鎶ュ憡.md)
- Git commit guidelines (06-Git鎻愪氦瑙勮寖.md) - Added commit frequency rules
- Updated 3 core architecture documents

Code Statistics:
- New code: 2,532 lines
- New files: 22
- Updated files: 130+
- Test pass rate: 100% (8/8 modules)

Deployment Readiness:
- Local environment: 鉁?Ready
- Cloud environment: 馃攧 Needs OSS/Redis dependencies

Next Steps:
- Ready to start ASL module development
- Can directly use storage/logger/cache/jobQueue

Tested: Local verification 100% passed
Related: #Platform-Infrastructure
2025-11-18 08:00:41 +08:00

507 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# [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 1P0核心功能Week 1-2
- **用户管理**3天
- Day 1: 后端APICRUD
- Day 2: 前端列表和详情
- Day 3: 套餐管理、禁用/启用
- **Feature Flag管理**2天
- Day 1: 后端API + 数据库
- Day 2: 前端配置界面
- **LLM模型管理**2天
- Day 1: 后端API + 加密存储
- Day 2: 前端配置界面
- **系统配置**1天
### Phase 2P1功能Week 3-4
- Prompt管理2天
- 日志查询2天
- 成本分析报表3天
- 数据报表3天
### Phase 3P2功能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