diff --git a/docs/architecture.md b/docs/architecture.md new file mode 100644 index 0000000..a759d45 --- /dev/null +++ b/docs/architecture.md @@ -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 增强:引入自动生成实验报告、智能问答知识库等能力。 + +--- +此方案可作为项目立项与实施的蓝图,实际开发中可根据实验室资源、团队技术栈进行调整。