Files
2025-01-17 05:26:11 +00:00

179 lines
7.1 KiB
Markdown
Raw Permalink 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.
# Lab 实验数据采集系统
## 项目概述
这是一个用于实验数据采集和监控的分布式系统,包含采集端、服务器端和Web监控界面。
## 更新日志
### 2025-01-17更新
0. 本次主要更新paper页面;
1. 接入了memarid.js, 后端分析报告添加了对流程图的输出,前端渲染流程图;
2. 更新了文献报告显示的样式。
### 2025-01-16更新
1. 调整了项目页面和实验页面,项目页面增加了"reports"页面,可以查看项目分析报告,实验页面移除了左侧导航栏的下载数据和报告按钮;原有功能添加到实验详情页面
2. 将生成项目报告和实验报告的逻辑改为异步,不会阻碍其他路由
3. 给项目报告和实验报告添加了 AI Chat 功能
4. 将literature页面更名为paper
### 2025-01-15更新
0. 本次主要更新literature页面
1. 将左侧导航栏"Summary"改为查看总结报告页面,同时在Summary页面增加了"download"按钮和"regenerate"按钮,可以下载对所有文献的总结报告,也可以重新生成总结报告;
2. 左侧导航栏原"upload"按钮改为"literature list",显示文献列表;
3. 移除左侧导航栏"upload"按钮,改为在文献列表页面中增加"upload"按钮,上传文献;
4. 更新了页面设计;
5. 将生成总结报告的逻辑改为异步,不会阻碍其他路由;
6. 优化了文献分析页面的AI chat功能,对markdown格式的回答进行渲染,更容易阅读;
7. 在分析文献的逻辑中添加了长文档分析,长文档会分段分析再合并,最后生成报告。
### 2025-01-14更新
1. 更新了设备管理逻辑,保证一个设备可以在多个用户之间切换,但一个设备只能被一名用户使用,以及删除设备逻辑,删除设备改为更新设备状态。
2. 优化了整个web的设计,包括设备注册页面,以及更新了左侧导航栏内容和各按钮样式
### 2025-01-13更新
1. 将各页面独立出来,便于维护,同时优化了Web设计,导航栏增加了literature入口。
2. 在文献分析部分,修改了前后端代码,支持文献批量上传,将文献上传和文献分析完全解耦,上传文件后会立即得到响应,分析过程在后台进行,前端通过 Redis 中的状态来实时更新界面显示,并且添加了项目列表,可直接从导航栏进入查看各项目的文献分析,也可以从项目进入文献分析页面。
3. 文献分析部分,增加了AI chat功能,接入API,可以对已经生成分析报告的文献进行提问,并保存历史记录,可查看历史回答。
### 2025-01-12更新
Initial commit
## 系统架构
### 1. 采集端 (boot.py)
- 基于MicroPython实现的高速数据采集器
- 支持多通道数据采集
- 使用UDP协议传输数据
- 支持设备序列号注册机制
### 2. 服务器端 (data.py)
- 基于Python asyncio的异步UDP服务器
- 支持数据解析和转发
- 与MongoDB集成存储实验数据
- 实现WebSocket实时数据推送
- 设备在线状态管理
### 3. 设备管理 (device.py)
- 设备注册和管理API
- 序列号生成和验证
- 设备状态监控
- Redis集成用于在线状态追踪
### 4. Web界面
- lab.html: 主界面
- device.html: 设备管理界面
- device-monitor.html: 单个设备数据监控界面
## 主要功能
1. 高速数据采集
2. 实时数据传输和显示
3. 设备管理和监控
4. 实验数据存储
5. 在线状态追踪
## 使用说明
### 文件夹
1. history 保存了历史版本代码,可以忽略
2. lab 项目历史版本,可以忽略
### 文件结构
lab/
├── #后端
├── boot.py # 采集端程序
├── data.py # 数据处理服务器
├── device.py # 设备管理API
├── main.py # 主程序
├── #前端
├── device.html # 设备管理
├── device-monitor.html # 单个设备数据监控界面
├── device-register.html # 设备注册
├── paper.html # 文献分析
├── reports.html # 报告管理
├── lab.html # 前端主界面
└── login.html # 登录界面
|
└── README.md # 项目说明
#### 主程序 main.py https://dev.obscura.work/lab
1. 服务器:222.186.10.253
2. PORT = 6000
3. 数据库:
mongodb: 222.186.10.253:27017/lab
Redis222.186.10.253:6379; db199、201-208
#### 设备管理 device.py https://dev.obscura.work/devices
1. 服务器:222.186.10.253
2. PORT = 6001
3. 数据库:
mongodb: 222.186.10.253:27017/lab
Redis222.186.10.253:6379; db200
#### 采集端配置 boot.py
SSID = "Obscura"
UDP_HOST = "222.186.10.253"
UDP_PORT = 6002
#### 数据处理 data.py
1. 服务器:222.186.10.253
2. PORT = 6002
3. 数据库:
mongodb: 222.186.10.253:27017/lab
Redis222.186.10.253:6379; db200; data type:stream
#### 前端页面 https://beta.obscura.work/lab/
1. lab.html: 主界面
2. device-register.html: 设备注册
3. device-monitor.html: 单个设备数据监控
4. device.html: 设备管理
5. paper.html: 文献分析
6. reports.html: 报告管理
7. login.html: 登录界面
#### Redis 数据库使用情况
1. DB 199: 实验状态数据
- 键格式: `experiment_status:{experiment_id}:{serial_number}`
- 值类型: String
- 存储内容: 实验设备的活动状态 ("active" 或 "inactive")
2. DB 200: 实验原始数据
- 键格式: `experiment:{experiment_id}:{serial_number}`
- 值类型: Redis Stream
- 存储内容: 设备采集的原始数据点
3. DB 201: 实验分析报告
- 键格式: `experiment_report:{experiment_id}`
- 值类型: String (JSON)
- 存储内容: 单个实验的分析报告
- 使用位置: 实验数据分析相关路由
4. DB 202: 项目分析报告
- 键格式: `project_report:{project_id}`
- 值类型: String (JSON)
- 存储内容: 整个项目的汇总分析报告
5. DB 203: 文献分析报告
- 键格式: `reference_report:{reference_id}`
- 值类型: String (JSON)
- 存储内容: 单个文献的分析报告
6. DB 204: 文献汇总报告
- 键格式: `reference_summary_report:{project_id}`
- 值类型: String (JSON)
- 存储内容: 项目所有文献的汇总分析报告
7. DB 205: 项目备忘录
- 键格式: `memo:{project_id}`
- 值类型: String (JSON)
- 存储内容: 项目的备忘录内容和创建时间
8. DB 206: 实验备忘录
- 键格式: `memo:{experiment_id}`
- 值类型: String (JSON)
- 存储内容: 实验的备忘录内容和创建时间
9. DB 207: 文献AI对话记录
- 键格式: `reference_chat:{reference_id}`
- 值类型: String (JSON)
- 存储内容: 单个文献的AI对话记录
10. DB 208: 存储文献AI对话的任务状态
- 键格式: `task:{task_id}`
- 值类型: String (JSON)
- 存储内容: 单个文献的AI对话的任务状态跟踪