Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
131 changes: 131 additions & 0 deletions docs/architecture.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
# 实验室数据管理系统架构方案

## 1. 系统目标
- 提供类似 Google Docs 的在线文档(Word)、表格(Excel)功能,并支持多人实时协作。
- 提供多用户管理,支持微信 OAuth 登录,并区分管理员与普通用户角色。
- 提供 LLM 驱动的数据巡检与智能助手能力,实现定时检测、问题预警与数据整理。
- 能够在实验室内部服务器部署,具备安全可靠的数据管理、存储及备份能力。

## 2. 整体架构概览
系统采用前后端分离架构,结合微服务与模块化设计,便于扩展与维护。

```
┌──────────────────────────────────────────────────────────────────┐
│ 前端应用(Web) │
│ React + TypeScript + Ant Design / TDesign │
└──────────────────────────────────────────────────────────────────┘
│ HTTPS + JWT / Session
┌────────────────┴────────────────────────────────────────────────┐
│ API 网关 │
│ Nginx / Traefik:路由转发、TLS、速率限制、负载均衡 │
└────────────────┬──────────────────────────┬──────────────────────┘
│ │
┌───────▼───────┐ ┌───────▼───────────────────────────┐
│ 核心业务服务 │ │ 实时协作文档服务(协同内核) │
│ (NestJS/Java) │ │ - 使用 Yjs/Automerge CRDT │
│ - 用户 & 权限 │ │ - WebSocket 信令服务 │
│ - 文档元数据 │ │ - 文档内容持久化(MongoDB/Redis)│
│ - 数据目录 │ └───────────────────────────────────┘
│ - 审计日志 │
└───────┬───────┘
│ gRPC / REST
┌───────▼─────────────────────────┐
│ 数据管理服务 (Python/FastAPI) │
│ - 数据导入导出 │
│ - 指标计算 & 质量校验 │
│ - 数据整理任务编排 (Celery) │
└───────┬─────────────────────────┘
│ Async Queue (RabbitMQ/Redis)
┌───────▼──────────────────────────────────┐
│ LLM 智能监控服务 (LangChain + OpenAI API) │
│ - 任务调度 (APScheduler) │
│ - 指标规则解析 │
│ - 异常生成报告 & 通知 │
└───────────────────────────────────────────┘
┌────────────────▼────────────────────────────────────────────┐
│ 数据存储与基础设施层 │
│ - PostgreSQL / MySQL:结构化业务数据 │
│ - MongoDB:文档内容、版本、协同状态 │
│ - MinIO / Ceph:附件、原始数据文件 │
│ - Redis:会话、缓存、WebSocket 协同暂存 │
│ - Elasticsearch:全文检索与审计日志 │
└─────────────────────────────────────────────────────────────┘
```

## 3. 核心功能设计

### 3.1 用户与权限管理
- **微信登录**:使用微信开放平台 OAuth2.0,通过 API 网关回调获取用户信息并与内部账号绑定。
- **角色模型**:
- 管理员:管理用户、权限、数据目录、系统配置、规则模板。
- 普通用户:访问授权文档/数据、参与协作、接收通知、提交数据。
- **权限细分**:基于 RBAC,结合文档/数据目录的行级权限控制。
- **安全性**:支持 MFA(短信/邮件)、操作审计、IP 黑白名单。

### 3.2 在线文档与表格
- 前端使用富文本编辑器(如 TipTap/Quill + Yjs)实现 Word 功能,表格可使用 Handsontable/SheetJS。
- 协同:通过 WebSocket + CRDT 保证多用户实时编辑的一致性。
- 版本管理:支持快照、差异回看、恢复旧版本。
- 模板:提供实验报告模板、数据记录模板,可一键创建。

