AlloMate 是一款基于 PySide6 开发的轻量级桌面分配与分组管理辅助工具。主要用于帮助教育工作者、项目协调员或活动组织者将特定对象(如学生、员工、参与者)随机分配到不同的目标区域或小组中,并支持多周期的平衡约束。
本软件通过图形化界面提供多维度的权重计算、容量限制和出勤保底控制,并支持生成结果的实时手动微调与多表 Excel 导出。
- 多周期随机分配:支持自定义总周期数(如 20 周、30 天等),自动完成对象与分组的匹配。
- 权重与容量约束:
- 支持为每个分组设定单独的“最大容量”(单次最大班额)。
- 支持设定“权重几率”,权重越高的分组在分配时被选中的概率越大。
- 支持设置“最少进入次数”与“最多进入次数”限制,尽量保证出勤频次均衡。
- 动态交互与置换:在生成的“全景总览”表格中,用户可双击任意单元格,通过下拉菜单实时更换或置换该周期下对象的分配区域,相关改动会自动同步并更新至其他子表中。
- 高级绑定规则:支持强制性前置规则(如
张伟:娃娃家),满足特定对象的首选或固定配置需求。 - 数据智能导入导出:
- 支持从外部 Excel (
.xlsx) 或 CSV 文件一键导入名单。 - 导出功能通过后台异步线程(
QThread)实现,避免导出大数据量时界面卡顿;导出的 Excel 文件包含一个“全景分配总览”主表以及各分组独立的数据子表。
- 支持从外部 Excel (
- 历史记录管理:本地自动保存最近 10 次的生成记录,支持快速切换和回溯。
- 开发语言:Python 3
- 界面框架:PySide6 (Qt for Python)
- 数据处理:openpyxl (Excel 读写), csv
- 样式设计:自定义 QSS 样式(支持高 DPI 屏幕缩放自适应)
您可以通过以下两种方式使用 AlloMate:
无需安装 Python 及相关开发依赖,直接下载打包好的可执行文件运行:
- 打开 AlloMate Releases 页面。
- 下载后双击
AlloMate即可启动程序。
确保您的系统已安装 Python 3.9 或更高版本。
克隆本仓库到本地,并在项目目录下运行以下命令安装必要的依赖包:
pip install PySide6 openpyxl在终端或命令行中执行:
python main.py- 配置分组:
- 进入 分组管理 页面,添加您需要的区域或小组名称,设定单次最大容纳人数以及分配权重。点击 “保存分组”。
- 设定全局规则:
- 进入 全局设置 页面。
- 输入或导入名单列表(支持直接选择 Excel/CSV 文件)。
- 设定分配周期和各区域的最少/最多进入次数等限制条件。
- 点击 “保存配置” 保存规则。
- 微调与导出:
- 策略保存后,系统会自动在 分配结果 页面生成方案。
- 若对局部随机结果不满意,双击对应单元格更换分组(例如将某个周期改为“轮空”或其他区域)。
- 确认无误后,点击 “导出 Excel” 保存为结构化的多工作表表格。
├── main.py # 程序入口与主逻辑
├── AlloMate.json # 本地配置文件(启动后自动生成于 AppData/Config 目录)
├── AlloMate_history.json # 历史记录文件(启动后自动生成于 AppData/Config 目录)
└── README.md # 项目说明文档
- 本项目采用 GPL-3.0 license。
- 本工具提供的随机分配算法基于设定的约束进行计算。在极端约束冲突的输入下(例如保底次数要求过高而容量上限过低),分配逻辑可能无法完全满足所有非硬性指标,建议合理规划约束范围。