TableSynthesis/README.md
yovinchen 02341150a9 增加按照手机号排序
增加自动选择文以及识别文件
修改座位信息表位置
2025-07-02 16:26:35 +08:00

179 lines
5.6 KiB
Markdown
Raw 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-10人连坐需求能够处理不连续座位的复杂情况。
## 🎯 功能特点
-**智能分配**: 支持1-10人的各种连坐需求
-**智能识别**: 自动识别Excel文件类型支持默认文件名和智能识别两种模式
-**双重分组**: 支持备注分组和手机号分组两种模式
-**数据校验**: 完整的文件格式和逻辑校验,支持重名+身份证号校验
-**不连续座位**: 自动处理座位号间隙
-**详细日志**: 完整的操作记录和结果验证
-**跨平台**: 支持Windows、macOS、Linux
-**智能覆盖**: 人员信息覆盖座位表对应列分配备注单独存储在第13列
## 📋 使用方法
### 准备Excel文件
1. **人员信息文件** - 包含以下列:
- 姓名、证件类型、证件号、手机号、备注
- **备注模式**: 备注数字表示连坐人数备注4表示当前行+后3行共4人连坐
- **手机号模式**: 相同手机号的人员自动识别为连坐组
2. **座位信息文件** - 包含以下列:
- 区域、楼层、排号、座位号
### 文件识别方式
程序启动时会提供两种文件识别方式:
1. **默认文件名** - 读取固定文件名 `人员信息.xlsx``座位信息.xlsx`
2. **智能识别** - 自动分析目录中的Excel文件并识别类型
- 根据列名特征自动判断文件类型
- 支持任意文件名(如 `1.xlsx`、`2.xlsx`
- 提供手动选择功能作为备选
### 运行程序
#### Python环境运行
```bash
# 安装依赖
pip install pandas openpyxl
# 运行程序
python seat_allocation_system.py
```
#### 构建可执行文件
```bash
# 在当前平台构建
python simple_build.py
# 跨平台构建macOS构建Windows版本
python cross_platform_build.py
```
### 选择文件识别模式
程序运行时首先选择文件识别模式:
1. **默认文件名** - 读取 `人员信息.xlsx``座位信息.xlsx`
2. **智能识别** - 自动识别目录中的Excel文件
### 选择分组方式
然后选择连坐分组方式:
1. **备注分组** - 根据备注数字识别连坐组(默认)
2. **手机号分组** - 根据相同手机号识别连坐组
### 查看结果
程序运行后会生成:
- `log/座位信息_最终分配.xlsx` - 最终分配结果
- 第1-5列座位基本信息保持不变
- 第6-10列人员信息覆盖原座位表数据
- 第11-12列原座位表其他列保持不变
- 第13列分配备注新增列
- `log/最终座位分配日志.xlsx` - 详细分配记录
- `log/seat_allocation_log.txt` - 完整运行日志
## 🔧 构建选项
### 本地构建
```bash
# 简单构建(推荐)
python simple_build.py
```
### 跨平台构建
```bash
# 在macOS上构建Windows版本
python cross_platform_build.py
```
### 自动化构建
使用GitHub Actions自动构建多平台版本
1.`build_workflow.yml` 放入 `.github/workflows/` 目录
2. 推送到GitHub仓库
3. 自动构建Windows x86/x64和macOS版本
## 📁 文件说明
### 核心文件
- `seat_allocation_system.py` - 主程序
- `simple_build.py` - 简化构建脚本
- `cross_platform_build.py` - 跨平台构建脚本
- `requirements.txt` - Python依赖
### 配置文件
- `build_workflow.yml` - GitHub Actions工作流
- `人员信息.xlsx` - 示例人员数据
- `座位信息.xlsx` - 示例座位数据
## 🎯 支持的平台
### 直接运行
- Windows 7/8/10/11 (x86/x64/ARM64)
- macOS 10.14+ (Intel/Apple Silicon)
- Linux (x86_64/ARM64)
### 构建目标
- **Windows x86** - 32位兼容版本
- **Windows x64** - 64位主流版本
- **macOS** - Intel和Apple Silicon
- **Linux** - 主流发行版
## 📊 数据格式要求
### 人员信息格式
```
姓名 | 证件类型 | 证件号 | 手机号 | 备注
张三 | 身份证 | 123456789012345678 | 13800138000 | 2
李四 | 身份证 | 123456789012345679 | 13800138001 |
王五 | 身份证 | 12345678901234567X | 13800138002 | 3
赵六 | 身份证 | 123456789012345680 | 13800138003 |
钱七 | 身份证 | 123456789012345681 | 13800138004 |
```
### 座位信息格式
```
区域 | 楼层 | 排号 | 座位号
A区通道 | 一层 | 1排 | 1号
A区通道 | 一层 | 1排 | 2号
A区通道 | 一层 | 1排 | 3号
```
## ⚠️ 注意事项
1. **备注逻辑**: 备注数字表示连坐人数,只有组长填写备注,成员留空
2. **手机号逻辑**: 相同手机号的人员会被识别为连坐组
3. **重名处理**: 支持重名人员,通过姓名+身份证号组合进行唯一性校验
4. **证件号格式**: 支持包含X的身份证号自动处理为字符串格式
5. **文字清理**: 自动清除姓名等字段的多余空格
6. **座位连续性**: 支持不连续座位号,算法会自动寻找合适的连续段
7. **智能覆盖**: 人员信息覆盖座位表对应列,分配备注单独存储
## 🔍 故障排除
### 常见问题
1. **文件格式错误**: 确保Excel文件包含必需的列
2. **编码问题**: 确保Excel文件使用UTF-8编码
3. **权限问题**: 确保有读写Excel文件的权限
4. **内存不足**: 处理大量数据时可能需要更多内存
### 技术支持
如遇问题,请查看生成的日志文件:
- `seat_allocation_log.txt` - 详细的运行日志
- 控制台输出 - 实时处理信息
## 📈 版本历史
- **v1.0** - 初始版本,支持基本座位分配
- **v1.1** - 添加数据校验和错误处理
- **v1.2** - 支持不连续座位处理
- **v1.3** - 优化数据类型处理,支持跨平台构建
## 📄 许可证
本项目采用MIT许可证详见LICENSE文件。