### 3.3 数据管理与存储
- 数据目录:按照实验项目、仪器、样本、试剂分类,支持标签与搜索。
- 数据导入:支持 Excel/CSV 批量导入,解析后写入数据库;提供字段映射与校验规则。
- 数据导出:导出为 Excel/CSV/PDF,并可设置自动导出计划。
- 附件管理:对接对象存储,支持大文件分片上传、版本记录与权限控制。

### 3.4 LLM 智能监控与助手
- **监控流程**:
1. 管理员在系统中配置指标规则(阈值、公式、检查频率等)。
2. 调度器(APScheduler/Celery Beat)定时触发任务,数据管理服务计算指标并生成结构化检测结果。
3. LLM 服务读取检测结果,通过提示模板分析是否异常、生成文字说明与建议。
4. 通知服务将结果推送给相关用户(微信企业号、邮件、站内信)。
- **数据整理助手**:用户可通过聊天界面向 LLM 咨询数据情况、生成报表、自动整理实验记录。
- **安全策略**:
- 敏感数据脱敏再传递给 LLM。
- 关键任务使用私有化部署的开源 LLM(如 ChatGLM、Qwen)或安全代理。

## 4. 关键技术选型
- **前端**:React + TypeScript,UI 组件库选用 Ant Design Pro;实时协作使用 Yjs + websocket-provider。
- **后端**:
- 用户/权限/业务 API:NestJS(TypeScript)或 Spring Boot。
- 数据处理服务:Python FastAPI,方便与数据分析库(Pandas、NumPy)集成。
- 消息队列:RabbitMQ 或 Redis Streams。
- 调度:Celery + Beat 或 APScheduler。
- **数据库**:PostgreSQL、MongoDB、Redis、MinIO、Elasticsearch。
- **身份认证**:Keycloak 或自建 OAuth 服务,扩展微信登录。
- **LLM 集成**:LangChain / LlamaIndex,支持调用 OpenAI、Qwen-Plus 等 API;私有化可部署 ChatGLM。
- **日志与监控**:Prometheus + Grafana、ELK Stack。

## 5. 部署方案
- **容器化**:各服务使用 Docker 镜像,通过 Docker Compose 或 Kubernetes 进行编排。
- **实验室服务器部署**:
- 主服务器运行核心业务、数据库、对象存储。
- 辅助服务器可部署 LLM 模型、分析服务。
- 内网访问 + VPN 接入,确保安全。
- **CI/CD**:GitLab CI 或 GitHub Actions 自动构建、测试、部署。
- **备份策略**:数据库定期备份到独立存储;对象存储跨机房复制;配置备份脚本。

## 6. 安全与合规
- 数据加密:传输采用 HTTPS/TLS,存储敏感字段使用 AES 加密。
- 权限审计:记录所有关键操作日志,满足实验室合规要求。
- 备份与恢复:演练灾备恢复流程,确保可快速恢复服务。
- 隐私保护:遵守《中华人民共和国数据安全法》《个人信息保护法》,对外共享需脱敏。

## 7. 实施路线图
1. **需求分析 & 原型设计(2-3 周)**:访谈用户、梳理场景,完成原型和数据字典。
2. **基础平台搭建(4-6 周)**:开发用户体系、权限管理、基础文档/表格功能。
3. **协同与数据模块(6-8 周)**:实现实时协作、数据导入导出、指标计算。
4. **LLM 智能功能(4-6 周)**:集成 LLM API、实现定时巡检、告警与智能助手。
5. **安全与优化(2-3 周)**:完善日志、监控、备份、性能优化。
6. **内测与上线(2 周)**:在实验室服务器部署,进行用户培训与迭代。

## 8. 后续扩展
- 移动端小程序:提供数据查看、审批、告警提醒。
- 与实验仪器数据接口:自动采集实验数据。
- 流程引擎:实现实验流程审批、试剂领用等业务流程。
- AI 增强:引入自动生成实验报告、智能问答知识库等能力。

---
此方案可作为项目立项与实施的蓝图,实际开发中可根据实验室资源、团队技术栈进行调整。