213 lines
5.5 KiB
Markdown
213 lines
5.5 KiB
Markdown
# 数字味道 - 物联网图片采集管理系统
|
||
|
||
## 项目简介
|
||
|
||
本系统用于管理物联网入库秤采集的图片数据,提供可视化查看、筛选和批量下载功能。
|
||
|
||
## 功能特性
|
||
|
||
### 1. 数据源管理
|
||
- **菜品**:档口秤采集的菜品图片
|
||
- **食材**:入库秤采集的食材图片
|
||
- **半加工**:净材秤采集的半加工食材图片
|
||
|
||
### 2. 多维度筛选
|
||
- 时间范围筛选(支持快捷选项:今日/最近3天/7天/30天)
|
||
- 物品名称搜索(模糊匹配)
|
||
- 设备编码筛选(精确匹配)
|
||
|
||
### 3. 图片预览
|
||
- 网格布局(5列)显示缩略图
|
||
- 显示物品名称、采集时间、设备编码
|
||
- 已下载图片显示✅标记
|
||
- 支持点击查看大图
|
||
|
||
### 4. 批量下载
|
||
- 多选图片批量下载
|
||
- 自动按分类创建子文件夹
|
||
- 文件命名规则:`{分类}_{时间戳}_{ID}.jpg`
|
||
- 多线程并发下载(5个线程)
|
||
- 实时进度显示
|
||
|
||
### 5. 统计分析
|
||
- 查询结果统计
|
||
- 时间分布统计(今日/本周/本月)
|
||
- TOP 10 物品排行榜
|
||
|
||
### 6. 下载历史
|
||
- 本地SQLite数据库记录下载历史
|
||
- 防止重复下载
|
||
- 支持清理无效记录
|
||
|
||
### 7. 数据导出
|
||
- 支持导出为JSON/CSV格式
|
||
- 可导出当前筛选结果
|
||
|
||
## 技术架构
|
||
|
||
### 数据库
|
||
- **MySQL**: 生产数据库(只读)
|
||
- 地址: 192.168.1.250:3308
|
||
- 数据库: yx_terminal
|
||
- 表:
|
||
- `dish_collection_vector_data_info` (菜品)
|
||
- `inbound_weighing_scale_vector_data_info` (食材)
|
||
- `dish_xxx` (半加工,待替换)
|
||
|
||
- **SQLite**: 本地下载历史数据库
|
||
- 路径: `data_management/download_history.db`
|
||
- 表: `download_history`
|
||
|
||
### 技术栈
|
||
- **UI框架**: CustomTkinter
|
||
- **ORM**: SQLAlchemy
|
||
- **MySQL驱动**: PyMySQL
|
||
- **网络请求**: Requests
|
||
- **图片处理**: Pillow
|
||
|
||
### 项目结构
|
||
```
|
||
data_management/
|
||
├── __init__.py
|
||
├── config.py # 配置文件
|
||
├── app.py # 主应用程序
|
||
├── database/ # 数据库模块
|
||
│ ├── __init__.py
|
||
│ ├── mysql_manager.py # MySQL管理器
|
||
│ └── sqlite_manager.py # SQLite管理器
|
||
├── ui/ # UI组件
|
||
│ ├── __init__.py
|
||
│ ├── filter_panel.py # 左侧筛选面板
|
||
│ ├── preview_panel.py # 中间预览面板
|
||
│ └── statistics_panel.py # 右侧统计面板
|
||
├── utils/ # 工具模块
|
||
│ ├── __init__.py
|
||
│ ├── image_downloader.py # 图片下载器
|
||
│ └── image_loader.py # 图片加载器
|
||
├── download_history.db # SQLite数据库(自动生成)
|
||
├── run.bat # Windows启动脚本
|
||
└── README.md # 本文件
|
||
```
|
||
|
||
## 安装依赖
|
||
|
||
确保已安装以下Python包:
|
||
|
||
```bash
|
||
pip install customtkinter
|
||
pip install sqlalchemy
|
||
pip install pymysql
|
||
pip install requests
|
||
pip install pillow
|
||
```
|
||
|
||
或者使用项目根目录的 `requirements.txt`(如果已包含相关依赖)。
|
||
|
||
## 运行方法
|
||
|
||
### Windows
|
||
双击运行 `run.bat` 脚本
|
||
|
||
### 命令行
|
||
```bash
|
||
cd data_management
|
||
python app.py
|
||
```
|
||
|
||
## 使用说明
|
||
|
||
### 1. 查询图片
|
||
1. 选择数据源(菜品/食材/半加工)
|
||
2. 设置筛选条件(时间、物品名称、设备编码)
|
||
3. 点击"查询"按钮
|
||
|
||
### 2. 下载图片
|
||
1. 在预览区勾选需要下载的图片
|
||
2. 点击"批量下载"按钮
|
||
3. 选择保存目录
|
||
4. 等待下载完成
|
||
|
||
### 3. 查看下载历史
|
||
1. 点击右侧"📜 下载历史"按钮
|
||
2. 查看历史记录
|
||
3. 可清理无效记录(本地文件已删除的记录)
|
||
|
||
### 4. 导出数据
|
||
1. 执行查询操作
|
||
2. 点击"📊 导出数据"按钮
|
||
3. 选择保存格式(JSON/CSV)
|
||
4. 选择保存位置
|
||
|
||
## 配置说明
|
||
|
||
主要配置在 `config.py` 文件中:
|
||
|
||
### MySQL配置
|
||
```python
|
||
MYSQL_CONFIG = {
|
||
'host': '192.168.1.250',
|
||
'port': 3308,
|
||
'user': 'root',
|
||
'password': 'Aa135790123',
|
||
'database': 'yx_terminal',
|
||
}
|
||
```
|
||
|
||
### 下载配置
|
||
```python
|
||
DOWNLOAD_THREADS = 5 # 并发下载数
|
||
DOWNLOAD_TIMEOUT = 30 # 下载超时时间(秒)
|
||
CREATE_SUBFOLDERS = True # 是否按分类创建子文件夹
|
||
```
|
||
|
||
### UI配置
|
||
```python
|
||
WINDOW_WIDTH = 1600 # 窗口宽度
|
||
WINDOW_HEIGHT = 900 # 窗口高度
|
||
GRID_COLUMNS = 5 # 网格列数
|
||
THUMBNAIL_SIZE = 150 # 缩略图尺寸
|
||
ITEMS_PER_PAGE = 20 # 每页显示数量
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
1. **网络连接**: 确保能连接到 192.168.1.250:3308 的MySQL服务器
|
||
2. **图片URL**: 图片URL前缀为 `http://dev.yixiong-tech.com:8081`
|
||
3. **只读访问**: 系统不会修改生产MySQL数据库
|
||
4. **下载状态**: 下载记录保存在本地SQLite数据库
|
||
5. **文件命名**: 下载的文件会自动重命名,避免冲突
|
||
6. **半加工表名**: 当前为 `dish_xxx`,待后续替换为实际表名
|
||
|
||
## 常见问题
|
||
|
||
### Q: 无法连接到MySQL数据库
|
||
A: 检查网络连接和防火墙设置,确保能访问 192.168.1.250:3308
|
||
|
||
### Q: 图片加载失败
|
||
A: 检查图片URL是否正确,确保能访问 `http://dev.yixiong-tech.com:8081`
|
||
|
||
### Q: 下载速度慢
|
||
A: 可在 `config.py` 中调整 `DOWNLOAD_THREADS` 参数增加并发数
|
||
|
||
### Q: 如何修改半加工表名
|
||
A: 修改 `config.py` 中的 `TABLE_MAPPING` 字典,将 `'半加工': 'dish_xxx'` 改为实际表名
|
||
|
||
## 更新日志
|
||
|
||
### v1.0.0 (2025-11-27)
|
||
- ✅ 初始版本发布
|
||
- ✅ 三栏式界面设计
|
||
- ✅ 多维度筛选功能
|
||
- ✅ 批量下载功能
|
||
- ✅ 下载历史记录
|
||
- ✅ 统计分析功能
|
||
- ✅ 数据导出功能
|
||
|
||
## 作者
|
||
|
||
数字味道团队
|
||
|
||
## 许可证
|
||
|
||
内部使用项目
|