Files

213 lines
5.5 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.
# 数字味道 - 物联网图片采集管理系统
## 项目简介
本系统用于管理物联网入库秤采集的图片数据,提供可视化查看、筛选和批量下载功能。
## 功能特性
### 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)
- ✅ 初始版本发布
- ✅ 三栏式界面设计
- ✅ 多维度筛选功能
- ✅ 批量下载功能
- ✅ 下载历史记录
- ✅ 统计分析功能
- ✅ 数据导出功能
## 作者
数字味道团队
## 许可证
内部使用项目