Features - User Management (Phase 4.1): - Database: Add user_modules table for fine-grained module permissions - Database: Add 4 user permissions (view/create/edit/delete) to role_permissions - Backend: UserService (780 lines) - CRUD with tenant isolation - Backend: UserController + UserRoutes (648 lines) - 13 API endpoints - Backend: Batch import users from Excel - Frontend: UserListPage (412 lines) - list/filter/search/pagination - Frontend: UserFormPage (341 lines) - create/edit with module config - Frontend: UserDetailPage (393 lines) - details/tenant/module management - Frontend: 3 modal components (592 lines) - import/assign/configure - API: GET/POST/PUT/DELETE /api/admin/users/* endpoints Architecture Upgrade - Module Permission System: - Backend: Add getUserModules() method in auth.service - Backend: Login API returns modules array in user object - Frontend: AuthContext adds hasModule() method - Frontend: Navigation filters modules based on user.modules - Frontend: RouteGuard checks requiredModule instead of requiredVersion - Frontend: Remove deprecated version-based permission system - UX: Only show accessible modules in navigation (clean UI) - UX: Smart redirect after login (avoid 403 for regular users) Fixes: - Fix UTF-8 encoding corruption in ~100 docs files - Fix pageSize type conversion in userService (String to Number) - Fix authUser undefined error in TopNavigation - Fix login redirect logic with role-based access check - Update Git commit guidelines v1.2 with UTF-8 safety rules Database Changes: - CREATE TABLE user_modules (user_id, tenant_id, module_code, is_enabled) - ADD UNIQUE CONSTRAINT (user_id, tenant_id, module_code) - INSERT 4 permissions + role assignments - UPDATE PUBLIC tenant with 8 module subscriptions Technical: - Backend: 5 new files (~2400 lines) - Frontend: 10 new files (~2500 lines) - Docs: 1 development record + 2 status updates + 1 guideline update - Total: ~4900 lines of code Status: User management 100% complete, module permission system operational
362 lines
11 KiB
Markdown
362 lines
11 KiB
Markdown
# 数据库全局视图
|
||
|
||
> **目的:** 提供所有Schema和表的快速索引,便于查找和理解全局数据架构
|
||
> **详细设计:** 请查看各模块的 `01-数据库设计.md`
|
||
> **数据库:** PostgreSQL 15+
|
||
> **最后更新:** 2025-11-06
|
||
|
||
---
|
||
|
||
## 📊 Schema划分策略
|
||
|
||
### Schema隔离原则 ⭐
|
||
|
||
**为什么需要Schema隔离:**
|
||
1. ✅ **模块独立性**:每个业务模块有独立的Schema
|
||
2. ✅ **支持独立部署**:可以单独导出某个模块的数据
|
||
3. ✅ **权限隔离**:可以为不同Schema设置不同权限
|
||
4. ✅ **避免命名冲突**:不同模块可以有相同的表名
|
||
|
||
**Schema命名规范:**
|
||
```
|
||
platform_schema # 平台基础层(全局共享)
|
||
aia_schema # AI智能问答
|
||
asl_schema # AI智能文献
|
||
pkb_schema # 个人知识库
|
||
dc_schema # 数据清洗整理
|
||
ssa_schema # 智能统计分析
|
||
st_schema # 统计分析工具
|
||
rvw_schema # 稿件审查系统
|
||
admin_schema # 运营管理端(可选,可合并到platform_schema)
|
||
```
|
||
|
||
---
|
||
|
||
## 📋 Schema一览表
|
||
|
||
| Schema | 说明 | 表数量 | 状态 | 详细设计 |
|
||
|--------|------|--------|------|---------|
|
||
| **platform_schema** | 平台基础层 | ~15个 | ✅ 使用中 | [查看](#platform_schema-平台基础层) |
|
||
| **aia_schema** | AI智能问答 | ~8个 | ✅ 使用中 | [查看](#aia_schema-ai智能问答) |
|
||
| **pkb_schema** | 个人知识库 | ~5个 | ✅ 使用中 | [查看](#pkb_schema-个人知识库) |
|
||
| **rvw_schema** | 稿件审查系统 | ~6个 | ✅ 使用中 | [查看](#rvw_schema-稿件审查系统) |
|
||
| **asl_schema** | AI智能文献 | ~10个 | ⏳ 设计中 | [ASL/01-数据库设计](../03-业务模块/ASL-AI智能文献/01-数据库设计.md) |
|
||
| **dc_schema** | 数据清洗整理 | ~8个 | ⏳ 规划中 | 待设计 |
|
||
| **ssa_schema** | 智能统计分析 | ~10个 | ⏳ 规划中 | 待设计 |
|
||
| **st_schema** | 统计分析工具 | ~5个 | ⏳ 规划中 | 待设计 |
|
||
|
||
**总表数:** ~70个(预估)
|
||
|
||
---
|
||
|
||
## 🔍 platform_schema(平台基础层)
|
||
|
||
**职责:** 存储全局共享的平台数据,所有业务模块都依赖
|
||
|
||
**详细设计:** [UAM/01-数据库设计](../01-平台基础层/01-用户与权限中心(UAM)/01-数据库设计.md)
|
||
|
||
### 核心表(用户与权限)
|
||
|
||
| 表名 | 说明 | 记录数预估 | 详细设计 |
|
||
|------|------|-----------|---------|
|
||
| **users** | 用户基础信息 | 10万/年 | [UAM/01-数据库设计](../01-平台基础层/01-用户与权限中心(UAM)/01-数据库设计.md) |
|
||
| **roles** | 角色定义 | <100 | 同上 |
|
||
| **permissions** | 权限定义 | <500 | 同上 |
|
||
| **user_roles** | 用户-角色关联 | 10万/年 | 同上 |
|
||
| **feature_flags** | Feature Flag配置 ⭐ | <100 | 同上 |
|
||
| **user_feature_flags** | 用户-Feature Flag关联 ⭐ | 10万/年 | 同上 |
|
||
|
||
### LLM相关表
|
||
|
||
| 表名 | 说明 | 记录数预估 | 详细设计 |
|
||
|------|------|-----------|---------|
|
||
| **llm_models** | LLM模型配置 | <20 | [LLM网关/01-数据库设计](../02-通用能力层/01-LLM大模型网关/01-数据库设计.md) |
|
||
| **llm_usage** | LLM使用记录 ⭐ | 1000万/年 | 同上 |
|
||
| **llm_quotas** | LLM配额管理 | 10万/年 | 同上 |
|
||
|
||
### 监控与日志
|
||
|
||
| 表名 | 说明 | 记录数预估 | 详细设计 |
|
||
|------|------|-----------|---------|
|
||
| **admin_logs** | 管理员操作日志 | 10万/年 | [监控与日志/01-数据库设计](../01-平台基础层/04-监控与日志/01-数据库设计.md) |
|
||
| **error_logs** | 错误日志 | 100万/年 | 同上 |
|
||
| **audit_logs** | 审计日志 | 100万/年 | 同上 |
|
||
|
||
### 系统配置
|
||
|
||
| 表名 | 说明 | 记录数预估 | 详细设计 |
|
||
|------|------|-----------|---------|
|
||
| **system_configs** | 系统配置 | <100 | [系统配置/01-数据库设计](../01-平台基础层/05-系统配置/01-数据库设计.md) |
|
||
| **prompt_templates** | Prompt模板 | <500 | 同上 |
|
||
| **announcements** | 系统公告 | <1000 | 同上 |
|
||
|
||
---
|
||
|
||
## 🤖 aia_schema(AI智能问答)
|
||
|
||
**职责:** 存储AI智能问答相关数据(12个智能体、对话历史)
|
||
|
||
**状态:** ✅ 已实现
|
||
**详细设计:** [AIA/01-数据库设计](../03-业务模块/AIA-AI智能问答/01-数据库设计.md)(待创建)
|
||
|
||
### 核心表
|
||
|
||
| 表名 | 说明 | 记录数预估 |
|
||
|------|------|-----------|
|
||
| **conversations** | 对话会话 | 100万/年 |
|
||
| **messages** | 对话消息 | 1000万/年 |
|
||
| **agents** | 智能体配置 | <20 |
|
||
| **conversation_contexts** | 对话上下文 | 100万/年 |
|
||
|
||
---
|
||
|
||
## 📚 pkb_schema(个人知识库)
|
||
|
||
**职责:** 存储个人知识库、文档、RAG问答相关数据
|
||
|
||
**状态:** ✅ 已实现
|
||
**详细设计:** [PKB/01-数据库设计](../03-业务模块/PKB-个人知识库/01-数据库设计.md)(待创建)
|
||
|
||
### 核心表
|
||
|
||
| 表名 | 说明 | 记录数预估 |
|
||
|------|------|-----------|
|
||
| **knowledge_bases** | 知识库 | 30万/年 |
|
||
| **documents** | 文档 | 300万/年 |
|
||
| **document_chunks** | 文档分块(向量化) | 3000万/年 |
|
||
| **kb_conversations** | 知识库对话 | 100万/年 |
|
||
| **kb_messages** | 知识库对话消息 | 1000万/年 |
|
||
|
||
---
|
||
|
||
## 📄 rvw_schema(稿件审查系统)
|
||
|
||
**职责:** 存储稿件审查、评估报告相关数据
|
||
|
||
**状态:** ✅ 已实现(独立系统)
|
||
**详细设计:** [RVW/01-数据库设计](../03-业务模块/RVW-稿件审查系统/01-数据库设计.md)(待创建)
|
||
|
||
### 核心表
|
||
|
||
| 表名 | 说明 | 记录数预估 |
|
||
|------|------|-----------|
|
||
| **review_tasks** | 审查任务 | 10万/年 |
|
||
| **manuscripts** | 稿件信息 | 10万/年 |
|
||
| **review_results** | 审查结果 | 10万/年 |
|
||
| **methodology_assessments** | 方法学评估 | 10万/年 |
|
||
| **guideline_assessments** | 稿约规范性评估 | 10万/年 |
|
||
|
||
---
|
||
|
||
## 📖 asl_schema(AI智能文献)
|
||
|
||
**职责:** 存储文献筛选、提取、分析相关数据
|
||
|
||
**状态:** ⏳ 设计中(P0优先级)
|
||
**详细设计:** [ASL/01-数据库设计](../03-业务模块/ASL-AI智能文献/01-数据库设计.md)
|
||
|
||
### 核心表(预览)
|
||
|
||
| 表名 | 说明 | 记录数预估 |
|
||
|------|------|-----------|
|
||
| **literature_projects** | 文献项目 | 10万/年 |
|
||
| **literature_items** | 文献条目 | 1000万/年 |
|
||
| **pico_configs** | PICO纳入排除标准 | 10万/年 |
|
||
| **screening_results** | 筛选结果 | 1000万/年 |
|
||
| **screening_history** | 筛选历史(可回溯) | 1000万/年 |
|
||
| **extraction_tasks** | 提取任务 | 100万/年 |
|
||
| **extraction_results** | 提取结果 | 100万/年 |
|
||
|
||
---
|
||
|
||
## 🧹 dc_schema(数据清洗整理)
|
||
|
||
**职责:** 存储数据清洗任务、ETL配置、NER结果
|
||
|
||
**状态:** ⏳ 规划中(P1优先级)
|
||
**详细设计:** 待设计
|
||
|
||
### 核心表(预览)
|
||
|
||
| 表名 | 说明 | 记录数预估 |
|
||
|------|------|-----------|
|
||
| **cleaning_projects** | 清洗项目 | 10万/年 |
|
||
| **data_sources** | 数据源 | 100万/年 |
|
||
| **etl_configs** | ETL配置 | 10万/年 |
|
||
| **ner_tasks** | NER任务 | 100万/年 |
|
||
| **ner_results** | NER结果 | 1000万/年 |
|
||
|
||
---
|
||
|
||
## 🔗 跨Schema依赖关系
|
||
|
||
### 依赖规则 ⭐ 重要
|
||
|
||
**允许的依赖:**
|
||
```
|
||
✅ 业务模块 → platform_schema(允许外键)
|
||
✅ 通用能力 → platform_schema(允许外键)
|
||
❌ 业务模块之间(禁止直接依赖)
|
||
❌ platform_schema → 业务模块(反向依赖)
|
||
```
|
||
|
||
### 依赖关系图
|
||
|
||
```
|
||
platform_schema.users (1)
|
||
↓ (N) 所有业务模块都依赖用户表
|
||
├── aia_schema.conversations
|
||
├── asl_schema.literature_projects
|
||
├── pkb_schema.knowledge_bases
|
||
├── dc_schema.cleaning_projects
|
||
├── ssa_schema.analysis_projects
|
||
├── st_schema.tool_usage
|
||
└── rvw_schema.review_tasks
|
||
|
||
platform_schema.llm_usage (独立)
|
||
- 记录所有模块的LLM调用
|
||
- 通过module字段区分:'AIA', 'ASL', 'PKB'等
|
||
```
|
||
|
||
### 外键示例
|
||
|
||
```sql
|
||
-- ✅ 允许:业务模块引用platform_schema
|
||
CREATE TABLE asl_schema.literature_projects (
|
||
id SERIAL PRIMARY KEY,
|
||
user_id INTEGER REFERENCES platform_schema.users(id) ON DELETE CASCADE
|
||
);
|
||
|
||
-- ❌ 禁止:业务模块之间互相引用
|
||
CREATE TABLE ssa_schema.analysis_projects (
|
||
id SERIAL PRIMARY KEY,
|
||
-- 错误:不能引用其他业务模块
|
||
literature_project_id INTEGER REFERENCES asl_schema.literature_projects(id)
|
||
);
|
||
|
||
-- ✅ 正确做法:通过user_id关联
|
||
-- 在应用层处理跨模块关联,不在数据库层
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 数据量统计(预估)
|
||
|
||
### 按Schema统计
|
||
|
||
| Schema | 表数量 | 年增长记录数 | 存储预估(5年) |
|
||
|--------|--------|------------|---------------|
|
||
| platform_schema | 15 | 1000万 | 50GB |
|
||
| aia_schema | 8 | 1100万 | 30GB |
|
||
| pkb_schema | 5 | 3300万 | 200GB(向量) |
|
||
| rvw_schema | 6 | 50万 | 5GB |
|
||
| asl_schema | 10 | 2100万 | 50GB |
|
||
| dc_schema | 8 | 1100万 | 100GB |
|
||
| ssa_schema | 10 | 500万 | 50GB |
|
||
| st_schema | 5 | 100万 | 10GB |
|
||
| **总计** | **~70** | **~4000万/年** | **~500GB(5年)** |
|
||
|
||
### 大表监控(年增长>100万)
|
||
|
||
| 表名 | Schema | 年增长 | 索引策略 |
|
||
|------|--------|--------|---------|
|
||
| llm_usage | platform | 1000万 | 按月分区 |
|
||
| messages | aia | 1000万 | 按created_at索引 |
|
||
| document_chunks | pkb | 3000万 | 向量索引 |
|
||
| literature_items | asl | 1000万 | 按project_id索引 |
|
||
| screening_results | asl | 1000万 | 复合索引 |
|
||
|
||
---
|
||
|
||
## 🔍 快速查找指南
|
||
|
||
### 场景1:我要开发某个模块
|
||
1. 在上面的表格中找到对应的Schema
|
||
2. 点击"详细设计"链接
|
||
3. 查看该模块的完整表结构
|
||
|
||
### 场景2:我要查看某个表的结构
|
||
1. 先确定表属于哪个Schema(根据功能判断)
|
||
2. 转到对应模块的数据库设计文档
|
||
3. 搜索表名
|
||
|
||
### 场景3:我要设计跨模块功能
|
||
1. 查看本文档的"跨Schema依赖关系"
|
||
2. 遵循依赖规则
|
||
3. 在应用层处理跨模块关联,不在数据库层
|
||
|
||
### 场景4:我要查看全局数据架构
|
||
1. 阅读本文档(快速了解所有Schema)
|
||
2. 查看[架构设计全景图](../00-系统总体设计/08-架构设计全景图.md)
|
||
|
||
---
|
||
|
||
## ⚠️ 重要提醒
|
||
|
||
### Schema隔离的注意事项
|
||
|
||
**✅ 正确做法:**
|
||
- 业务模块只引用 `platform_schema.users`
|
||
- 跨模块数据关联在应用层处理
|
||
- 使用 `user_id + 业务ID` 的方式
|
||
|
||
**❌ 错误做法:**
|
||
- 业务模块之间直接外键关联
|
||
- 在 `platform_schema` 中存储业务数据
|
||
- 不同模块使用相同的表名(虽然Schema隔离了,但容易混淆)
|
||
|
||
### 性能优化建议
|
||
|
||
1. **大表必须分页查询**(如 `llm_usage`、`messages`)
|
||
2. **热点字段必须加索引**(如 `user_id`、`created_at`)
|
||
3. **考虑表分区**(按月/按年,如 `llm_usage`)
|
||
4. **定期归档历史数据**(如1年前的日志)
|
||
|
||
---
|
||
|
||
## 🔗 相关文档
|
||
|
||
**规范:**
|
||
- [数据库设计规范](./01-数据库设计规范.md) ⭐ 必读
|
||
- [数据库架构说明](../00-系统总体设计/03-数据库架构说明.md)
|
||
|
||
**模块设计:**
|
||
- [平台基础层](../01-平台基础层/README.md)
|
||
- [通用能力层](../02-通用能力层/README.md)
|
||
- [业务模块层](../03-业务模块/README.md)
|
||
|
||
**模板:**
|
||
- [数据库设计模板](../_templates/数据库设计-模板.md)
|
||
|
||
---
|
||
|
||
**最后更新:** 2025-11-06
|
||
**维护人:** 技术架构师
|
||
**版本:** v1.0
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|